[OS] 4. Thread Management
💻CS/OS

[OS] 4. Thread Management

728x90
반응형

이전에 프로세스에 대해 살펴보면서, Context Switch의 비용이 만만치 않기에 이를 줄이는 것이 중요하다고 했었다. 

이에 등장했던 개념이 thread였는데, 이번에 한 번 살펴보자!

 

프로세스(Process)와 스레드(Thread)

프로세스는 자원을 할당받고, 자원을 제어하여 목적을 달성한다. 

여기서 제어만 따로 떼어둔 것을 스레드라고 한다. 하나의 프로세스 안에 여러 스레드가 있을 수 있다(제어가 여러 개 있는 것)

몸통이 프로세스, 칼이 스레드 같은 느낌..?

Thread란?

  • LWP(Light Weight Process)라고도 한다
  • 프로세서 활용의 기본 단위이다. 
  • 구성요소
    • Thread ID
    • Register set (PC(program counter), SP(stack point))
    • Stack (지역 데이터)
  • 프로세스의 코드, 데이터, 힙의 자원들은 프로세스 내 다른 스레드들과 공유한다 (즉, 자원을 공유하지만 자신만의 제어요소를 가지고 있다)

Thread의 장점

  • 사용자 응답성
    • 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리할 수 있다
  • 자원 공유
    • 자원을 공유해서 효율성 증가 (커널의 개입을 피할 수 있음)
  • 경제성
    • 프로세스의 생성, context switch에 비해 효율적
  • 멀티 프로세서 활용
    • 병렬처리를 통한 성능 향상 (여러 개의 CPU코어를 사용할 수 있음)

 

기존 프로세스의 자원 접근 방식 (feat. context switch)
[자원공유] 스레드는 context switch 없이 자원에 동시접근 가능

 

Thread의 구현

사용자 수준 스레드

사용자 영역의 스레드 라이브러리로 구현된다. 라이브러리는 스레드의 생성, 스케줄링을 담당한다. (POSIX threads, Win32 threads등)

 

커널은 스레드의 존재를 모르는데, 이에 대한 장단점이 존재한다. 

  • 장점
    • 커널의 관리(개입)을 받지 않아 스레드의 생성 및 관리의 부하가 적고 유연하게 관리할 수 있다.
    • 라이브러리만 있는 플랫폼이라면 그대로 프로그램을 사용할 수 있다는 점에서 이식성이 높다.
  • 단점
    • 커널은 프로세스 단위로 자원을 할당하기 때문에, 하나의 스레드가 block 상태가 되면, 프로세스도 block 상태가 되고, 이에 모든 스레드가 대기하게 된다 (single threaded kernel의 경우, 커널 스레드와 프로세스가 1:1 매핑관계이기 때문에 프로세스가 block되면 커널 스레드도 자연스레 대기하게 됨)

커널 수준 스레드 

  • OS(커널)가 직접 관리한다
  • 장점
    • 커널이 각 스레드를 개별적으로 관리 (TCB가 커널 영역에 존재)
      • 프로세스 내 스레드들이 병행 수행 가능
        • 하나의 스레드가 block되어도 다른 스레드는 계속 작업을 수행할 수 있다
  • 단점
    • 커널 영역에서 스레드의 생성, 관리
      • context switching등 부하(overhead)가 크다

 

Multi-Threading Model 

  • N:1 모델 (사용자 수준 스레드)
  • 1:1 모델 (커널 수준 스레드)

>> 단점들을 보완해서 등장한게 N:M(다대다 모델)의 형태를 가지는 혼합형 스레드이다!

 

혼합형 스레드 

  • N개의 사용자 수준 스레드와 M개의 커널 수준 스레드를 가진다. (N은 항상 M보다 커야한다.)
    • 사용자는 원하는 N개 만큼 사용자 수준 스레드를 사용한다 
    • 커널 스레드는 할당된 하나의 사용자 스레드가 block 상태가 되어도, 다른 할당된 사용자 스레드를 수행할 수 있다 (= 병행 처리)
    • 효율적이면서도 유연한 방식

 

 

Ref: https://www.youtube.com/watch?v=YlnvCIZQDkw&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=8 

 

728x90
반응형