Upload
vukien
View
212
Download
0
Embed Size (px)
Citation preview
Systemy operacyjne Wykład 3 151
Planowanie przydziału procesora
bull Komponenty jądra związane z szeregowaniem
bull Ogoacutelna koncepcja planowania
bull Kryteria oceny algorytmoacutew planowania
bull Algorytmy planowania
bull Przykłady implementacji przydziału czasu
procesora w systemach Linux i Windows
Systemy operacyjne Wykład 3 251
Planowanie ndash komponenty jądra
bull Planista kroacutetkoterminowy (CPU scheduler) mdashwyznacza wartość priorytetu procesoacutew gotowych i wybiera proces (o najwyższym priorytecie) do wykonania
bull Ekspedytor (zwany roacutewnież dyspozytorem) (dispatcher) mdash realizuje przekazanie sterowanie do procesu wybranego przez planistę (dokonuje przełączenia kontekstu)
Systemy operacyjne Wykład 3 351
Ogoacutelna koncepcja planowania
bull Tryb decyzji mdash określa okoliczności w ktoacuterychoceniane i poroacutewnywane są priorytety procesoacuteworaz dokonywany jest wyboacuter procesu dowykonania
bull Funkcja priorytetu mdash funkcja wyznaczającaaktualny priorytet procesu na podstawieparametroacutew procesu i stanu systemu
bull Reguła arbitrażu mdash reguła rozstrzyganiakonfliktoacutew w dostępie do procesora w przypadkuprocesoacutew o tym samym priorytecie
Systemy operacyjne Wykład 3 451
Tryb decyzji
bull Schemat niewywłaszczeniowy (nonpreemptive) mdashproces po uzyskaniu dostępu do procesorawykonywany jest do momentu zakończenie lubzgłoszenia żądania obsługi do systemu
bull Schemat wywłaszczeniowy (preemptive) mdashproces może zostać zatrzymany i umieszczony wkolejce procesoacutew gotowych a procesor zostajeprzydzielony procesowi o wyższym (lub roacutewnym)priorytecie
Systemy operacyjne Wykład 3 551
Podejmowanie decyzji o
wywłaszczeniu
bull Utworzenie i przyjęcie nowego procesubull Obudzenie procesu w wyniku otrzymania
komunikatu sygnału gotowości urządzenia (przerwanie) lub sygnału wynikającego zsynchronizacji
bull Upłynięcie kwantu czasu odmierzanego przez czasomierz
bull Wzrost priorytetu innego procesu w stanie gotowypowyżej priorytetu procesu wykonywanego mdashmożliwe w systemie ze zmiennymi priorytetami
Systemy operacyjne Wykład 3 651
Funkcja priorytetu
bull Argumentami funkcji priorytetu są wybraneskładowe stanu procesu oraz stanu systemu
bull Priorytet procesu w danej chwili jest wartościąwynikową funkcji priorytetu dla bieżącychwartości parametroacutew stanu danego procesu iaktualnego stanu systemu
Systemy operacyjne Wykład 3 751
Argumenty funkcji priorytetu
bull Czas oczekiwania mdash czas spędzony w kolejce procesoacutewgotowych (czas spędzony w stanie gotowości)
bull Czas obsługi mdash czas przez ktoacutery proces był wykonywany (wykorzystywał procesor) od momentu przyjęcia do systemu
bull Rzeczywisty czas przebywania w systemie mdash czas spędzony w systemie od momentu przyjęcia (czas obsługi + czasoczekiwania + czas realizacji żądań zasobowych)
bull Czasowa linia krytyczna mdash czas po ktoacuterym wartość wynikoacutewspada (nawet do zera np przy przewidywaniu pogody)
bull Priorytet zewnętrzny mdash składowa priorytetu ktoacutera pozwalawyroacuteżnić procesy ze względu na klasy użytkownikoacutew lubrodzaj wykonywanych zadań
bull Wymagania odnośnie wielkości przestrzeni adresowej pamięcibull Obciążenie systemu mdash liczba procesoacutew przebywających w
systemie i ubiegających się (potencjalnie) o przydziałprocesora lub innych zasoboacutew zajętość pamięci
Systemy operacyjne Wykład 3 851
Przykład realizacji przetwarzania
0 3 6 9 12
gotowość oczekiwanie wykonanie
P1
P2
P3
Diagram przedstawia zmiany stanu 3 procesoacutew w czasieobrazując parametry czasowe
Systemy operacyjne Wykład 3 951
Reguła arbitrażu
bull Losowo mdash możliwe w przypadku gdy liczba procesoacutew o tym samym priorytecie jest niewielka
bull Cyklicznie mdash cykliczny przydział procesora kolejnym procesom
bull Chronologicznie mdash w kolejności przyjmowaniaprocesoacutew do systemu (w kolejności FIFO)
Systemy operacyjne Wykład 3 1051
Kryteria oceny algorytmoacutew
planowaniabull Efektywność z punktu widzenia systemu
ndash wykorzystanie procesora (processor utilization) mdash procent czasu przez ktoacuteryprocesor jest zajęty pracą
ndash przepustowość (throughput) mdash liczba procesoacutew kończonych w jednostce czasu
bull Inne aspekty z punktu widzenia systemundash sprawiedliwość (fairness) mdash roacutewne traktowanie procesoacutewndash respektowanie zewnętrznych priorytetoacutew procesoacutewndash roacutewnoważenie obciążenia wykorzystania zasoboacutew
bull Efektywność z punktu widzenia użytkownikandash czas cyklu przetwarzania (turnaround time) mdash czas pomiędzy przedłożeniem
zadania a zakończeniem jego wykonywania (rzeczywisty czas przebywania wsystemie w momencie zakończenie procesu)
ndash czas odpowiedzi (reakcji) (response time) mdash czas pomiędzy przedłożeniem żądania a rozpoczęciem przekazywania odpowiedzi
ndash czas opoacuteźnienia mdash czas od linii krytycznej do momentu zakończenia wykonywania
bull Inne aspekty z punktu widzenia użytkownikandash przewidywalność mdash realizacja przetwarzania w zbliżonym czasie niezależnie od
obciążenia systemu
Systemy operacyjne Wykład 3 1151
Algorytmy planowania
niewywłaszczającego
bull FCFS (First Come First Served) mdash pierwszyzgłoszony pierwszy obsłużony
bull LCFS (Last Come First Served) mdash ostatnizgłoszony pierwszy obsłużony
bull SJF (SJN SPF SPN Shortest JobProcess FirstNext) mdash najpierw najkroacutetsze zadanie
Systemy operacyjne Wykład 3 1251
Algorytmy planowania
wywłaszczającego
bull Planowanie rotacyjne (Round Robin RR) mdash poustalonym kwancie czasu proces wykonywanyjest przerywany i trafia do kolejki procesoacutewgotowych
bull SRT (Shortest Remaining Time) mdash najpierwzadanie ktoacutere ma najkroacutetszy czas dozakończenia
Systemy operacyjne Wykład 3 1351
Podstawowe algorytmy planowania
a funkcja priorytetu
bull Podstawowe algorytmy planowania możnauzyskać przez odpowiednią definicję funkcjipriorytetu
bull Parametrami funkcji priorytetu dla podstawowychalgorytmy planowania są następujące atrybutyczasowe procesoacutewndash a mdash bieżący (dotychczasowy) czas obsługindash r mdash rzeczywisty czas w systemiendash t mdash całkowity wymagany czas obsługi (czas
obsługi do momentu zakończenia)
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 251
Planowanie ndash komponenty jądra
bull Planista kroacutetkoterminowy (CPU scheduler) mdashwyznacza wartość priorytetu procesoacutew gotowych i wybiera proces (o najwyższym priorytecie) do wykonania
bull Ekspedytor (zwany roacutewnież dyspozytorem) (dispatcher) mdash realizuje przekazanie sterowanie do procesu wybranego przez planistę (dokonuje przełączenia kontekstu)
Systemy operacyjne Wykład 3 351
Ogoacutelna koncepcja planowania
bull Tryb decyzji mdash określa okoliczności w ktoacuterychoceniane i poroacutewnywane są priorytety procesoacuteworaz dokonywany jest wyboacuter procesu dowykonania
bull Funkcja priorytetu mdash funkcja wyznaczającaaktualny priorytet procesu na podstawieparametroacutew procesu i stanu systemu
bull Reguła arbitrażu mdash reguła rozstrzyganiakonfliktoacutew w dostępie do procesora w przypadkuprocesoacutew o tym samym priorytecie
Systemy operacyjne Wykład 3 451
Tryb decyzji
bull Schemat niewywłaszczeniowy (nonpreemptive) mdashproces po uzyskaniu dostępu do procesorawykonywany jest do momentu zakończenie lubzgłoszenia żądania obsługi do systemu
bull Schemat wywłaszczeniowy (preemptive) mdashproces może zostać zatrzymany i umieszczony wkolejce procesoacutew gotowych a procesor zostajeprzydzielony procesowi o wyższym (lub roacutewnym)priorytecie
Systemy operacyjne Wykład 3 551
Podejmowanie decyzji o
wywłaszczeniu
bull Utworzenie i przyjęcie nowego procesubull Obudzenie procesu w wyniku otrzymania
komunikatu sygnału gotowości urządzenia (przerwanie) lub sygnału wynikającego zsynchronizacji
bull Upłynięcie kwantu czasu odmierzanego przez czasomierz
bull Wzrost priorytetu innego procesu w stanie gotowypowyżej priorytetu procesu wykonywanego mdashmożliwe w systemie ze zmiennymi priorytetami
Systemy operacyjne Wykład 3 651
Funkcja priorytetu
bull Argumentami funkcji priorytetu są wybraneskładowe stanu procesu oraz stanu systemu
bull Priorytet procesu w danej chwili jest wartościąwynikową funkcji priorytetu dla bieżącychwartości parametroacutew stanu danego procesu iaktualnego stanu systemu
Systemy operacyjne Wykład 3 751
Argumenty funkcji priorytetu
bull Czas oczekiwania mdash czas spędzony w kolejce procesoacutewgotowych (czas spędzony w stanie gotowości)
bull Czas obsługi mdash czas przez ktoacutery proces był wykonywany (wykorzystywał procesor) od momentu przyjęcia do systemu
bull Rzeczywisty czas przebywania w systemie mdash czas spędzony w systemie od momentu przyjęcia (czas obsługi + czasoczekiwania + czas realizacji żądań zasobowych)
bull Czasowa linia krytyczna mdash czas po ktoacuterym wartość wynikoacutewspada (nawet do zera np przy przewidywaniu pogody)
bull Priorytet zewnętrzny mdash składowa priorytetu ktoacutera pozwalawyroacuteżnić procesy ze względu na klasy użytkownikoacutew lubrodzaj wykonywanych zadań
bull Wymagania odnośnie wielkości przestrzeni adresowej pamięcibull Obciążenie systemu mdash liczba procesoacutew przebywających w
systemie i ubiegających się (potencjalnie) o przydziałprocesora lub innych zasoboacutew zajętość pamięci
Systemy operacyjne Wykład 3 851
Przykład realizacji przetwarzania
0 3 6 9 12
gotowość oczekiwanie wykonanie
P1
P2
P3
Diagram przedstawia zmiany stanu 3 procesoacutew w czasieobrazując parametry czasowe
Systemy operacyjne Wykład 3 951
Reguła arbitrażu
bull Losowo mdash możliwe w przypadku gdy liczba procesoacutew o tym samym priorytecie jest niewielka
bull Cyklicznie mdash cykliczny przydział procesora kolejnym procesom
bull Chronologicznie mdash w kolejności przyjmowaniaprocesoacutew do systemu (w kolejności FIFO)
Systemy operacyjne Wykład 3 1051
Kryteria oceny algorytmoacutew
planowaniabull Efektywność z punktu widzenia systemu
ndash wykorzystanie procesora (processor utilization) mdash procent czasu przez ktoacuteryprocesor jest zajęty pracą
ndash przepustowość (throughput) mdash liczba procesoacutew kończonych w jednostce czasu
bull Inne aspekty z punktu widzenia systemundash sprawiedliwość (fairness) mdash roacutewne traktowanie procesoacutewndash respektowanie zewnętrznych priorytetoacutew procesoacutewndash roacutewnoważenie obciążenia wykorzystania zasoboacutew
bull Efektywność z punktu widzenia użytkownikandash czas cyklu przetwarzania (turnaround time) mdash czas pomiędzy przedłożeniem
zadania a zakończeniem jego wykonywania (rzeczywisty czas przebywania wsystemie w momencie zakończenie procesu)
ndash czas odpowiedzi (reakcji) (response time) mdash czas pomiędzy przedłożeniem żądania a rozpoczęciem przekazywania odpowiedzi
ndash czas opoacuteźnienia mdash czas od linii krytycznej do momentu zakończenia wykonywania
bull Inne aspekty z punktu widzenia użytkownikandash przewidywalność mdash realizacja przetwarzania w zbliżonym czasie niezależnie od
obciążenia systemu
Systemy operacyjne Wykład 3 1151
Algorytmy planowania
niewywłaszczającego
bull FCFS (First Come First Served) mdash pierwszyzgłoszony pierwszy obsłużony
bull LCFS (Last Come First Served) mdash ostatnizgłoszony pierwszy obsłużony
bull SJF (SJN SPF SPN Shortest JobProcess FirstNext) mdash najpierw najkroacutetsze zadanie
Systemy operacyjne Wykład 3 1251
Algorytmy planowania
wywłaszczającego
bull Planowanie rotacyjne (Round Robin RR) mdash poustalonym kwancie czasu proces wykonywanyjest przerywany i trafia do kolejki procesoacutewgotowych
bull SRT (Shortest Remaining Time) mdash najpierwzadanie ktoacutere ma najkroacutetszy czas dozakończenia
Systemy operacyjne Wykład 3 1351
Podstawowe algorytmy planowania
a funkcja priorytetu
bull Podstawowe algorytmy planowania możnauzyskać przez odpowiednią definicję funkcjipriorytetu
bull Parametrami funkcji priorytetu dla podstawowychalgorytmy planowania są następujące atrybutyczasowe procesoacutewndash a mdash bieżący (dotychczasowy) czas obsługindash r mdash rzeczywisty czas w systemiendash t mdash całkowity wymagany czas obsługi (czas
obsługi do momentu zakończenia)
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 351
Ogoacutelna koncepcja planowania
bull Tryb decyzji mdash określa okoliczności w ktoacuterychoceniane i poroacutewnywane są priorytety procesoacuteworaz dokonywany jest wyboacuter procesu dowykonania
bull Funkcja priorytetu mdash funkcja wyznaczającaaktualny priorytet procesu na podstawieparametroacutew procesu i stanu systemu
bull Reguła arbitrażu mdash reguła rozstrzyganiakonfliktoacutew w dostępie do procesora w przypadkuprocesoacutew o tym samym priorytecie
Systemy operacyjne Wykład 3 451
Tryb decyzji
bull Schemat niewywłaszczeniowy (nonpreemptive) mdashproces po uzyskaniu dostępu do procesorawykonywany jest do momentu zakończenie lubzgłoszenia żądania obsługi do systemu
bull Schemat wywłaszczeniowy (preemptive) mdashproces może zostać zatrzymany i umieszczony wkolejce procesoacutew gotowych a procesor zostajeprzydzielony procesowi o wyższym (lub roacutewnym)priorytecie
Systemy operacyjne Wykład 3 551
Podejmowanie decyzji o
wywłaszczeniu
bull Utworzenie i przyjęcie nowego procesubull Obudzenie procesu w wyniku otrzymania
komunikatu sygnału gotowości urządzenia (przerwanie) lub sygnału wynikającego zsynchronizacji
bull Upłynięcie kwantu czasu odmierzanego przez czasomierz
bull Wzrost priorytetu innego procesu w stanie gotowypowyżej priorytetu procesu wykonywanego mdashmożliwe w systemie ze zmiennymi priorytetami
Systemy operacyjne Wykład 3 651
Funkcja priorytetu
bull Argumentami funkcji priorytetu są wybraneskładowe stanu procesu oraz stanu systemu
bull Priorytet procesu w danej chwili jest wartościąwynikową funkcji priorytetu dla bieżącychwartości parametroacutew stanu danego procesu iaktualnego stanu systemu
Systemy operacyjne Wykład 3 751
Argumenty funkcji priorytetu
bull Czas oczekiwania mdash czas spędzony w kolejce procesoacutewgotowych (czas spędzony w stanie gotowości)
bull Czas obsługi mdash czas przez ktoacutery proces był wykonywany (wykorzystywał procesor) od momentu przyjęcia do systemu
bull Rzeczywisty czas przebywania w systemie mdash czas spędzony w systemie od momentu przyjęcia (czas obsługi + czasoczekiwania + czas realizacji żądań zasobowych)
bull Czasowa linia krytyczna mdash czas po ktoacuterym wartość wynikoacutewspada (nawet do zera np przy przewidywaniu pogody)
bull Priorytet zewnętrzny mdash składowa priorytetu ktoacutera pozwalawyroacuteżnić procesy ze względu na klasy użytkownikoacutew lubrodzaj wykonywanych zadań
bull Wymagania odnośnie wielkości przestrzeni adresowej pamięcibull Obciążenie systemu mdash liczba procesoacutew przebywających w
systemie i ubiegających się (potencjalnie) o przydziałprocesora lub innych zasoboacutew zajętość pamięci
Systemy operacyjne Wykład 3 851
Przykład realizacji przetwarzania
0 3 6 9 12
gotowość oczekiwanie wykonanie
P1
P2
P3
Diagram przedstawia zmiany stanu 3 procesoacutew w czasieobrazując parametry czasowe
Systemy operacyjne Wykład 3 951
Reguła arbitrażu
bull Losowo mdash możliwe w przypadku gdy liczba procesoacutew o tym samym priorytecie jest niewielka
bull Cyklicznie mdash cykliczny przydział procesora kolejnym procesom
bull Chronologicznie mdash w kolejności przyjmowaniaprocesoacutew do systemu (w kolejności FIFO)
Systemy operacyjne Wykład 3 1051
Kryteria oceny algorytmoacutew
planowaniabull Efektywność z punktu widzenia systemu
ndash wykorzystanie procesora (processor utilization) mdash procent czasu przez ktoacuteryprocesor jest zajęty pracą
ndash przepustowość (throughput) mdash liczba procesoacutew kończonych w jednostce czasu
bull Inne aspekty z punktu widzenia systemundash sprawiedliwość (fairness) mdash roacutewne traktowanie procesoacutewndash respektowanie zewnętrznych priorytetoacutew procesoacutewndash roacutewnoważenie obciążenia wykorzystania zasoboacutew
bull Efektywność z punktu widzenia użytkownikandash czas cyklu przetwarzania (turnaround time) mdash czas pomiędzy przedłożeniem
zadania a zakończeniem jego wykonywania (rzeczywisty czas przebywania wsystemie w momencie zakończenie procesu)
ndash czas odpowiedzi (reakcji) (response time) mdash czas pomiędzy przedłożeniem żądania a rozpoczęciem przekazywania odpowiedzi
ndash czas opoacuteźnienia mdash czas od linii krytycznej do momentu zakończenia wykonywania
bull Inne aspekty z punktu widzenia użytkownikandash przewidywalność mdash realizacja przetwarzania w zbliżonym czasie niezależnie od
obciążenia systemu
Systemy operacyjne Wykład 3 1151
Algorytmy planowania
niewywłaszczającego
bull FCFS (First Come First Served) mdash pierwszyzgłoszony pierwszy obsłużony
bull LCFS (Last Come First Served) mdash ostatnizgłoszony pierwszy obsłużony
bull SJF (SJN SPF SPN Shortest JobProcess FirstNext) mdash najpierw najkroacutetsze zadanie
Systemy operacyjne Wykład 3 1251
Algorytmy planowania
wywłaszczającego
bull Planowanie rotacyjne (Round Robin RR) mdash poustalonym kwancie czasu proces wykonywanyjest przerywany i trafia do kolejki procesoacutewgotowych
bull SRT (Shortest Remaining Time) mdash najpierwzadanie ktoacutere ma najkroacutetszy czas dozakończenia
Systemy operacyjne Wykład 3 1351
Podstawowe algorytmy planowania
a funkcja priorytetu
bull Podstawowe algorytmy planowania możnauzyskać przez odpowiednią definicję funkcjipriorytetu
bull Parametrami funkcji priorytetu dla podstawowychalgorytmy planowania są następujące atrybutyczasowe procesoacutewndash a mdash bieżący (dotychczasowy) czas obsługindash r mdash rzeczywisty czas w systemiendash t mdash całkowity wymagany czas obsługi (czas
obsługi do momentu zakończenia)
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 451
Tryb decyzji
bull Schemat niewywłaszczeniowy (nonpreemptive) mdashproces po uzyskaniu dostępu do procesorawykonywany jest do momentu zakończenie lubzgłoszenia żądania obsługi do systemu
bull Schemat wywłaszczeniowy (preemptive) mdashproces może zostać zatrzymany i umieszczony wkolejce procesoacutew gotowych a procesor zostajeprzydzielony procesowi o wyższym (lub roacutewnym)priorytecie
Systemy operacyjne Wykład 3 551
Podejmowanie decyzji o
wywłaszczeniu
bull Utworzenie i przyjęcie nowego procesubull Obudzenie procesu w wyniku otrzymania
komunikatu sygnału gotowości urządzenia (przerwanie) lub sygnału wynikającego zsynchronizacji
bull Upłynięcie kwantu czasu odmierzanego przez czasomierz
bull Wzrost priorytetu innego procesu w stanie gotowypowyżej priorytetu procesu wykonywanego mdashmożliwe w systemie ze zmiennymi priorytetami
Systemy operacyjne Wykład 3 651
Funkcja priorytetu
bull Argumentami funkcji priorytetu są wybraneskładowe stanu procesu oraz stanu systemu
bull Priorytet procesu w danej chwili jest wartościąwynikową funkcji priorytetu dla bieżącychwartości parametroacutew stanu danego procesu iaktualnego stanu systemu
Systemy operacyjne Wykład 3 751
Argumenty funkcji priorytetu
bull Czas oczekiwania mdash czas spędzony w kolejce procesoacutewgotowych (czas spędzony w stanie gotowości)
bull Czas obsługi mdash czas przez ktoacutery proces był wykonywany (wykorzystywał procesor) od momentu przyjęcia do systemu
bull Rzeczywisty czas przebywania w systemie mdash czas spędzony w systemie od momentu przyjęcia (czas obsługi + czasoczekiwania + czas realizacji żądań zasobowych)
bull Czasowa linia krytyczna mdash czas po ktoacuterym wartość wynikoacutewspada (nawet do zera np przy przewidywaniu pogody)
bull Priorytet zewnętrzny mdash składowa priorytetu ktoacutera pozwalawyroacuteżnić procesy ze względu na klasy użytkownikoacutew lubrodzaj wykonywanych zadań
bull Wymagania odnośnie wielkości przestrzeni adresowej pamięcibull Obciążenie systemu mdash liczba procesoacutew przebywających w
systemie i ubiegających się (potencjalnie) o przydziałprocesora lub innych zasoboacutew zajętość pamięci
Systemy operacyjne Wykład 3 851
Przykład realizacji przetwarzania
0 3 6 9 12
gotowość oczekiwanie wykonanie
P1
P2
P3
Diagram przedstawia zmiany stanu 3 procesoacutew w czasieobrazując parametry czasowe
Systemy operacyjne Wykład 3 951
Reguła arbitrażu
bull Losowo mdash możliwe w przypadku gdy liczba procesoacutew o tym samym priorytecie jest niewielka
bull Cyklicznie mdash cykliczny przydział procesora kolejnym procesom
bull Chronologicznie mdash w kolejności przyjmowaniaprocesoacutew do systemu (w kolejności FIFO)
Systemy operacyjne Wykład 3 1051
Kryteria oceny algorytmoacutew
planowaniabull Efektywność z punktu widzenia systemu
ndash wykorzystanie procesora (processor utilization) mdash procent czasu przez ktoacuteryprocesor jest zajęty pracą
ndash przepustowość (throughput) mdash liczba procesoacutew kończonych w jednostce czasu
bull Inne aspekty z punktu widzenia systemundash sprawiedliwość (fairness) mdash roacutewne traktowanie procesoacutewndash respektowanie zewnętrznych priorytetoacutew procesoacutewndash roacutewnoważenie obciążenia wykorzystania zasoboacutew
bull Efektywność z punktu widzenia użytkownikandash czas cyklu przetwarzania (turnaround time) mdash czas pomiędzy przedłożeniem
zadania a zakończeniem jego wykonywania (rzeczywisty czas przebywania wsystemie w momencie zakończenie procesu)
ndash czas odpowiedzi (reakcji) (response time) mdash czas pomiędzy przedłożeniem żądania a rozpoczęciem przekazywania odpowiedzi
ndash czas opoacuteźnienia mdash czas od linii krytycznej do momentu zakończenia wykonywania
bull Inne aspekty z punktu widzenia użytkownikandash przewidywalność mdash realizacja przetwarzania w zbliżonym czasie niezależnie od
obciążenia systemu
Systemy operacyjne Wykład 3 1151
Algorytmy planowania
niewywłaszczającego
bull FCFS (First Come First Served) mdash pierwszyzgłoszony pierwszy obsłużony
bull LCFS (Last Come First Served) mdash ostatnizgłoszony pierwszy obsłużony
bull SJF (SJN SPF SPN Shortest JobProcess FirstNext) mdash najpierw najkroacutetsze zadanie
Systemy operacyjne Wykład 3 1251
Algorytmy planowania
wywłaszczającego
bull Planowanie rotacyjne (Round Robin RR) mdash poustalonym kwancie czasu proces wykonywanyjest przerywany i trafia do kolejki procesoacutewgotowych
bull SRT (Shortest Remaining Time) mdash najpierwzadanie ktoacutere ma najkroacutetszy czas dozakończenia
Systemy operacyjne Wykład 3 1351
Podstawowe algorytmy planowania
a funkcja priorytetu
bull Podstawowe algorytmy planowania możnauzyskać przez odpowiednią definicję funkcjipriorytetu
bull Parametrami funkcji priorytetu dla podstawowychalgorytmy planowania są następujące atrybutyczasowe procesoacutewndash a mdash bieżący (dotychczasowy) czas obsługindash r mdash rzeczywisty czas w systemiendash t mdash całkowity wymagany czas obsługi (czas
obsługi do momentu zakończenia)
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 551
Podejmowanie decyzji o
wywłaszczeniu
bull Utworzenie i przyjęcie nowego procesubull Obudzenie procesu w wyniku otrzymania
komunikatu sygnału gotowości urządzenia (przerwanie) lub sygnału wynikającego zsynchronizacji
bull Upłynięcie kwantu czasu odmierzanego przez czasomierz
bull Wzrost priorytetu innego procesu w stanie gotowypowyżej priorytetu procesu wykonywanego mdashmożliwe w systemie ze zmiennymi priorytetami
Systemy operacyjne Wykład 3 651
Funkcja priorytetu
bull Argumentami funkcji priorytetu są wybraneskładowe stanu procesu oraz stanu systemu
bull Priorytet procesu w danej chwili jest wartościąwynikową funkcji priorytetu dla bieżącychwartości parametroacutew stanu danego procesu iaktualnego stanu systemu
Systemy operacyjne Wykład 3 751
Argumenty funkcji priorytetu
bull Czas oczekiwania mdash czas spędzony w kolejce procesoacutewgotowych (czas spędzony w stanie gotowości)
bull Czas obsługi mdash czas przez ktoacutery proces był wykonywany (wykorzystywał procesor) od momentu przyjęcia do systemu
bull Rzeczywisty czas przebywania w systemie mdash czas spędzony w systemie od momentu przyjęcia (czas obsługi + czasoczekiwania + czas realizacji żądań zasobowych)
bull Czasowa linia krytyczna mdash czas po ktoacuterym wartość wynikoacutewspada (nawet do zera np przy przewidywaniu pogody)
bull Priorytet zewnętrzny mdash składowa priorytetu ktoacutera pozwalawyroacuteżnić procesy ze względu na klasy użytkownikoacutew lubrodzaj wykonywanych zadań
bull Wymagania odnośnie wielkości przestrzeni adresowej pamięcibull Obciążenie systemu mdash liczba procesoacutew przebywających w
systemie i ubiegających się (potencjalnie) o przydziałprocesora lub innych zasoboacutew zajętość pamięci
Systemy operacyjne Wykład 3 851
Przykład realizacji przetwarzania
0 3 6 9 12
gotowość oczekiwanie wykonanie
P1
P2
P3
Diagram przedstawia zmiany stanu 3 procesoacutew w czasieobrazując parametry czasowe
Systemy operacyjne Wykład 3 951
Reguła arbitrażu
bull Losowo mdash możliwe w przypadku gdy liczba procesoacutew o tym samym priorytecie jest niewielka
bull Cyklicznie mdash cykliczny przydział procesora kolejnym procesom
bull Chronologicznie mdash w kolejności przyjmowaniaprocesoacutew do systemu (w kolejności FIFO)
Systemy operacyjne Wykład 3 1051
Kryteria oceny algorytmoacutew
planowaniabull Efektywność z punktu widzenia systemu
ndash wykorzystanie procesora (processor utilization) mdash procent czasu przez ktoacuteryprocesor jest zajęty pracą
ndash przepustowość (throughput) mdash liczba procesoacutew kończonych w jednostce czasu
bull Inne aspekty z punktu widzenia systemundash sprawiedliwość (fairness) mdash roacutewne traktowanie procesoacutewndash respektowanie zewnętrznych priorytetoacutew procesoacutewndash roacutewnoważenie obciążenia wykorzystania zasoboacutew
bull Efektywność z punktu widzenia użytkownikandash czas cyklu przetwarzania (turnaround time) mdash czas pomiędzy przedłożeniem
zadania a zakończeniem jego wykonywania (rzeczywisty czas przebywania wsystemie w momencie zakończenie procesu)
ndash czas odpowiedzi (reakcji) (response time) mdash czas pomiędzy przedłożeniem żądania a rozpoczęciem przekazywania odpowiedzi
ndash czas opoacuteźnienia mdash czas od linii krytycznej do momentu zakończenia wykonywania
bull Inne aspekty z punktu widzenia użytkownikandash przewidywalność mdash realizacja przetwarzania w zbliżonym czasie niezależnie od
obciążenia systemu
Systemy operacyjne Wykład 3 1151
Algorytmy planowania
niewywłaszczającego
bull FCFS (First Come First Served) mdash pierwszyzgłoszony pierwszy obsłużony
bull LCFS (Last Come First Served) mdash ostatnizgłoszony pierwszy obsłużony
bull SJF (SJN SPF SPN Shortest JobProcess FirstNext) mdash najpierw najkroacutetsze zadanie
Systemy operacyjne Wykład 3 1251
Algorytmy planowania
wywłaszczającego
bull Planowanie rotacyjne (Round Robin RR) mdash poustalonym kwancie czasu proces wykonywanyjest przerywany i trafia do kolejki procesoacutewgotowych
bull SRT (Shortest Remaining Time) mdash najpierwzadanie ktoacutere ma najkroacutetszy czas dozakończenia
Systemy operacyjne Wykład 3 1351
Podstawowe algorytmy planowania
a funkcja priorytetu
bull Podstawowe algorytmy planowania możnauzyskać przez odpowiednią definicję funkcjipriorytetu
bull Parametrami funkcji priorytetu dla podstawowychalgorytmy planowania są następujące atrybutyczasowe procesoacutewndash a mdash bieżący (dotychczasowy) czas obsługindash r mdash rzeczywisty czas w systemiendash t mdash całkowity wymagany czas obsługi (czas
obsługi do momentu zakończenia)
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 651
Funkcja priorytetu
bull Argumentami funkcji priorytetu są wybraneskładowe stanu procesu oraz stanu systemu
bull Priorytet procesu w danej chwili jest wartościąwynikową funkcji priorytetu dla bieżącychwartości parametroacutew stanu danego procesu iaktualnego stanu systemu
Systemy operacyjne Wykład 3 751
Argumenty funkcji priorytetu
bull Czas oczekiwania mdash czas spędzony w kolejce procesoacutewgotowych (czas spędzony w stanie gotowości)
bull Czas obsługi mdash czas przez ktoacutery proces był wykonywany (wykorzystywał procesor) od momentu przyjęcia do systemu
bull Rzeczywisty czas przebywania w systemie mdash czas spędzony w systemie od momentu przyjęcia (czas obsługi + czasoczekiwania + czas realizacji żądań zasobowych)
bull Czasowa linia krytyczna mdash czas po ktoacuterym wartość wynikoacutewspada (nawet do zera np przy przewidywaniu pogody)
bull Priorytet zewnętrzny mdash składowa priorytetu ktoacutera pozwalawyroacuteżnić procesy ze względu na klasy użytkownikoacutew lubrodzaj wykonywanych zadań
bull Wymagania odnośnie wielkości przestrzeni adresowej pamięcibull Obciążenie systemu mdash liczba procesoacutew przebywających w
systemie i ubiegających się (potencjalnie) o przydziałprocesora lub innych zasoboacutew zajętość pamięci
Systemy operacyjne Wykład 3 851
Przykład realizacji przetwarzania
0 3 6 9 12
gotowość oczekiwanie wykonanie
P1
P2
P3
Diagram przedstawia zmiany stanu 3 procesoacutew w czasieobrazując parametry czasowe
Systemy operacyjne Wykład 3 951
Reguła arbitrażu
bull Losowo mdash możliwe w przypadku gdy liczba procesoacutew o tym samym priorytecie jest niewielka
bull Cyklicznie mdash cykliczny przydział procesora kolejnym procesom
bull Chronologicznie mdash w kolejności przyjmowaniaprocesoacutew do systemu (w kolejności FIFO)
Systemy operacyjne Wykład 3 1051
Kryteria oceny algorytmoacutew
planowaniabull Efektywność z punktu widzenia systemu
ndash wykorzystanie procesora (processor utilization) mdash procent czasu przez ktoacuteryprocesor jest zajęty pracą
ndash przepustowość (throughput) mdash liczba procesoacutew kończonych w jednostce czasu
bull Inne aspekty z punktu widzenia systemundash sprawiedliwość (fairness) mdash roacutewne traktowanie procesoacutewndash respektowanie zewnętrznych priorytetoacutew procesoacutewndash roacutewnoważenie obciążenia wykorzystania zasoboacutew
bull Efektywność z punktu widzenia użytkownikandash czas cyklu przetwarzania (turnaround time) mdash czas pomiędzy przedłożeniem
zadania a zakończeniem jego wykonywania (rzeczywisty czas przebywania wsystemie w momencie zakończenie procesu)
ndash czas odpowiedzi (reakcji) (response time) mdash czas pomiędzy przedłożeniem żądania a rozpoczęciem przekazywania odpowiedzi
ndash czas opoacuteźnienia mdash czas od linii krytycznej do momentu zakończenia wykonywania
bull Inne aspekty z punktu widzenia użytkownikandash przewidywalność mdash realizacja przetwarzania w zbliżonym czasie niezależnie od
obciążenia systemu
Systemy operacyjne Wykład 3 1151
Algorytmy planowania
niewywłaszczającego
bull FCFS (First Come First Served) mdash pierwszyzgłoszony pierwszy obsłużony
bull LCFS (Last Come First Served) mdash ostatnizgłoszony pierwszy obsłużony
bull SJF (SJN SPF SPN Shortest JobProcess FirstNext) mdash najpierw najkroacutetsze zadanie
Systemy operacyjne Wykład 3 1251
Algorytmy planowania
wywłaszczającego
bull Planowanie rotacyjne (Round Robin RR) mdash poustalonym kwancie czasu proces wykonywanyjest przerywany i trafia do kolejki procesoacutewgotowych
bull SRT (Shortest Remaining Time) mdash najpierwzadanie ktoacutere ma najkroacutetszy czas dozakończenia
Systemy operacyjne Wykład 3 1351
Podstawowe algorytmy planowania
a funkcja priorytetu
bull Podstawowe algorytmy planowania możnauzyskać przez odpowiednią definicję funkcjipriorytetu
bull Parametrami funkcji priorytetu dla podstawowychalgorytmy planowania są następujące atrybutyczasowe procesoacutewndash a mdash bieżący (dotychczasowy) czas obsługindash r mdash rzeczywisty czas w systemiendash t mdash całkowity wymagany czas obsługi (czas
obsługi do momentu zakończenia)
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 751
Argumenty funkcji priorytetu
bull Czas oczekiwania mdash czas spędzony w kolejce procesoacutewgotowych (czas spędzony w stanie gotowości)
bull Czas obsługi mdash czas przez ktoacutery proces był wykonywany (wykorzystywał procesor) od momentu przyjęcia do systemu
bull Rzeczywisty czas przebywania w systemie mdash czas spędzony w systemie od momentu przyjęcia (czas obsługi + czasoczekiwania + czas realizacji żądań zasobowych)
bull Czasowa linia krytyczna mdash czas po ktoacuterym wartość wynikoacutewspada (nawet do zera np przy przewidywaniu pogody)
bull Priorytet zewnętrzny mdash składowa priorytetu ktoacutera pozwalawyroacuteżnić procesy ze względu na klasy użytkownikoacutew lubrodzaj wykonywanych zadań
bull Wymagania odnośnie wielkości przestrzeni adresowej pamięcibull Obciążenie systemu mdash liczba procesoacutew przebywających w
systemie i ubiegających się (potencjalnie) o przydziałprocesora lub innych zasoboacutew zajętość pamięci
Systemy operacyjne Wykład 3 851
Przykład realizacji przetwarzania
0 3 6 9 12
gotowość oczekiwanie wykonanie
P1
P2
P3
Diagram przedstawia zmiany stanu 3 procesoacutew w czasieobrazując parametry czasowe
Systemy operacyjne Wykład 3 951
Reguła arbitrażu
bull Losowo mdash możliwe w przypadku gdy liczba procesoacutew o tym samym priorytecie jest niewielka
bull Cyklicznie mdash cykliczny przydział procesora kolejnym procesom
bull Chronologicznie mdash w kolejności przyjmowaniaprocesoacutew do systemu (w kolejności FIFO)
Systemy operacyjne Wykład 3 1051
Kryteria oceny algorytmoacutew
planowaniabull Efektywność z punktu widzenia systemu
ndash wykorzystanie procesora (processor utilization) mdash procent czasu przez ktoacuteryprocesor jest zajęty pracą
ndash przepustowość (throughput) mdash liczba procesoacutew kończonych w jednostce czasu
bull Inne aspekty z punktu widzenia systemundash sprawiedliwość (fairness) mdash roacutewne traktowanie procesoacutewndash respektowanie zewnętrznych priorytetoacutew procesoacutewndash roacutewnoważenie obciążenia wykorzystania zasoboacutew
bull Efektywność z punktu widzenia użytkownikandash czas cyklu przetwarzania (turnaround time) mdash czas pomiędzy przedłożeniem
zadania a zakończeniem jego wykonywania (rzeczywisty czas przebywania wsystemie w momencie zakończenie procesu)
ndash czas odpowiedzi (reakcji) (response time) mdash czas pomiędzy przedłożeniem żądania a rozpoczęciem przekazywania odpowiedzi
ndash czas opoacuteźnienia mdash czas od linii krytycznej do momentu zakończenia wykonywania
bull Inne aspekty z punktu widzenia użytkownikandash przewidywalność mdash realizacja przetwarzania w zbliżonym czasie niezależnie od
obciążenia systemu
Systemy operacyjne Wykład 3 1151
Algorytmy planowania
niewywłaszczającego
bull FCFS (First Come First Served) mdash pierwszyzgłoszony pierwszy obsłużony
bull LCFS (Last Come First Served) mdash ostatnizgłoszony pierwszy obsłużony
bull SJF (SJN SPF SPN Shortest JobProcess FirstNext) mdash najpierw najkroacutetsze zadanie
Systemy operacyjne Wykład 3 1251
Algorytmy planowania
wywłaszczającego
bull Planowanie rotacyjne (Round Robin RR) mdash poustalonym kwancie czasu proces wykonywanyjest przerywany i trafia do kolejki procesoacutewgotowych
bull SRT (Shortest Remaining Time) mdash najpierwzadanie ktoacutere ma najkroacutetszy czas dozakończenia
Systemy operacyjne Wykład 3 1351
Podstawowe algorytmy planowania
a funkcja priorytetu
bull Podstawowe algorytmy planowania możnauzyskać przez odpowiednią definicję funkcjipriorytetu
bull Parametrami funkcji priorytetu dla podstawowychalgorytmy planowania są następujące atrybutyczasowe procesoacutewndash a mdash bieżący (dotychczasowy) czas obsługindash r mdash rzeczywisty czas w systemiendash t mdash całkowity wymagany czas obsługi (czas
obsługi do momentu zakończenia)
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 851
Przykład realizacji przetwarzania
0 3 6 9 12
gotowość oczekiwanie wykonanie
P1
P2
P3
Diagram przedstawia zmiany stanu 3 procesoacutew w czasieobrazując parametry czasowe
Systemy operacyjne Wykład 3 951
Reguła arbitrażu
bull Losowo mdash możliwe w przypadku gdy liczba procesoacutew o tym samym priorytecie jest niewielka
bull Cyklicznie mdash cykliczny przydział procesora kolejnym procesom
bull Chronologicznie mdash w kolejności przyjmowaniaprocesoacutew do systemu (w kolejności FIFO)
Systemy operacyjne Wykład 3 1051
Kryteria oceny algorytmoacutew
planowaniabull Efektywność z punktu widzenia systemu
ndash wykorzystanie procesora (processor utilization) mdash procent czasu przez ktoacuteryprocesor jest zajęty pracą
ndash przepustowość (throughput) mdash liczba procesoacutew kończonych w jednostce czasu
bull Inne aspekty z punktu widzenia systemundash sprawiedliwość (fairness) mdash roacutewne traktowanie procesoacutewndash respektowanie zewnętrznych priorytetoacutew procesoacutewndash roacutewnoważenie obciążenia wykorzystania zasoboacutew
bull Efektywność z punktu widzenia użytkownikandash czas cyklu przetwarzania (turnaround time) mdash czas pomiędzy przedłożeniem
zadania a zakończeniem jego wykonywania (rzeczywisty czas przebywania wsystemie w momencie zakończenie procesu)
ndash czas odpowiedzi (reakcji) (response time) mdash czas pomiędzy przedłożeniem żądania a rozpoczęciem przekazywania odpowiedzi
ndash czas opoacuteźnienia mdash czas od linii krytycznej do momentu zakończenia wykonywania
bull Inne aspekty z punktu widzenia użytkownikandash przewidywalność mdash realizacja przetwarzania w zbliżonym czasie niezależnie od
obciążenia systemu
Systemy operacyjne Wykład 3 1151
Algorytmy planowania
niewywłaszczającego
bull FCFS (First Come First Served) mdash pierwszyzgłoszony pierwszy obsłużony
bull LCFS (Last Come First Served) mdash ostatnizgłoszony pierwszy obsłużony
bull SJF (SJN SPF SPN Shortest JobProcess FirstNext) mdash najpierw najkroacutetsze zadanie
Systemy operacyjne Wykład 3 1251
Algorytmy planowania
wywłaszczającego
bull Planowanie rotacyjne (Round Robin RR) mdash poustalonym kwancie czasu proces wykonywanyjest przerywany i trafia do kolejki procesoacutewgotowych
bull SRT (Shortest Remaining Time) mdash najpierwzadanie ktoacutere ma najkroacutetszy czas dozakończenia
Systemy operacyjne Wykład 3 1351
Podstawowe algorytmy planowania
a funkcja priorytetu
bull Podstawowe algorytmy planowania możnauzyskać przez odpowiednią definicję funkcjipriorytetu
bull Parametrami funkcji priorytetu dla podstawowychalgorytmy planowania są następujące atrybutyczasowe procesoacutewndash a mdash bieżący (dotychczasowy) czas obsługindash r mdash rzeczywisty czas w systemiendash t mdash całkowity wymagany czas obsługi (czas
obsługi do momentu zakończenia)
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 951
Reguła arbitrażu
bull Losowo mdash możliwe w przypadku gdy liczba procesoacutew o tym samym priorytecie jest niewielka
bull Cyklicznie mdash cykliczny przydział procesora kolejnym procesom
bull Chronologicznie mdash w kolejności przyjmowaniaprocesoacutew do systemu (w kolejności FIFO)
Systemy operacyjne Wykład 3 1051
Kryteria oceny algorytmoacutew
planowaniabull Efektywność z punktu widzenia systemu
ndash wykorzystanie procesora (processor utilization) mdash procent czasu przez ktoacuteryprocesor jest zajęty pracą
ndash przepustowość (throughput) mdash liczba procesoacutew kończonych w jednostce czasu
bull Inne aspekty z punktu widzenia systemundash sprawiedliwość (fairness) mdash roacutewne traktowanie procesoacutewndash respektowanie zewnętrznych priorytetoacutew procesoacutewndash roacutewnoważenie obciążenia wykorzystania zasoboacutew
bull Efektywność z punktu widzenia użytkownikandash czas cyklu przetwarzania (turnaround time) mdash czas pomiędzy przedłożeniem
zadania a zakończeniem jego wykonywania (rzeczywisty czas przebywania wsystemie w momencie zakończenie procesu)
ndash czas odpowiedzi (reakcji) (response time) mdash czas pomiędzy przedłożeniem żądania a rozpoczęciem przekazywania odpowiedzi
ndash czas opoacuteźnienia mdash czas od linii krytycznej do momentu zakończenia wykonywania
bull Inne aspekty z punktu widzenia użytkownikandash przewidywalność mdash realizacja przetwarzania w zbliżonym czasie niezależnie od
obciążenia systemu
Systemy operacyjne Wykład 3 1151
Algorytmy planowania
niewywłaszczającego
bull FCFS (First Come First Served) mdash pierwszyzgłoszony pierwszy obsłużony
bull LCFS (Last Come First Served) mdash ostatnizgłoszony pierwszy obsłużony
bull SJF (SJN SPF SPN Shortest JobProcess FirstNext) mdash najpierw najkroacutetsze zadanie
Systemy operacyjne Wykład 3 1251
Algorytmy planowania
wywłaszczającego
bull Planowanie rotacyjne (Round Robin RR) mdash poustalonym kwancie czasu proces wykonywanyjest przerywany i trafia do kolejki procesoacutewgotowych
bull SRT (Shortest Remaining Time) mdash najpierwzadanie ktoacutere ma najkroacutetszy czas dozakończenia
Systemy operacyjne Wykład 3 1351
Podstawowe algorytmy planowania
a funkcja priorytetu
bull Podstawowe algorytmy planowania możnauzyskać przez odpowiednią definicję funkcjipriorytetu
bull Parametrami funkcji priorytetu dla podstawowychalgorytmy planowania są następujące atrybutyczasowe procesoacutewndash a mdash bieżący (dotychczasowy) czas obsługindash r mdash rzeczywisty czas w systemiendash t mdash całkowity wymagany czas obsługi (czas
obsługi do momentu zakończenia)
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 1051
Kryteria oceny algorytmoacutew
planowaniabull Efektywność z punktu widzenia systemu
ndash wykorzystanie procesora (processor utilization) mdash procent czasu przez ktoacuteryprocesor jest zajęty pracą
ndash przepustowość (throughput) mdash liczba procesoacutew kończonych w jednostce czasu
bull Inne aspekty z punktu widzenia systemundash sprawiedliwość (fairness) mdash roacutewne traktowanie procesoacutewndash respektowanie zewnętrznych priorytetoacutew procesoacutewndash roacutewnoważenie obciążenia wykorzystania zasoboacutew
bull Efektywność z punktu widzenia użytkownikandash czas cyklu przetwarzania (turnaround time) mdash czas pomiędzy przedłożeniem
zadania a zakończeniem jego wykonywania (rzeczywisty czas przebywania wsystemie w momencie zakończenie procesu)
ndash czas odpowiedzi (reakcji) (response time) mdash czas pomiędzy przedłożeniem żądania a rozpoczęciem przekazywania odpowiedzi
ndash czas opoacuteźnienia mdash czas od linii krytycznej do momentu zakończenia wykonywania
bull Inne aspekty z punktu widzenia użytkownikandash przewidywalność mdash realizacja przetwarzania w zbliżonym czasie niezależnie od
obciążenia systemu
Systemy operacyjne Wykład 3 1151
Algorytmy planowania
niewywłaszczającego
bull FCFS (First Come First Served) mdash pierwszyzgłoszony pierwszy obsłużony
bull LCFS (Last Come First Served) mdash ostatnizgłoszony pierwszy obsłużony
bull SJF (SJN SPF SPN Shortest JobProcess FirstNext) mdash najpierw najkroacutetsze zadanie
Systemy operacyjne Wykład 3 1251
Algorytmy planowania
wywłaszczającego
bull Planowanie rotacyjne (Round Robin RR) mdash poustalonym kwancie czasu proces wykonywanyjest przerywany i trafia do kolejki procesoacutewgotowych
bull SRT (Shortest Remaining Time) mdash najpierwzadanie ktoacutere ma najkroacutetszy czas dozakończenia
Systemy operacyjne Wykład 3 1351
Podstawowe algorytmy planowania
a funkcja priorytetu
bull Podstawowe algorytmy planowania możnauzyskać przez odpowiednią definicję funkcjipriorytetu
bull Parametrami funkcji priorytetu dla podstawowychalgorytmy planowania są następujące atrybutyczasowe procesoacutewndash a mdash bieżący (dotychczasowy) czas obsługindash r mdash rzeczywisty czas w systemiendash t mdash całkowity wymagany czas obsługi (czas
obsługi do momentu zakończenia)
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 1151
Algorytmy planowania
niewywłaszczającego
bull FCFS (First Come First Served) mdash pierwszyzgłoszony pierwszy obsłużony
bull LCFS (Last Come First Served) mdash ostatnizgłoszony pierwszy obsłużony
bull SJF (SJN SPF SPN Shortest JobProcess FirstNext) mdash najpierw najkroacutetsze zadanie
Systemy operacyjne Wykład 3 1251
Algorytmy planowania
wywłaszczającego
bull Planowanie rotacyjne (Round Robin RR) mdash poustalonym kwancie czasu proces wykonywanyjest przerywany i trafia do kolejki procesoacutewgotowych
bull SRT (Shortest Remaining Time) mdash najpierwzadanie ktoacutere ma najkroacutetszy czas dozakończenia
Systemy operacyjne Wykład 3 1351
Podstawowe algorytmy planowania
a funkcja priorytetu
bull Podstawowe algorytmy planowania możnauzyskać przez odpowiednią definicję funkcjipriorytetu
bull Parametrami funkcji priorytetu dla podstawowychalgorytmy planowania są następujące atrybutyczasowe procesoacutewndash a mdash bieżący (dotychczasowy) czas obsługindash r mdash rzeczywisty czas w systemiendash t mdash całkowity wymagany czas obsługi (czas
obsługi do momentu zakończenia)
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 1251
Algorytmy planowania
wywłaszczającego
bull Planowanie rotacyjne (Round Robin RR) mdash poustalonym kwancie czasu proces wykonywanyjest przerywany i trafia do kolejki procesoacutewgotowych
bull SRT (Shortest Remaining Time) mdash najpierwzadanie ktoacutere ma najkroacutetszy czas dozakończenia
Systemy operacyjne Wykład 3 1351
Podstawowe algorytmy planowania
a funkcja priorytetu
bull Podstawowe algorytmy planowania możnauzyskać przez odpowiednią definicję funkcjipriorytetu
bull Parametrami funkcji priorytetu dla podstawowychalgorytmy planowania są następujące atrybutyczasowe procesoacutewndash a mdash bieżący (dotychczasowy) czas obsługindash r mdash rzeczywisty czas w systemiendash t mdash całkowity wymagany czas obsługi (czas
obsługi do momentu zakończenia)
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 1351
Podstawowe algorytmy planowania
a funkcja priorytetu
bull Podstawowe algorytmy planowania możnauzyskać przez odpowiednią definicję funkcjipriorytetu
bull Parametrami funkcji priorytetu dla podstawowychalgorytmy planowania są następujące atrybutyczasowe procesoacutewndash a mdash bieżący (dotychczasowy) czas obsługindash r mdash rzeczywisty czas w systemiendash t mdash całkowity wymagany czas obsługi (czas
obsługi do momentu zakończenia)
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 1451
Własności algorytmoacutew planowania
algorytm priorytet tryb decyzji arbitraż
FIFO r niewywłaszczeniowy losowy
LIFO -r niewywłaszczeniowy losowy
SJF -t niewywłaszczeniowylosowy lub
chronologiczny
SRT a -t wywłaszczeniowylosowy lub
chronologiczny
RR stały wywłaszczeniowy cykliczny
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 1551
Przykłady uszeregowania
0 3 6 9
bez wywłaszczeń
z wywłaszczaniem
P1P2P3
P1P2P3
P1P2P3
P1P2P3
FCFS
SJF
SRT
RR
wykonywanie
gotowość
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 1651
Estymacja czasu obsługi ndash
algorytmy SJF SRT
n
SnTST
nS nn
n
n
i
in
111
1
1
1
1
1
1
1
11
1
111
1
1
TTTT
TS
STS
n
in
i
nn
n
i
n
i
n
nnn
Średnia wykładnicza
Średnia arytmetyczna
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 1751
Doboacuter kwantu czasubull Kroacutetki kwant czasu oznacza zmniejszenie czasu cyklu
przetwarzania procesoacutew kroacutetkich ale zwiększa narzutczasowy związany z przełączaniem kontekstu
bull Z punktu widzenia interakcji z użytkownikiem kwantczasu powinien być trochę większy niż czasodpowiedzi (reakcji)
czas odpowiedzi
kwant czasu gt czas interakcji
czas odpowiedzi
kwant czasu
kwant czasu lt czas interakcji
kwant czasu
wykonywanie
oczekiwanie
gotowość
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 1851
Inne algorytmy planowania
bull Planowanie priorytetowe mdash oparte na prioryteciezewnętrznym
bull Planowanie wielokolejkowe mdash w systemie jest wiele kolejek procesoacutew gotowych i każda zkolejek może być inaczej obsługiwana
bull Planowanie przed liniami krytycznymi mdashzakończenie zadania przed czasową liniąkrytyczną lub możliwie kroacutetko po tej linii
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 1951
Szeregowanie procesoacutew
ograniczonych wejściem-wyjściem
bull Procesy ograniczone wejściem-wyjściem potrzebująniewiele czasu procesora większość czasu w systemiespędzając na oczekiwaniu na urządzenia zewnętrzne
bull Opoacuteźnianie przydziału procesora dla tego typu procesoacutew powoduje zmniejszenie wykorzystaniaurządzeń zewnętrznych a przydział mdash ze względu nanie długą fazę procesora mdash nie powoduje istotnegozwiększenia czasu oczekiwania innych procesoacutew
bull Właściwym algorytmem byłby SJF lub SRTbull Bezwzględna preferencja dla procesoacutew oczekujących
na gotowość urządzeń może spowodować głodzenieprocesoacutew ograniczonych procesorem
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 2051
Wirtualne planowanie rotacyjne
(VRR)
zamoacutewienieoperacji we - wy
upłynięciekwantu czasu
synchronizacjasygnał
we - wy
procesor
pomocnicza kolejkaprocesoacutew gotowych
głoacutewna kolejkaprocesoacutew gotowych
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 2151
Wielopoziomowe kolejki ze
sprzężeniem zwrotnym
poziom n
poziom 2
poziom 1
poziom 0
koniec fazyprocesora
procesor
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 2251
Implementacja algorytmoacutew
planowania
bull Z punktu widzenia przetwarzania użytkowegoprzełączanie kontekstu jest marnotrawstwemczasu procesora
bull Decyzja planisty musi zapaść w możliwie kroacutetkim czasie
bull Struktury danych muszą być tak zaprojektowaneżeby ułatwić dokonanie szybkiego wyboru procesuo najwyższym priorytecie zgodnie z politykąplanowania przydziału procesora (modelemmatematycznym)
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 2351
Implementacja algorytmu FCFS
bull Struktura danych dla kolejki procesoacutew gotowych 1048774 rarr kolejka FIFO
bull Umieszczenie procesu w kolejce procesoacutewgotowych rarr dopisanie procesu na końcu kolejki
FIFObull Wyboacuter procesu do wykonania rarr pobranie procesu
z czoła kolejki FIFObull Czy taki algorytm realizuje dokładnie założenia
modelu matematycznego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 2451
Kolejki priorytetowe
bull Kolejka priorytetowa jest wielopoziomową kolejkąze sprzężeniem zwrotnym w ktoacuterej każdy poziomodpowiada pewnej wartości priorytetu lubpewnemu zakresowi wartości
bull Umieszczenie procesu w kolejce priorytetowejsprowadza się do wyznaczenia pozycjiodpowiedniej dla priorytetu procesu a następnieumieszczeniu procesu na końcu kolejki na tejpozycji
bull Wyboacuter procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszejniepustej w kolejności malejących priorytetoacutew iwybrania pierwszego procesu z tej kolejki
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 2551
Szeregowanie w systemie UNIX
Informacje wstępnebull Stosowany jest algorytm rotacyjny z wywłaszczaniem
oparty na priorytetach dynamicznychbull Wartość priorytetu jest z zakresu od 0 do 127
mniejsza wartość liczbowa oznacza wyższy priorytetbull Priorytet (dynamiczny) składa się z części statycznej i
części modyfikowanej przez planistębull Część statyczna składa się z bazy (definiowanej przez
system) oraz wartość nice (ustalanej przezużytkownika lub nadzorcę)
bull Priorytet procesu ustalany jest zawsze gdy proces tenprzechodzi z trybu jądra do trybu użytkownika
bull Okresowo (mniej więcej co 1 sekundę) przeliczane sąpriorytety wszystkich procesoacutew gotowych
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 2651
Struktury danych na potrzeby
szeregowania
bull Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową mdash qs
bull Każda pozycja tablicy kolejek odpowiada czteremwartościom priorytetu
bull Wektor bitowy whichqs wskazuje pozycje naktoacuterych są niepuste kolejki
bull Wyroacuteżnia się 3 zakresy priorytetundash poziom jądra dla procesoacutew nieprzerywalnychndash poziom jądra dla procesoacutew przerywalnychndash poziom użytkownika
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 2751
Kolejka priorytetowa
priorytet 124 - 127
priorytet 0 - 3
priorytet 4 - 7
priorytet 8 - 11
priorytet 12 - 15
priorytet 16 - 19
priorytet 20 - 23
priorytet 24 - 27
priorytet 28 - 31
priorytet 120 - 123
1 1 1 01 0 1 11 0
qs
whichqs
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 2851
Parametry funkcji priorytetu i jego
przeliczaniebull cpui mdash miara dotychczasowego wykorzystania procesora przez
i-ty procesbull bazai mdash priorytet bazowy procesu i-tegobull nicei mdash składowa priorytetu procesu i-tego definiowana
przez użytkownikabull prii mdash priorytet procesu i-tego (mniejsza wartość oznacza
wyższy priorytet)bull usrprii mdash priorytet procesu i-tego w trybie użytkownika
1ii cpucpu2
ii
cpucpu
ii
ii nicecpu
bazausrpri2
ii usrpripri
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 2951
Przykładusrpri1 cpu1 usrpri2 cpu2 usrpri3 cpu3
proces P1 proces P2 proces P3
60 60 60
75
67
63
60
75
67
60
60
75
01hellip
60
01hellip
60
01hellip
60
78hellip
67
15
30
15
30
0
30
0
0
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 3051
Szeregowanie w systemie Linux
(jądro 26) Informacje wstępne
bull Priorytet (dynamiczny) składa się z częścistatycznej i części modyfikowanej przez planistę
bull Część statyczna definiowana jest przez wartośćnice z zakresu od -20 do 19
bull Priorytet dynamiczny decyduje zaroacutewno opierwszeństwie w dostępie do procesora jak iwielkości kwantu czasu (od 10 ms do 200 ms)
bull Preferowane są (nagradzane wyższympriorytetem dynamicznym) zadania ograniczonewejściem-wyjściem
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 3151
Priorytety procesoacutew czasu
rzeczywistegobull Priorytety przydzielane są
statycznie (nie zmieniająsię) z zakresu od 0 do 99
bull Priorytety procesoacutew czasurzeczywistego są zawszewiększe od priorytetoacutewzadań zwykłych
bull Do grupy zadań czasurzeczywistego mogą byćdołączona tylko procesy nadzorcy (użytkownikauprzywilejowanego root)
0
99100
139
-20
19
nice
pri
ory
tety
czasu
rzeczyw
iste
go
pri
ory
tety
zw
ykłe
Tablica priorytetoacutew
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 3251
Struktury danych do zarządzania
procesami gotowymi
bull Tablica priorytetoacutew dla zadań aktywnych mdashtablica kolejek procesoacutew gotowych ktoacutere niewykorzystały jeszcze kwantu czasu
bull Tablica priorytetoacutew dla zadań przeterminowanychmdash tablica kolejek procesoacutew gotowych ktoacuterewykorzystały kwant czasu
bull Mapa (maska) bitowa dla każdej z tablicidentyfikująca niepuste kolejki w tablicypriorytetowej
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 3351
Wywłaszczenie
bull Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra poobsłużeniu przerwania lub zakończeniu wywołaniasystemowego gdy znacznik need_resched jestustawiony
bull Znacznik jest ustawiany w następujących przypadkach
ndash po upływie kwantu czasu bieżącego(wykonywanego) zadania
ndash po uzyskaniu gotowości przez zadanie owyższym niż bieżące priorytecie
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 3451
Upłynięcie kwantu czasu
bull Po upłynięciu kwantu czasu wykonywanegoprocesu zwykłego następuje przeliczenie jegopriorytetu oraz wyznaczenie następnego kwantuczasu
bull Jeśli proces charakteryzuje się dużym stopnieminteraktywności a w systemie nie ma zadańprzeterminowanych jest on umieszczany naodpowiedniej pozycji w tablicy priorytetoacutew dlazadań aktywnych w przeciwnym przypadkuumieszczany jest tablicy priorytetoacutew dla zadańprzeterminowanych
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 3551
Zmiana epoki
bull Jeśli tablica priorytetoacutew dla zadań aktywnychjest pusta (wszystkie procesy gotowewykorzystały swoacutej kwant czasu) następujezmiana epoki
bull Zmiana epoki oznacza zamianę tablicypriorytetoacutew tablica priorytetoacutew dla zadańprzeterminowanych staję się tablicą dlazadań aktywnych i odwrotnie
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 3651
Zmiana priorytetoacutew dynamicznych
bull Początkowy priorytet procesu zwykłego roacutewnyjest wartości nice
bull Wartość priorytetu może zostać zmienionanastępująco
ndash zwiększona o 5 dla zadań ograniczonychprocesorem (obniżenia priorytetu)
ndash zmniejszona o 5 dla zadań ograniczonychwejściem-wyjściem rozumianych przezdomniemanie jako interaktywne
ndash pozostać bez zmianbull Proporcjonalnie do priorytetu ustalana jest
wielkość kwantu czasu (z zakresu od 10 ms do200 ms domyślnie 100 ms)
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 3751
Ocena interaktywności
bull Miarą interaktywności jest względna długośćokresoacutew korzystania z procesora orazprzebywania w stanie oczekiwania
bull Implementacją takiej koncepcji w systemie Linuxjest atrybut procesu sleep_avg zmniejszany wczasie wykonywania procesu a zwiększany powyjściu ze stanu oczekiwania
bull Wartość sleep_avg zmienia się od 0 doMAX_SLEEP_AVG a wartością domyślna jest10 ms
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 3851
Planowanie w klasie czasu
rzeczywistego
bull Na danym poziomie priorytetu najpierwwybierane są procesy klasy SCHED_FIFO
bull Proces klasy SCHED_FIFO wykonuje się takdługa aż nie odda procesora lub nie pojawi sięproces o wyższym priorytecie
bull Proces klasy SCHED_RR wykonuje się podobniejak proces klasy SCHED_FIFO ale po upływiekwantu czasu oddaje zasoby innemu procesowi otym samym priorytecie (jeśli taki procesistnieje)
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 3951
Szeregowanie w systemie Windows
2000XP Informacje wstępne
bull Szeregowaniu podlegają wątki stanowiąceobiekty w obrębie procesu
bull Stosowany jest algorytm rotacyjny zwywłaszczaniem oparty na priorytetach dynamicznych
bull Wyroacuteżnia się 32 poziomy priorytetundash 0 mdash bezczynność (poziom systemowy
niedostępny)ndash 1 do 15 mdash priorytety dynamiczne (zmienne)ndash 16 do 31 mdash priorytety czasu rzeczywistego
bull Większa wartość (poziom) oznacza wyższy priorytet
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 4051
Definiowanie priorytetu
bull Zdefiniowanie klasy priorytetu dla procesuidle (4) below normal (6) normal (8)above normal (10) high (13) realtime (24)
bull Zmodyfikowanie priorytetu wątku w ramach klasypriorytetuidle (-15) lowest (-2) below normal (-1)normal (0) above normal (+1) highest (+2)time critical (+15)
bull Priorytet bazowy wątku jest sumą wartości dlaklasy oraz modyfikatora (priorytetu wątku)
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 4151
Priorytet bazowy wątkuTHREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_IDLE
1516
pri
ory
tet
czasu
rzeczyw
iste
go
pri
ory
tet
dynam
iczny
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 4251
Struktury danych do zarządzania
wątkami gotowymibull KiDispatcherReadyListHead mdash tablica kolejek wątkoacutew gotowychbull KiReadySummary mdash maska bitowa identyfikująca niepustekolejki w tablicy KiDispatcherReadyListHead
1
31wątek TA
wątek TC wątek TB
wątek TE
wątek TD
proces P1
proces P2
KiDispatcherReadyListHead
0 0110∙∙∙0 0 KiReadySummary
Tablica kolejek wątkoacutew gotowych
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 4351
Przełączanie kontekstu
bull Zakończenie działania wątkubull Przejście w stan oczekiwania (samoistnie mdash w
wyniku odwołania do systemu operacyjnego wprogramie np wątku w związku z synchronizacjąlub operacją wejścia - wyjścia)
bull Wywłaszczenie przez wątek o wyższympriorytecie
bull Upłynięcie kwantu czasu
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 4451
Procedury zarządzania wątkami
gotowymi
bull FindReadyThreadndash uruchamiana po zwolnieniu procesora przez
wątek wykonywanyndash szuka wątku gotowego o najwyższym
priorytecie i ekspediuje go na procesorbull ReadyThread
ndash uruchamiana dla wątku ktoacutery przechodzi wstan gotowości lub zwiększa priorytet
ndash poroacutewnuje priorytet gotowego wątku zpriorytetem wątku wykonywanego i albowywłaszcza wątek wykonywany albo kolejkuje wątek gotowy
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 4551
Przebieg wywłaszczenia przez
ReadyThread
Niech Tg oznacza wątek gotowyTw wątek wykonywany a pri(T) priorytet wątku T
if pri(Tg) gt pri(Tw) thenif liczba wykorzystanych kwantoacutew przez Tw ge 1 then
umieść Tw na końcu KiDispatcherReadyListHead[pri(Tw)]else
umieść Tw na pocz KiDispatcherReadyListHead[pri(Tw)]else
umieść Tg na końcu KiDispatcherReadyListHead[pri(Tg)]
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 4651
Upłynięcie kwantu czasu
bull Kwant wyrażanych jest jednostkach kwantu czasubull Liczba jednostek do dyspozycji wątku wynosi
ndash 6 mdash w wersjach dla komputeroacutew osobistych i stacji roboczych
ndash 36 mdash w wersjach dla serweroacutewbull Z każdym taktem zegara odejmowane są 3 jednostkibull Upłynięcie kwantu czasu (zredukowanie liczby
jednostek do 0) powoduje wywłaszczenie z procesorapod warunkiem że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie
bull Jeśli dotychczas działający wątek jest jedynym otak wysokim priorytecie przydzielony zostaje mukolejny kwant
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 4751
Regulacja kwantu czasu
bull Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostkakwantu gdy wchodzi o w stan oczekiwania
bull Jeśli jednak wątek działa na poziomie 14 lub wyższym przedzredukowaniem jego kwant jest odnawiany
bull Podobne postępowanie jest przeprowadzane w pewnych przypadku wątkoacutew pierwszoplanowych nawet jeśli ich priorytet jest mniejszy niż 14
bull W przypadku wątkoacutew o priorytetach powyżej 15 liczba jednostek kwantujest odnawiana po wyjściu ze stanu oczekiwania
bull Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwantczasu zależnie od ustawienia rejestru HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątkoacutewzwiązanych z oknem pierwszoplanowym przy jednoczesnym uniknięciuzagłodzenia wątkoacutew drugoplanowych
bull W ramach przeciwdziałania głodzeniu wydłużany jest roacutewnież 2-krotnieczas dla wątkoacutew oczekujących długo (ponad 300 taktoacutew) na procesorCelem tego wydłużenia jest przeciwdziałanie inwersji priorytetoacutew
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 4851
Zmiana dynamicznych priorytetoacutew
wątkoacutew
bull Podwyższenie priorytetu wątku (maksymalnie dowartości 15) może nastąpić w następującychprzypadkachndash po zakończeniu operacji wejścia-wyjściandash po oczekiwaniu na zdarzenie lub semaforndash po zakończeniu oczekiwania przez wątek
pierwszoplanowyndash po przebudzeniu wątku GUIndash po zbyt długim oczekiwaniu w stanie gotowości
bull Podwyższony priorytet jest obniżany sukcesywnieo 1 po upływie kwantu czasu aż wroacuteci do wartościbazowej
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 4951
Wzrost priorytetu
bull Operacja związana z dyskiem CD portem roacutewnoległym lub kartą wideo mdash wzrost o 1
bull Operacja związana z siecią portem szeregowym potokiemskrytką pocztową mdash wzrost o 2
bull Operacja związana z klawiaturą lub myszą mdash wzrost o 6bull Operacja związana z kartą dźwiękową mdash wzrost o 8bull Wartość podwyższenia dodawana jest do bazowego priorytetu
wątku
po zakończeniu operacji wejścia-wyjścia
po oczekiwaniu na zdarzenie lub semafor
bull Wartość zwiększenia 1 dodawana jest do bazowego priorytetuwątku
bull Kwant czasu procesora zmniejszany jest o 1 jednostkę
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 5051
Wzrost priorytetupo zakończeniu oczekiwania
przez wątek pierwszoplanowy
bull Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation dostępnej też jako jedno z poacutel w rejestrzeWindows pod nazwą HKLMSYSTEMCurrentControlSetControlPriorityControlWin32PrioritySeparation
bull Wartość zwiększenia dodawana jest do bieżącego priorytetuwątku
bull Zależnie do wartości Win32PrioritySeparation może zostaćzwiększony kwant czasu dla wszystkich wątkoacutew procesu pierwszoplanowego
po przebudzeniu wątku GUI
bull Wartość zwiększenia mdash 2 mdash dodawana jest do bieżącegopriorytetu wątku
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego
Systemy operacyjne Wykład 3 5151
Przeciwdziałanie głodzeniu
bull Co sekundę uruchamiany jest wątek balance setmanager ktoacuterego jednym z zadań jestsprawdzanie czasu bieżącego oczekiwania wątkoacutewgotowych
bull Jeśli wątek oczekuje dłużej niż 300 taktoacutew zegara(około 3 ndash 4 sekundy) jego priorytet uzyskujewartość 15 a kwant czasu zwiększa siędwukrotnie a w wersjach bdquoserwerowychrdquoczterokrotnie
bull Po upływie przyznanego kwantu priorytet wątkuwraca do poziomu bazowego