선점형 스케줄링
프로세스가 CPU를 비롯한 자원은 사용하고 있더라도 운영체제가 프로세스로부터 강제로 자원을 빼앗아 다른 프로세스에 할당 할 수 있는 스케줄링 방식
-> 독점 X
비 선점형 스케줄링
하나의 프로세스가 자원을 사용하고 있다면 그 프로세스가 종료되거나 스스로 대기 상태에 접어들기 전까지는 다른 프로세스가 끼어들 수 없는 스케줄링 방식
FCFS (First Come First Served) 스케줄링 - 선입 선처리 스케줄링
- 단순히 준비 큐에 삽입된 순서대로 처리하는 비선점 스케줄링
- 먼저 CPU를 요청한 프로세스 부터 CPU 할당
- 처음 요청한 프로세스의 처리시간이 길어지는 경우, 뒤의 프로세스들의 기다리는 시간이 매우 길어질 수 있다. (호위효과)
Round Robin 스케줄링
- 선입 선처리 스케줄링 + 타임 슬라이스(time slice)
- 타임 슬라이스 : 각 프로세스가 CPU를 사용할 수 있는 정해진 시간
- 정해진 타임 슬라이스만큼의 시간 동안 돌아가며 CPU를 이용하는 선점형 스케줄링
- 정해진 시간동안 완료되지 않으면 다시 큐의 맨 뒤에 삽입(문맥 교환)
SJF (Short Job First) 스케줄링 - 최단 작업 우선 스케줄링
- 호위효과 방지
- CPU 사용이 긴 프로세스는 나중에 실행, 짧은 것을 먼저 실행
SRT (Shortest Remaining Time) 스케줄링 - 최소 잔여 시간 우선 스케줄링
- 최단 작업 우선 스케줄링 + Round Robin 스케줄링
- 정해진 시간 만큼 CPU를 이용하되, 다음으로 CPU를 사용할 프로세스로는 남은 작업시간이 가장 적은 프로세스 선택
우선 순위 스케줄링
- 프로세스들에 우선순위를 부여하고 우선순위가 높은 프로세스부터 실행
- 우선순위가 같으면 선입 선처리로 스케줄링
- 넓은의미로 SJF, SRT는 CPU사용시간이 적은 프로세스가 높은 우선순위를 갖는다고 생각할 수 있다.
- 문제 : 기아(starvation) 현상
- 우선순위가 낮은 프로세스는 준비 큐에 먼저 삽입되어도 끝끝내 실행이 안 될 수도 있다.
- 해결방법 : 에이징(aging)
- 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 방식
Multilevel queue 스케줄링 - 다단계 큐 스케줄링
- 우선순위 스케줄링의 발전된 형태
- 우선순위 별로 준비 큐를 여러개 사용하는 스케줄링 방식
- 우선순위가 가장 높은 큐에 있는 프로세스를 먼저 처리
- 큐간 이동이 불가능하기 때문에 기아현상이 발생할 수 있다
Multilevel feddback queue 스케줄링 - 다단계 피드백 큐 스케줄링
- 큐간 이동이 가능한 다단계 큐 스케줄링
- aging 기법 적용가능
- 프로세스의 CPU 시간이 길면 우선순위가 낮아지고 낮은 우선순위 큐에서 너무 오래 기다리면 우선순위를 높이는 방식