[운영체제] Thread Pool & Fork-Join

2025. 4. 29. 19:59·⚙️ CS/운영체제
반응형

✅ Thread Pool 

: 미리 일정 수의 스레드를 만들어 두고, 작업이 들어올 때마다 스레드를 생성하는 대신 대기 중인 스레드를 재사용하는 방식

 

  • 스레드 생성/소멸 비용 절감
  • 스레드 폭주로 인한 시스템 과부하 방지
  • 다수의 사용자의 요청을 수용하고, 빠르게 처리하고 대응할 수 있음

 


 

📍 적절한 스레드 수

 

스레드 수는 작업 특성과 시스템 리소스를 고려해 동적으로 조정해야 한다.

(예: CPU 코어 수, 메모리 크기, I/O 부하 등)

 

  • 너무 작으면: 컨텍스트 스위칭이 자주 일어나 오버헤드 발생
  • 너무 많으면: 자원 낭비

 

작업의 성격에 따라 다음과 같이 설정할 수 있다.

  • CPU bound 작업: 적절한 스레드 수는 CPU 코어 수와 비슷
  • I/O bound 작업: 스레드 수는 CPU 코어 수보다 훨씬 많아야 함

 


📍  단점

  • 최적의 스레드 풀 크기 설정의 어려움
    • 특정 애플리케이션에 대해 최적의 스레드 풀 크기를 찾는 것은 여러 요인(사용자 수, 사용 환경, 성능 등)을 고려해야 하기 때문에 어려움
  • 스레드 풀의 단점을 개선한 게 바로 Fork Join Pool

 

Fork Join Pool
: 기존 스레드 풀을 개선하기 위한 방법으로, 스레드 풀 안에서 개별 스레드들한테 업무를 분배하는 방식

 

✅ Fork-Join 

: 큰 작업을 작은 작업으로 분할(fork)하고, 각각을 병렬로 처리한 뒤 결과를 합치는(join) 방식

 

📍 흐름

  1. 큰 문제를 작은 단위로 분할(fork)
  2. 각각의 작업을 병렬로 실행
  3. 결과를 합쳐서(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
'⚙️ CS/운영체제' 카테고리의 다른 글
  • [운영체제] 메모리 할당 방식
  • [운영체제] 캐시 메모리 (Cache Memory)
  • [운영체제] 데드락 (Deadlock)
  • [운영체제] IPC
dev-heyjin
dev-heyjin
  • dev-heyjin
    개발 기록
    dev-heyjin
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • 🎯 Programming (8)
      • 💪 Algorithm (16)
      • ⚙️ CS (31)
        • 네트워크 (15)
        • 운영체제 (15)
        • 데이터베이스 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    데이터베이스
    DB
    RDS
    해킹
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev-heyjin
[운영체제] Thread Pool & Fork-Join
상단으로

티스토리툴바