Choć w zasadzie dość podobne, mechanizmy szeregowania procesów w Windows i Linuksie nieco się różnią. Poniżej porównanie wraz z komentarzem.
Linux 2.6 | Windows NT | |
---|---|---|
Priorytety: | 32 - 16 czasu rzeczywistego, 16 użytkownika | 140 - 100 czasu rzeczywistego, 40 użytkownika |
Priorytety czasu rzeczywistego | Dostępne tylko dla użytkownika uprzywilejowanego | Dostępne tylko dla użytkownika uprzywilejowanego, nie do końca gwarantowany czas rzeczywisty |
Regulacja priorytetów | Funkcje jądra lub "intuicyjne" API | Funkcja nice() |
Struktury danych | Kolejki procesów aktywnych - po 1 dla każdego priorytetu | Kolejki procesów aktywnych - po 1 dla każdego priorytetu |
Kwant czasu | Niezależny od priorytetu: NT Server: 120ms, NT WorkStation: 20, 40, 60ms (konfirgurowalny); brak epok | Zależny od priorytetu: 10..200ms, ale za to są epoki |
Dynamiczna zmiana priorytetu | Boost (nieograniczony) dla procesów oczekujących, spora integracja z GUI pozwala rozróżnić procesy interaktywne od tych, które czekają np. na odczyt z dysku; nie dotyczy procesów czasu rzeczywistego | Ograniczony bonus dla procesów oczekujących, nie odróżnia procesów interaktywnych od oczekujących na jakiekolwiek inne zdarzenie; Ograniczona kara dla procesów zachłannych; Relaksacja interaktywności procesów; nie dotyczy procesów czasu rzeczywistego |
Zapobieganie zagłodzeniu | Menadżer Balansu okresowo boostuje procesy zagłodzone | Epoki - w każdej epoce wykonają się wszystkie procesy |
Wieloprocesorowość | SMP, w XP także SMT; ograniczenia licencyjne dot. ilości procesorów; 1 kolejka dla wszystkich procesorów | SMT, SMP, NUMA; 1 kolejka na każdy procesor |
Przydzielanie procesowi ostatnio używanego procesora | jest | jest |
Przydzielanie procesora | twarde powiązanie, procesor idealny | programista nie ma wpływu |