CPU 스케줄링 (CPU Scheduling)
→ 어떤 작업에 CPU를 배정할지 결정하는 것
⇒ 다수의 프로세스가 효율적으로 실행되고, 자원을 효율적으로 활용할 수 있도록
종류
비선점
: 어떤 프로세스가 CPU를 점유하면 다른 프로세스가 이를 빼앗을 수 없는 방식 (짧은 작업에도 장기간 대기하는 경우 발생)
-
선입선출 스케줄링 (First-Come First-Served Scheduling)
- 먼저 도착한 프로세스 먼저 실행
- 실행 시간이 긴 프로세스가 먼저 도착하면 기다리는 시간이 길어질 수 있음
-
최단 작업 우선 스케줄링 (Shortest Job First Scheduling)
- 프로세스의 실행 시간을 미리 예측하여 실행 시간이 가장 짧은 프로세스 먼저 실행
- 최적의 성능을 제공
- 정확한 실행 시간 예측 필요
-
우선순위 스케줄링 (Priority Scheduling)
- CPU를 할당할 때 우선순위가 가장 높은 프로세스 선택
- 현재 실행 중인 프로세스 완료할 때까지 대기
-
최고 응답률 순서 스케줄링 (Highest Response Ratio Next)
- 응답 비율이 가장 높은 프로세스 선택
- SJF와 비슷하지만 대기 시간을 고려하여 프로세스 선택 (기아 상태 해결)
- Ready Queue에 대기한 시간까지 고려하여 결정
선점
: 실행 상태에 있는 프로세스의 작업을 중단시키고 새로운 작업 시작 가능 (Context switch로 인한 오버헤드 발생)
-
라운드 로빈 스케줄링 (Round Robin Scheduling)
- 시간 할당량을 갖고 프로세스를 순환하며 실행
- 모든 프로세스가 균등하게 CPU 사용 가능
-
최소 잔류 시간 스케줄링 (Shortest Remaining Time Scheduling)
- 남은 실행 시간이 가장 짧은 프로세스를 선택하여 실행
- SJF의 선점형 버전으로, 응답성 향상
-
다단계 큐 스케줄링 (Multilevel Queue Scheduling)
- 프로세스를 여러 개의 큐로 나누고 각 큐에 다른 스케줄링 알고리즘 적용
- 각 큐는 다른 우선순위를 가지며, 높은 우선순위 큐가 먼저 실행
-
다단계 피드백 큐 스케줄링 (Multi-level Feedback Queue Scheduling)
- 다단계 큐와 유사하지만, 프로세스가 다른 큐로 이동 가능
- 응답성과 공평성을 향상시키기 위해 사용
references
👉 https://happy-my.tistory.com/96