51
Systemy operacyjne Wykład 3 1/51 Planowanie przydziału procesora • Komponenty jądra związane z szeregowaniem • Ogólna koncepcja planowania • Kryteria oceny algorytmów planowania • Algorytmy planowania • Przykłady implementacji przydziału czasu procesora w systemach Linux i Windows

Planowanie przydziału procesora - ujk.edu.pl · Systemy operacyjne Wykład 3 6/51 Funkcja priorytetu • Argumentami funkcji priorytetu są wybrane ... Szeregowanie procesów ograniczonych

  • 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