프로세스<-> 자원
1. 할당
2. 제어
스레드== 제어
하나의 프로세스, 할당 받은 자원들을 제어= 스레드
제어의 요소(스레드의 요소)
- 제어 정보(SP, PC, 상태 등)
- 지역 데이터(스택에 보관)
- 스택
자원의 요소
- 코드
- 전역 데이터
- 힙
같은 프로세스의 스레드들은 자원을 공유한다.
Thread
- 프로그램(프로세스) 실행의 단위
- LWP(Light Weight Process): 자원과 제어 중 제어 부분만 해당하기 때문에 Lgiht 라고 한다.
- 프로세서(CPU) 활용의 기본 단위
- 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레들과 공유
스레드의 장점
- 자원 공유(Resource sharing)
context switching X-> 커널의 개입 X-> overhead X
- 경제성(Economy)
context swtiching(커널의 개입)은 비싼 연산이다.
- 멀티 프로세서 활용
멀티코어. 병렬 처리를 통해 성능 향상
-사용자 응답성(Responsiveness)
일부 스레드 처리가 지연되더라도, 다른 스레드는 작업을 계속 처리 가능하다.
사용자 응답성의 예
스레드의 구현
1. 사용자 수준 스레드(User thread)
2. 커널 수준 스레드(Kernel thread)
커널 수준 스레드와 유저 수준 스레드의 큰 차이점
- 누가 스레드를 만들어주느냐의 차이
- 커널 수준 스레드는 커널이 스레드를 관리한다.
- 유저 수준 스레드는 프로세스가 스레드를 관리한다.
Kernel Thread
- 커널이 스레드 만들어서 api 형태로 제공(커널도 프로그래머가 만든 프로그램!)
- 커널이 각 스레드를 개별적으로 관리. 스케줄러는 스레드의 생성, 관리 수행= context switching 등 overhead가 큼
- 스레드 단위로 실행이 이동(스케줄러는 스레드 단위로 관리)
- 하나의 스레드가 block 상태가 되도, 다른 스레드로 작업 수행 가능
User Thread
- 커널이 스레드 제공 X. 커널이 제공 안하면 프로그래머가 만들어서 쓰겠다!
- 사용자 영역에서 라이브러리 형태로 스레드 제공
- 커널은 유저 레벨의 스레드의 존재 모름= 커널의 관리(개입)를 받지 않음= overhead 적음
- 커널은 프로세스를 개별적으로 관리. 스케줄러는 프로세스의 생성, 관리 수행
- 프로세스 단위로 실행이 이동(스케줄러는 프로세스 단위로 관리)
- 하나의 스레드가 block 상태가 되면, 모든 스레드 대기
혼합형(n:m) 스레드
n개의 사용자 수준 스레드- m개의 커널 수준 스레드(n>m)
- 사용자는 원하는 수만 큼 스레드 사용
- 커널 스레드는 자신에게 할당된 하나의 사용 스레드가 block 상태가 되도, 다른 스레드 수행 가능= 병행 처리 가능
- 효율적, 유연함
'OS' 카테고리의 다른 글
[OS] Lecture 5. Process Scheduling (2/4) - FCFS, RR (0) | 2022.02.05 |
---|---|
[OS] Lecture 5. Process Scheduling (1/4) (0) | 2022.02.05 |
CPU, Main Memory(Primary Memory), Disk(Secondary Memory) (0) | 2022.02.02 |
[OS] Lecture 3. OS Process Management (2/2) (0) | 2022.01.31 |
[OS] Lecture 3. Process Management (1/2) (0) | 2022.01.30 |