Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Wykład 8 Szeregowanie zadań

Podobne prezentacje


Prezentacja na temat: "Wykład 8 Szeregowanie zadań"— Zapis prezentacji:

1 Wykład 8 Szeregowanie zadań
Systemy operacyjne Wykład 8 Szeregowanie zadań dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki

2 Współbieżność procesów
Jeśli w pamięci systemu komputerowego rezyduje równocześnie kilka procesów, to mogą one być wykonywane współbieżnie. W przypadku komputerów jednoprocesorowych oznacza to, ze procesor co pewien czas jest przydzielany na zmianę różnym procesom. Taka współbieżność nazywamy pseudorównoległoscią. W systemach wieloprocesorowych każdy z procesorów może w danej chwili wykonywać odrębny proces. Takie przetwarzanie nazywamy przetwarzaniem równoległym. Za stosowaniem współbieżności przemawia: możliwość podziału zasobów fizycznych i logicznych między wielu użytkowników, przyspieszenie przetwarzania (w architekturach wieloprocesorowych), zwiększenie stopnia wykorzystania systemu komputerowego.

3 Potrzeba synchronizacji
Procesy wykonują się współbieżnie. Jeżeli w 100% są izolowane od siebie, nie ma problemów z synchronizacją. Problem, jeżeli procesy komunikują się lub korzystają ze wspólnych zasobów. Przykład: Proces A przygotowuje wyniki, a proces B drukuje je na drukarce. Jak zapewnić, aby B nie zaczął drukować przed zakończeniem przygotowania wyników przez A? Potrzeba utrzymywania wspólnych zasobów w spójnym stanie. Np. proces A dodaje element do listy (z dowiązaniami), a jednocześnie B przegląda listę, która w momencie trwania operacji dodania ma stan niespójny. Potrzeba synchronizacji dotyczy także współbieżnych wątków. Przykład: dwa wątki wywołują funkcję malloc, która przydziela pamięć.

4 Współpraca miedzy procesami współbieżnymi
W zależności od intencji programisty i usług dostarczanych przez system operacyjny procesy współbieżne mogą ze sobą współpracować lub nie. Przykład: Proces niezależny na jego stan nie wpływa żaden inny proces, jego działanie jest deterministyczne, jego działanie daje się powielać, jego działanie może być wstrzymywane i wznawiane bez żadnych skutków ubocznych. Proces współpracujący jego stan jest dzielony z innymi procesami, jego wykonanie jest niedeterministyczne, wynik jego działania może zależeć od innych wykonania procesów.

5 Motywacja planowania przydziału procesora
Wykonanie każdego procesu jest podzielone na fazy: fazę procesora, w której procesowi jest przydzielony procesor fazę wejścia-wyjścia, w której na rzecz procesu wykonywana jest operacja wejścia-wyjścia. Jeśli dwa procesy są wykonywane szeregowo, to muszą czekać długo na swoje wykonanie, a urządzenia wejścia-wyjścia i procesor są naprzemiennie bezczynne. Takie procesy można wykonywać współbieżnie. Jeśli proces, który do tej pory korzystał z procesora wszedł w fazę korzystania z urządzeń peryferyjnych, to procesor może zostać przydzielony innemu procesowi, który jest gotów do wykonania. Takie postępowanie: zmniejsza czas przetwarzania i czas oczekiwania procesu, zwiększa i równoważy obciążenie procesora i urządzeń zewnętrznych, podnosi przepustowość systemu (ilość pracy wykonana w jednostce czasu).

6 Algorytmy szeregowania
Sytuacja, przedstawiona powyżej jest "idealna" i w rzeczywistości występuje rzadko. We wszystkich procesach występują naprzemiennie fazy procesora i wejścia-wyjścia, ale w różnych proporcjach: procesy ograniczone przez procesor – mała ilość długich faz procesora procesy ograniczone przez wejście-wyjście – dużo bardzo krótkich faz procesora. Wiedza o tych proporcjach umożliwia optymalizację różnych aspektów wydajności systemu komputerowego, np.: → max wykorzystanie procesora → max przepustowość (ang. throughput) (liczbę wykonanych procesów w jednostce czasu), czas cyklu przetwarzania (ang. turnaround time) (czas od przedłożenia procesu do wykonania do jego zakończenia), → min czas oczekiwania (ang. waiting time)(czas od przedłożenia procesu do rozpoczęcia jego wykonania), → min czas odpowiedzi (ang. response time)(czas reakcji procesu na zadania użytkownika – ważny w systemach interaktywnych), → min Powyższe strategie realizuje planista krótkoterminowy

7 Wywłaszczanie procesów
Wywłaszczenie – technika używana w środowiskach wielozadaniowych, w której planista może wstrzymać aktualnie wykonywany proces lub wątek, by umożliwić działanie innemu. Dzięki temu zawieszenie jednego procesu nie powoduje blokady całego systemu operacyjnego. Wywłaszczanie umożliwia szczegółowe określanie czasu, w jakim dany proces może korzystać z procesora. Wywłaszczanie w niektórych systemach operacyjnych może dotyczyć nie tylko programów, ale także samego jądra (Linux). Wywłaszczanie jest często ograniczane, na przykład procedury odpowiedzialne za obsługę przerwań sprzętowych są zwykle niewywłaszczalne, co znacznie upraszcza ich konstrukcję ale wymusza też zadbanie o to, żeby szybko się kończyły umożliwiając działanie innym procesom.

8 Wywłaszczanie procesów
W systemach bez wywłaszczenia zadania jawnie informują planistę, gdy chcą umożliwić przejście do innych zadań. Jeżeli nie zrobią tego w odpowiednim czasie, system zaczyna działać bardzo wolno. Definiujemy dwa rodzaje strategii szeregowania procesów szeregowanie niewywłaszczalne Szeregowanie z wywłaszczaniem (ang. preemptive) Systemy z wywłaszczaniem Większość UNIXów Windows (95, ME, NT, 2000, XP, Vista, 7, 8) AmigaOS Systemy bez wywłaszczania MS-DOS Microsoft Windows 3.x i wcześniejsze Mac OS 9 i wcześniejsze

9 Wykres Gantta H.L. Gantt jest autorem metody planowania przedsięwzięć przy pomocy harmonogramów (rok 1917), które znane są pod nazwą diagramów (wykresów) Gantta. Przykład harmonogramu prezentuje schemat:

10 Algorytm FCFS FCFS (ang. First-Come First-Served), nazywany także FIFO jest najprostszym algorytmem szeregowania. Procesor jest przyznawany procesom w takiej kolejności w jakiej są one umieszczone w kolejce procesów gotowych. Może prowadzić do efektu konwoju, tzn. oczekiwania procesów ograniczonych przez wejście-wyjście na zakończenie realizacji długich faz procesora procesu ograniczonego przez procesor.

11 Algorytm FCFS Średni czas oczekiwania można policzyć posługując się diagramem Gantta, który obrazuje kolejność wykonania procesów. Na jego dole znajdują się czasy oczekiwania kolejnych procesów na wykonania. Są one sumą czasów wykonania ich poprzedników. Średni czas oczekiwania procesów jest w przypadku algorytmu FCFS średnią arytmetyczną czasów wykonania poszczególnych procesów czyli

12 Algorytm SJF (3 + 16 + 9 + 0)/4 = 7ms.
SJF (ang. Shortest Job First) - najpierw najkrótsze zadanie. Jest algorytmem optymalnym, jeśli chcemy uzyskać minimalny czas oczekiwania procesów. Procesor jest przydzielany procesom według długości trwania ich faz procesora (tzn. zaczynając od tego o najkrótszej fazie, a kończąc na tym o najdłuższej). Średni czas oczekiwania procesów dla niewywłaszczającego algorytmu SJF liczony jest w ten sam sposób jak dla algorytmu FCFS. Dla danych z rysunku będzie to: ( )/4 = 7ms.

13 Algorytm SRT Algorytm SRT (ang. Shortest Remaining Time) – najpierw najkrótszy pozostały czas. Jest odmianą algorytmu SJF z wywłaszczaniem. Procesor jest odbierany wykonywanemu procesowi wtedy, kiedy do kolejki procesów gotowych nadchodzi proces o czasie trwania fazy procesora krótszym, niż czas konieczny do zakończenia fazy procesora bieżącego zadania. Średni czas oczekiwania procesów. Należy uwzględnić czasy częściowego wykonania fazy procesora wywłaszczanych procesów i odjąć je od czasów ich oczekiwania. Należy również uwzględnić i odjąć od czasu oczekiwania czas nadejścia do kolejki procesów gotowych, dla wszystkich procesów.

14 Przewidywanie czasu trwania fazy procesu
Stosuje sie oszacowania statystyczne, bazujące na historii wykonania procesu. Te oszacowania opierają się na średniej wykładniczej. Jeśli zapamiętywane są tylko dwie ostatnie fazy procesora procesu, to ta średnia ma postać: gdzie  jest czasem wykonania fazy procesora, a  współczynnikiem z przedziału [0,1]. Jeśli zapamiętywanych jest j faz, to wzór na średnią wykładniczą przyjmuje postać:

15 Przewidywanie fazy CPU

16 Szeregowanie priorytetowe
Algorytm priorytetowy przydziela procesor procesom według przypisanego im priorytetu. Priorytet najczęściej liczba naturalna, która określa „ważność” procesu. Zazwyczaj im mniejsza jest wartość tej liczby, tym proces ma wyższy priorytet. Priorytety mogą być przydzielane zewnętrznie jak i wewnętrznie. Szeregowanie priorytetowe może odbywać się z wywłaszczaniem (ang. preemptive), jak i bez (non-preemptive). Algorytm SJF (w obu wersjach) jest formą algorytmu priorytetowego (priorytetem jest przewidywany czas fazy CPU). Przy planowaniu priorytetowym może dojść do zjawiska, które nazywamy zagłodzeniem procesu (ang. starvation). Zachodzi ono wtedy, gdy w systemie jest proces o bardzo niskim priorytecie. Jeśli inne procesy będą miały zawsze wyższe priorytety to ten proces nigdy nie otrzyma dostępu do procesora. Aby uniknąć zjawiska zagłodzenia stosuje sie okresowe postarzanie procesów (ang. aging), czyli zwiększanie ich priorytetów w miarę upływu czasu.

17 Średni czas oczekiwania
Średni czas oczekiwania będzie policzony dla algorytmu priorytetowego bez wywłaszczeń. Dla danych z rysunku obok będzie to ( )/5 = 8, 2ms.

18 Szeregowanie rotacyjne
Algorytm rotacyjny (ang. RR – round robin) zwany także karuzelowym występuje tylko w formie wywłaszczeniowej i jest właściwy dla systemów interaktywnych. Każdemu procesowi system operacyjny przyznaje pewien kwant czasu (ang. time quantum) na wykonanie fazy procesora, np. 10 – 100ms. Jeśli proces wykona swoją fazę wcześniej, to dobrowolnie oddaje procesor innym procesom. Jeśli nie – to procesor jest mu odbierany, a on wędruje na koniec kolejki procesów gotowych i musi czekać aż wszystkie pozostałe procesy wykorzystają swój kwant czasu. Kolejka procesów gotowych jest wiec listą cykliczną. Jeśli jest n procesów w kolejce gotowości, a kwant czasu wynosi q, to każdy proces otrzyma 1/n czasu procesora, porcjami, których wielkość nie przekracza q jednostek czasu. Żaden proces nie czeka dłużej niż (n-1)q jednostek czasu Dobierając kwant czasu należy uważać, aby nie był zbyt długi (wówczas otrzymamy algorytm FCFS) lub zbyt krótki (wówczas procesor więcej czasu będzie poświęcał na przełączanie kontekstu, niż na wykonywanie procesów).

19 Średni czas oczekiwania
Należy uwzględnić czasy częściowych wykonań faz procesora poszczególnych procesów (może ich być kilka) i odjąć je od czasów ich oczekiwań.

20 Kwant czasu a czas przełączania kontekstu

21 Zależność czasu cyklu od kwantu czasu

22 Kolejka wielopoziomowa
Działanie opisanych wcześniej algorytmów można połączyć dzieląc kolejkę procesów gotowych na kilka kolejek. Procesy umieszczane są w tych kolejkach w zależności do jakiej kategorii należą lub jaki maja priorytet. Szeregowanie w obrębie poszczególnych kolejek odbywa sie różnymi algorytmami lub tez tym samym algorytmem, ale różne są parametry dla tego algorytmu. Przykład – podział na dwie kolejki Kolejka pierwszoplanowa – foreground (interactive) Kolejka drugoplanowa – background (batch) Każda kolejka ma swój algorytm szeregowania Pierwszoplanowa: RR Drugoplanowa: FCFS Planowanie między kolejkami Stałopriorytetowe (fixed priority scheduling). Obsługuje najpierw kolejkę pierwszoplanową potem drugoplanową. Możliwość zagłodzenia Odcinek czasu (time slice) – każda kolejka dostaje pewną ilość czasu CPU, który może rozdysponować między swoje procesy, np. 80% dla pierwszoplanowej i 20% dla drugoplanowej

23 Szeregowanie w kolejkach wielopoziomowych
najwyższy priorytet Procesy systemowe Procesy interaktywne Procesy interaktywne edycji Procesy wsadowe Procesy studentów najniższy priorytet

24 Kolejka wielopoziomowa ze sprzężeniem zwrotnym
Schemat kolejki wielopoziomowej można uzupełnić o migrację procesów miedzy kolejkami. Otrzymujemy w ten sposób wielopoziomową kolejkę ze sprzężeniami zwrotnymi (ang. Mulitlevel Feedback Queue) – autor Leonard Kleinrock. Przechodzenie procesów miedzy kolejkami jest zależne od czasu trwania ich poprzedniej fazy procesora (w ten sposób można realizować postarzanie procesów). Na tym schemacie opiera sie szeregowanie procesów w oryginalnym systemie Unix. Planista MLFQ jest określany 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 przeniesieniu procesu do kolejki o niższym priorytecie Metoda określająca kolejkę, do której trafia proces potrzebujący obsługi

25 Przykład MLFQ Mamy trzy kolejki Q0 – kwant czasu 8ms
Q2 – FCFS Szeregowanie: Nowe zadanie trafia do kolejki Q0, obsługiwanej wg. Algorytmu FCFS. Po przydzieleniu CPU otrzymuje kwant 8ms. Jeżeli w tym czasie zadanie nie skończy się, jest przemieszczane do kolejki Q1. W kolejce Q1 zadanie jest obsługiwane wg. FCFS i otrzyma dodatkowo 16ms. Jeżeli w tym czasie nie zakończy się, jest wywłaszczane i przemieszczane do kolejki Q2.

26 Przykład MLFQ

27 Algorytm O(1) Opracowany przez Ingo Molnara na potrzeby systemu Linux.
Jest modyfikacją MLFQ i jest bardzo efektywny. Każdy proces w Linuksie posiada dwa priorytety: statyczny nazywany poziomem uprzejmości (ang. nice), dynamiczny, który zależy od stopnia interaktywności procesu i zmienia się w czasie. Linux preferuje procesy ograniczone przez wejście-wyjście, które uznaje za bardziej interaktywne od procesów ograniczonych przez procesor. Ocena stopnia interaktywności dokonywana jest przez funkcje heurystyczne. Im wyższy stopień interaktywności procesu, tym większy priorytet dynamiczny on uzyskuje. Priorytet ostateczny jest wynikiem dodania priorytetu statycznego i dynamicznego.

28 Algorytm O(1) Kolejka procesów gotowych jest strukturą danych zawierająca wskaźniki na dwie tablice priorytetów: aktywna i przeterminowana. Tablice te maja po 140 elementów (tyle jest różnych priorytetów w Linuksie), każdy z nich jest wskaźnikiem na listę cykliczną procesów gotowych do wykonania.

29 Algorytm O(1) Szeregowanie w obrębie jednej takiej listy zachodzi według algorytmu rotacyjnego, przy czym kwant czasu jest zależny od wartości priorytetu (im wyższy, tym kwant dłuższy). Aby przyspieszyć wyszukiwanie elementów w tablicach zawierających wskaźniki na niepuste listy procesów, z każdą z nich skojarzono mapę bitową. Pozycja pierwszego ustawionego bitu wskazuje, który element tablicy zawiera niepusty wskaźnik. Jeśli proces wykorzysta swój kwant czasu, to natychmiast wyliczany jest dla niego nowy priorytet i jest on przenoszony do tablicy przeterminowanej. Po całkowitym opróżnieniu tablicy aktywnej dokonywana jest zamiana wskaźników i tablica aktywna staje sie tablica przeterminowana, a tablica przeterminowana aktywna. Powyższy opis nie uwzględnia kilku szczegółów, takich jak dawanie drugiej szansy procesom wysoko interaktywnym lub sprawdzanie, czy któryś z procesów nie ulega zagłodzeniu.

30 Szeregowanie w systemach wieloprocesorowych
Jeśli w systemie wieloprocesorowym każdy procesor jest innego typu (system heterogeniczny, np.: w systemie rozproszonym), to planowanie jest stosunkowo proste - każdy procesor otrzymuje sobie właściwe zadania. Jeśli procesory są jednakowe (system homogeniczny), to planowanie może przebiegać na kilka sposobów. Każdy z procesorów może mieć osobną kolejkę zadań, a system operacyjny powinien dbać o to, aby liczby elementów tych kolejek były takie same lub porównywalne (load sharing). Procesory mogą też mieć wspólną kolejkę zadań. W takim rozwiązaniu wyznacza się najczęściej jeden z procesorów do wykonywania kodu planisty. Jest to forma wieloprzetwarzania asymetrycznego (asymmetric multiprocessing).

31 Ocena algorytmów szeregowania
Ocena wstępna: modelowanie deterministyczne – ocena analitycznej algorytmu przy założeniu pewnych statycznych, uśrednionych obciążeń procesora. To oszacowanie wykonywane jest za pomocą diagramów Gantta. Drugi etap oceny: metoda analizy obsługi kolejek w sieci. Głównym elementem tej metody jest wzór Little’a n = ·W, gdzie  to tempo przybywania nowych procesów do systemu, W to średni czas oczekiwania w kolejce, a n to średnia długość kolejki. Jest to metoda trudna. Prostsza, ale równie wiarygodna metoda oceny algorytmów szeregowania jest symulowanie ich działania w komputerze. Dane dla symulatora na temat procesów może dostarczać generator liczb pseudolosowych o rozkładzie wykładniczym, lub można je pobrać z rzeczywistego systemu. Ostateczną oceną jest jednak zawsze implementacja algorytmu w prawdziwym systemie operacyjnym. W takim przypadku programista systemowy może zmieniać parametry algorytmu lub sam algorytm w oparciu o opinie użytkowników.

32 Literatura Wojciech Kwedlo: Wykład: Systemy operacyjne Wydział Informatyki, Politechnika Białostocka Arkadiusz Chrobot: Wykład: Systemy Operacyjne. Katedra Informatyki Politechniki Świętokrzyskiej


Pobierz ppt "Wykład 8 Szeregowanie zadań"

Podobne prezentacje


Reklamy Google