SOE - Systemy Operacyjne Wykład 4 Zarządzanie procesami i wątkami dr inŝ. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW
Pojęcie procesu (1) Program zbiór instrukcji dla procesora przechowywany na dysku w postaci pliku obiekt pasywny Wykonywany program zadanie proces
Pojęcie procesu (2) Proces wykonujący się program środowisko wykonania programu, stworzone przez system operacyjny podstawowa jednostka pracy systemu operacyjnego obiekt aktywny
Obraz procesu w pamięci stos sterta dane kod
Stany procesu (1) Dwustanowy model procesu przerwanie utworzenie nie działa działa zakończenie uruchomienie
Stany procesu (2) Pięciostanowy model procesu przerwanie utworzenie procesu zakończenie przydział procesu nowy gotowy aktywny zakończony procesora wystąpienie zdarzenia czekający oczekiwanie na zdarzenie
Reprezentacja procesów w systemie Blok kontrolny procesu (process control block PCB) struktura danych opisująca proces Tablica procesów tablica wskaźników na bloki kontrolne procesów alokowana statycznie - ograniczona liczba procesów w systemie Listy procesów alokowane dynamicznie - brak ograniczeń na liczbę procesów Tablica list procesów
Blok kontrolny procesu Atrybuty procesu identyfikatory procesu, właściciela stan procesu licznik rozkazów rejestry procesora informacje o planowaniu przydziału procesora priorytet informacje o zarządzaniu pamięcią informacje do rozliczeń zuŝyty czas procesora i czas rzeczywisty informacje o stanie wejścia-wyjścia
Kontekst procesu Obraz procesu zawartość logicznej przestrzeni adresowej procesu (kod, dane, stos) stan licznika rozkazów i rejestrów sprzętowych procesora struktury danych jądra, związane z procesem blok kontrolny procesu Zachowanie kontekstu zapisanie stanu licznika i rejestrów w bloku kontrolnym gdy nastąpi przerwanie wykonywania procesu Odtwarzanie kontekstu
Podstawowe operacje na procesach Tworzenie procesu Kończenie procesu Przełączanie procesów
Tworzenie procesu Operacja jądra zamawiana poprzez funkcję systemową proces macierzysty, rodzicielski, rodzic proces potomny, potomek drzewo procesów Współdzielenie zasobów rodzic i potomek dzielą wszystkie zasoby dzielą podzbiór zasobów nie dzielą zasobów
Tworzenie procesu c.d. Przestrzeń adresowa proces potomny otrzymuje kopię przestrzeni adresowej procesu macierzystego system wpisuje nowy program do przestrzeni adresowej procesu potomnego Wykonanie wykonują się współbieŝnie rodzic czeka na zakończenie potomka
Kończenie procesu Zakończenie normalne proces wywołuje funkcję systemową (exit) po zakończeniu wykonywania kodu programu Zakończenie przez system operacyjny błędy wykonania kodu błędy wejścia-wyjścia przekroczenie limitu czasu zakleszczenie procesów zakończenie kaskadowe - po zakończeniu procesu macierzystego (w niektórych systemach operacyjnych) inne Zakończenie przez proces macierzysty
Przełączanie procesów Przełączanie procesora pomiędzy procesami Przerwanie wykonywania bieŝącego procesu przerwanie zegarowe przerwania od urządzeń pułapki wywołania funkcji systemowych Przełączanie kontekstu zachowanie kontekstu przerwanego procesu odtworzenie kontekstu procesu wybranego do wykonania
Wykonywanie kodu jądra systemu (1) Czy system operacyjny działa jak proces? Wykonywanie kodu jądra niezaleŝnie od procesów Wykonywanie kodu jądra w kontekście bieŝącego procesu tryb uŝytkownika -> tryb jądra Wykonywanie kodu jądra jako odrębnych procesów/wątków
Wykonywanie kodu jądra systemu (2) Kod jądra wykonywany niezaleŝnie od procesów tryb uŝytkownika proces proces proces proces tryb jądra jądro
Wykonywanie kodu jądra systemu (3) Funkcje jądra w kontekście bieŝącego procesu tryb uŝytkownika proces proces proces proces tryb jądra funkcje jądra systemu funkcje jądra systemu funkcje jądra systemu funkcje jądra systemu jądro
Wykonywanie kodu jądra systemu (4) Funkcje jądra jako odrębne procesy/wątki proces proces tryb uŝytkownika wątek jądra wątek jądra tryb jądra jądro
Planowanie procesów Kolejki planowania procesów kolejka zadań (procesów) lista wszystkich uruchomionych procesów kolejka procesów gotowych lista wszystkich procesów w pamięci operacyjnej, gotowych do wykonania i czekających na procesor kolejki do urządzeń we-wy
Diagram kolejek
Zagadnienia planowania (1) Planowanie długoterminowe planowanie zadań polega na wyborze procesów do wykonania i załadowaniu ich do pamięci nadzoruje stopień wieloprogramowości, głównie w systemach wsadowych planista długoterminowy jest wywoływany bardzo rzadko (sekundy, minuty)
Zagadnienia planowania (2) Planowanie krótkoterminowe planowanie przydziału procesora, szeregowanie procesów polega na wyborze jednego procesu z kolejki procesów gotowych i przydzieleniu mu dostępu do procesora dominuje w systemach z podziałem czasu planista krótkoterminowy jest wywoływany bardzo często (milisekundy)
Zagadnienia planowania (3) Planowanie średnioterminowe polega na okresowej wymianie procesów pomiędzy pamięcią operacyjną i pomocniczą umoŝliwia czasowe zmniejszenie stopnia wieloprogramowości pośredni etap w planowaniu procesów, często stosowany w systemach wielozadaniowych
Planowanie przydziału procesora (1) Koncepcja wykonania procesu cykl faz procesora i faz wejścia-wyjścia Planista (scheduler) wybiera jeden proces spośród procesów gotowych decyzje o przydziale procesora aktywny -> gotowy aktywny -> czekający czekający -> gotowy aktywny -> zakończony
Planowanie przydziału procesora (2) Wywłaszczanie procesów przerwanie aktywnego procesu w celu dokonania wyboru innego procesu do wykonania Ekspedytor procesów (dispatcher) przełączenie kontekstu zachowanie kontekstu starego procesu i załadowanie do rejestrów kontekstu nowego procesu przełączanie do trybu uŝytkownika wznowienie wykonania programu opóźnienie ekspedycji powinno być jak najkrótsze
Algorytmy planowania Kryteria planowania wykorzystanie procesora przepustowość systemu czas cyklu przetwarzania czas oczekiwania czas odpowiedzi wariancja czasu odpowiedzi
Algorytm FCFS FCFS - First Come, First Served pierwszy zgłoszony-pierwszy obsłuŝony kto pierwszy, ten lepszy Wybierany jest pierwszy proces z kolejki, czyli proces, który pierwszy zgłosił gotowość do wykonania Algorytm niewywłaszczający Efekt konwoju
Algorytm FCFS - przykład Proces Priorytet Czas nadejścia Czas fazy procesora P1 2 0 5 P2 1 1 2 P3 3 0 1 P1 P3 P2 0 5 6 8 Czas oczekiwania: P1 = 0, P2 = 6-1 = 5, P3 = 5 Tśr = (0+5+5)/3 = 3,33
Algorytm SJF SJF - Shortest Job First najpierw najkrótsze zadanie KaŜdy proces ma określoną długość następnej fazy procesora Wybierany jest proces, który ma najkrótszą następną fazę procesora Dwie wersje niewywłaszczająca wywłaszczająca Algorytm optymalny ze względu na minimalny średni czas oczekiwania procesów
Algorytm SJF - przykład Proces Priorytet Czas nadejścia Czas fazy procesora P1 2 0 5 P2 1 1 2 P3 3 0 1 P3 P2 P1 0 1 3 8 Tśr = (0+0+3)/3 = 1
Algorytm priorytetowy KaŜdy proces ma przydzielony priorytet liczba całkowita z ustalonego przedziału Wybierany jest proces o najwyŝszym priorytecie Definiowanie priorytetu zewnętrzne wewnętrzne - np. zuŝycie czasu procesora Wersje wywłaszczająca niewywłaszczająca
Algorytm priorytetowy - przykład Proces Priorytet Czas nadejścia Czas fazy procesora P1 2 0 5 P2 1 1 2 P3 3 0 1 P3 P1 P2 0 1 6 8 Tśr = (1+5+0)/3 = 2
Algorytm priorytetowy Problem głodzenia nieskończone oczekiwanie procesu o niskim priorytecie Postarzanie procesów stopniowe podwyŝszanie priorytetów procesów w miarę upływu czasu
Algorytm rotacyjny RR - Round Robin Wybierany jest pierwszy proces z kolejki procesów gotowych Wybrany proces dostaje kwant czasu procesora Po upłynięciu przydzielonego kwantu czasu proces jest przerywany i umieszczany na końcu kolejki Podział czasu (wielozadaniowość) Wybór kwantu czasu znacząco większy od czasu przełączania kontekstu zbyt duŝy => algorytm FCFS
Algorytm rotacyjny - przykład Proces Priorytet Czas nadejścia Czas fazy procesora P1 2 0 5 P2 1 1 2 P3 3 0 1 P1 P3 P2 P1 P2 P1 P1 P1 0 1 2 3 8 Tśr = (3+2+1)/3 = 2
Wielopoziomowe planowanie kolejek Procesy przydzielane są do wielu kolejek metoda przydziału gotowego procesu do konkretnej kolejki Szeregowanie procesów w kolejce kaŝda kolejka ma ustalony odrębny algorytm planowania procesów Szeregowanie kolejek ustalone priorytety kolejek rotacja z kwantem czasu
Wielopoziomowe planowanie kolejek ze sprzęŝeniem zwrotnym Procesy mogą się przemieszczać pomiędzy kolejkami Wiele kolejek procesów gotowych metoda przydziału procesu do kolejki metoda awansu procesu do lepszej kolejki metoda degradacji procesu do gorszej kolejki algorytm szeregowania procesów w kolejce
Planowanie wieloprocesorowe Wspólna kolejka procesów gotowych Wieloprzetwarzanie symetryczne kaŝdy procesor sam planuje swoje działanie wiele procesorów korzysta ze wspólnych struktur danych systemu konieczna jest synchronizacja dostępu do sekcji krytycznej Wieloprzetwarzanie asymetryczne wyróŝniony procesor pełni funkcję planisty dla pozostałych procesorów tylko jeden procesor korzysta ze struktur danych systemu
Planowanie w czasie rzeczywistym System rygorystyczny zlecenie uruchomienia procesu wraz z wymaganiami czasowymi planista akceptuje proces i udziela gwarancji terminowego wykonania planista odrzuca zlecenie jako niewykonalne System łagodny planowanie priorytetowe procesy czasu rzeczywistego mają najwyŝszy priorytet brak postarzania procesów czasu rzeczywistego wymagane małe opóźnienie ekspediowania procesu do procesora
Pojęcie wątku Wątek sekwencyjny przepływ sterowania w programie Grupa wątków w procesie współdzieli kod programu dane zasoby systemu operacyjnego Wątek licznik rozkazów rejestry procesora stos Tradycyjny proces = proces jednowątkowy
Wielowątkowość Proces jednowątkowy Proces wielowątkowy kod dane pliki kod dane pliki...... Wątek Wątek Wątek licznik rozkazów rejestry stos licznik rozkazów licznik rozkazów licznik rozkazów rejestry rejestry rejestry stos stos stos
Wątki uŝytkownika a wątki jądra Wątki uŝytkownika realizacja i zarządzanie przez bibliotekę funkcji na poziomie uŝytkownika nie są rozróŝniane przez jądro szybkie tworzenie i przełączanie moŝliwość zablokowania całego procesu przez jeden wątek brak moŝliwości wieloprzetwarzania Wątki jądra realizacja i zarządzanie przez jądro wolniejsze tworzenie i przełączanie konieczne przełączenie procesora w tryb jądra moŝliwość wieloprzetwarzania w systemie wieloprocesorowym
Modele implementacji wątków Model m-1 Model 1-1 Model m-n
Model m-1 proces jądro biblioteka CPU Wiele wątków uŝytkownika odwzorowanych na 1 wątek jądra
Model 1-1 proces jądro CPU CPU KaŜdy wątek uŝytkownika odwzorowany na 1 wątek jądra
Model m n proces jądro biblioteka CPU CPU Wiele wątków uŝytkownika odwzorowanych na wiele wątków jądra
Model mieszany proces proces jądro biblioteka CPU CPU Połączenie modeli m-n i 1-1