스케줄링 개요

스케줄링이란?

초기 가정 : 나중에 다 변경되고, 그걸 해결하기 위한 방법을 찾음

  1. 모든 작업은 같은 시간 소요
  2. 모든 작업은 동시에 도착
  3. 실행 도중 중단 없이 완료
  4. CPU만 사용 (I/O 없음)
  5. 실행 시간은 미리 알려짐

스케줄링 평가 지표

용어 정의
Turnaround Time (반환 시간) 프로세스가 완전히 종료될 때까지 걸린 전체 시간 → 종료 시간 - 도착 시간
Waiting Time (대기 시간) 프로세스가 준비 상태에서 대기한 시간의 총합 → 반환 시간 - 실행 시간
Response Time (응답 시간) 처음으로 CPU를 할당받기까지 걸린 시간 → 첫 실행 시간 - 도착 시간
Fairness (공정성) 모든 프로세스가 동등하게 CPU 자원을 받는 정도 → 특정 프로세스가 지나치게 기다리지 않도록 하는 것

선점 vs 비선점

구분 선점형 스케줄링 (Preemptive) 비선점형 스케줄링 (Non-Preemptive)
정의 실행 중인 프로세스가 중간에 강제로 중단될 수 있음 한 번 CPU를 잡은 프로세스는 자발적으로 종료하거나 대기 상태가 되기 전까지 계속 실행
중단 가능 조건 더 높은 우선순위 프로세스 도착 시 / 타이머 만료 시 중단 불가, 오직 프로세스 본인이 CPU 반환
예시 알고리즘 STCF(SRTF), Round Robin, MLFQ FCFS, SJF(기본형)
장점 반응 시간 우수, 사용자 체감 빠름 Context switch가 적어 오버헤드 낮음
단점 Context switch 많아 성능 저하 가능 긴 작업이 있으면 기아(Starvation) 발생 가능
적합한 환경 시분할 시스템 (사용자 인터랙션 많음) 배치 시스템 (작업 완료가 목표인 환경)

주요 스케줄링 알고리즘

FIFO (FCFS) (큐 방식)