0. Process (프로세스)
- 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
- 운영체제로부터 시스템 자원을 할당받는 작업의 단위
- 즉, 동적인 개념으로는 실행된 프로그램을 의미
- 각각 독립된 메모리 영역을 할당 / 별도의 주소 공간에서 실행
▷ 한 프로세스가 다른 프로세스의 변수나 자료구조에 접근 불가
▷ 다른 프로세스의 자원에 접근하기 위해선는 프로세스 간 통신을 사용해야 함
(ex. 파이프, 소켓, 파일 등을 이용한 통신 방법 사용) - 기본적으로 프로세스당 최소 1개의 스레드 (메인 스레드) 가짐

1. Thread (스레드)
- 프로세스 내에서 실행되는 흐름의 단위
- 하나의 프로세스에는 n 개의 스레드 존재
- 한 프로세스 내에서 동작하는 여러 실행의 흐름
▷ 프로세스 내의 주소 공간이나 자원을 같은 프로세스 내 스레드끼리 공유하며 실행 - 동시 작동 가능 (병행 실행)
1.1 싱글 스레드

- 하나의 프로세스에서 하나의 스레드로만 실행
- 하나의 레지스터와 스택으로 표현 가능
- 작업을 차례대로 처리
[ 장점 ]
- 문맥 교환 (context switch) 작업 요구 X
- 자원 접근에 대한 동기화 고려 필요 X
▷ 멀티 스레드와 같이 여러 스레드가 동일한 프로세스의 자원 공유하는 경우 자원의 불일치 발생 가능 - 단순한 작업의 경우, 멀티스레드에 비해 효율적 (작업 전환 시간 필요 X)
- 프로그래밍의 난이도가 어렵지 않음
- CPU, 메모리 사용량 적음
[ 단점 ]
- 여러 개의 CPU 활용불가
- 복잡한 작업의 경우, 작업을 한번에 하나씩 처리하는 특성상 처리 속도 느림
- 에러 처리 못할 시 구동 정지 (활용할 다른 스레드 존재 X)
1.2 멀티 스레드

- 두개 이상의 스레드를 활용
- 메인 스레드 외의 다른 스레드를 이용하여 작업 병렬 수행
★ 사실 작업이 정확하게 동시에 일어나는 것은 아니나,
엄청나게 빠른 속도로 문맥 교환이 일어나며
사용자가 느끼기에는 동시에 실행되는구나~라고 인지
[ 장점 ]
- 하나의 스레드가 중단되거나 긴 작업을 수행하더라도 프로그램이 다운되지 않아 응답성 증가
ex) 하나의 스레드에서 긴 작업을 처리하는 동안 사용자는 다른 스레드와 상호작용 가능 - 프로세스 내 자원들과 메모리 공유 ▷ 메모리 공간과 시스템 자원 소모 절약
- 스레드 간 통신이 쉬움
- 멀티 프로세서의 활용으로 병렬성이 증가
[ 단점 ]
- 문맥 교환, 동기화 등의 이유로 스레드 생성 시간이 오래 걸림
- 자원을 공유하기 때문에 한 스레드가 사용 중인 자원에 다른 스레드가 접근할 경우 자원 불일치 발생 가능
▷ 동기화 필요
2. Stack (스택)

- 바구니 같이 생긴 구조
- 한쪽 끝에서만 자료(데이터)를 넣고 빼는 작업이 이루어지는 자료구조
- LIFO(Last In First Out) 후입선출
- 스택의 맨 위 = top
[ 용어 ]
- push (삽입) : top에 새로운 자료(데이터) 추가
- pop (삭제) : 가장 최근에 삽입된 자료(데이터) 삭제
- peek (읽기) : top에 해당하는 데이터 읽기
- stack underflow : 스택이 비어 있는데 pop을 시도했을 때 발생
- stack overflow : 스택이 꽉 차 있는데 push를 시도했을 때 발생
3. Queue (큐)

- 줄을 서 있는 것과 같이 생긴 구조
- FIFO(First-in, First-out) 선입선출
- 데이터가 입력된 시간 순서대로 처리해야 할 필요가 있는 상황에서 이용
[ 용어 ]
- put / Enqueue (삽입) : 큐 가장 뒤에 새로운 데이터 추가
- get / Dequeue (삭제) : 큐 가장 앞의 데이터 삭제
- queue underflow : 큐가 비어 있어 자료를 꺼낼 수 없는 경우 발생
- queue overflow : 큐가 꽉 차서 더이상 자료를 넣을 수 없는 경우 발생
728x90
'OS' 카테고리의 다른 글
[OS] C언어 코드 분석_3 (0) | 2023.12.18 |
---|---|
[OS] C언어 코드 분석_2 (0) | 2023.12.11 |
[OS] 자료구조(연결 리스트, 스택), include문과 포인터 변수 (0) | 2023.12.08 |
표준 프레임워크 개요 (1) | 2023.12.01 |
[운영체제] 미들웨어의 정의와 기능, 종류 (0) | 2023.08.12 |