| Spis treści | Poprzedni | Następny | | Linux - stary algorytm szeregowania |
Przypomnienie najważniejszych cech algorytmu:
Trzy klasy procesów:
Mają bezwzględne pierwszeństwo przed zwykłymi procesami. Każdy proces klasy RT ma priorytet z przedziału 1..99. Wyższa wartość oznacza wyższy priorytet. Procesy o wyższym priorytecie są zawsze wykonywane przed procesami o niższym priorytecie. Różne polityki w klasach SCHED_RR i SCHED_FIFO.
Każdy zwykły proces ma priorytet określony przez nice. Przyjmuje on wartości od -20 do 19. Na podstawie nice obliczany jest priorytet statyczny. Im mniejsza wartość nice tym większy priorytet statyczny.
Działanie algorytmu szeregowania jest podzielone na epoki. Każdy proces ma przypisany pewien kwant czasu, przez który może używać procesor w bieżącej epoce. Epoka kończy się, gdy wszystkie procesy gotowe do wykonania (w stanie TASK_RUNNING) zużyją swoje kwanty. Algorytm szeregujący przydziela wówczas wszystkim procesom (również śpiącym) nowe kwanty czasu, rozpoczynając w ten sposób nową epokę.
W danym momencie wykonywany jest proces o najwyższym priorytecie dynamicznym. Priorytet dynamiczny ma wartość równą czasowi jaki pozostał procesowi na działanie w epoce powiększony o wartość 20 - nice. Dodatkowo priorytet jest zwiększany, jeśli ostatnio wykonywał się na procesorze, który chcemy mu przydzielić bądź w wyniku przełączenia kontekstu nie trzeba będzie ładować nowych stron pamięci.
Wieloprocesorowość