쓰레드(Thread)와 스케줄링

쓰레드란?

  • 프로세스 내에서 다중처리를 위해 제안된 개념
  • 하나의 프로세스는 하나 이상의 쓰레드를 가지고 있음
  • 하나의 쓰레드는 하나의 실행점만 존재함 (디스패칭의 단위)
  • 실행에 필요한 최소한의 정보만 가지며, 자신이 속해있는 프로세스의 실행환경을 공유

다중 쓰레드의 장점

  • 멀티 CPU 혹은 멀티코어 시스템에서 병렬처리 가능
  • 처리 속도 별로 쓰레드가 나눠진 경우 효율적인 처리 가능

스케줄링 단계

실제 작업에 필요한 요구사항을 파악해둠

상위 단계 스케줄링

  • 시스템에 들어오는 작업들을 선택하여 프로세스를 생성한 후 프로세스 준비 큐에 전달
  • 선택 기준: 시스템의 자원을 효율적으로 이용할 수 있게 하는 것
  • 입출력(I/O) 중심 작업과 연산 중심 작업을 균형있게 선택

하위 단계 스케줄링

  • 사용 가능한 CPU를 준비상태의 어느 프로세스에게 배당할지 결정함
  • CPU를 배당받은 프로세스는 실행상태가 되어 프로세스가 처리됨
  • 수행 주체: 디스패처(dispatcher)

중간 단계 스케줄링

  • 프로세스를 일시적으로 메모리에서 제거하여 중지시키거나 다시 활성화시킴
  • 시스템에 대한 단기적인 부하를 조절

스케줄링의 목표

  • 공정성: 모든 프로세스가 적정 수준에서 작업할 수 있게 함
  • 균형: 시스템의 자원들이 충분히 활용될 수 있게 함 (CPU, 입출력 등의 분배)

운영체제에 따른 목표

  • 일괄처리 운영체제
    • 처리량의 극대화
    • 반환시간의 최소화
    • CPU 활용의 극대화
  • 대화형 운영체제
    • 빠른 응답시간
    • 과다 대기시간 방지
  • 실시간 운영체제
    • 즉각적인 반응을 위해서 처리 기한을 맞춰줌

스케줄링 정책

선점(Preemptive) 스케줄링 정책

  • 진행 중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당하는 전략
  • 높은 우선순위의 프로세스를 긴급하게 처리하는 경우에 유용
  • 대화식 시분할 시스템에서 빠른 응답시간을 유지하는데 유용
  • 문맥 교환에 따른 오버헤드가 발생함

문맥: CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태

문맥 교환: 실행중인 프로세스의 문맥을 PCB에 저장하고 다음 프로세스의 PCB로부터 문맥을 복원하는 작업

비선점(Nonpreemptive) 스케줄링 정책

  • 작업 자체가 I/O 인터럽트를 걸거나 작업을 종료할 때까지 실행상태에 있게 됨
  • 모든 프로세스가 순서에 따라 실행됨 (응답시간 예측 가능)
  • 짧은 프로세스가 긴 프로세스를 기다리게 될 수 있음
Last Updated: