티스토리 뷰

Thread

 

[ Thread ]

  : Process 내에서 실행되는 작은 실행 단위.
  : 공유할 수 있는 메모리와 자원을 공유. → Heap, Data, Code는 공유하며, Stack과 Register는 별도.
  : 자원을 공유하므로 IPC가 매우 간단해짐.
  : fork 대신 pthread_create를 이용. → pthread_create(&tid, &attr, argv[i])
  : 각 Thread는 Concurrent하게 수행됨.
  : Process 간 Context Switch에 비해 Context Switch에 대한 Overhead가 매우 적음.
  : 다른 작업을 처리하는 중에도 작업 실행이 가능하므로 응답성(Responsiveness)이 향상된다.
  : Multi-Processor Architecture 활용에 용이.
 
  · Kernel Thread
    : Kernel이 생성한 Thread.
    : OS에서 관리.
    : Kernel에서는 User Thread가 몇 개 인지 알 수 없음. → Scheduler가 User Thread를 고려하지 않음.

       ( Scheduler에서 Kernel Thread를 Waiting 상태로 만들게 되면, 이와 Mapping 된 User Thread도 모두 Waiting이 됨 )

  · User Thread 
    : User가 생성한 Thread.
    : Thread Library에 의해 관리.
 

[ Multi-Threading Model ]

  · Many-to-One
    : 많은 수의 User Thread가 단일 Kernel Thread에 Mapping하는 방식.
    : 속도가 매우 빠르고, Overhead가 적음.
    : 확장성이 좋지 않음.
    : 하나의 Kernel Thread로 이루어져 있어, Kernel Thread가 Block되면 모든 Process가 Block된다.
    : Multi-Processor에서 Multiple thread를 병렬적으로 실행할 수 없다.

Many-to-One Model

  · One-to-One
    : Kernel Thread와 User Thread가 1:1로 Mapping되는 방식.
    : Multi-Core Processor에서 매우 효과적.
    : User Thread를 하나 생성할 때 마다 Kernel Thread를 생성해야 하므로 Overhead가 큼.
    : 각각의 Thread가 독립적으로 안정성은 보장되지만, Memory Sharing이 비효율적임.

One-to-One Model

  · Many-to-Many
    : 많은 User Thread를 같거나 적은 Kernel Thread에 Mapping하는 방식.
    : One-to-One과 Many-to-One의 단점을 보완하기 위해 고안됨.
    : Thread 간 Mapping을 유연하게 조정할 수 있다는 장점이 있음.
    : Thread 간 Memory를 공유하므로 One-to-One의 Memory 비효율성 문제가 발생하지 않음.
    : 구현이 복잡하며, User Thread와 Kernel Thread의 Context Switching이 빈번하게 일어나 Overhead가 큼.

Many-to-Many Model

  · Two-Level
    : Many-to-Many + One-to-One 형태의 Model. 
    : Kernel Thread 집합과 User Thread 집합으로 나눌 수 있음.
    : Multi-Core Processor에 적합하도록 설계.
      → Core와 Kernel 간의 Mapping : Many-to-Many
      → Kernel Thread와 User Thread간의 Mapping : One-to-One

Two-Level Model

 

[ Thread Cancellation ]

  : 실행 중인 Thread를 강제로 종료시키는 것을 의미.
  : 프로그램의 실행 흐름을 제어하고, 자원을 효율적으로 관리하기 위함.
 
  · Asynchronous Cancellation
    : 다른 Thread가 강제로 실행 중인 Thread를 즉시 종료시키는 방법.
  · Deffered Cancellation
    : 취소 요청을 해 Thread를 종료하며, 특정 시점에 취소되도록 예약.
    : cleanup 함수를 통해 취소되는데, Thread의 자원을 해제하고 일관성 유지를 위한 작업을 수행.
 

[ Thread Pool ]

  : Thread를 미리 생성해놓고, 작업 요청이 들어오면 Thread를 할당하여 처리하는 디자인 패턴.
  : 미리 생성함으로써 생성에 대한 Overhead를 줄일 수 있음.
  : 효율적으로 설계하지 않으면 자원 낭비의 문제가 발생됨.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함