비선점 스케쥴링과 다른점은 우선순위를 뺏을수 있느냐, 없느냐 이다
어떤 프로세스가 점유하고 있을때, 우선순위가 더 높은 프로세스가 레디큐에 존재한다면
현재 점유하고 잇는 프로세스의 우선순위를 뺏을 수 있다
프로세스의 요청 I/O, 응답 I/O, Interupt 발생, 작업완료 등의 특별한 상황에서 일어남
긴급하게 처리해야 할 프로세스가 있다면 빠른 대처가 가능하다
비선점 스케쥴링에 비해 Context Switching이 자주 일어날 수 있다
비선점 스케쥴링인 SJF ( Shortest Job First ) 방식을 선점 스케쥴링에 적용한 것으로,
SRT역시 처리시간이 짧은 순서대로 처리하지만, Ready Queue에 처리시간이
더 짧은 프로세스가 들어올 경우, 자리를 뺏을 수 있다
이렇게 되면 많은 Context Switching이 일어날 수가 있다
FCFS방식에 선점 스케쥴링 + Time Quantum 방식을 추가한 방식
Time Quantum
CPU가 연속적으로 사용할 수 있는 시간에 제한을 두는데,
이 시간을 Time Quantum 이라고 한다
어떤 프로세스가 CPU를 사용한 시간이 Time Quantum만큼 지나게 되면
Ready Queue의 가장 뒤쪽으로 보내준다
라운드 로빈방식의 스케쥴링에서는 Time Quantum 설정이 중요하다
CPU 처리시간이 긴 프로세스가 오래 점유하고 있을 가능성이 있음
우선순위가 높은 프로세스가 Ready Queue에 들어왔을때, 기다리게 되는
호위현상이 발생할 수 있다
Context Swtching이 너무 자주 일어나 오버헤드가 커질 수 있다
프로세스의 종류에 따라 Queue를 나누어 관리하는 방식
백그라운드에서 돌아가는 프로세스의 중요도를 다르게 결정한다
사람들을 내가 보고 있는 프로세스가 빠르게 처리되길 원하기 때문데,
뒤에 나오는 Background에 비해 우선순위를 높게 잡는다
Foreground Queue 에서는 응답시간을 줄이기 위하여, 라운드 로빈 방식을 사용한다
백그라운드에서 일괄처리되는 프로세스는 덜 빠르게 처리해도 괜찮다고 분류한다
Background Queue 에서는 응답시간이 큰 의미가 없기 때문에, FCFS방식을 이용한다
Queue마다 우선순위를 주는 방식이다
우선순위가 높은 Queue에 처리해야 할 프로세스가 있다면
무조건 그 Queue를 처리한 뒤에 다음 우선순위의 Queue를 처리한다
이 방식은 사용자가 직접 설정하기 때문에 좋아보이지만
SJF처럼 우선순위가 낮은 Queue는 기아상태가 될 수 있다
고정 우선순위를 해결하기 위해 등장한 방식
운영체제가 Time Slice를 두고, 이 시간의 비율에 따라
Queue를 서비스 하게 된다
예를들면, Foreground는 75%, Background는 25% 이런식으로 사용한다
다단계 큐 스케쥴링 방식에 에이징 기법을 추가해준 것이다
많이 기다린 프로세스를 우선순위가 높은 큐로 이동하여 기아상태를 어느정도 완화 해준다