CPU 스케줄링이란?
컴퓨터 시스템의 모든 자원을 효율적으로 사용하기 위한 프로세스 관리 정책이다. 컴퓨터 시스템의 성능향상이라는 목적을 가진다.
CPU 스케줄링 알고리즘
- 선점
한 프로세스가 CPU를 할당받아 실행중이라도 다른 프로세스가 현재 프로세스를 중지 시키고 CPU를 강제적으로 뺏을 수 있는 스케줄링 방식
- 비선점
한 프로세스가 CPU를 할당받아 실행중이라면 다른 프로세스들이 CPU를 강제적으로 뺏을 수 없는 스케줄링 방식
1. FCFS(First-Come First-Served)
- 먼저 요청한 프로세스 순으로 스케줄링
- 비선점 방식
- 자원의 효율성이 높다.
- 일괄 처리 시스템 등에 적합하다.
- 프로세서를 장시간 독점하는 경우 오랜 시간 기다려야 한다.
- 대화형 시스템에 부적합하다.
2. SJF (Shortest-Job-First)
- CPU 작업 시간이 가장 짧은 프로세스 순으로 스케줄링
- 비선점 방식
- 작업 시간이 동일할 경우 FCFS 정책을 따름
- 평균 대기 시간 최소화
- 시스템 내의 프로세스 수 최소화
- 많은 프로세스들에게 빠른 응답 시간 제공
- 무기한 연기 현상 발생 가능
- 프로세스 생성 시 총 실행 시간에 대한 정확한 계산 불가능
3. SRTF (Shortest-Remaining-Time-First)
- 선점 SJF 알고리즘 방식
- 단점
프로세스 생성시 총 실행시간 추정 작업 필요, 잦은 선점으로 문맥 교환 오버헤드 증대, 실행 시간이 긴 프로세스들의 평균 응답 시간 길어짐 => 구현 및 사용이 비현실적
4. RR (Round-Robin)
- 시분할 시스템에서 사용
- 선점 방식
- 시간 조각(time slice)이라는 작은 시간을 정의하여 이 시간이 경과할 때마다 현재 프로세스를 중단하고 다음 프로세스를 실행
- 장점: 응답시간이 짧아 대화형 시스템에 적합
- 단점 : 알고리즘의 성능은 시간 조각에 의존함. 이 크기가 매우 크면 FCFS 알고리즘과 큰 차이가 없음. 반대로 매우 작으면 문맥 전환이 많이 발생.
5. 우선순위 스케줄링
- 우선순위가 높은 프로세스 순으로 CPU 할당
- 선점 또는 비선점
- 우선순위가 같으면 FCFS 정책으로 할당
- 낮은 수일수록 우선순위가 높음
- 단점 : 우선순위가 낮은 프로세스의 경우 영구 대기 또는 굶주림 현상 발생
참고 사이트