프로세스 스케줄링

From CS Wiki
Revision as of 23:40, 24 January 2020 by PE120 (talk | contribs) (→‎요약)
Process Scheduling

한정된 CPU자원을 효율적으로 사용하기 위해 여러 프로세스에 CPU 자원을 분배하기 위한 기법

선점 스케줄링과 비선점 스케줄링

비선점 스케줄링

이미 할당된 CPU를 다른 프로세스가 강제로 빼앗을 수 없는 스케줄링
비선점 스케줄링 자세히 보기
  • 모든 프로세스에 대한 요구를 공정하게 처리할 수 있다.
  • 일괄처리방식에 접합하다.
  • 중요한 짧은 작업이 중요하지 않은 긴 작업을 기다리는 등의 비효율이 발생한다.
  • 응답 시간 예측이 용이하다.
  • 대표적 알고리즘: FCFS(FIFO), SJF, HRRN, 우선순위, 기한부 등

선점 스케줄링

프로세스가 CPU를 할당받아 실행 중에도 우선순위가 높은 다른 프로세스가 CPU를 빼앗을 수 있는 스케줄링
선점 스케줄링 자세히 보기
  • 우선순위가 높은 프로세스 위주로 빠르게 처리할 수 있다.
  • 빠른 응답시간을 요구하는 대화식 시분할 시스템에 주로 사용된다.
  • 선점 시간 배당을 위한 타이머 클럭이 필요하며, 선점으로 인한 많은 오버헤드를 초리한다.
  • 대표적 알고리즘: SRT, RR, 선점 우선순위, MLQ, MLFQ 등

요약

구분 기법 설명 문제/해결
비선점 FCFS 먼저 들어온 프로세스 먼저 처리 Convoy Effect 발생
SJF 처리시간이 짧은 프로세스부터 처리 Starvation 발생
HRN 짧은 작업시간이면서 대기시간이 긴 프로세스부터 처리 Starvation 해결
선점 라운드 로빈 먼저 들어온 순서대로 일정 시간만큼만 처리
SRT 남은 시간이 짧은 프로세스부터 처리
MLQ 우선순위별로 큐를 분리하여 다양한 스케줄링 적용 Starvation 발생
MLFQ MLQ에서 큐 간 이동하여 우선순위 조정 Starvation 해결
RM RTOS에서 요청 주기가 짧은 순서대로 처리
EDF RTOS에서 마감 시간이 임박한 순서대로 처리 마감시간 계산 어려움