상세 컨텐츠

본문 제목

4.5 묵시적 쓰레딩

Computer Science/OS Concepts

by RACC8N 2020. 4. 30. 21:55

본문

묵시적 쓰레딩 (Implicit Threading)

- Thread 생성과 관리를 응용 프로그램 개발자가 아닌 compiler와 runtime library에게 넘겨주는 것

- 멀티코어 병렬 처리를 사용하는 프로그램 설계에 사용

 

컴파일러에서 멀티쓰레딩 지원

- Open MP

- GCD (Grand Central Dispatch)

 

멀티쓰레딩 관리 방법

- Thread Pool

 

Thread Pools

Multithreaded server에서의 잠재적 문제점

- thread 생성 오버헤드 : 요청마다 thread를 생성하는 데 시간이 소요됨

- thread 수가 증가에 따른 자원 고갈 가능성 -> thread 수에 제한이 필요

 

해결책 -> Thread pool

- 프로세스를 시작할 때에 일정한 수의 thread들을 thread pool에 미리 생성하여 대기함

- 요청을 받을 때마다 pool에 있는 한 thread를 깨워서 사용

 

장점

- 빠른 속도 - 새 thread 생성 소요시간보다 기존 thread로 서비스하는 것이 더 빠름

- 동시 존재 thread 수 제한 - Pool의 크기

- task 생성 방법을 task에서 분리하면 task 실행을 다른 방식으로 할 수 있음 - 주기적 실행, 일정시간 후 실행 등

 

OpenMP (Open Multi-Processing)

- C, C++, Fortran 컴파일러의 directive와  API로 multithreaded 프로그래밍 지원

- 공유 메모리 환경에서의 병렬 프로그래밍 지원

 

GCD (Grand Central Dispatch)

- Apple Mac OS X, IOS 운영체제에서 지원

- C/C++ 언어의 확장, API, Runtime library로 제공

- 병렬 섹션을 구분하여 쓰레딩 관리 자원 - 블록 표시 ^{}

- 블록들은 dispatch queue에 넣고, queue에서 제거될 때에 thread pool에서 가용 thread에 선택하여 할당함

 

'Computer Science > OS Concepts' 카테고리의 다른 글

4.4 Thread 라이브러리  (0) 2020.04.30
4.3 다중 쓰레드 모델  (0) 2020.04.30
4.2 멀티코어 프로그래밍  (0) 2020.04.30
4.1 쓰레드 개요  (0) 2020.04.24
3.6 클라이언트-서버 시스템에서의통신  (0) 2020.04.24

관련글 더보기

댓글 영역