Planowanie przydziału procesora

Podobne dokumenty
Planowanie przydziału procesora

Planowanie przydziału procesora

przydziału procesora Przykłady implementacji planowania przydziału procesora Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Przykłady implementacji planowania przydziału procesora

Planowanie przydziału procesora

Ogólna koncepcja planowania. Planowanie przydziału procesora. Komponenty jądra w planowaniu. Tryb decyzji. Podejmowanie decyzji o wywłaszczeniu

Przykłady implementacji planowania przydziału procesora. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Informatyka, systemy, sieci komputerowe

Zarządzanie w systemach i sieciach komputerowych. Dr inż. Robert Wójcik. Wykład 3. Zarządzanie przydziałami procesora w systemach komputerowych

Planowanie przydziału procesora

Planowanie przydziału procesora

Zarządzanie procesorem

Zarządzanie w systemach i sieciach komputerowych. Dr inż. Robert Wójcik. Wykład 3. Zarządzanie przydziałami procesora w systemach komputerowych

Wykład 6. Planowanie (szeregowanie) procesów (ang. process scheduling) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Planowanie przydziału procesora CPU scheduling. Koncepcja szeregowania. Planista przydziału procesora (planista krótkoterminowy) CPU Scheduler

Fazy procesora i wejścia-wyjścia. Planowanie przydziału procesora. Czasy faz procesora. Planowanie przydziału procesora

Planowanie przydziału procesora

Przełączanie kontekstu. Planista średnioterminowy. Diagram kolejek. Kolejki planowania procesów. Planiści

Zarządzanie procesami i wątkami

Systemy operacyjne III

Pytania do treści wykładów:

Celem wykładu jest przedstawienie zagadnień planowania przydziału procesora, czyli szeregowania procesów w dostępie do procesora.

Szeregowanie zadań w Linux Kernel 2.6. Daniel Górski Przemysław Jakubowski

Prezentacja systemu RTLinux

Procesy, wątki i zasoby

Systemy Operacyjne - zarządzanie procesami

Planowanie przydziału procesora

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

2.1 Wstęp Kryteria planowania Algorytmy planowania Systemy wieloprocesorowe i czasu rzeczywistego...

Zbigniew S. Szewczak Podstawy Systemów Operacyjnych

Materiały pomocnicze 1

Materiały pomocnicze 1

Procesy, zasoby i wątki

Procesy, zasoby i wątki

BSD - alternatywa dla Linuksa

Szeregowanie zadań we współczesnych systemach operacyjnych. Szeregowanie zadań w Linux Kernel 2.6

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

Procesy, zasoby i wątki

1. Szeregowanie w systemach czasu rzeczywistego

KOMPONENTY SYSTEMÓW OPERACYJNYCH

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Celem wykładu jest wprowadzenie fundamentalnych pojęć, integralnie związanych z systemem operacyjnym, na których opiera się przetwarzanie we

Systemy Operacyjne. Dr inż. Sławomir Samolej WWW: ssamolej.prz-rzeszow.pl

4. Procesy pojęcia podstawowe

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

4. Procesy pojęcia podstawowe

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Systemy operacyjne Procesy i wątki

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

Systemy Operacyjne. Dr inż. Sławomir Samolej WWW: ssamolej.prz-rzeszow.pl

Programowanie współbieżne Wykład 2. Iwona Kochańska

Podstawy Informatyki Systemy operacyjne

Wieloprogramowanie. Systemy operacyjne / Procesy i wątki str.4/32. Proces w systemie operacyjnym. Tworzenie i kończenie procesów

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego

PRZERWANIA. 1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

SYSTEMY OPERACYJNE LABORATORIUM 2014/2015

Przerwania, polling, timery - wykład 9

Budowa systemów komputerowych

System wejścia-wyjścia

Jadro Linux 2.6. a zadania czasu rzeczywistego. Artur Lewandowski. Jądro Linux 2.6 p.1/14

Podstawowe zagadnienia

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.3

Wykład 6 Planista procesora funkcja schedule. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus

Mechanizmy pracy równoległej. Jarosław Kuchta

Zarządzanie w systemach i sieciach komputerowych. Dr inż. Robert Wójcik. Wykład 2. Zasoby i procesy w systemach i sieciach komputerowych

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Proces y i y w i ąt ą ki

4. Procesy pojęcia podstawowe

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Urządzenia wejścia-wyjścia

Mariusz Rudnicki PROGRAMOWANIE WSPÓŁBIEŻNE I SYSTEMY CZASU RZECZYWISTEGO CZ.3

Metody obsługi zdarzeń

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Zarządzanie procesami (omawiane zagadnienia)

Elementy Modelowania Matematycznego

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

dr Adam Sojda Wykład Politechnika Śląska Badania Operacyjne Teoria kolejek

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

Jądro systemu operacyjnego

Fazy procesora i wejścia-wyjścia. Planowanie przydziału procesora. Czasy faz procesora. Planowanie przydziału procesora

Procesy, zasoby i wątki

Programowanie Niskopoziomowe

Simulator of Operating System

PROGRAMOWANIE SYSTEMÓW WBUDOWANYCH

WINDOWS NT - THREAD SCHEDULER

Koordynacja procesów w środowisku rozproszonym

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Wprowadzenie do systemów operacyjnych

System operacyjny MACH

REAL-TIME LINUX. ZGODNOŚĆ Z POSIX ( PSE51 (minimal realtime system profile)

Organizacja typowego mikroprocesora

Działanie systemu operacyjnego

Transkrypt:

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 Systemy operacyjne Wykład 3 1/51

Planowanie komponenty jądra Planista krótkoterminowy (CPU scheduler) wyznacza wartość priorytetu procesów gotowych i wybiera proces (o najwyższym priorytecie) do wykonania. Ekspedytor (zwany również dyspozytorem) (dispatcher) realizuje przekazanie sterowanie do procesu wybranego przez planistę (dokonuje przełączenia kontekstu). Systemy operacyjne Wykład 3 2/51

Ogólna koncepcja planowania Tryb decyzji określa okoliczności, w których oceniane i porównywane są priorytety procesów oraz dokonywany jest wybór procesu do wykonania. Funkcja priorytetu funkcja wyznaczająca aktualny priorytet procesu na podstawie parametrów procesu i stanu systemu. Reguła arbitrażu reguła rozstrzygania konfliktów w dostępie do procesora w przypadku procesów o tym samym priorytecie. Systemy operacyjne Wykład 3 3/51

Tryb decyzji Schemat niewywłaszczeniowy (nonpreemptive) proces po uzyskaniu dostępu do procesora wykonywany jest do momentu zakończenie lub zgłoszenia żądania obsługi do systemu. Schemat wywłaszczeniowy (preemptive) proces może zostać zatrzymany i umieszczony w kolejce procesów gotowych, a procesor zostaje przydzielony procesowi o wyższym (lub równym) priorytecie. Systemy operacyjne Wykład 3 4/51

Podejmowanie decyzji o wywłaszczeniu Utworzenie i przyjęcie nowego procesu. Obudzenie procesu w wyniku otrzymania komunikatu, sygnału gotowości urządzenia (przerwanie) lub sygnału wynikającego z synchronizacji. Upłynięcie kwantu czasu odmierzanego przez czasomierz. Wzrost priorytetu innego procesu w stanie gotowy powyżej priorytetu procesu wykonywanego możliwe w systemie ze zmiennymi priorytetami. Systemy operacyjne Wykład 3 5/51

Funkcja priorytetu Argumentami funkcji priorytetu są wybrane składowe stanu procesu oraz stanu systemu. Priorytet procesu w danej chwili jest wartością wynikową funkcji priorytetu dla bieżących wartości parametrów stanu danego procesu i aktualnego stanu systemu. Systemy operacyjne Wykład 3 6/51

Argumenty funkcji priorytetu Czas oczekiwania czas spędzony w kolejce procesów gotowych (czas spędzony w stanie gotowości). Czas obsługi czas, przez który proces był wykonywany (wykorzystywał procesor) od momentu przyjęcia do systemu. Rzeczywisty czas przebywania w systemie czas spędzony w systemie od momentu przyjęcia (czas obsługi + czas oczekiwania + czas realizacji żądań zasobowych). Czasowa linia krytyczna czas, po którym wartość wyników spada (nawet do zera, np. przy przewidywaniu pogody). Priorytet zewnętrzny składowa priorytetu, która pozwala wyróżnić procesy ze względu na klasy użytkowników lub rodzaj wykonywanych zadań. Wymagania odnośnie wielkości przestrzeni adresowej pamięci. Obciążenie systemu liczba procesów przebywających w systemie i ubiegających się (potencjalnie) o przydział procesora lub innych zasobów, zajętość pamięci. Systemy operacyjne Wykład 3 7/51

Przykład realizacji przetwarzania Diagram przedstawia zmiany stanu 3 procesów w czasie obrazując parametry czasowe. gotowość oczekiwanie wykonanie P 1 P 2 P 3 0 3 6 9 12 Systemy operacyjne Wykład 3 8/51

Reguła arbitrażu Losowo możliwe w przypadku, gdy liczba procesów o tym samym priorytecie jest niewielka. Cyklicznie cykliczny przydział procesora kolejnym procesom. Chronologicznie w kolejności przyjmowania procesów do systemu (w kolejności FIFO). Systemy operacyjne Wykład 3 9/51

Kryteria oceny algorytmów planowania Efektywność z punktu widzenia systemu: wykorzystanie procesora (processor utilization) procent czasu, przez który procesor jest zajęty pracą, przepustowość (throughput) liczba procesów kończonych w jednostce czasu. Inne aspekty z punktu widzenia systemu: sprawiedliwość (fairness) równe traktowanie procesów, respektowanie zewnętrznych priorytetów procesów, równoważenie obciążenia wykorzystania zasobów. Efektywność z punktu widzenia użytkownika: czas cyklu przetwarzania (turnaround time) czas pomiędzy przedłożeniem zadania, a zakończeniem jego wykonywania (rzeczywisty czas przebywania w systemie w momencie zakończenie procesu), czas odpowiedzi (reakcji), (response time) czas pomiędzy przedłożeniem żądania, a rozpoczęciem przekazywania odpowiedzi, czas opóźnienia czas od linii krytycznej do momentu zakończenia wykonywania. Inne aspekty z punktu widzenia użytkownika: przewidywalność realizacja przetwarzania w zbliżonym czasie niezależnie od obciążenia systemu. Systemy operacyjne Wykład 3 10/51

Algorytmy planowania niewywłaszczającego FCFS (First Come First Served) pierwszy zgłoszony, pierwszy obsłużony. LCFS (Last Come First Served) ostatni zgłoszony, pierwszy obsłużony. SJF (SJN, SPF, SPN, Shortest Job/Process First/Next) najpierw najkrótsze zadanie. Systemy operacyjne Wykład 3 11/51

Algorytmy planowania wywłaszczającego Planowanie rotacyjne (Round Robin, RR) po ustalonym kwancie czasu proces wykonywany jest przerywany i trafia do kolejki procesów gotowych. SRT (Shortest Remaining Time) najpierw zadanie, które ma najkrótszy czas do zakończenia. Systemy operacyjne Wykład 3 12/51

Podstawowe algorytmy planowania a funkcja priorytetu Podstawowe algorytmy planowania można uzyskać przez odpowiednią definicję funkcji priorytetu. Parametrami funkcji priorytetu dla podstawowych algorytmy planowania są następujące atrybuty czasowe procesów: a bieżący (dotychczasowy) czas obsługi, r rzeczywisty czas w systemie, t całkowity wymagany czas obsługi (czas obsługi do momentu zakończenia). Systemy operacyjne Wykład 3 13/51

Własności algorytmów planowania algorytm priorytet tryb decyzji arbitraż FIFO r niewywłaszczeniowy losowy LIFO -r niewywłaszczeniowy losowy SJF -t niewywłaszczeniowy SRT a -t wywłaszczeniowy losowy lub chronologiczny losowy lub chronologiczny RR stały wywłaszczeniowy cykliczny Systemy operacyjne Wykład 3 14/51

Przykłady uszeregowania bez wywłaszczeń FCFS SJF SRT RR P1 P2 P3 P1 P2 P3 P1 P2 P3 P1 P2 P3 z wywłaszczaniem gotowość wykonywanie 0 3 6 9 Systemy operacyjne Wykład 3 15/51

Systemy operacyjne Wykład 3 16/51 Estymacja czasu obsługi algorytmy SJF, SRT n S n T S T n S n n n n i i n 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 T T T T T S S T S n i n i n n n i n i n n n n Średnia wykładnicza Średnia arytmetyczna

Dobór kwantu czasu Krótki kwant czasu oznacza zmniejszenie czasu cyklu przetwarzania procesów krótkich, ale zwiększa narzut czasowy związany z przełączaniem kontekstu. Z punktu widzenia interakcji z użytkownikiem kwant czasu powinien być trochę większy, niż czas odpowiedzi (reakcji). kwant czasu > czas interakcji czas odpowiedzi kwant czasu wykonywanie oczekiwanie gotowość kwant czasu < czas interakcji kwant czasu czas odpowiedzi Systemy operacyjne Wykład 3 17/51

Inne algorytmy planowania Planowanie priorytetowe oparte na priorytecie zewnętrznym. Planowanie wielokolejkowe w systemie jest wiele kolejek procesów gotowych i każda z kolejek może być inaczej obsługiwana. Planowanie przed liniami krytycznymi zakończenie zadania przed czasową linią krytyczną lub możliwie krótko po tej linii. Systemy operacyjne Wykład 3 18/51

Szeregowanie procesów ograniczonych wejściem-wyjściem Procesy ograniczone wejściem-wyjściem potrzebują niewiele czasu procesora, większość czasu w systemie spędzając na oczekiwaniu na urządzenia zewnętrzne. Opóźnianie przydziału procesora dla tego typu procesów powoduje zmniejszenie wykorzystania urządzeń zewnętrznych, a przydział ze względu na nie długą fazę procesora nie powoduje istotnego zwiększenia czasu oczekiwania innych procesów. Właściwym algorytmem byłby SJF lub SRT. Bezwzględna preferencja dla procesów oczekujących na gotowość urządzeń może spowodować głodzenie procesów ograniczonych procesorem. Systemy operacyjne Wykład 3 19/51

Wirtualne planowanie rotacyjne główna kolejka procesów gotowych (VRR) procesor pomocnicza kolejka procesów gotowych we - wy zamówienie operacji we - wy upłynięcie kwantu czasu sygnał synchronizacja Systemy operacyjne Wykład 3 20/51

Wielopoziomowe kolejki ze sprzężeniem zwrotnym poziom 0 procesor poziom 1 poziom 2 koniec fazy procesora poziom n Systemy operacyjne Wykład 3 21/51

Implementacja algorytmów planowania Z punktu widzenia przetwarzania użytkowego przełączanie kontekstu jest marnotrawstwem czasu procesora. Decyzja planisty musi zapaść w możliwie krótkim czasie. Struktury danych muszą być tak zaprojektowane, żeby ułatwić dokonanie szybkiego wyboru procesu o najwyższym priorytecie zgodnie z polityką planowania przydziału procesora (modelem matematycznym). Systemy operacyjne Wykład 3 22/51

Implementacja algorytmu FCFS Struktura danych dla kolejki procesów gotowych kolejka FIFO. Umieszczenie procesu w kolejce procesów gotowych dopisanie procesu na końcu kolejki FIFO. Wybór procesu do wykonania pobranie procesu z czoła kolejki FIFO. Czy taki algorytm realizuje dokładnie założenia modelu matematycznego? Systemy operacyjne Wykład 3 23/51

Kolejki priorytetowe Kolejka priorytetowa jest wielopoziomową kolejką ze sprzężeniem zwrotnym, w której każdy poziom odpowiada pewnej wartości priorytetu lub pewnemu zakresowi wartości. Umieszczenie procesu w kolejce priorytetowej sprowadza się do wyznaczenia pozycji odpowiedniej dla priorytetu procesu, a następnie umieszczeniu procesu na końcu kolejki na tej pozycji. Wybór procesu o najwyższym priorytecie sprowadza się do zlokalizowania pierwszej niepustej w kolejności malejących priorytetów i wybrania pierwszego procesu z tej kolejki. Systemy operacyjne Wykład 3 24/51

Szeregowanie w systemie UNIX Informacje wstępne Stosowany jest algorytm rotacyjny z wywłaszczaniem, oparty na priorytetach dynamicznych. Wartość priorytetu jest z zakresu od 0 do 127, mniejsza wartość liczbowa oznacza wyższy priorytet. Priorytet (dynamiczny) składa się z części statycznej i części modyfikowanej przez planistę. Część statyczna składa się z bazy (definiowanej przez system) oraz wartość nice (ustalanej przez użytkownika lub nadzorcę). Priorytet procesu ustalany jest zawsze, gdy proces ten przechodzi z trybu jądra do trybu użytkownika. Okresowo (mniej więcej co 1 sekundę) przeliczane są priorytety wszystkich procesów gotowych. Systemy operacyjne Wykład 3 25/51

Struktury danych na potrzeby szeregowania Na potrzeby szeregowania procesy zorganizowane są w kolejkę priorytetową qs. Każda pozycja tablicy kolejek odpowiada czterem wartościom priorytetu. Wektor bitowy whichqs wskazuje pozycje, na których są niepuste kolejki. Wyróżnia się 3 zakresy priorytetu: poziom jądra dla procesów nieprzerywalnych, poziom jądra dla procesów przerywalnych, poziom użytkownika. Systemy operacyjne Wykład 3 26/51

Kolejka priorytetowa priorytet 0-3 priorytet 4-7 priorytet 8-11 priorytet 12-15 priorytet 16-19 priorytet 20-23 priorytet 24-27 priorytet 28-31 1 1 1 0 1 1 0 0 1 1 whichqs priorytet 120-123 priorytet 124-127 qs Systemy operacyjne Wykład 3 27/51

Parametry funkcji priorytetu i jego przeliczanie cpu i miara dotychczasowego wykorzystania procesora przez i-ty proces, baza i priorytet bazowy procesu i-tego, nice i składowa priorytetu procesu i-tego definiowana przez użytkownika, pri i priorytet procesu i-tego (mniejsza wartość oznacza wyższy priorytet), usrpri i priorytet procesu i-tego w trybie użytkownika. usrpri cpu i cpu i i baza i 1 cpu 2 i nice cpu cpu 2 Systemy operacyjne Wykład 3 28/51 i i i pri i usrpri i

Przykład usrpri 1 cpu 1 usrpri 2 cpu 2 usrpri 3 cpu 3 60 0 60 0 60 1 60 75 30 60 0 1 60 60 67 15 75 30 60 63 7 8 67 67 proces P 1 proces P 2 proces P 3 Systemy operacyjne Wykład 3 29/51 15 75 0 0 0 1 60 30

Szeregowanie w systemie Linux (jądro 2.6). Informacje wstępne Priorytet (dynamiczny) składa się z części statycznej i części modyfikowanej przez planistę. Część statyczna definiowana jest przez wartość nice z zakresu od -20 do 19. Priorytet dynamiczny decyduje zarówno o pierwszeństwie w dostępie do procesora jak i wielkości kwantu czasu (od 10 ms do 200 ms). Preferowane są (nagradzane wyższym priorytetem dynamicznym) zadania ograniczone wejściem-wyjściem. Systemy operacyjne Wykład 3 30/51

priorytety zwykłe priorytety czasu rzeczywistego Priorytety procesów czasu rzeczywistego Priorytety przydzielane są statycznie (nie zmieniają się) z zakresu od 0 do 99. Priorytety procesów czasu rzeczywistego są zawsze większe od priorytetów zadań zwykłych. Do grupy zadań czasu rzeczywistego mogą być dołączona tylko procesy nadzorcy (użytkownika uprzywilejowanego root). Tablica priorytetów 0 99 100 139......... -20 nice 19 Systemy operacyjne Wykład 3 31/51

Struktury danych do zarządzania procesami gotowymi Tablica priorytetów dla zadań aktywnych tablica kolejek procesów gotowych, które nie wykorzystały jeszcze kwantu czasu. Tablica priorytetów dla zadań przeterminowanych tablica kolejek procesów gotowych, które wykorzystały kwant czasu. Mapa (maska) bitowa dla każdej z tablic, identyfikująca niepuste kolejki w tablicy priorytetowej. Systemy operacyjne Wykład 3 32/51

Wywłaszczenie Wywłaszczenie procesu w trybie użytkownika może nastąpić przy powrocie z trybu jądra po obsłużeniu przerwania lub zakończeniu wywołania systemowego, gdy znacznik need_resched jest ustawiony. Znacznik jest ustawiany w następujących przypadkach: po upływie kwantu czasu bieżącego (wykonywanego) zadania, po uzyskaniu gotowości przez zadanie o wyższym niż bieżące priorytecie. Systemy operacyjne Wykład 3 33/51

Upłynięcie kwantu czasu Po upłynięciu kwantu czasu wykonywanego procesu zwykłego następuje przeliczenie jego priorytetu oraz wyznaczenie następnego kwantu czasu. Jeśli proces charakteryzuje się dużym stopniem interaktywności, a w systemie nie ma zadań przeterminowanych jest on umieszczany na odpowiedniej pozycji w tablicy priorytetów dla zadań aktywnych, w przeciwnym przypadku umieszczany jest tablicy priorytetów dla zadań przeterminowanych. Systemy operacyjne Wykład 3 34/51

Zmiana epoki Jeśli tablica priorytetów dla zadań aktywnych jest pusta (wszystkie procesy gotowe wykorzystały swój kwant czasu), następuje zmiana epoki. Zmiana epoki oznacza zamianę tablicy priorytetów: tablica priorytetów dla zadań przeterminowanych staję się tablicą dla zadań aktywnych i odwrotnie. Systemy operacyjne Wykład 3 35/51

Zmiana priorytetów dynamicznych Początkowy priorytet procesu zwykłego równy jest wartości nice. Wartość priorytetu może zostać zmieniona następująco: zwiększona o 5 dla zadań ograniczonych procesorem (obniżenia priorytetu), zmniejszona o 5 dla zadań ograniczonych wejściem-wyjściem, rozumianych przez domniemanie jako interaktywne, pozostać bez zmian. Proporcjonalnie do priorytetu ustalana jest wielkość kwantu czasu (z zakresu od 10 ms do 200 ms, domyślnie 100 ms). Systemy operacyjne Wykład 3 36/51

Ocena interaktywności Miarą interaktywności jest względna długość okresów korzystania z procesora oraz przebywania w stanie oczekiwania. Implementacją takiej koncepcji w systemie Linux jest atrybut procesu sleep_avg, zmniejszany w czasie wykonywania procesu, a zwiększany po wyjściu ze stanu oczekiwania. Wartość sleep_avg zmienia się od 0 do MAX_SLEEP_AVG, a wartością domyślna jest 10 ms. Systemy operacyjne Wykład 3 37/51

Planowanie w klasie czasu rzeczywistego Na danym poziomie priorytetu najpierw wybierane są procesy klasy SCHED_FIFO. Proces klasy SCHED_FIFO wykonuje się tak długa, aż nie odda procesora lub nie pojawi się proces o wyższym priorytecie. Proces klasy SCHED_RR wykonuje się podobnie jak proces klasy SCHED_FIFO, ale po upływie kwantu czasu oddaje zasoby innemu procesowi o tym samym priorytecie (jeśli taki proces istnieje). Systemy operacyjne Wykład 3 38/51

Szeregowanie w systemie Windows 2000/XP. Informacje wstępne Szeregowaniu podlegają wątki, stanowiące obiekty w obrębie procesu. Stosowany jest algorytm rotacyjny z wywłaszczaniem, oparty na priorytetach dynamicznych. Wyróżnia się 32 poziomy priorytetu: 0 bezczynność (poziom systemowy, niedostępny), 1 do 15 priorytety dynamiczne (zmienne), 16 do 31 priorytety czasu rzeczywistego. Większa wartość (poziom) oznacza wyższy priorytet. Systemy operacyjne Wykład 3 39/51

Definiowanie priorytetu Zdefiniowanie klasy priorytetu dla procesu: idle (4), below normal (6), normal (8), above normal (10), high (13), realtime (24). Zmodyfikowanie priorytetu wątku w ramach klasy priorytetu: idle (-15), lowest (-2), below normal (-1), normal (0), above normal (+1), highest (+2), time critical (+15). Priorytet bazowy wątku jest sumą wartości dla klasy oraz modyfikatora (priorytetu wątku). Systemy operacyjne Wykład 3 40/51

priorytet dynamiczny priorytet czasu rzeczywistego Priorytet bazowy wątku THREAD_PRIORITY_TIME_CRITICAL REALTIME_PRIORITY_CLASS THREAD_PRIORITY_IDLE 16 15 THREAD_PRIORITY_TIME_CRITICAL HIGH_PRIORITY_CLASS ABOVE_NORMAL_PRIORITY_CLASS NORMAL_PRIORITY_CLASS BELOW_NORMAL_PRIORITY_CLASS IDLE_PRIORITY_CLASS THREAD_PRIORITY_IDLE Systemy operacyjne Wykład 3 41/51

KiDispatcherReadyListHead Struktury danych do zarządzania wątkami gotowymi KiDispatcherReadyListHead tablica kolejek wątków gotowych. KiReadySummary maska bitowa identyfikująca niepuste kolejki w tablicy KiDispatcherReadyListHead. Tablica kolejek wątków gotowych 31 wątek T A proces P 1... wątek T B wątek T C wątek T D proces P 2 1 0 0 1 1 0 0 0 KiReadySummary wątek T E Systemy operacyjne Wykład 3 42/51

Przełączanie kontekstu Zakończenie działania wątku. Przejście w stan oczekiwania (samoistnie w wyniku odwołania do systemu operacyjnego w programie np. wątku w związku z synchronizacją lub operacją wejścia - wyjścia). Wywłaszczenie przez wątek o wyższym priorytecie. Upłynięcie kwantu czasu. Systemy operacyjne Wykład 3 43/51

Procedury zarządzania wątkami gotowymi FindReadyThread uruchamiana po zwolnieniu procesora przez wątek wykonywany, szuka wątku gotowego o najwyższym priorytecie i ekspediuje go na procesor. ReadyThread uruchamiana dla wątku, który przechodzi w stan gotowości lub zwiększa priorytet, porównuje priorytet gotowego wątku z priorytetem wątku wykonywanego i albo wywłaszcza wątek wykonywany albo kolejkuje wątek gotowy. Systemy operacyjne Wykład 3 44/51

Przebieg wywłaszczenia przez ReadyThread Niech Tg oznacza wątek gotowy, Tw wątek wykonywany, a pri(t) priorytet wątku T. if pri(tg) > pri(tw) then if liczba wykorzystanych kwantów przez Tw 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 45/51

Upłynięcie kwantu czasu Kwant wyrażanych jest jednostkach kwantu czasu. Liczba jednostek do dyspozycji wątku wynosi: 6 w wersjach dla komputerów osobistych i stacji roboczych, 36 w wersjach dla serwerów. Z każdym taktem zegara odejmowane są 3 jednostki. Upłynięcie kwantu czasu (zredukowanie liczby jednostek do 0) powoduje wywłaszczenie z procesora pod warunkiem, że jest gotowy inny wątek o takim samym (lub wyższym) priorytecie. Jeśli dotychczas działający wątek jest jedynym o tak wysokim priorytecie, przydzielony zostaje mu kolejny kwant. Systemy operacyjne Wykład 3 46/51

Regulacja kwantu czasu Wątkowi o priorytecie mniejszym niż 16 zabierana jest jedna jednostka kwantu, gdy wchodzi o w stan oczekiwania. Jeśli jednak wątek działa na poziomie 14 lub wyższym, przed zredukowaniem jego kwant jest odnawiany. Podobne postępowanie jest przeprowadzane w pewnych przypadku wątków pierwszoplanowych, nawet jeśli ich priorytet jest mniejszy niż 14. W przypadku wątków o priorytetach powyżej 15 liczba jednostek kwantu jest odnawiana po wyjściu ze stanu oczekiwania. Wątki procesu pierwszoplanowego mogą uzyskać 3-krotnie dłuższy kwant czasu, zależnie od ustawienia rejestru HKLM\SYSTEM\CurrentControlSet \Control\PriorityControl\Win32PrioritySeparation Wydłużenie kwantu ma na celu zwiększenie preferencji dla wątków związanych z oknem pierwszoplanowym przy jednoczesnym uniknięciu zagłodzenia wątków drugoplanowych. W ramach przeciwdziałania głodzeniu wydłużany jest również 2-krotnie czas dla wątków oczekujących długo (ponad 300 taktów) na procesor. Celem tego wydłużenia jest przeciwdziałanie inwersji priorytetów. Systemy operacyjne Wykład 3 47/51

Zmiana dynamicznych priorytetów wątków Podwyższenie priorytetu wątku (maksymalnie do wartości 15) może nastąpić w następujących przypadkach: po zakończeniu operacji wejścia-wyjścia, po oczekiwaniu na zdarzenie lub semafor, po zakończeniu oczekiwania przez wątek pierwszoplanowy, po przebudzeniu wątku GUI, po zbyt długim oczekiwaniu w stanie gotowości. Podwyższony priorytet jest obniżany sukcesywnie o 1 po upływie kwantu czasu, aż wróci do wartości bazowej. Systemy operacyjne Wykład 3 48/51

Wzrost priorytetu po zakończeniu operacji wejścia-wyjścia Operacja związana z dyskiem, CD, portem równoległym lub kartą wideo wzrost o 1. Operacja związana z siecią, portem szeregowym, potokiem, skrytką pocztową wzrost o 2. Operacja związana z klawiaturą lub myszą wzrost o 6. Operacja związana z kartą dźwiękową wzrost o 8. Wartość podwyższenia dodawana jest do bazowego priorytetu wątku. po oczekiwaniu na zdarzenie lub semafor Wartość zwiększenia, 1, dodawana jest do bazowego priorytetu wątku. Kwant czasu procesora zmniejszany jest o 1 jednostkę. Systemy operacyjne Wykład 3 49/51

Wzrost priorytetu po zakończeniu oczekiwania przez wątek pierwszoplanowy Priorytet zwiększany jest o wartość zmiennej jądra PsPrioritySeparation, dostępnej też jako jedno z pól w rejestrze Windows pod nazwą HKLM\SYSTEM\CurrentControlSet \Control\PriorityControl\Win32PrioritySeparation. Wartość zwiększenia dodawana jest do bieżącego priorytetu wątku. Zależnie do wartości Win32PrioritySeparation może zostać zwiększony kwant czasu dla wszystkich wątków procesu pierwszoplanowego. po przebudzeniu wątku GUI Wartość zwiększenia 2 dodawana jest do bieżącego priorytetu wątku. Systemy operacyjne Wykład 3 50/51

Przeciwdziałanie głodzeniu Co sekundę uruchamiany jest wątek balance set manager, którego jednym z zadań jest sprawdzanie czasu bieżącego oczekiwania wątków gotowych. Jeśli wątek oczekuje dłużej niż 300 taktów zegara (około 3 4 sekundy), jego priorytet uzyskuje wartość 15, a kwant czasu zwiększa się dwukrotnie, a w wersjach serwerowych czterokrotnie. Po upływie przyznanego kwantu, priorytet wątku wraca do poziomu bazowego. Systemy operacyjne Wykład 3 51/51