2022. 4. 14. 03:35ㆍCS/운영체제
프로세스는 PCB + process address space + threads로 이루어져 있음.
thread
프로세스의 실행 지점, 실행 되는 흐름의 단위.
A single-threaded process
PCB + process address space + a thread
프로세스 내에 동시성이 없다.
프로그램이 단일 실행 지점을 가지고 있어서, 여러번 실행 되는 경우
A multi-threaded process
프로세스 내에서 동시성을 구현할 수 있을까? 여러 개의 쓰레드가 번갈아가면서 실행되서 동시에 구현된 것처럼 보임.
한 프로세스 내에서 여러 실행 지점을 만들 수 있을까?
쓰레드들은 스택을 제외한 address space를 공유한다.
하나의 쓰레드가 가지고 있는 것 :
thread ID, state, stack, set of CPU register values (PC, SP ...)
--> Thread control block에 필요하다.

process vs thread
프로세스는 여러 개의 쓰레드를 가질 수 있다. (하나의 쓰레드는 하나의 프로세스에 바인딩됨.)
쓰레드 사이의 data를 공유하는 것이 비용이 더 적게 든다.
쓰레드들은 스케쥴링의 단위가 될 수 있다.
프로세스들은 쓰레드가 실행 되는 컨테이너이다.
Benefits of Multi-threading
동시성을 만드는 것은 자원이 더 적게 든다.
프로그램 구조를 향상시킨다. (큰 task를 협력적인 쓰레드들로 나눈다.)
반응성이 있다. 여러 이벤트를 동시에 다룰 수 있다. (웹 서버들)
리소스 공유에 효율적, 멀티 코어 구조를 활용할 수 있다. (병렬 프로그램을 만들 수 있음.)
kernel level vs. user level
커널 : 운영체제에 핵심이 되는 프로그램 (프로세스 제어, 메모리 제어)
커널 레벨 쓰레드
모든 쓰레드 연산은 커널에서 구현되어 있다.
쓰레드 생성과 운영은 API 함수를 호출을 필요로 한다.
OS는 TCB 테이블을 추적하고 모든 스레드를 스케쥴합니다.
유저 레벨 쓰레드
쓰레드는 유저 단계에서 구현되어 있음.
쓰레드 생성과 운영은 라이브러리 함수를 호출을 필요로 함. (커널이 관여하지 않음)
mapping
many to one : 여러 개의 유저 쓰레드는 하나의 커널 쓰레드로 매핑된다.
one to one : 하나의 유저 쓰레드는 하나의 커널 쓰레드로 매핑된다.
many to many : 여러 개의 유저 쓰레드는 여러 개의 커널 쓰레드로 매핑된다.
매핑에 관한 장단점은 직접 알아보자. 난 암.
'CS > 운영체제' 카테고리의 다른 글
| LRU 구현하기 (0) | 2022.05.17 |
|---|---|
| 순환 리스트로 구현한 라운드 로빈 스케쥴러 (C언어) (0) | 2022.05.17 |
| OS : CPU Scheduling & Context Switch (microC/ OS-2) (0) | 2022.04.14 |
| OS : 프로세스 구현 (microC/ OS-2) (0) | 2022.04.14 |
| OS : Process (microC/ OS-2) (0) | 2022.04.14 |