SYSTEMY OPERACYJNE PROCESY I WĄTKI

Slides:



Advertisements
Podobne prezentacje
Zerowanie mikroprocesorów Cel: wprowadzenie mikroprocesora w określony stan początkowy Zwykle realizowany poprzez: inicjalizację licznika rozkazów (PC)
Advertisements

Wirtualizacja zasobów w systemach operacyjnych
Wprowadzenie do informatyki Wykład 6
Podstawowe pojęcia programowania współbieżnego
Mechanizmy pracy równoległej
Jarosław Kuchta Monitory.
Wykonał : Marcin Sparniuk
SYSTEMY OPERACYJNE WSTĘP
SYSTEMY OPERACYJNE ·       SO : zestaw programów zarządzających zasobami komputera i wspomagających jego użytkowanie zarządzanie zasobami.
Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.
PROGRAMOWANIE STRUKTURALNE
SYSTEMY OPERACYJNE PROCESY I WĄTKI
SYSTEMY OPERACYJNE SYNCHRONIZACJA PROCESÓW
SYSTEMY OPERACYJNE PROCESY I WĄTKI
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Wykład nr 7: Synchronizacja procesów
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Wykład nr 6: Planowanie przydziału procesora
Systemy operacyjne.
Komputer, procesor, rozkaz.
Temat nr 10: System przerwań
Budowa systemów operacyjnych czasu rzeczywistego
Zdarzenia w programach VI (zdarzenia rejestrowane dynamicznie)
ZARZĄDZANIE PROCESAMI
Problem rozbieżności czasów jednym z wielu problemów pojawiających się w systemach rozproszonych jest rozbieżność wartości zegarów na poszczególnych węzłach-maszynach.
Język Java Wielowątkowość.
6. SZEREGOWANIE PROCESÓW
Muteksy Muteksy (mutex – MUTual EXclusion) są prostymi obiektami synchronizacyjnymi pełniącymi rolę semaforów binarnych dla wątków (chroniącymi sekcje.
Semafory według normy POSIX
9. KOORDYNACJA PROCESÓW WSPÓŁBIEŻNYCH PRZY UŻYCIU INTERPRETATORA
Wieloprocesowy system operacyjny dla komputerów ATARI XL/XE
RODZAJE KOMUNIKACJI MIĘDZY PROCESAMI
Wątki.
Pamięć wspólna Przegląd stosowanych rozwiązań Marcin Kamiński, Michał Kotra Wydział EAIiE Katedra Automatyki Kraków, 2008.
Zdzisław Stryła Instytut Fizyki UAM
ogólne pojęcia struktury
Wykonawcy:Magdalena Bęczkowska Łukasz Maliszewski Piotr Kwiatek Piotr Litwiniuk Paweł Głębocki.
Podstawy programowania
Podstawy programowania II
Wykonanie: Iwona Szatkowska. Uwaga! Wszystkie opisane w instrukcji operacje oparte są o zapowiedzi oraz projekty odpowiednich ustaw i rozporządzeń. Te.
Wielozadaniowowść systemu operacyjnego Linux
Systemy operacyjne.
Zasada działania komputera
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Problem sekcji krytycznej
Przerwanie ang. interrupt.
Buforowanie D e f i n i c j a.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
POŚREDNIK Jak reprezentowana jest informacja w komputerze? liczby – komputer został wymyślony jako zaawansowane urządzenie służące do wykonywania.
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
Planowanie przydziału procesora
Przykłady implementacji planowania przydziału procesora
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Bariery synchronizacyjne Bariery są obiektami synchronizacyjnymi pakietu pthread służącymi do wyrównywania czasów pracy wątków wykonujących wspólne zadanie.
Systemy rozproszone  Rozdzielenie obliczeń między wiele fizycznych procesorów.  Systemy luźno powiązane – każdy procesor ma lokalną pamięć; procesory.
Algorytmika.
Jak Jaś parował skarpetki Andrzej Majkowski 1 informatyka +
Systemy dynamiczne 2014/2015Obserwowalno ść i odtwarzalno ść  Kazimierz Duzinkiewicz, dr hab. in ż. Katedra In ż ynierii Systemów Sterowania 1 Obserwowalność.
Procesor, pamięć, przerwania, WE/WY, …
Architektury procesorów rdzeniowych mikrokontrolerów.
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
Struktura systemu operacyjnego
Wstęp do programowania Wykład 7
Wątki, programowanie współbieżne
Mikrokontrolery System przerwań
Zapis prezentacji:

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.

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. System składa się ze zbioru procesów: 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, reprezentujący proces w systemie: stan procesu, numer procesu (identyfikator), licznik rozkazów, stosu, rejestry, informacje o pamięci zajętej przez proces, wykaz otwartych plików, informacja o planowaniu przydziału procesora, informacja o wykorzystanych zasobach (rozliczanie).

PROCESY I WĄTKI Stan procesu: nowy - proces został utworzony, gotowy - proces czeka na przydział procesora, bieżący - są wykonywane instrukcje, (aktywny) 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

R (runnable) - zdolny do pracy PROCESY I WĄTKI Komenda ps (process status) pozwala obserwować i określać stan procesów w systemie: R (runnable) - zdolny do pracy S (sleeping) - śpiący (blocked) D (uninterruptable sleep) - nieprzerywalny sen (zwykle I/O) T (traced or stopped) Z (defunct) „zombie'' W (no resident pages) < (high priority process) N (low priority process) L (pages locked into memory)

PROCESY I WĄTKI Realizacja n procesów na maszynie jednoprocesorowej: licznik rozkazów, słowo stanu programu i podstawowe rejestry są składowane na stosie systemowym przez sprzęt obsługi przerwań; skok do adresu wskazywanego przez wektor przerwań; procedura obsługi przerwania rozpoczyna działanie od zapamiętania wszystkich pozostałych rejestrów w tablicy procesów; identyfikator bieżącego procesu i wskaźnik tablicy procesów są zapamiętywane pod odpowiednimi zmiennymi systemowymi; określenie, który proces zainicjował wykonywanie operacji dyskowej - stan tego procesu jest równy waiting lub blocked; stan tego procesu powinien zostać zmieniony na ready wywołanie modułu szeregującego (process scheduler), który decyduje o przydziale procesora dla procesów, znajdujących się w stanie ready (w Unix wybierany jest zawsze ten proces, który wykonał inicjację operacji we/wy).

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 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() ) niekiedy: zakończenie kaskadowe: po zakończeniu rodzica kończone są procesy potomne.

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. Stan wątku jest zdefiniowany przez małą, odrębną ilość danych (własny stan rejestrów i stos). Cechy wątków: każdy wątek jest wykonywany sekwencyjnie, każdy wątek posiada własny licznik rozkazów i stos, wątki dzielą czas procesora tak, jak procesy, w systemie wieloprocesorowym wątki mogą być wykonywane równolegle, stan wątku jest definiowany małą ilością danych,

PROCESY I WĄTKI wątek ma te same podstawowe cechy co proces (stany, możliwość tworzenia wątków potomnych, korzystania z urządzeń zewnętrznych, itd...). między wątkami tego samego procesu nie ma ochrony pamięci (nie jest możliwa i nie jest potrzebna), wątki ze sobą współpracują, a nie współzawodniczą (tak jak procesy). analogia: maszyna – procesy == proces – wątki wątek: proces: licznik rozkazów przestrzeń adresowa stos otwarte pliki, semafory rejestry procesora zmienne globalne lista wątków potomnych lista procesów potomnych

PROCESY I WĄTKI -  Tradycyjny proces (ciężki) jest równoważny zadaniu z jednym wątkiem. -  Jeżeli zadanie składa się z wielu wątków, to w czasie gdy jeden wątek jest zablokowany, może się wykonywać inny wątek tego zadania; współpraca wielu wątków w jednym 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: przełączanie procesora między wątkami jest łatwiejsze (szybsze) niż między zwykłymi (ciężkimi) procesami lepsze wykorzystanie zasobów systemu komputerowego lepsza realizacja przetwarzania współbieżnego na maszynach o pamięci współdzielonej (SMP). Wątek, to podstawowa jednostka wykorzystania procesora.

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

PROCESY – 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.

PROCESY – PRZYDZIAŁ PROCESORA Kolejka zadań (task queue) – zbiór zadań oczekujących na przydział PAO. Kolejka procesów gotowych (read queue) – procesy z przydzieloną PAO. Decyzja – któremu procesowi ma być przydzielony procesor. Inne kolejki – np. kolejka do urządzeń (device queue).

PROCESY – 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).

PROCESY – PRZYDZIAŁ PROCESORA Planista (scheduler) może być: długoterminowy – moduł wybierający kolejne zadania do załadowania do PAO (wysoki poziom szeregowania), krótkoterminowy – moduł wybierający proces spośród procesów w stanie gotowości i przydzielający mu procesor (niski poziom szeregowania). Różnica pomiędzy planistami zależy od częstotliwości ich uaktywnień.

PROCESY – 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 oczekiwania (waiting time) – minimalizacja czasu oczekiwania przez użytkowników wsadowych na wyniki ich zadań, czas odpowiedzi (response time) – minimalizacja czasu odpowiedzi dla użytkowników interakcyjnych.

KLASYFIKACJA PROCESÓW Algorytmy przydziału procesora dzielą się na: algorytmy z wywłaszczeniem – procesor może być odebrany procesowi w trakcie jego wykonywania; algorytmy bez wywłaszczenia – proces utrzymuje procesor aż do zakończenia pracy.

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. 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. Efekt: krótkie procesy są wstrzymywane przez długie. Zalety: sprawiedliwy, niski narzut systemowy. Wady: długi średni czas oczekiwania i wariancja czasu oczekiwania.

PROCESY – PRZYDZIAŁ PROCESORA SJF- SHORTEST JOB FIRST Algorytm wiąże z każdym procesem długość jego najbliższej fazy procesora. Procesor jest przydzielany najkrótszemu. 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).

PROCESY – PRZYDZIAŁ PROCESORA PLANOWANIE ROTACYJNE 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 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. 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.

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.

SYNCHRONIZACJA PROCESÓW Synchronizacja i obszary krytyczne. Jak zapewnić prawidłowy dostęp procesów do zasobów niepodzielnych, tj. zasobów, z których może korzystać tylko jeden proces? Problem synchronizacji dotyczy tylko procesów współpracujących z algorytmem pełnego wywłaszczania.

PROCESY - ZASOBY Zasoby niepodzielne: większość urządzeń zewnętrznych, pliki zapisywalne, obszary danych, które ulegają zmianom; Zasoby podzielne: jednostki centralne, pliki tylko do czytania, obszary pamięci, gdzie znajdują się (dzielone) biblioteki, kody programów.

WYŚCIG I SEKCJA KRYTYCZNA Sytuacje, w których dwa (lub więcej) procesy czytają i modyfikują pewne dzielone dane i rezultat końcowy zależy od tego kiedy każdy z tych procesów będzie je czytał / modyfikował, nazywamy wyścigiem lub sytuacją hazardową (race condition). Część programu, w której następuje czytanie / modyfikowanie dzielonych danych, nazywa się sekcją krytyczną (critical section). Część programu, w której są wykonywane operacje nieistotne z punktu widzenia innych procesów (nie wymagające wyłączności na współdzielonych zasobach) nazywa się sekcją lokalną.

WYŚCIG I SEKCJA KRYTYCZNA Interpretacja przetwarzania współbieżnego dla pojedynczego CPU: proces rozpoczyna się przed zakończeniem poprzedniego. możliwy konflikt przy operacjach na danych dzielonych (np. nawet instrukcja x:=x+1 to 3 instrukcje: mov AX,x; inc AX; mov x,AX procesora). Wniosek: każdy z procesów ma (może mieć) segment kodu nazywany sekcją krytyczną (SK). Sekcje krytyczne procesów podlegają wzajemnemu wykluczaniu się w czasie.

SYNCHRONIZACJA PROCESÓW Rozwiązanie sytuacji hazardowej. Proces żąda w sposób jawny zasobu, przed planowanym jego użyciem (żądanie poprzedza przydział); przydzielanie na cały czas pracy procesu, rozwiązanie nieefektywne. Stosowanie techniki wzajemnego wykluczania, tzn. zapewnienie, że jeśli jeden proces wykonuje operacje na współdzielonym zasobie, to żaden inny proces nie ma do niego dostępu (jest wykluczony z wykonania operacji na tym zasobie). Jest to podstawa reguł synchronizacji.

Warunki stosowania technik wykluczania: WYŚCIGI Warunki stosowania technik wykluczania: Żadne dwa procesy nie mogą przebywać jednocześnie w swojej sekcji krytycznej. Nie można czynić żadnych założeń, co do szybkości wykonywania procesów oraz ich liczby. Żaden z procesów wykonujący działanie poza sekcją krytyczną nie może blokować innych procesów. Żaden proces nie może czekać w nieskończoność na wejście do swojej sekcji krytycznej.

SYNCHRONIZACJA PROCESÓW Techniki wzajemnego wykluczania. Techniki z aktywnym oczekiwaniem (Mutual Exclusion with Busy Waiting) blokada przerwań (disabling interrupts), zmienne blokujące (lock variables), ścisłe przełączanie (strick alternation), algorytm Dekkera, algorytm Petersona, instrukcja TSL (Test & Set Lock).

SYNCHRONIZACJA PROCESÓW Techniki wzajemnego wykluczania (cd.) 2. Technika Sleep & Wakeup funkcje systemowe (sleep, wakeup), technika semaforów, licznik zdarzeń, monitory,

SYNCHRONIZACJA PROCESÓW Techniki z aktywnym oczekiwaniem. blokada przerwań: blokowanie wszystkich przerwań po wejściu do SK i ich odblokowanie po wyjściu procesu z SK; rozwiązanie sprzętowe, proste lecz ryzykowne (zapominanie odblokowania przerwań przez użytkownika); nie przydatne w systemach wieloprocesorowych (blokada dotyczy tylko jednego procesora), technika stosowana na poziomie jądra SO.

SYNCHRONIZACJA PROCESÓW Techniki z aktywnym oczekiwaniem. b) zmienne blokujące: rozwiązanie programowe, zakłada istnienie współdzielonej zmiennej blokującej lock, wstępnie ustawianej na 0. proces przed wejściem do SK sprawdza wartość tej zmiennej – jeśli lock == 0  proces zmienia wartość lock na 1 i wchodzi do SK, jeśli lock == 1  proces czeka, aż wartość lock zmieni się na 0; rozwiązanie mało skuteczne (trzeba pamiętać o zmianie wartości lock przy wyjściu z SK, oraz niebezpieczeństwo hazardu przy dostępie do tej zmiennej).

SYNCHRONIZACJA PROCESÓW Techniki z aktywnym oczekiwaniem. c) ścisłe przełączanie: rozwiązanie programowe do synchronizacji 2 procesów, zmienna całkowita turn pokazuje kolejność, w jakiej procesy mogą wchodzić do SK (wartość zmiennej odpowiada identyfikatorowi procesu); jeśli identyfikator procesu = zmienna  proces wchodzi do SK jeśli identyfikator procesu =/= zmienna  proces czeka w pętli sprawdzającej; proces wychodząc z SK ustawia wartość zmiennej turn na identyfikator drugiego procesu; ciągłe testowanie możliwości wejścia do SK – tzw. aktywne oczekiwanie (jest to marnowanie czasu procesora);

SYNCHRONIZACJA PROCESÓW Techniki z aktywnym oczekiwaniem. d) algorytm Dekkera: rozwiązanie programowe spełniające warunki wzajemnego wykluczania lecz skomplikowane i praktycznie nie stosowane, zmienne pokazują, który proces jest w SK, które procesy chcą wejść do SK, które procesy są faworyzowane.

SYNCHRONIZACJA PROCESÓW Techniki z aktywnym oczekiwaniem. algorytm Petersona: rozwiązanie programowe pozbawione wad, stosowane szczególnie w systemach rozproszonych, procesy korzystają z 2 procedur: wchodzę i wychodzę (do SK), przed wejściem do SK proces wywołuje procedurę enter_region z własnym numerem jako parametrem, pokazując innym procesom, że współdzielony zasób jest zajęty, po wyjściu z SK proces wywołuje procedurę leave_region z własnym numerem jako parametrem, pokazując, że zasób jest wolny,

SYNCHRONIZACJA PROCESÓW Techniki z aktywnym oczekiwaniem. f) instrukcja TSL (Test & Set Lock) rozwiązanie sprzętowo programowe, zawartość określonego słowa pamięci jest czytana i wpisywana do rejestru roboczego, natomiast do tego słowa pamięci jest wpisywana niezerowa wartość (najczęściej 1), operacje pisania i czytania są niepodzielne, nie mogą być przerwane - gwarantuje to system przez blokadę przerwań. żaden inny proces nie może wykonać operacji na tym słowie pamięci dopóki ta instrukcja nie zostanie zakończona, procesor, który wykonuje instrukcję TSL, blokuje szynę danych dopóki nie wykona tej instrukcji, instrukcję TSL wykonuje się w parze z współdzieloną zmienną flag; każdy proces, wykorzystując instrukcję TSL, sprawdza wartość tej zmiennej.

SYNCHRONIZACJA PROCESÓW Przykład procedury wchodzę z instrukcją TSL: 1.    Skopiowanie wartości zmiennej flag do rejestru roboczego i ustawienie flag na 1. Porównanie starej (skopiowanej) wartości zmiennej flag z zerem. Jeśli nie było to 0, to proces nie może wejść do sekcji krytycznej i następuje powrót na początek sekcji procedury. Test jest wykonywany aż zmienna flag będzie równa 0 i proces będzie miał przydzielony procesor. Procedura wychodzę ustawia wartość zmiennej flag na zero.

SYNCHRONIZACJA PROCESÓW Wady technik z aktywnym oczekiwaniem. przyznawanie czasu procesora nawet takim procesom, które nie mogą wejść do SK marnowanie czasu procesora, możliwość wystąpienia zakleszczeń (problem odwróconego priorytetu).  technika Sleep & Wakeup

TECHNIKA SLEEP I WAKEUP 2. Technika Sleep & Wakeup Funkcje systemowe: sleep – odwołanie do systemu, powodujące zablokowanie (uśpienie) procesu wywołującego tę funkcję aż do czasu, gdy inny proces go nie obudzi (sygnał budzenia); wakeup – odwołanie do systemu służące do budzenia określonego procesu.

TECHNIKA SLEEP I WAKEUP b) Technika semaforów: Semafor - jest to specjalna zmienna całkowita (służąca do przechowywania liczby budzeń). Z semaforem związane są 3 operacje: inicjowanie semafora (nadawanie mu wartości początkowej); operacja down - opuszczenie semafora, P(s), wait(s); operację tę można wykonać, jeżeli wartość semafora ma wartość dodatnią, wtedy następuje zmniejszenie jego wartości o jeden; operacja up - podniesienie semafora, V(s), signal(s).

SEMAFORY Niech s będzie semaforem.  1. V(s): s=s+1; zwiększenie o 1 następuje w jednej niepodzielnej operacji (trzy czynności tj. pobranie, dodanie i zapamiętanie nowej wartości nie mogą być przerwane; ponadto s nie jest dostępne dla innych procesów podczas tych czynności). 2. P(s): s=s-1 o ile to możliwe; jeżeli s==0 to niemożliwe jest zmniejszenie s o 1 i pozostanie w dziedzinie wartości nieujemnych. W takim przypadku dany proces wykonujący operację P musi czekać, aż zmniejszenie s będzie możliwe tzn. if s>0 then s=s-1 else (wait(s)), tzn. proces musi czekać, aż inny proces wykona operację V(s).

SEMAFORY Operacja up zwiększa wartość semafora; jeśli jeden lub więcej procesów było uśpionych przy semaforze, to jeden z nich jest wybierany i uzyskuje pozwolenie na wykonanie operacji down tzn. opuszczenie semafora i wejście do sekcji krytycznej. Operacje up i down muszą być implementowane jako niepodzielne funkcje systemowe z możliwością blokady przerwań podczas testowania semafora i jego aktualizacji. W większości systemów operacyjnych wykorzystuje się w tym celu instrukcję TSL. Semafory które są zainicjowane jako 1 i wykorzystywane przez dwa lub więcej procesów w celu zapewnienia, że tylko jeden z nich może wejść do sekcji krytycznej, są nazywane semaforami binarnymi.

SEMAFORY Semafory i przerwania – jak wykorzystać semafory przy obsłudze przerwań? sprzęt zapamiętuje na stosie licznik, sprzęt ładuje nowy licznik z wektora przerwań, procedura asemblerowa zachowuje wartości rejestrów, procedura asemblerowa tworzy nowy stos, procedura C znaczy proces serwera jako gotowy, planista wybiera proces do wykonania, procedura C zwraca sterowanie do procedury asemblerowej, procedura asemblerowa wznawia wykonanie bieżącego procesu.

SEMAFORY z każdym urządzeniem we-wy wiąże się semafor, którego początkowa wartość wynosi zero, po zainicjowaniu operacji we-wy dla danego urządzenia proces wykonuje DOWN na semaforze i przechodzi w stan uśpienia, po nadejściu przerwania proces obsługujący to przerwanie wykonuje UP na semaforze, proces, który zgłosił żądanie we-wy staje się gotowy do wykonania.

SEMAFORY Wady semaforów: semafor jest wysokopoziomową abstrakcją opartą na niskopoziomowych mechanizmach elementarnych, zapewniających niepodzielność i mechanizmy wstrzymywania; wstrzymywanie i wznawianie wymaga przełączania kontekstu i zmian w kolejkach modułu szeregowania i kolejek wątków wstrzymanych; - operacje na semaforze są powolne.

TECHNIKA SLEEP I WAKEUP c) Liczniki zdarzeń: Liczniki zdarzeń są to zmienne, na których określa się 3 operacje: 1. Read(E) – odczyt licznika zdarzeń; 2. Advanced(E) – zwiększenie licznika zdarzeń E o 1; 3. Await(E,v) – proces czeka, aż licznik zdarzeń przyjmie wartość v lub więcej. Przykład: Problem producenta i konsumenta

PROBLEM PRODUCENTA I KONSUMENTA 2 typy procesów: Producenci – wykonując procedurę Produkuj, tworzą elementy danych, które muszą być potem wysłane do konsumentów. Konsumenci – po otrzymaniu danych, wykonują obliczenia w wewnętrznej procedurze Konsumuj. Np. program użytkowy „produkuje” zestawienie, „konsumowane” przez drukarkę. Uogólnienie do wielu producentów i wielu konsumentów. Licznik zdarzeń in – pozycje umieszczone przez producenta w buforze; out – pozycje pobrane przez konsumenta. Producent sprawdza, czy jest miejsce w buforze (Await); jeśli producent wygeneruje pozycje do bufora i out = 0, to funkcja Await go zablokuje do czasu, aż out będzie = co najmniej 1 (konsument usunął z bufora co najmniej 1 pozycję).

PROBLEM PRODUCENTA I KONSUMENTA d) Monitory: Monitory to konstrukcje zdefiniowane w języku wysokiego poziomu – jest to zbiór operacji określonych przez programistę. Typ monitor zawiera deklarację zmiennych, które określają stan obiektu tego typu, oraz treści procedur lub funkcji, realizujących działania na tym obiekcie. Konstrukcja monitora gwarantuje, że w jego wnętrzu może być aktywny w jednym czasie tylko jeden proces. W związku z tym programista nie musi kodować barier synchronizacyjnych w sposób jawny. Konstrukcja monitora nie jest wystarczająca do modelowania wszystkich schematów synchronizacji – w tym celu wprowadza się konstrukcję typu warunek.

PROBLEM PRODUCENTA I KONSUMENTA d) Monitory cd. Jedynymi operacjami, które mogą dotyczyć warunku są: czekaj (x) i sygnalizuj (x). Operacja x.czekaj oznacza, że proces ją wywołujący zostaje zawieszony aż do chwili, gdy inny proces wykona operację x.sygnalizuj. Operacja x.sygnalizuj wznawia jeden z zawieszonych procesów. W implementacji monitorów konieczne jest posłużenie się wstawkami assemblerowymi i instrukcją TSL lub semaforami.