운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것
입출력 집중 프로세스는 우선순위가 높은 프로세스이다.
→ 입출력을 위한 대기 상태에 더 많이 머무르게 되기 때문에 빨리 실행시키고 나서 CPU 집중 프로세스를 실행시키는게 효율적이다.
준비 큐 - CPU를 이용하고 싶은 프로세스들이 서는 줄
대기 큐 - 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄
선점형 스케줄링 - 다른 프로세스가 이용 중인 자원을 빼앗을 수 있음
더 급한 프로세스가 끼어들어 사용할 수 있지만, 문맥 교환이 많이 일어남
비선점형 스케줄링 - 다른 프로세스가 이용 중인 자원을 빼앗을 수 없음
모든 프로세스가 골고루 자원을 사용할 수 없음
1) FCFS(First In First Out)스케줄링
준비 큐에 삽입된 순서대로 프로세스를 처리하는 비선점형 스케줄링 방식. 프로세스가 기다리는 시간이 길어질 수 있음
2) SJF(Shortest Job First Scheduling)스케줄링
CPU이용 시간의 길이가 가장 짧은 프로세스부터 실행하는 방식
3) 라운드 로빈 스케줄링
FCFS + 타임 슬라이스
삽입된 순서대로 CPU를 정해진 시간만큼 이용하고, 완료되지 않은 프로세스는 큐의 마지막에 삽입됨
타임 슬라이스 - 각 프로세스가 CPU를 사용할 수 있는 정해진 시간
4) SRT(Shortest Remaining Time)스케줄링
SJF + 라운드 로빈 알고리즘
정해진 타임 슬라이스만큼 CPU를 사용하되, CPU를 사용할 다음 프로세스로 남아있는 작업시간이 가장 적은 프로세스가 선택됨
5) 우선순위 스케줄링
프로세스에 우선순위를 부여하고 가장 높은 우선순위부터 실행
기아현상 - 우선순위가 낮은 프로세스가 실행이 계속해서 밀리는 형태
에이징 - 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 방식
6) 다단계 큐 스케줄링
우선순위별로 준비 큐를 여러 개 사용하는 스케줄링 방법
7) 다단계 피드백 큐 스케줄링
프로세스들이 준비 큐 사이를 이동할 수 있음
일반적인 CPU 스케줄링 알고리즘