동캄의 코딩도장

운영체제 [스레드] 본문

CS/운영체제

운영체제 [스레드]

동 캄 2022. 1. 15. 23:07

스레드(Thread)란?

 

프로세스는 자원을 할당받고 자원을 제어한다. 

프로세스에서 제어부분만을 분리한것이 스레드(Thread)이다.
Thread는 Ligth Weight Process라고 불린다.

하나의 프로세스에 여러개의 스레드 존재가능 (할당받은 자원을 여러개의 스레드가 공유하여 제어{사용})
즉, 같은 프로세스의 스레드는 동일한 주소 공간을 공유한다.

 

스레드 구성요소

Thread Id
register set
stack


전통적 프로세스= 단일 스레드 프로세스


스레드 장점

- 사용자 응답성--> 일부가 지연되어도, 다른 스레드는 작업가능
- 자원 공유--> 효율성 증가 (context switching을 하지 않아도 됨)
- 경제성
- 멀티 프로세서 활용--> 성능 향상

멀티스레드 사용 
ex) 게임, 한글작업


스레드 구현

사용자 수준 스레드

- 사용자 영역의 스레드 라이브러리로 구현 됨
- 커널은 스레드의 존재를 모름 

 

장점 --> 커널의 관리를 받지않음
      유연한 관리가능, 이식성이 높음

단점 --> 커널은 프로세스 단위로 자원 할당
      (single-threaded kernel의 경우) 하나의 스레드가 block 상태가 되면, 모든 스레드가 대기


커널 수준 스레드

- OS(kernel)이 직접관리

 

장점 --> 커널이 각 스레드를 개별적으로 관리--> 프로세스 내 스레드들이 병행 수행이 가능하다.
단점 --> 커널 영역에서 스레드의 생성, 관리 수행--> context switching등 부하(Overhead)가 큼


멀티 스레딩 모델


다대일(n:1)

일대일(1:1)

다대다(n:m) <-- best