CS/OS

스레드 관리(Thread management)

Kitsune_park 2022. 1. 30. 17:16

프로세스는 자원을 할당받고 자원을 제어해서 우리가 원하는 목적을 달성한다.

 

이 때 프로세스가 이 자원을 제어하는 작업을 Thread로 표현된다.

 

또 하나의 프로세스 안에 스레드는 여러개가 될 수 있다. (제어가 여러개)

 

프로세스 내의 스레드

프로세스 내 스레드들 각각 스택들을 가지고 있으며 동일한 주소 공간을 공유한다.

 

Thread

  • Light Weight Process(LWP) =>자원은 공유하고 제어부분만 가지고 있기 때문에 가볍다.
  • CPU 활용의 기본 단위
  • 구성요소 => Thread ID, Register set, Stack

 

장점

  • 자원 공유(Resource sharing) => 효율성 증가(커널의 개입을 피할 수 있다)
  • 사용자 응답성(Responsiveness) => 일부 스레드의 처리가 지연되도, 타 스레드는 작업O
  • 경제성(Economy) => context switch에 비해 효율적
  • 멀티 프로세서 활용 => 병렬처리를 통해 성능 향상

 

스레드의 구현은 ( 사용자 수준 스레드 / 커널 수준 스레드 ) 로 나뉜다.

 

사용자 수준 스레드(User Thread) => 사용자 영역의 스레드 라이브러리로 구현된다.(n:1)

커널 수준 스레드(Kernel Threads) => OS(kernel)가 직접 관리하며 context switching(1:1)

                                                 등 부하가 크지만 병행 수행이 가능하다.

 

두가지 다 장단점이 있어 이 두가지의 장점을 합친 혼합형(n:m) 스레드가 나왔고,

이는 사용자가 원하는 수만큼 스레드 사용이가능하며 효율적이면서 유연한 구조다.