| Spis treści | Poprzedni | Następny | | Windows |
Proces - na potrzeby tego referatu proces możemy zdefiniować jako pojemnik na wątki. Zawiera wiele różnych informacji w tym kod i dane programu.
Wątek - odpowiada za wykonywanie kodu w kontekście procesu.
Z punktu widzenia algorytmu szeregowania ważne są następujące fakty:
Użytkownik może określić klasę priorytetową procesu jako:
Względny priorytet wątku może zostać określony jako:
Klasa priorytetowa procesu i względny priorytet wątku tłumaczone są na priorytet wątku. Może on przyjmować wartości od 0 do 31:
Rysunek z książki "Inside Microsoft Windows 2000"
Tłumaczenie odbywa się w różny sposób dla różnych wersji Windows. Poniżej przykładowe tłumaczenie dla systemu Windows2000. Oś X - klasa priorytetowa procesu, oś Y - względny priorytet wątku, wartością jest priorytet wątku.
Względny priorytet wątku | Idle | Below Normal | Normal | Above Normal | High | Real-Time |
---|---|---|---|---|---|---|
Time-critical | 15 | 15 | 15 | 15 | 15 | 31 |
Highest | 6 | 8 | 10 | 12 | 15 | 26 |
Above normal | 5 | 7 | 9 | 11 | 14 | 25 |
Normal | 4 | 6 | 8 | 10 | 13 | 24 |
Below normal | 3 | 5 | 7 | 9 | 12 | 23 |
Lowest | 2 | 4 | 6 | 8 | 11 | 22 |
Idle | 1 | 1 | 1 | 1 | 1 | 16 |
Cykl życia wątku wątku w Windowsie przebiega podobnie jak w linuksie. Przedstawia go poniższy rysunek.
Rysunek z książki "Inside Microsoft Windows 2000"
W systemie Windows w przeciwieństwie do Linuksa i FreeBSD nie ma pojęcia epoki. Proces któremu skończy się czas otrzymuje go znowu i trafia na koniec kolejki procesów o danym priorytecie. Odpowiada to obsłudze procesów klasy SCHED_RR w Linuksie.
Zamiast epoki z każdym procesem poza bazowym priorytetem (tym który przyjmuje wartości od 0 do 31) wprowadzono priorytet aktualny (też przyjmuje wartości od 0 do 31). Algorytm szeregowania wybiera proces o najwyższym priorytecie aktualnym.
Priorytet aktualny zazwyczaj ma wartość taką samą jak priorytet bazowy. W pewnych sytuacjach priorytet bazowy jest podnoszony a później co kwant czasu spada o 1 aż osiągnie priorytet bazowy. Dla zwykłego procesu priorytet aktualny nie może być większy niż 15.
Rysunek z książki "Inside Microsoft Windows 2000"
Podniesienie priorytetu aktualnego zachodzi:
Rodzaj urządzenia | Premia |
---|---|
Disk, CD-ROM, parallel, video | 1 |
Network, mailslot, named pipe, serial | 2 |
Keyboard, mouse | 6 |
Sound | 8 |
Wątek zostanie obudzony po oczekiwaniu na semafor lub executive event. Premia wynosi 1.
Wątek w procesie pierwszoplanowym zakończy oczekiwanie na jakimś obiekcie jądra. To czy proces jest pierwszoplanowy stwierdza moduł obsługi okienek.
Wątki posiadające okienka kiedy budzone są w związku z aktywnością GUI. Premia 2.
Wątek jest głodzony. Otrzymuje priorytet 15 i dwa razy dłuższy czas na wykonanie.
Wszystkie wątki otrzymują kwant takiej samej wielkości. Wynosi on domyślnie 6 dla Windows 2000 Professional i 36 dla dla Windows 2000 Server. Wartości te mogą być modyfikowane. Przerwanie zegarowe powoduje jego zmniejszenie o 3. Odpowiedź na pytanie dlaczego 3 a nie 1 zostawiam dociekliwym czytelnikom.