728x90
Implicit Threading
: 애플리케이션 프로그래머가 쓰레드 생성을 하겠다는 api를 실질적으로 사용하는 것.
--> 더 쉽게 멀티쓰레드를 만드는 것.
컴파일러나 라이브러리가 프로그래머 대신에 OS에서 thread를 만들어 준다.
1. Thread pool p34
- 쓰레드를 미리 많이 만들어 놓는다.
- 미리 만들어 놓으면 프로그램 수행 속도가 더 빠르다.
- 쓰레드 갯수를 미리 정할수도 있고 동적으로 변화시킬 수도 있다.
2. Fork-Join p37
- 쓰레드를 세로 만든 후(Fork), 만든 쓰레드에게 일을 시키고 종료되기를 기다린다.(Join)
3. OpenMP(C, C++, FORTURAM) p43
- 이것을 parallel로 해달라고 컴파일러에게 부탁하는 것
- #paragma omp parallel
4. Grand Central Dispatch p45
- ^{ } 안에 parallel 하게 할 부분을 작성한다.
- Two types of dispatch queues: serial, concurrent
- dispatch_async( )안에 parallel 하게 할 부분을 작성한다.
5. Intel Threading Building Blocks(TBB)
- parallel_for( )안에 parallel 하게 할 부분을 작성한다.
Threading Issues
Semenatics of fork() and exec()
프로세스가 fork()and exec()를 할 때 프로세스가 가지고 있는 쓰레드도 모두 함께 복제할 것인가?
signal Handling
OS의 디폴트 시그널 핸들러 루틴도 있고 사용자정의 시그널 핸들러 루틴이 있다.
시그널을 받으면 안에 쓰레드가 여러개 있을 때 어떤 쓰레드만 시그널을 받는건가, 아님 모두가 받는건가?
Thread cancellation of target thread
target thread: 쓰레드 종료 명령을 받은 쓰레드
1. Asynchronous cancellation: target thread가 즉시 종료된다.
2. Deferred cancellation: target thread의 판단 하에 종료가 지연될 수 있다.
Thread-local storage(TLS)
TLS: 쓰레드마다 독립적으로 가지고 있는 저장공간
Local variable은 스택이기 때문에 함수가 사라지만 같이 사라짐
Scheduler Activations
lightweight process(LWP):
- user thread가 활동할려면 LWP를 할당받아야 하고,
- kernel 쓰레드마다 하나씩 가지고 있는 것이고,
- Kernel thread가 활동할려면 CPU에게서 할당받아야한다.
upcall: 아래에서 위로(kernel thread에서 user thread로) 어떠한 시그널을 줘서 어떠한 기능이 수행되도록 하는 것.
Operating System Example p58
1. window Threads Data Structures
2. Linux threads
'학교생활 > 운영체제' 카테고리의 다른 글
[운영체제] Ch5(2) Thread Scheduling & Multi-processor scheduling (0) | 2022.10.13 |
---|---|
[운영체제] Ch5(1) Scheduling Criteria & Scheduling Algorithms (0) | 2022.10.13 |
[운영체제] Ch4(1)Multicore와 Multithread (0) | 2022.10.13 |
[운영체제] Ch3(2)InterProcess Communication(IPC) (0) | 2022.10.12 |
[운영체제] Ch3(1)Process개념과 작동 (0) | 2022.10.12 |