개인용 컴퓨터, 서버 및 기타 종류의 대화식 시스템에 사용되는 공통 스케줄링 알고리즘 구현
각 프로세스에는 "Quantum"이라는 시간 간격이 할당되며, 그 동안 실행할 수 있습니다. 양자 공정을 마친 후 차단되어 큐 끝에 놓습니다. 스케줄러는 모든 프로세스가 똑같이 중요하다는 암시 적 가정을합니다. Round Robin의 흥미로운 문제는 양자의 길이입니다. 양자를 너무 짧게 설정하면 프로세스 스위치가 너무 많고 CPU 효율성이 낮아집니다. 그러나 너무 오래 설정하면 짧은 대화식 요청에 대한 응답이 좋지 않을 수 있습니다.
각 프로세스에는 우선 순위가 할당되며 우선 순위가 가장 높은 런닝 가능한 RPocess는 실행할 수 있습니다. 우선 순위가 높은 프로세스가 무한히 실행되는 것을 방지하기 위해 스케줄러는 각 클록 틱에서 현재 실행중인 프로세스 또는 다른 시간 간격에서 현재 실행중인 프로세스의 우선 순위를 줄일 수 있습니다. 이 조치로 인해 우선 순위가 다음으로 가장 높은 프로세스보다 낮아지면 프로세스 스위치가 발생합니다. 정적 또는 동적으로 처리하도록 우선 순위를 지정할 수 있습니다. 프로세스를 우선 순위로 그룹화하고 클래스간에 우선 순위 일정을 사용하는 것이 종종 편리하지만, 클래스 우선 순위 일정 내에서 라운드 로빈 스케줄링은 무기한 차단 또는 기아 문제가있어 우선 순위가 낮은 작업이 영원히 기다릴 수 있습니다. 이 문제에 대한 일반적인 솔루션 중 하나는 노화이며, 여기서 일자리의 우선 순위는 더 오래 기다릴 수 있습니다. 이 계획에 따라 우선 순위가 낮은 작업은 결국 시간마다 충분히 높은 우선 순위를 높일 것입니다.
프로세스를 분류 할 수 있으면 다중 별도 대기열을 설정할 수 있으며, 각각의 예약 알고리즘을 구현하는 것은 해당 유형의 작업에 가장 적합합니다. 다른 대기열과 관련하여 시간을 얻기 위해 한 대기열을 예약하는 대기열 사이에 예약을 수행해야합니다. 일반적인 옵션은 우선 순위와 라운드 로빈입니다. 프로세스는 대기열을 전환하거나 큐를 종료하거나 큐를 입력 할 수 없습니다.
이 스케줄링은 다음과 같은 이유로 작업을 한 큐에서 다른 대기열로 이동할 수있는 경우를 제외하고 다단계 대기열 예약과 유사합니다 .- 프로세스의 특성이 CPU 강도 사이에서 I/O 집중적으로 전환되는 경우. - 프로세스가 노화 된 경우 그 프로세스가 오랫동안 기다렸다.
이 스케줄링은 가장 짧은 프로세스를 실행하며 과거 행동에 따라 어떤 프로세스가 가장 짧은 지 계산합니다. 계산은 간단합니다. 새로운 값을 현재 추정치에 추가하고 합계를 2로 나눕니다.
N 프로세스가 실행되면 모든 것이 동일하며 각각은 CPU 사이클의 1/N을 받아야합니다. 시스템은 생성 된 이후 각 프로세스가 얼마나 많은 CPU를 보유했는지 추적해야하며, 각 프로세스의 양은 실제 CPU 시간의 비율을 계산합니다. 그런 다음 알고리즘은 비율이 가장 가까운 경쟁 업체의 비율보다 높아질 때까지 가장 낮은 배급으로 프로세스를 실행합니다.
아이디어는 CPU 시간과 같은 시스템 리소스에 대한 프로세스 복권을 제공하는 것입니다. 일정 결정을 내려야하는 경우 복권이 무작위로 선택되며 해당 티켓을 보유하는 프로세스가 자원을 얻습니다. 더 중요한 프로세스는 승리의 IDD를 늘리기 위해 추가 티켓을 제공 할 수 있습니다. 티켓의 일부 F를 보유한 프로세스는 해당 리소스의 일부 F를 얻을 수 있습니다. 공동 프로세스는 원하는 경우 티켓을 교환 할 수 있습니다