반응형
✅ Thread Pool
: 미리 일정 수의 스레드를 만들어 두고, 작업이 들어올 때마다 스레드를 생성하는 대신 대기 중인 스레드를 재사용하는 방식
- 스레드 생성/소멸 비용 절감
- 스레드 폭주로 인한 시스템 과부하 방지
- 다수의 사용자의 요청을 수용하고, 빠르게 처리하고 대응할 수 있음
📍 적절한 스레드 수
스레드 수는 작업 특성과 시스템 리소스를 고려해 동적으로 조정해야 한다.
(예: CPU 코어 수, 메모리 크기, I/O 부하 등)
- 너무 작으면: 컨텍스트 스위칭이 자주 일어나 오버헤드 발생
- 너무 많으면: 자원 낭비
작업의 성격에 따라 다음과 같이 설정할 수 있다.
- CPU bound 작업: 적절한 스레드 수는 CPU 코어 수와 비슷
- I/O bound 작업: 스레드 수는 CPU 코어 수보다 훨씬 많아야 함
📍 단점
- 최적의 스레드 풀 크기 설정의 어려움
- 특정 애플리케이션에 대해 최적의 스레드 풀 크기를 찾는 것은 여러 요인(사용자 수, 사용 환경, 성능 등)을 고려해야 하기 때문에 어려움
- 스레드 풀의 단점을 개선한 게 바로 Fork Join Pool
Fork Join Pool
: 기존 스레드 풀을 개선하기 위한 방법으로, 스레드 풀 안에서 개별 스레드들한테 업무를 분배하는 방식
✅ Fork-Join
: 큰 작업을 작은 작업으로 분할(fork)하고, 각각을 병렬로 처리한 뒤 결과를 합치는(join) 방식
📍 흐름
- 큰 문제를 작은 단위로 분할(fork)
- 각각의 작업을 병렬로 실행
- 결과를 합쳐서(join) 최종 결과 도출
fork() : 프로세스(작업)를 여러 개로 쪼개서 새롭게 생성하는 작업
join() : 포크 해서 생성된 프로세스/스레드의 결과를 합치는 작업
📍 특징
- Divide & Conquer 알고리즘과 궁합이 좋음
(예: Merge Sort, 퀵 정렬, 피보나치수열 등) - 내부적으로는 Work Stealing 알고리즘을 사용
→ 유휴 스레드가 다른 큐의 작업을 가져가며 CPU 자원 활용도를 높임
Work Stealing(작업 훔치기): 다른 스레드는 바쁘게 일하고 한 스레드는 할 일이 없어졌을 때, 다른 스레드 큐의 꼬리에서 작업을 훔쳐와서 작업을 처리함
반응형
'⚙️ CS > 운영체제' 카테고리의 다른 글
| [운영체제] 메모리 할당 방식 (1) | 2025.04.30 |
|---|---|
| [운영체제] 캐시 메모리 (Cache Memory) (1) | 2025.04.29 |
| [운영체제] 데드락 (Deadlock) (0) | 2025.04.29 |
| [운영체제] IPC (0) | 2025.04.29 |