-
[OS] Implicit Threading운영체제 2020. 11. 27. 20:43728x90
Implicit Threading
프로그래머가 직접 스레드를 만들지 않고, 알아서 만들고 관리해주는 개념
3 가지 메인 방법이 존재
-
Thread pools
-
OpenMP
-
Grand Central Dispatch
Thread pool
스레드를 매번 생성하는 것은 큰 오버헤드이므로 프로세스 실행 시에 미리 여러 개의 스레드를 만들어두고 스레드 풀에 저장해둠
요청을 받으면 서버는 풀로부터 스레드를 깨워서 요청을 전달 → 스레드 종료 시 다시 풀로 반환됨 (재활용)
서버가 요청을 받았을 때 스레드 풀에 가용한 스레드가 없다면 가용 스레드가 생길 때까지 대기함
이미 존재하는 스레드에 작업을 요청하는 것이 새로운 스레드를 생성하는 것보다 더 빨리 서비스 받을 수 있음
OpenMP
#pragma omp parallel { <code> }
위와 같은 지시자를 C 프로그램에 삽입하여 implicit threading 을 지원 → 컴파일러가 MP 를 지원해야함
Grand Central Dispatch
Mac, iOS 전용으로, ^{ <code> } 와 같은 방법으로 implicit threading 을 지원
이는 두 개의 작업 큐(Dispatch queue)로 구현되며
-
Serial queue : 한 번에 하나의 작업만이 처리될 수 있는 FIFO 큐 (main queue)
-
Concurrent queue : 한 번에 여러개의 작업이 처리될 수 있는 FIFO 큐
'운영체제' 카테고리의 다른 글
[OS] 스레드와 시그널 및 스레드 취소 (0) 2020.11.27 [OS] 멀티스레드와 fork(), exec() 의 관계 (0) 2020.11.27 [OS] 유저스레드와 커널스레드 (0) 2020.11.27 [OS] 멀티스레드 개념 (동시성 vs 병렬성) (1) 2020.11.27 [OS] 커널 메모리 할당 방식(Buddy, Slab) (0) 2020.11.27 -