CPU 스케줄링
CPU 스케줄링 이란
운영체제가 프로세스들에게 공정하고 합리적으로 CPU자원을 배분하는 것을 CPU 스케줄링이라 한다.
스케줄링 큐
운영체제는 프로세스들에 ‘줄을 서서 기다릴 것을 요구’ 입출력장치를 쓰려고 줄 서는 걸 대기큐 CPU를 할당 받으려고 줄 서는 걸 준비큐
스케줄링 알고리즘
FCFS 스케줄링 (First Come First Served)
준비 큐에 삽입된 순서대로 프로세스들을 처리하는 비선점 스케줄링 방식
→ CPU를 아주 짧게 써도 되는 프로세스가 준비큐에서 대기하는 동안 긴시간을 기다려야함 (호위효과)
SJF 스케줄링 (Shortest Job First)
가장 짧은 스케줄링을 먼저 처리하는 스케줄링 방식, 비선점, 선점 두 방식으로 모두 구현 가능하지만 보통 비선점 방식으로 본다
라운드 로빈 스케줄링 (Round Robin)
타임슬라이스(각 프로세스가 CPU를 사용할 수 있는 정해진 시간)만큼의 시간 동안 돌아가며 CPU를 이용하는 선점 스케줄링
SRT 스케줄링 (Shortest Remaining Time)
SJF 스케줄링 방식과 라운드로빈 스케줄링 방식을 합친 방식 프로세스들은 정해진 타임슬라이스만큼 CPU를 사용하되, 남아있는 작업시간이 가장 적은프로세스를 선택하는 선점 스케줄링
우선순위 스케줄링
가장 높은 우선순위를 가진 프로세스부터 실행하는 스케줄링 알고리즘 → 근본적 문제, 기아현상(우선순위가 낮은 프로세스는 계속 실행이 밀리는 현상)
이를 방지하기 위해 에이징 사용, 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 방식
다단계 큐 스케줄링 (Multilevel Queue scheduling)
우선순위 별로 준비 큐를 여러개 사용하는 스케줄링 방식 큐 별로 타임슬라이스를 여러 개 지정할 수 있고, 서로 다른 스케줄링 알고리즘을 사용할 수도 있다.
다단계 피드백 큐 스케줄링 (Multilevel Feedback Queue Scheduling)
다단계 큐 스케줄링도 기아 현상이 생길 수 있다. 따라서 프로세스들이 큐 사이를 이동할수 있게 보완
실행이 오래걸리는 프로세스들은 점진적으로 우선순위를 낮춰서 우선순위가 낮은 준비큐로 이동 시키고, 너무 오랫동안 대기하고 있는 프로세스가 있다면 에이징을 적용하여 우선순위를 점진적으로 높혀주는 방식으로 기아현상을 해소한다.
