SYSTEMY OPERACYJNE PROCESY I WĄTKI
PROCESY I WĄTKI Proces to program, który jest wykonywany. Procesem jest program użytkownika, zadanie systemowe (spooling, przydział pamięci itp.). Program jest bierny, jest zbiorem bitów przechowywanych na dysku. Program nie jest procesem. Proces jest aktywny, dla procesu licznik rozkazów wskazuje następną instrukcję do wykonania. Wykonanie procesu musi przebiegać w sposób sekwencyjny.
PROCESY I WĄTKI Każdy proces ma: licznik instrukcji, stos, segment kodu, segment danych.
System operacyjny odpowiada za wykonywanie następujących czynności: PROCESY I WĄTKI System operacyjny odpowiada za wykonywanie następujących czynności: tworzenie i usuwanie procesów, wstrzymywanie i wznawianie procesów, dostarczanie mechanizmów komunikacji procesów, dostarczanie mechanizmów obsługi blokad.
PROCESY I WĄTKI Proces stanowi jednostkę pracy w systemie. Na system składają się: procesy systemu operacyjnego (wykonują kod systemu), procesy użytkowników (wykonują kod programów użytkowników). Pseudoparalelizm - w systemie z podziałem czasu (jednoprocesorowym) w każdej chwili wykonuje się tylko jeden proces, ale z uwagi na przełączanie powstaje wrażenie równoczesnej pracy wielu procesów.
PROCESY I WĄTKI Blok kontrolny procesu (Process Control Block) - reprezentuje proces w systemie: stan procesu, numer procesu (identyfikator - PID), licznik rozkazów, wskaźniki stosu, rejestry procesora (ogólne, bazowe, indeksowe(, informacje o pamięci zajętej przez proces, informacja o planowaniu przydziału procesora, informacja o zarządzaniu pamięcią (zawartości rejestrów granicznych, tablice stron, segmentów), informacja o wykorzystanych zasobach (zużyty czas procesora, rozliczanie), informacje o stanie we/wy (lista przydzielonych urządzeń, wykaz otwartych plików).
PROCESY I WĄTKI Blok kontrolny procesu (Process Control Block)
PROCESY I WĄTKI Stan procesu: nowy - proces został utworzony, gotowy - proces czeka na przydział procesora, wykonywany - proces wykonuje instrukcje, (aktywny – po przydzieleniu procesora przez planistę) oczekujący - proces czeka na wystąpienie jakiegoś zdarzenia (np. zakończenia operacji we-wy), zakończony - proces zakończył działanie.
PROCESY I WĄTKI
PROCESY I WĄTKI Tworzenie procesu: za pomocą funkcji systemowej (np. fork() w UNIX), proces utworzony przez inny proces (macierzysty, rodzic) nazywamy potomnym, potomek uzyskuje nową pulę zasobów (od SO) lub korzysta z zasobów rodzica (mniejsze przeciążenie systemu). Zakończenie procesu: po ostatniej instrukcji, specjalna funkcją (np. exit() w UNIX), na żądania rodzica (abort() – np. po przekroczeniu limitu zasobów), niekiedy: zakończenie kaskadowe: po zakończeniu rodzica procesy potomne są kończone lub adoptowane przez inne procesy.
PROCESY I WĄTKI Proces macierzysty i potomny mogą wykonywać się współbieżnie. Proces potomny często jest powoływany do realizacji jakiegoś zadania dla procesu macierzystego (wówczas czeka on na zakończenie procesu potomnego. Np. w Uniksie: nowy proces – wywołanie systemowe fork – jest to kopia procesu macierzystego (wykonuje ten sam program, z tego samego punktu i przy tym samym stanie pamięci); jeżeli ma wykonać inny program – polecenie exec: załadowanie nowego programu do przestrzeni adresowej procesu i rozpoczęcie wykonywania go); zakończenie procesu – exit: system przekazuje informację procesowi macierzystemu (który oczekiwał na to, wywołując funkcję wait) i zwalnia zasoby przydzielone potomkowi.
PROCESY I WĄTKI Relacje pomiędzy procesami procesy niezależne: stan procesu nie jest współdzielony z innymi procesami, wykonanie procesu jest zdeterminowane (wynik zależy tylko od stanu początkowego), wykonanie procesu jest powtarzalne, zatrzymanie procesu (stop i restart) nie powoduje żadnych zmian w wykonywaniu procesu. procesy współpracujące: stan procesu może być współdzielony z innymi procesami, wyniku wykonania procesu nie można przewidzieć, gdyż zależy od wykonywanej sekwencji działań, wynik jest niedeterministyczny (nawet przy tych samych danych wejściowych),
PROCESY I WĄTKI Wątek sterowania to sekwencja instrukcji (tzw. lekki proces) działający w tej samej wirtualnej przestrzeni adresowej, co tworzący go (ciężki) proces. Środowisko, w którym działa wątek – zadanie (task). Stan wątku jest zdefiniowany przez małą, odrębną ilość danych (własny stan rejestrów i stos). Każdy wątek ma oddzielne rejestry, licznik rozkazów i stos wywołań, współdzieli natomiast w ramach tego samego procesu segment danych, segment kodu, zasoby systemu, np. tablicę otwartych plików, itp.
PROCESY I WĄTKI Cechy wątków: wątki dzielą czas procesora tak, jak procesy, w systemie wieloprocesorowym wątki mogą być wykonywane równolegle, między wątkami tego samego procesu nie ma ochrony pamięci (nie jest możliwa i nie jest potrzebna), przełączanie pomiędzy równoprawnymi wątkami jest „tanie” (szybsze) w porównaniu z przełączaniem pomiędzy tradycyjnymi procesami (nie trzeba przełączać kontekstu pamięci), wątki ze sobą współpracują, a nie współzawodniczą (tak jak procesy), wątek ma te same podstawowe cechy co proces (stany, możliwość tworzenia wątków potomnych, korzystania z urządzeń zewnętrznych, itd...).
PROCESY I WĄTKI Tradycyjny proces (ciężki) jest równoważny zadaniu z jednym wątkiem. W zadaniu złożonym z wielu wątków podczas zablokowania jednego wątku może się wykonywać inny wątek tego zadania; współpraca wielu wątków w tym samym zadaniu pozwala zwiększyć przepustowość i poprawić wydajność. Wątki umożliwiają połączenie równoległości z sekwencyjnym wykonaniem: (1) model dyspozytor - pracownik (2) model zespołu (3) model potoku
PROCESY I WĄTKI Zalety stosowania wątków: tańsze powołanie wielu wątków niż utworzenie wielu procesów, przełączanie procesora między wątkami jest łatwiejsze (szybsze) niż między zwykłymi (ciężkimi) procesami, lepsze wykorzystanie zasobów systemu komputerowego, nieograniczone współdzielenie danych procesu przez wątki; lepsza realizacja przetwarzania współbieżnego na maszynach o pamięci współdzielonej. Wątek, to podstawowa jednostka wykorzystania procesora.
PROCESY I WĄTKI Problemy stosowania wątków: przy blokowanych odwołaniach wątków do systemu – proces nie może oddać sterowania systemowi, musi czekać na swoje wątki; aby sprawdzić, czy odwołania wątków będą blokować system używa się kodu sprawdzającego (jacket) (wątków używa się głównie w zadaniach z blokującymi odwołaniami w celu poprawy wydajności); ponieważ nie ma wywłaszczania, zatem wątki muszą same oddawać sterowanie procedurze wykonawczej procesu, zakończenie procesu wiąże się z zakończeniem wszystkich jego wątków.
PROCESY I WĄTKI Jądro nie jest procesem, ale zarządcą procesów. Oprócz procesów użytkownika istnieje kilka uprzywilejowanych procesów zwanych wątkami jądra, które: działają w trybie jądra (w przestrzeni adresowej jądra) nie komunikują się z użytkownikami (nie trzeba terminali) tworzone są w chwili startu systemu i działają do czasu wyłączenia systemu.
PROCESY I WĄTKI Zmiana trybu pracy zachodzi, gdy: proces wywołuje funkcję systemową; CPU wykonujący proces sygnalizuje wyjątek, np. wykonanie nieprawidłowej instrukcji; jądro obsługuje wyjątek na rzecz procesu, który go spowodował; urządzenie zewnętrzne zgłasza procesorowi sygnał przerwania, np. zmiana statusu, zakończenie operacji we-wy, itp.;
PROCESY I WĄTKI Urządzenia działają asynchronicznie, więc przerwania nadchodzą w nieprzewidywalnych momentach. Po nadejściu przerwania wykonywany jest wątek jądra. Działa on w trybie jądra, więc odpowiadający mu program musi być uważany za część jądra, chociaż umieszczoną w procesie.
KLASYFIKACJA PROCESÓW Klasyfikacja procesów I: związane z urządzeniami I/O (I/O-bound) związane z procesorem (CPU-bound). Klasyfikacja procesów II: interaktywne wsadowe czasu rzeczywistego
PLANOWANIE PROCESÓW – PRZYDZIAŁ PROCESORA Jedno z podstawowych zadań jądra SO: przydział procesora (processes scheduling) – szeregowanie procesów. Poziomy szeregowania: - wysoki: szeregowanie zadań – określa się kolejkę zadań, do których mają być przydzielone zasoby systemu; - pośredni: obsługa procesów w stanie gotowy – zawieszony; - niski: któremu procesowi w stanie gotowości ma być przydzielony procesor.
PLANOWANIE PROCESÓW – PRZYDZIAŁ PROCESORA Kolejka zadań (task queue) – zbiór zadań oczekujących na przydział PAO (wszystkie procesy systemu). Kolejka procesów gotowych (read queue) – procesy z przydzieloną PAO (gotowe do wykonania, czekające na przydział procesora). Kolejka procesów do urządzenia (device queue) – procesy oczekujące na operację we / wy na danym urządzeniu. Procesy mogą przenosić się pomiędzy kolejkami. Decyzja – któremu procesowi ma być przydzielony procesor. Inne kolejki – np. oczekiwanie na zdarzenie, na zakończenie procesu potomnego, itp.
PLANOWANIE PROCESÓW – PRZYDZIAŁ PROCESORA Algorytmy przydziału procesora (processes scheduling) – szeregowania procesów: Jeśli dwa lub więcej procesów znajdują się w stanie gotowy do wykonania, to o kolejności przydziału jednostki centralnej decyduje planista. Planista (scheduler) powinien gwarantować: sprawiedliwość przydziału CPU, dobrą wydajność CPU, mały czas odpowiedzi, mały czas przetwarzania (turnaround time), dużą przepustowość (throughput).
PLANOWANIE PROCESÓW – PRZYDZIAŁ PROCESORA Planista (scheduler) jest to proces systemowy: długoterminowy (p. zadań) – wybiera kolejne zadania do załadowania do PAO (wysoki poziom szeregowania); steruje poziomem wieloprogramowości (liczbą procesów współbieżnych) krótkoterminowy (p. procesora) – wybiera proces spośród procesów gotowych (w pamięci) i przydziela mu procesor (niski poziom szeregowania). Różnica pomiędzy planistami zależy od częstotliwości ich uaktywnień: p.d. – co kilka minut, p.k. – co 100 ms.
PLANOWANIE PROCESÓW – PRZYDZIAŁ PROCESORA Decyzje o przydziale procesora są podejmowane, gdy: 1. proces przeszedł od stanu aktywności do stanu oczekiwania, np. z powodu operacji we/wy lub czekania na zakończenie procesu potomnego; 2. proces przeszedł od stanu aktywności do stanu gotowości, np. wskutek przerwania; 3. proces przeszedł od stanu oczekiwania do stanu gotowości, np. po zakończeniu operacji we/wy; 4. proces kończy działanie. Planowanie nazywamy: w sytuacjach 1 i 4 - niewywłaszczeniowym, a w sytuacjach 2 i 3 - wywłaszczeniowym.
PLANOWANIE PROCESÓW – PRZYDZIAŁ PROCESORA Planowanie bez wywłaszczenia - proces używa procesora tak długo, aż przejdzie w stan oczekiwania lub zakończenia. Planowanie z wywłaszczeniami – drogie i ryzykowne (może komplikować działania przy wywołaniach systemowych).
PLANOWANIE PROCESÓW – PRZYDZIAŁ PROCESORA Ekspedytor (dyspozytor - dispatcher) – moduł, który faktycznie przekazuje procesor do dyspozycji procesu wybranego przez planistę krótkoterminowego; Obowiązki ekspedytora to: przechowywanie stanu bieżącego procesu, przełączanie kontekstu (rejestry, itd.), przełączanie systemu do trybu użytkownika, wykonanie skoku do adresu z bloku kontrolnego tj. odpowiedniej komórki w programie użytkownika w celu wznowienia działania programu. Opóźnienie ekspedycji (dispatch latency) to czas, który ekspedytor zużywa na wstrzymanie jednego procesu i uaktywnienie innego (zwykle 1-100 ms).
PLANOWANIE PROCESÓW – PRZYDZIAŁ PROCESORA Definicje: Wykorzystanie procesora (CPU utilization) –procent czasu, przez który procesor pozostaje zajęty - najlepiej by było gdyby procesor był nieustannie zajęty pracą; - powinno się mieścić od 40% (słabe obciążenie systemu) do 90% (intensywna eksploatacja). Przepustowość (throughput) - liczba procesów kończących się w jednosce czasu.
PLANOWANIE PROCESÓW – PRZYDZIAŁ PROCESORA Definicje cd.: Czas cyklu przetwarzania (turnaround time) – czas między utworzeniem procesu w systemie a chwilą jego zakończenia (suma czasów czekania na wejście do pamięci, czekania w kolejce procesów gotowych, wykonywania operacji we/wy, wykonania przez CPU); Czas oczekiwania (waiting time) - suma okresów, w których proces czeka w kolejce procesów gotowych do działania.
PLANOWANIE PROCESÓW – PRZYDZIAŁ PROCESORA Definicje cd.: Czas odpowiedzi (response time) - ilość czasu między wysłaniem żądania a pojawieniem się odpowiedzi, bez uwzględnienia czasu potrzebnego na wyprowadzenie odpowiedzi (np. na ekran): - czas odpowiedzi jest na ogół uzależniony od szybkości działania urządzenia wyjściowego - miara zastępująca miarę czasu cyklu przetwarzania w systemach interaktywnych.
PLANOWANIE PROCESÓW – PRZYDZIAŁ PROCESORA Kryteria oceny algorytmów przydziału procesora: efektywność (efficiency) – utrzymywanie obciążenia procesora przez cały czas, przepustowość (throughput) – maksymalizacja liczby zadań wykonywanych w określonym czasie, czas obrotu – czas pobytu w systemie jednego procesu, czas oczekiwania (waiting time) – minimalizacja czasu oczekiwania przez użytkowników wsadowych na wyniki ich zadań (kolejka procesów gotowych), czas odpowiedzi (response time) – minimalizacja czasu odpowiedzi dla użytkowników interakcyjnych (z podziałem czasu).
KLASYFIKACJA PROCESÓW Algorytmy przydziału procesora dzielą się na: algorytmy z wywłaszczeniem – procesor może być odebrany procesowi w trakcie jego wykonywania: przejście procesu ze stanu oczekiwania do stanu gotowości lub procesu aktywnego do stanu gotowości; algorytmy bez wywłaszczenia – proces utrzymuje procesor aż do zakończenia pracy: przejście procesu aktywnego do stanu oczekiwania lub zakończenie procesu;
PROCESY – PRZYDZIAŁ PROCESORA Algorytmy przydziału procesora: pierwszy nadszedł, pierwszy obsłużony (FCFS–first come first served; FIFO–first in first out), bez wywłaszczenia. wg najkrótszego zadanie (SJF- shortest job first), algorytm optymalny, dający minimalny średni czas oczekiwania dla określonego zbioru procesów. wg stosunku reaktywności (HRRN-highest response ratio next) rotacyjne (round-robin scheduling) – dla systemów z podziałem czasu procesora; cykliczna kolejka procesów; gdy rośnie t, alg. rotacyjny alg. FCFS oraz maleje częstotliwość przełączania procesora, wydłuża się czas oczekiwania procesu na procesor; priorytetowe (polityka planowania i mechanizm planowania), każdy proces ma przydzielony priorytet (wg wielkości pamięci, liczby plików, itp.).
PROCESY – PRZYDZIAŁ PROCESORA FCFS – FIRST COME FIRST SERVED przydział czasu w kolejności zgłaszania się procesów najprostsza implementacja (kolejka FIFO) brak wywłaszczania kłopotliwy w systemach z podziałem czasu, w których ważne jest uzyskiwanie procesora w regularnych odstępach czasu. Zalety: - sprawiedliwy, niski narzut systemowy; - nie ma groźby zagłodzenia procesów, proces zawsze dostanie się do CPU (po pewnym czasie).
PROCESY – PRZYDZIAŁ PROCESORA FCFS – FIRST COME FIRST SERVED cd. Wady: - długi średni czas oczekiwania i duża wariancja czasu oczekiwania, - niewydajne wykorzystanie CPU (efekt konwoju - procesy czekają aż wielki proces odda procesor), - krzywdzący dla procesów krótkich (są wstrzymywane przez procesy długie) oraz ograniczonych przez we/wy bowiem faworyzuje dłuższe zadania.
PROCESY – PRZYDZIAŁ PROCESORA FCFS – FIRST COME FIRST SERVED cd. Przykład: P1 – 24 ms; P2 – 3 ms, P3 – 3 ms. Procesy nadchodzą w kolejności: P1, P2, P3: Diagram Gantta dla FCFS: Czas oczekiwania dla P1= 0; P2= 24; P3 = 27 Średni czas oczekiwania: (0 + 24 + 27)/3 = 17 ms Wariancja czasu oczekiwania: (0^2 + 24^2 + 27^2)/3 –17^2 =435 –289 = 146 ms
PROCESY – PRZYDZIAŁ PROCESORA FCFS – FIRST COME FIRST SERVED cd. Przypuśćmy, że procesy nadejdą w porządku P2, P3, P1. Diagram Gantta dla FCFS Czas oczekiwania dla P1 =6; P2= 0; P3 = 3 Średni czas oczekiwania: (6 + 0 + 3)/3 = 3ms Średni czas oczekiwania znacznie lepszy. Dlaczego?
PROCESY – PRZYDZIAŁ PROCESORA SJF- SHORTEST JOB FIRST cd. [bez wywłaszczenia] Algorytm wiąże z każdym procesem długość jego najbliższej fazy procesora. Procesor jest przydzielany procesowi o najkrótszej następnej fazie procesora. Przy równych fazach procesora mamy FCFS. SJF jest optymalny (umieszczenie krótkiego procesu przed długim bardziej zmniejsza czas oczekiwania krótkiego niż zwiększa długiego). Algorytm może być wywłaszczający - usuwa proces, jeśli nowy proces w kolejce procesów gotowych ma krótszą następną fazę procesora od czasu do zakończenia danego procesu.
PROCESY – PRZYDZIAŁ PROCESORA SJF- niewywłaszczający Proces Czas trwania fazy [ms] P1 6 P2 8 P3 7 P4 3 Diagram Gantta dla SJF Średni czas oczekiwania: (3 + 16 + 9 + 0)/4 = 7 ms
PROCESY – PRZYDZIAŁ PROCESORA SRTF- SHORTEST REMAINING TIME FIRST [z wywłaszczeniem] Najpierw zadanie o najkrótszym pozostałym czasie fazy procesora. Przy pojawieniu się innego procesu o krótszym pozostałym czasie następuje wywłaszczenie.
PROCESY – PRZYDZIAŁ PROCESORA SRTF – Shortest Remaining Time First Proces Czas przybycia Czas trwania fazy P1 0 8 ms P2 1 4 P3 2 9 P4 3 5 Diagram Gantta dla SRTF Średni czas oczekiwania: [(10-1) + (1-1) + (17-2) + (5-3)]/4 = 26/4=6.5
PROCESY – PRZYDZIAŁ PROCESORA ZADANIE: Proces Czas przybycia Czas trwania fazy P1 0 8 ms P2 2 5 P3 4 1 P4 5 2 Narysować diagramy Gannta i policzyć średnie czasy oczekiwania dla algorytmów: a) SJF oraz b) SRTF. Uzasadnić wyniki; który z ww. algorytmów jest optymalny?
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE METODĄ HRRN Stosunek reaktywności: R = 1+ w/t, gdzie w oznacza czas oczekiwania na procesor zaś t -fazę procesora Największy stosunek reaktywności jako następny (ang. highest response ratio next -HRRN); Faworyzuje krótkie zadania, lecz po pewnym czasie oczekiwania dłuższy proces uzyska CPU; Podobnie jak SJF i SRTF również algorytm HRRN wymaga oszacowania dla następnej fazy procesora;
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE METODĄ HRRN cd. Proces Czas przybycia Czas trwania fazy P1 0 8 P2 1 4 P3 2 9 P4 3 5 Diagram Gantta dla HRRN (niewywłaszczający) Średni czas oczekiwania: (0 + (8-1)+ (17-2) + (12-3))/4 = 31/4=7.75
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE METODĄ HRRN cd. Faworyzuje krótkie zadania jednak oczekiwanie dłuższych zadań zmienia ich współczynnik i w konsekwencji pozwala im uzyskać dostęp do CPU; Ma dobry czas odpowiedzi; Nie ma groźby zagłodzenia procesów (proces zawsze dostanie się do CPU (po pewnym czasie);
PROCESY – PRZYDZIAŁ PROCESORA WYZNACZANIE NASTĘPNEJ FAZY PROCESORA SJF jest optymalny: daje minimalny średni czas oczekiwania dla danego zbioru procesów; Nie ma sposobu na poznanie długości następnej fazy, możemy ją jedynie oszacować; Można tego dokonać wyliczając średnią wykładniczą poprzednich faz procesora; t(n) = długość n-tej fazy procesora a -liczba z przedziału [0,1], zwykle 0.5 Definiujemy średnią wykładniczą jako: gdzie s(n+1) = przewidywana długość następnej fazy.
PROCESY – PRZYDZIAŁ PROCESORA WYZNACZANIE NASTĘPNEJ FAZY PROCESORA a=0 s(n+1) = s(n) niedawna historia nie ma wpływu a=1 s(n+1) = t(n) jedynie najnowsze notowanie długości fazy ma wpływ a*(1-a) ≠ 0 i rozwiniemy wzór to: Ponieważ a i (1-a) są mniejsze od 1 to starsze składniki (przeszłość) mają coraz mniejszą wagę.
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE ROTACYJNE (round robin) ustala się kwant czasu (10-100 ms); kolejka procesów jest traktowana jak cykliczna procedura FIFO; algorytm przegląda kolejkę i kolejno przydziela każdemu procesowi kwant czasu (jeśli proces się w nim nie zakończy – wraca do kolejki a długość jego fazy procesora zmniejsza się o kwant czasu); algorytm jest wywłaszczający; gdy jest N procesów a kwant czasu wynosi Q, max. czas oczekiwania może wynieść (N-1)Q.
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE ROTACYJNE cd. Efekty: gdy Q rośnie nieograniczenie; planowanie rotacyjne FCFS, gdy Q zmierza do 0 zachodzi dzielenie procesora – każdy proces dysponuje procesorem o prędkości 1/N rzeczywistego, średni czas oczekiwania jest stosunkowo długi.
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE ROTACYJNE cd. średni czas cyklu przetwarzania z kwantem = 6 Proces Czas trwania fazy P1 6 P2 3 P3 1 P4 7 Diagram Gantta dla RR(6) Średni czas cyklu przetwarzania: (6+9+10+17)/4=42/4=10,5
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE ROTACYJNE cd. średni czas cyklu przetwarzania z kwantem = 5 Proces Czas trwania fazy P1 6 P2 3 P3 1 P4 7 Diagram Gantta dla RR(5) Średni czas cyklu przetwarzania: (15+8+9+17)/4=49/4=12,25
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE ROTACYJNE cd. Czas cyklu przetwarzania zależy od kwantu czasu
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE ROTACYJNE cd. Dobry czas odpowiedzi dla krótkich procesów; Efektywny w systemach z podziałem czasu; Sprawiedliwe traktowanie procesów; Kwant powinien być nieco dłuższy od czasu wymaganego na typową interakcję; Procesy ograniczone przez CPU są faworyzowane kosztem procesów ograniczonych przez we/wy co prowadzi do nieefektywnego wykorzystania we/wy; Nie powoduje zagłodzenia procesów
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE PRIORYTETOWE szczególnym przypadkiem jest SJF (priorytet = 1/(długości następnej fazy procesora), zwykle priorytet określa jednak liczba całkowita (np. z przedziału [0,7] – im niższa wartość tym wyższy priorytet), proces o niskim priorytecie może się nigdy nie wykonać; rozwiązanie: postarzanie procesów (zmniejszenie priorytetu o 1, np. co 10 min.), może być wywłaszczające (ale niekoniecznie), określenie priorytetu: - zewnętrznie - przez funkcję systemową, - wewnętrznie- przez deklarację samego procesu.
PROCESY – PRZYDZIAŁ PROCESORA WIELOPOZIOMOWE PLANOWANIE KOLEJEK Wielopoziomowe planowanie kolejek (mulitilevel queue scheduling ) polega na tym, że kolejka procesów gotowych zostaje podzielona na oddzielne (pod)kolejki. - procesy pierwszoplanowe (foreground) – interakcyjne, systemowe; - procesy drugoplanowe (background) – wsadowe. Każda z kolejek ma swój własny algorytm szeregujący np. - pierwszoplanowa – RR - drugoplanowa - FCFS
PROCESY – PRZYDZIAŁ PROCESORA WIELOPOZIOMOWE PLANOWANIE KOLEJEK cd. Między kolejkami także należy dokonać wyboru algorytmu planowania. - planowanie priorytetowe tzn. obsłuż najpierw wszystkie procesy pierwszoplanowe potem drugoplanowe - możliwość zagłodzenia procesu drugoplanowego, - porcjowanie czasu (time slice) - każda kolejka otrzymuje pewną porcję czasu procesora, który przydzielany jest każdej z kolejek np. 80% kolejka pierwszoplanowa z algorytmem RR 20% kolejka drugoplanowa z algorytmem FCFS
PROCESY – PRZYDZIAŁ PROCESORA WIELOPOZIOMOWE PLANOWANIE KOLEJEK cd.
PROCESY – PRZYDZIAŁ PROCESORA WIELOPOZIOMOWE PLANOWANIE KOLEJEK Kolejki wielopoziomowe z sprzężeniem zwrotnym (multilevel feedback queue scheduling) umożliwiają przesuwanie procesów między kolejkami. Proces, który zużywa za dużo procesora, można zdymisjonować poprzez przesunięcie go do kolejki o niższym priorytecie i dzięki temu zapobiec zagłodzeniu innych procesów. Postępowanie takie prowadzi do pozostawienia procesów ograniczonych przez we/wy oraz interakcyjnych w kolejkach o wyższych priorytetach.
PROCESY – PRZYDZIAŁ PROCESORA WIELOPOZIOMOWE PLANOWANIE KOLEJEK
PROCESY – PRZYDZIAŁ PROCESORA WIELOPOZIOMOWE PLANOWANIE KOLEJEK Trzy koleki: Q0– kwant czasu 8 milisekund Q1– kwant czasu 16 milisekund Q2– FCFS Planowanie: Nowe zadanie wchodzi do kolejkiQ0 obsługiwanej przez FCFS. Zadanie dostaje 8 milisekund; jeśli się nie zmieści w tym czasie zostaje przeniesione na koniec kolejki Q1. W kolejce Q1 zadanie jest znów obsługiwane przez algorytm FCFS i dostaje dodatkowe 16 ms. Jeśli ponownie nie zmieści się w tym czasie zostaje wywłaszczone do kolejki Q2.
PROCESY – PRZYDZIAŁ PROCESORA WIELOPOZIOMOWE PLANOWANIE KOLEJEK Algorytm ten daje najwyższy priorytet procesom o fazie nie większej niż 8ms, procesy o fazie między 8ms i 24ms są także szybko obsługiwane; długie procesy wchodzą do kolejki 2 i są obsługiwane (FCFS) w cyklach pracy procesora nie wykorzystanych przez procesy z kolejek 0 i 1. Planowanie ze sprzężeniem zwrotnym jest najogólniejszym i najbardziej złożonym algorytmem planowania przydziału procesora
PROCESY – PRZYDZIAŁ PROCESORA WIELOPOZIOMOWE PLANOWANIE KOLEJEK Planista wielopoziomowych kolejek ze sprzężeniem zwrotnym jest określony za pomocą następujących parametrów: liczba kolejek, algorytm planowania dla każdej kolejki, metoda użyta do decydowania o awansowaniu procesu do kolejki o wyższym priorytecie, metoda użyta do decydowania o zdymisjonowaniu procesu do kolejki o niższym priorytecie, metoda wyznaczenia kolejki, do której trafia proces potrzebujący obsługi.
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE WIELOPROCESOROWE Planowanie wieloprocesorowe (multiple-processor scheduling) komplikuje się wraz ze wzrostem liczby procesorów i ich architektury. Trudno określić najlepszą metodę planowania. Procesory mogą być homogeniczne (identyczne) lub heterogeniczne (różne). Planowanie wieloprocesorowe heterogeniczne - na danym procesorze można wykonać programy, które zostały przetłumaczone na odpowiadający mu zbiór rozkazów (sieciowe systemy operacyjne).
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE WIELOPROCESOROWE cd. Planowanie wieloprocesorowe homogeniczne - dzielenie obciążeń (load sharing) - wspólna kolejka dla wszystkich procesorów; - każdy procesor sam planuje swoje działanie, obydwa operują na tej samej kolejce procesów gotowych (ryzykowne - wymaga bardzo starannego zaprogramowania) - wieloprzetwarzanie symetryczne; - jeden procesor jest nadrzędny (master), inne podporządkowane (slave) - wieloprzetwarzanie asymetryczne.
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE W CZASIE RZECZYWISTYM Rygorystyczne systemy czasu rzeczywistego - wymóg zakończenia zadania krytycznego w gwarantowanym czasie - rezerwacja zasobów (resource reservation) gwarantujących wykonanie zadania, - planista odrzuca zadanie, jeśli nie może ich zarezerwować. Łagodne systemy czasu rzeczywistego - procesy o decydującym znaczeniu, mają priorytet nad słabiej sytuowanymi - priorytety procesów czasu rzeczywistego nie mogą maleć z upływem czasu (można np. zakazać dymisjonowania procesów czasu rzeczywistego).
PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE W CZASIE RZECZYWISTYM cd. Opóźnienie ekspediowania procesów do procesora musi być małe, aby proces czasu rzeczywistego nie musiał czekać (Solaris: bez wywłaszczeń 100 ms i z wywłaszczeniami 2ms). - Musimy zezwolić na wywłaszczanie funkcji systemowych: - poprzez wstawienie w długotrwałych funkcjach systemowych punktów wywłaszczeń, - wywłaszczanie całego jądra, struktury danych jądra muszą być chronione za pomocą mechanizmów synchronizacji. Wysokopriorytetowe procesy nie mogą czekać na zakończenie niskopriorytetowych; sytuacja, gdy proces wysokopriorytetowy czeka na zakończenie procesu o niższym priorytetcie, nosi nazwę odwrócenia priorytetów.
PROCESY – PRZYDZIAŁ PROCESORA OCENA ALGORYTMÓW Modelowanie deterministyczne - przyjmuje się konkretne, z góry określone obciążenie robocze systemu i definiuje zachowanie algorytmu w warunkach tego obciążenia; jest to odmiana oceny analitycznej. Dla danego zbioru procesów mających zadane uporządkowanie i wyrażone w milisekundach fazy procesora rozważamy algorytmy planowania FCFS, SJF, RR (o zadanym kwancie czasu), itp. i pytamy: który algorytm minimalizuje czas oczekiwania? Modelowanie deterministyczne jest proste i szybkie, daje konkretne liczby pozwalające dokonać wyboru algorytmu planowania; wymaga jednak specyficznych sytuacji i dokładnej wiedzy (ogólnie mało użyteczne).
PROCESY – PRZYDZIAŁ PROCESORA OCENA ALGORYTMÓW Modele obsługi kolejek - analiza obsługi kolejek w sieciach (queueing-network analysis) Wzór Little’a: n = l*W - liczba procesów opuszcza- jących kolejkę musi się równać liczbie procesów przychodzących, n - średnia długość kolejki, W - średni czas oczekiwania w kolejce, l - ilość nowych procesów na sekundę Symulacja sterowana rozkładami - ma ograniczoną dokładność, kontrola zdarzeń (tzw. taśma śladów) rzeczywistego systemu może poprawić dokładność. Implementacja - ocena kosztowna ale dokładna.