Thread
- 자원을 공유하지만 각자의 제어 요소를 갖는 것
- 자원을 공유하기 때문에 작업을 효율적으로 진행
- Processor 활용의 기본 단위로 CPU 병렬처리가 가능
Thread 구성요소
- Thread ID
- Register set(PC, SP 등)
- Stack(i.e. local data)
Thread의 장점
- 사용자 응답성 : 일부 Thread의 처리가 지연되어도, 다른 Thread는 작업을 계속 처리
- 자원 공유 : 효율성 증가
- 경제성 : Context Switch가 발생하지 않아서 비용 경제적
- 멀티 프로세서 활용 : CPU 병렬처리 가능으로 작업 효율 증대
예시
FPS게임을 한다고 하자. 모니터와 마우스, 키보드 I/O가 존재한다. 이 3개는 Thread가 하나씩 담당하고 있다. 만약에 화면에 적이 나타나면, 키보드로 캐릭터를 움직이고, 마우스로 사격을 동시에 할 수 있다.
그러나 Thread가 하나일 경우는? 모니터에 적이 나타나면, 키보드로 캐릭터를 움직일 때 화면이 멈출 것이다. 왜냐하면, I/O interrupt받기 때문이다. 그리고 마우스로 사격을 한다. 그러면 키보드 입력도 멈춘다. 순차적으로 멈추면서 진행되기 때문에 동시에 상황을 처리할 수 없다.
Thread 구현
사용자 수준 Thread
- 사용자 영역의 Thread 라이브러리로 구현
- Kernel은 Thread의 존재를 모름
- 장점 : Kernel의 개입을 받지 않아 overhead가 적음
- 단점 : Kernel은 프로세스 단위로 자원을 할당하기 때문에 사용자 수준의 Thread 중 한 개가 block되면, 사용자 수준의 모든 Thread가 대기 상태로 전환
위 이미지 설명
- 프로세스가 생성되면 Kernel은 제어를 위한 Thread를 생성
- 프로세스 내부에 라이브러리를 통해서 여러 Thread를 사용
- 다대일 매핑
커널 수준 Thread
- OS(Kernel)가 직접 관리
- 단점 : 커널 영역에서 Thread의 생성, 관리를 수행하기 때문에 Context Switching 등 부하가 큼
프로세스 수준 부하 > 커널 수준 부하 > 사용자 수준 부하
- 장점 : 커널이 각 Thread를 개별적으로 관리하여 프로세스 내 Thread들이 병행 수행 가능
하나의 Thread가 block 되어도, 다른 Thread는 계속 작업 가능
위 이미지 설명
- 사용자 수준에서 Thread를 만들면, Kernel 수준에서도 Thread를 생성
- Thread은 Kernel이 관리
- 일대일 매핑
혼합형 Thread
- 다대일 모형과 일대일 모형을 합친 n:m모형 (n>m)
- 사용자는 원하는 수 만큼 Thread 사용
- Kernel Thread는 자신에게 할당된 하나의 사용자 Thread가 block상태가 되어도 다른 Thread 수행 가능
본 내용은 한국기술교육대학교 김덕수 교수님의 유튜브 강의를 듣고 정리한 내용입니다.
'Software Courses > Operating System' 카테고리의 다른 글
Process Synchronization and Mutual Exclusion (0) | 2020.12.02 |
---|---|
Process Scheduling (0) | 2020.12.01 |
Process 관리 (0) | 2020.11.30 |
OS Overview 2 (0) | 2020.11.29 |
OS Overview 1 (0) | 2020.11.29 |