운영체제
[운영체제] Thread
mygomii
2022. 2. 10. 07:07
반응형
Thread
- Light weight Process
- 프로세서 활용의 기본 단위
- 구성 요소
- Thread ID
- Register set
- Stack
- 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레드와 공유
- 전통적 프로세스 = 단일 스레드 프로세스
Thread 장점
- 사용자 응답성 (Responsiveness)
- 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능
- 자원 공유 (Resouce sharing)
- 자원을 공유해서 효율성 증가(커널의 개입을 피할 수 있음)
- 경제성 (Economy)
- 프로세스의 생성 context switch에 비해 효율적
- 멀티 프로세서 (Multi-processor) 활용
- 병렬처리를 통해 성능 향상
Thread 구현
1. 사용자 수준 스레드 (User Threads)
- 사용자 영역의 스레드 라이브러리로 구현됨
- 스레드의 생성, 스케쥴링 등
- 커널은 스레드의 존재를 모름
- 커널의 관리(개입)를 받지 않음
- 생성 및 관리의 부하가 적음, 유연한 관리 기능
- 이식성이 높음
- 커널은 프로세스 단위로 자원 할당
- 하나의 스레드가 block 상태가 되면, 모든 스레드가 대기 (single-threaded kernel의 경우)
- 커널의 관리(개입)를 받지 않음
2. 커널 수준 스레드 (Kernel Threads)
- OS(Kernel)가 직접 관리
- 커널 영역에서 스레드의 생성, 관리 수행
- Context switching 등 부하(Overhead)가 큼
- 커널이 각 스레드를 개별적으로 관리
- 프로세스 내 스레드들이 병행 수행 가능
- 하나의 스레드가 block 상태가 되어도, 다른 스레드는 계속 작업 수행 기능
- 프로세스 내 스레드들이 병행 수행 가능
3. 혼합형(n:m) 스레드
- n개 사용자 수준 스레드 - m개의 커널 스레드 (n >m)
- 사용자는 원하는 수만큼 스레드 사용
- 커널 스레드는 자신에게 할당된 하나의 사용자 스레드가 block 상태가 되어도 다른 스레드 수행 가능
- 병행 처리 가능
- 효율적이면서도 유연함
참고
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
https://brunch.co.kr/@babosamo/100
https://www.youtube.com/watch?v=jZuTw2tRT7w&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=5
반응형