728x90
CPU 스케줄링 개요 . 단기 스케쥴러
CPU 스케줄링 (CPU Scheduling)
- 준비 큐의 프로세스들 중에서 CPU를 할당할 순서를 정하는 것
- 운영체제의 단기 스케줄러 (CPU 스케줄러)가 수행함
CPU 스케줄링 알고리즘 (CPU Scheduling Algorithm)
- CPU 스케줄링 정책 (policy)
- 다양한 CPU 스케줄링 알고리즘이 있으며 특정 상황에 알맞은 것을 선택해야 한다
운영체제의 CPU 스케줄러는 다음의 목표를 달성해야 한다
- CPU 이용률을 최대화
- 처리량을 최대화
- 반환시간을 최소화
- 대기 시간을 최소화
- 응답시간을 최소화
모두 달성할 수 없으므로 응용분야에 따라 적절한 목적에 따라 달리 비중을 줘야함.
First-Come, First-Served (FCFS) 스케줄링
Shortest-Job-First (SJF) 스케줄링
우선순위 (priority) 스케줄링
각 프로세스의 우선순위를 정해서(혹은 계산해서) 우선순위 번호 (정수)를 각 프로세스 에게 부여하고 우선순위가 높은 프로세스에게 CPU를 할당하는 알고리즘들
- 우선순위는 고정(static) 또는 변동(dynamic)
- 선점식, 비선점식 모두 가능
- 문제점 : 기아상태(Starvation) 또는 무한 정지(indefinite blocking)
- 낮은 우선순위 프로세스가 실행되지 못함
- 해결책 : 에이징(Aging)
- 오랫동안 시스템에 대기하는 프로세스들의 우선순위를 점진적으로 증가시킨다
라운드 로빈(Round Robin: RR) 스케줄링
- 시분할 시스템을 위해 만들어짐
- 각 프로세스는 시간량 (또는 시간 할당량) (time slice, time quantum) 동안 CPU를 할당받는다. 시간량은 보통 10-100 밀리초이다. 이 시간이 지나면 프로세스는 CPU를 빼앗기고 준비 큐의 끝에 들어간다
- 준비 큐는 선입선출(FCFS) 방식의 큐이다.
- 새로운 프로세스는 준비 큐의 끝에 들어간다.
- 스케줄러는 큐의 맨 앞의 프로세스를 선택하여 CPU를 할당
- 운영체제는 타이머 인터럽트를 설정하여 주기적으로 인터럽트를 일으킴. 인터럽트가 발생하면, 운영체제가 실행되므로 이때 스케줄러를 실행한다.
- 선점방식 ( 실행되다가 interupt 되면 ready 상태로 바뀜)
시간 할당량의 크기를 어떻게 정할 것인가?
- 시간 할당량이 크다면 FCFS 스케줄링 방식이 됨
- 시간 할당량이 적다면, 문맥 교환 부담이 증가함
프로세스의 실행은 “CPU 실행”과 “입출력 대기”가 반복되는 사이클로 볼 수 있다.
대화식 시스템의 경우, 프로세스들의 CPU 버스트 시간의 분포
- 짧은 CPU 버스트가 대부분.
- CPU를 매우 짧게 사용하고, 사용자와의 대화를 위한 입출력을 많이 하는 패턴
다단계 큐(Multilevel Queue) 스케줄링
728x90