2015-08-20

Linux Thread Architecture

Linux Thread



.




Linux Thread란

Linux에서  일반적으로  <pthread.h> 를 구현한 프로그램을 의미하며, process와 달리 fork()를 통해 생성하지 않는다. 또한, Thread들간 주소 영역을 공유하기 때문에 Thread들간 통신 구현이 간단하며, Context Switching이 발생하지 않아 부담이 적다.
그리고 Process를 통해 구현되며, 하나의 Process에 종속적이다.
State가 없고. 실행과 종료만이 있다.
LWP(Light Weight Process) 라고도 한다.

Linux Thread 종류

  1. User Level Thread

  • Thread Scheduling 이  Process 내부에서 처리 되는 Thread.
  • OS 의 Scheduling 에 개별 쓰레드를 등록할 필요가 없다.
  • Pthread 생성시 “PTHREAD_SCOPE_SYSTEM” 인자를 가지는 Thread.
  • Kernel 2.4 이전에는 복수의 user thread가 1개의 kernel Thread에서 동작.
  • Kernel Procedure  및 OS Scheduling 의 영향을 받지 않아 kernel level thread 보다 백배이상 빠르다.
  • 하나의 Process로 인식해 ,개별 Thread를 확인 할수 없다.(OS는 모른다)
  • 개별 Thread는 non blocking 구현이 필요하다. block되면 process전체가 멈추게 된다.
  • user mode에서 동작한다.
  1. Kernel Level Thread

  • OS 상의 Scheduling 을 통해 동작하는 Thread.(OS의 scheduling 에 접근하기 위해서는 Kernel 의 time signal을 받아야 하기 때문이라고 한다.)
  • OS 상에서 확인이 가능하다.

  • ps -ef 조회시 대괄호 “[]”에 둘러 싸여 있거나, PPID가 2인 녀석이 kernel thread이다.

root      2989     2  0 04:26 ?        00:00:00 [drbd1_worker]
root      3012     2  0 04:26 ?        00:00:00 [drbd1_receiver]

  • Signal 처리를 구현해야 한다.
  • Full thread control block (TCB) 이 필요하다.
  • Kernle mode에서 동작한다.

Thread Process 종류

  1. Single Thread Process

  1. Multi Thread Process

User- Kernal Thread Maping

  1. N:1 Threading Model (User-level Threading)


  • Kernel Thread를 지원하지 않는 시스템에서 사용.

  1. 1:1 Threading Model (Kernel-level Threading)


  • Windows 98/NT/2000/XP, OS/2, Linux이 해당됨.
  • 결국 모든 Thead 동작이 Kernel Thread로 구현 동작된다.
  • 모든 Thread가 OS에 의해 Scheduling된다.
  1. M:N Threading Model (Hybrid Threading)


  • 효율적인 kernel thread 구성 및 유지 가능
  • 1:1, N:1 매핑의 장점을 조합.
  • 유연하지만, 구현이 복잡함.
  • Solaris v9 후속, IRIX, HP-UX

No comments:

Post a Comment