티스토리 뷰
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를 병렬적으로 실행할 수 없다.
· One-to-One
: Kernel Thread와 User Thread가 1:1로 Mapping되는 방식.
: Multi-Core Processor에서 매우 효과적.
: User Thread를 하나 생성할 때 마다 Kernel Thread를 생성해야 하므로 Overhead가 큼.
: 각각의 Thread가 독립적으로 안정성은 보장되지만, Memory Sharing이 비효율적임.
· 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가 큼.
· 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
[ Thread Cancellation ]
: 실행 중인 Thread를 강제로 종료시키는 것을 의미.
: 프로그램의 실행 흐름을 제어하고, 자원을 효율적으로 관리하기 위함.
· Asynchronous Cancellation
: 다른 Thread가 강제로 실행 중인 Thread를 즉시 종료시키는 방법.
· Deffered Cancellation
: 취소 요청을 해 Thread를 종료하며, 특정 시점에 취소되도록 예약.
: cleanup 함수를 통해 취소되는데, Thread의 자원을 해제하고 일관성 유지를 위한 작업을 수행.
[ Thread Pool ]
: Thread를 미리 생성해놓고, 작업 요청이 들어오면 Thread를 할당하여 처리하는 디자인 패턴.
: 미리 생성함으로써 생성에 대한 Overhead를 줄일 수 있음.
: 효율적으로 설계하지 않으면 자원 낭비의 문제가 발생됨.
'컴퓨터 공학 이론 > 오퍼레이팅 시스템' 카테고리의 다른 글
[오퍼레이팅 시스템] Memory Management Strategies (0) | 2023.06.06 |
---|---|
[오퍼레이팅 시스템] Deadlock (0) | 2023.06.05 |
[오퍼레이팅 시스템] Scheduling (0) | 2023.04.18 |
[오퍼레이팅 시스템] Process (0) | 2023.04.18 |
[오퍼레이팅 시스템] System Structure (0) | 2023.04.18 |