스케줄링
스케줄링은 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미.
프로세스가 생성되어 완료될 때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 된다.
Context Switching
하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생되는 것.
새로운 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고, 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업을 의미.
스케줄링의 목적
CPU나 자원을 효율적으로 사용하기 위한 정책
- 공정성 : 모든 프로세스에 공정하게 할당
- 처리율 증가 : 단위 시간당 프로세스를 처리하는 비율을 증가시킨다
- CPU 이용률 증가 : 프로세스 실행 과정에서 (주기억장치를 액세스한다든지 입출력 명령 실행 등의 원인에 의해 발생할 수 있는) CPU의 낭비시간을 줄이고 CPU가 순수하게 프로세스를 실행하는데 사용되는 시간 비율을 증가시킨다.
- 반환 시간 최소화 : 프로세스를 제출한 시간부터 실행이 완료될 때까지 걸리는 시간을 최소화
- 대기 시간 최소화 : 프로세스가 ready queue에서 대기하는 시간을 최소화
- 응답 시간 최소화 : 작업을 지시하고 반응하기 시작하는 시간을 최소화
- 무한 연기 회피 : 자원을 사용하기 위해 무한정 연기되는 상태를 회피한다.
프로세스 스케줄링 기법
비선점
- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
- 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용한다.
- 모든 프로세스에 대한 요구를 공정하게 처리 가능
- 프로세스 응답 시간의 예측이 가능하며 일괄 처리 방식에 적합
- 중요한 작업이 중요하지 않은 작업을 기다리는 경우가 발생할 수 있다.
- FCFS, SJF, 우선순위, HRN, 기한부 알고리즘
선점
- 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법
- 우선순위가 높은 프로세스를 빠르게 처리
- 주로 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용
- 많은 오버헤드 초래
- 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클록이 필요
- RR(Round Robin), SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 알고리즘