informatyka + 1
Współbieżność w informatyce
i nie tylko
Marcin Engel Instytut Informatyki Uniwersytet Warszawskiinformatyka + 2
Co to jest programowanie współbieżne?
B e a t a informatyka + 3
Lodowisko - model komputera
A n i a C z a r e k D a m i a n
informatyka + 4
Język programowania
• Instrukcje są postaci: imię, ruch• Ruch może być jednym z następujących poleceń:
– Krok naprzód
– Obrót w lewo – Obrót w prawo • Przykład:
informatyka + 5
Wykonanie instrukcji
B e a t a A n i a C z a r e k D a m i a ninformatyka + 6
Przykładowy program ...
Ania, krok naprzód Czarek, obrót w lewo Czarek, krok naprzód Damian, krok naprzód
informatyka + 7
... i jego wykonanie
Ania, krok naprzód Czarek, obrót w lewo Czarek, krok naprzód Damian, krok naprzód
B e a t a A n i a C z a r e k D a m i a n C z a r e k
informatyka + 8
Niebezpieczne ruchy
• Łyżwiarz nie powinien wpaść na bandę
informatyka + 9
Niebezpieczne ruchy
Ania, krok naprzód
A n i a
Damian, krok naprzód
B e a t a C z a r e k D a m i a n !!! !!!
informatyka + 10
Instrukcja złożona
Wprowadźmy do języka jeszcze jedną instrukcję:
jeśli pole przed Tobą jest wolne, to krok
informatyka + 11
Sekwencyjny program dla łyżwiarzy ...
• Powtarzaj– Ania, jeśli pole przed Tobą jest wolne, to krok
naprzód, w przeciwnym razie obróć się w lewo
– Beata, jeśli pole przed Tobą jest wolne, to krok naprzód, w przeciwnym razie obróć się w lewo
– Czarek, jeśli pole przed Tobą jest wolne, to krok
naprzód, w przeciwnym razie obróć się w lewo
– Damian, jeśli pole przed Tobą jest wolne, to krok naprzód, w przeciwnym razie obróć się w lewo
informatyka + 12
... i jego wykonanie
A n i a C z a r e k B e a t a D a m i a n B e a t a D a m i a n A n i a C z a r e kinformatyka + 13
Wady programu sekwencyjnego
• Programista musi myśleć jednocześnie o wszystkich poruszających się łyżwiarzach
• Wszyscy łyżwiarze poruszają się w ten sam sposób i w takim samym tempie
• Trudno jest zindywidualizować zachowanie łyżwiarzy
informatyka + 14
Inne podejście
• Trener przygotowuje program dla jednego łyżwiarza, na przykład
powtarzaj:
jeśli pole przed Tobą jest wolne, to krok naprzód, w przeciwnym razie obróć się w lewo
• Program jest wykonywany przez konkretnego łyżwiarza, więc nie trzeba poprzedzać instrukcji imieniem
• Wszyscy łyżwiarze otrzymują swój program i go wykonują
... i jego wykonanie
informatyka + 15 A n i a C z a r e k B e a t a D a m i a n B e a t a D a m i a n A n i a C z a r e kinformatyka + 16
informatyka + 17
Porównanie programu sekwencyjnego z
programem współbieżnym
• W programie sekwencyjnym w danej chwili ruch wykonuje tylko jeden łyżwiarz
• W programie współbieżnym jednocześnie
informatyka + 18
Wykonanie współbieżne
Wykonanie współbieżne to realizacja kilku czynności w taki sposób, że kolejna
rozpoczyna się przed zakończeniem poprzedniej
informatyka + 19
Zalety programu współbieżnego
• Większa elastyczność:
– łatwo zmienić zachowanie łyżwiarza wręczając mu inny program
informatyka + 20
Procesy i programy
• Programy to obiekty statyczne (w naszym przykładzie kartki wręczane łyżwiarzom)
• Procesy to obiekty dynamiczne (w naszym przykładzie: łyżwiarze) wykonujące programy
• Różne procesy mogą wykonywać różne programy • Dwa różne procesy mogą też wykonywać ten sam
program
• Ten sam program może być wykonywany przez różne procesy
informatyka + 21
Wykonanie programu współbieżnego
• Równoległe:
– asynchroniczne: każdy łyżwiarz jeździ własnym tempem (jak na poprzednich slajdach)
– synchroniczne: wszyscy wykonują jeden ruch na sygnał
• W przeplocie:
– łyżwiarze wykonują ruchy naprzemiennie ciągle w tej samej kolejności lub losowo na polecenie kierownika lodowiska
Wykonanie synchroniczne
informatyka + 22 A n i a C z a r e k B e a t a D a m i a n B e a t a D a m i a n A n i a C z a r e k RUCH!Wykonanie w przeplocie
informatyka + 23 A n i a C z a r e k B e a t a D a m i a n B e a t a D a m i a n A n i a C z a r e k Ania! Beata! Czarek! Damian!informatyka + 24
Wykonanie w przeplocie
• Wykonanie w przeplocie przypomina:
– wykonanie sekwencyjne, bo w dowolnej chwili wykonuje się tylko jeden proces
– wykonanie równoległe, zwłaszcza jeśli będziemy szybko przeplatać ruchy poszczególnych
informatyka + 25
Inne przykłady systemów współbieżnych
• Wykonanie równoległe: – osoby na tej sali
– samochody przejeżdżające przez skrzyżowanie
• Wykonanie w przeplocie:
– uczeń uczący się różnych przedmiotów – kucharz przygotowujący obiad
informatyka + 26
Dlaczego współbieżność ma obecnie
duże znaczenie?
• Rozwój sprzętu:
– typowa konfiguracja 15 lat temu:
procesor 16 MHz, pamięć 1 MB, dysk 60 MB – typowa konfiguracja dzisiaj:
procesor 2,4 GHz, pamięć 4 GB, dysk 300 GB • Upowszechnienie wielozadaniowych systemów
operacyjnych na komputerach osobistych • Rozwój sieci i Internetu
informatyka + 27
Jak komputery wykonują programy
współbieżne?
• Wykonanie równoległe jest możliwe na komputerze wyposażonym w:
– wiele procesorów albo – procesor wielordzeniowy
• Systemy operacyjne z podziałem czasu dają
informatyka + 28
Budowa systemu z podziałem czasu
• Kierownik lodowiska = moduł szeregujący systemu operacyjnego
• Procesy uruchomione w systemie znajdują się w kolejce procesów gotowych
• Pierwszy proces z tej kolejki otrzymuje procesor na określony kwant czasu
• Po upływie kwantu czasu następuje przełączenie kontekstu: proces wykonywany powraca na koniec kolejki procesów gotowych, a procesor otrzymuje kolejny proces z kolejki
K ol ej ka p ro ce só w g ot ow yc h informatyka + 29
Budowa systemu z podziałem czasu
edytor tekstu arkusz kalkulacyjny przeglądarka kalkulator proces wykonywany
K ol ej ka p ro ce só w g ot ow yc h informatyka + 30
Przełączenie kontekstu
edytor tekstu arkusz kalkulacyjny przeglądarka kalkulator koniec kwantu K ol ej ka p ro ce só w g ot ow yc h edytor tekstu arkusz kalkulacyjny przeglądarka kalkulatorinformatyka + 31
Wirtualne procesory
edytor tekstu arkusz kalkulacyjny przeglądarka kalkulator procesor wirtualny procesor wirtualny procesor wirtualny procesor wirtualny pr oc es or fiz yc zn yinformatyka + 32
Problemy z programami współbieżnymi
• Właściwa synchronizacja procesów
• Poprawna i efektywna komunikacja między procesami
W dalszym ciągu naszkicujemy jedynie problemy związane z synchronizacją procesów
informatyka + 33
Błędna synchronizacja łyżwiarzy
A n i a D a m i a n RUCH! pole przede mną
jest wolne pole przede mną jest wolne
informatyka + 34
Przygotowanie programu do
uruchomienia
• Program pisze się w języku wysokiego poziomu
• Jest on następnie tłumaczony (kompilowany) na rozkazy maszynowe zrozumiałe dla
komputera
• Jedna instrukcja języka wysokiego poziomu może odpowiadać wielu rozkazom
informatyka + 35
Znów analogia do lodowiska
• Krok naprzód łyżwiarza składa się z wielu elementarnych ruchów:
– przeniesienie ciężaru ciała na jedną nogę – odbicie się
– ślizg – …
informatyka + 36
Niepodzielność instrukcji i rozkazów
• Przełączenie kontekstu może nastąpić między dowolnymi rozkazami
• Nie można więc zakładać, że instrukcje programu są niepodzielne
• Wykonanie w przeplocie programu
informatyka + 37
Błędna synchronizacja łyżwiarzy
A n i a D a m i a n Ania! pole przede mną
jest wolne pole przede mną jest wolne
!!!
informatyka + 38
Współbieżny dostęp do konta
załaduj saldo do AX odejmij 1000 od AX prześlij AX do saldo załaduj saldo do BX dodaj 1000 do BX prześlij BX do saldo saldo = 5000
informatyka + 39
Możliwe wykonanie
załaduj saldo do AX saldo = 5000 odejmij 1000 od AX prześlij AX do saldo załaduj saldo do BX dodaj 1000 do BX prześlij BX do saldo saldo = 6000informatyka + 40
Inny przeplot
załaduj saldo do AX saldo = 5000 odejmij 1000 od AX prześlij AX do saldo załaduj saldo do BX dodaj 1000 do BX prześlij BX do saldo saldo = 4000informatyka + 41
I jeszcze jedna możliwość
załaduj saldo do AX saldo = 5000 odejmij 1000 od AX prześlij AX do saldo załaduj saldo do BX dodaj 1000 do BX prześlij BX do saldo saldo = 5000
informatyka + 42
Jeszcze jeden przykład
powtórz 5 razy:
x := x + 1 powtórz 5 razy x := x + 1 x = 0
Czy na koniec zawsze x = 10? Czy zawsze x <= 10?
Nie! Tak!
informatyka + 43
Klasyczne problemy współbieżności
• Wzajemne wykluczanie• Pięciu filozofów
• Producenci i konsumenci • Czytelnicy i pisarze
informatyka + 44
Wzajemne wykluczanie
powtarzaj: własne sprawy … sekcja krytyczna ... powtarzaj: własne sprawy … sekcja krytyczna ...Jak zapewnić, że sekcję krytyczną wykonuje w dowolnym momencie co najwyżej jeden
informatyka + 45
Dodatkowe założenia
• Każdy proces znajdujący się w sekcji
krytycznej opuści ją w skończonym czasie • Nie zakłada się nic o własnych sprawach • Procesy nie mogą być ze sobą ściśle
związane (np. awaria jednego nie może powodować awarii drugiego)
informatyka + 46
Próba rozwiązania
• Stawiamy przed sekcją krytyczną sygnalizator świetlny (zmienna logiczna)
• Początkowo wyświetla on światło zielone
• Proces przed wejściem do sekcji sprawdza światło: – jeśli jest zielone – wchodzi do sekcji i zmienia
światło na czerwone
– jeśli jest czerwone – czeka
• Po opuszczeniu sekcji krytycznej proces zmienia światło na zielone
informatyka + 47
Działanie tego rozwiązania
sek sekcja krytyc zna własne spraw y
informatyka + 48
I znów błąd synchronizacyjny!
Sprawdzenie światła i zmiana jego koloru nie muszą być niepodzielne!
informatyka + 49
Może się więc zdarzyć tak:
sek sekcja krytyc zna własne spraw y
informatyka + 50
Własność bezpieczeństwa
• Własność bezpieczeństwa programu
współbieżnego to spełnienie przez niego
wymagań synchronizacyjnych wynikających ze specyfikacji problemu
• Program musi być bezpieczny dla wszystkich możliwych przeplotów
• Bezpieczeństwo wzajemnego wykluczania: w sekcji krytycznej jest co najwyżej jeden proces
informatyka + 51
Druga próba rozwiązania
• Stawiamy przed sekcją krytyczną sygnalizator świetlny (zmienna logiczna)
• Początkowo wyświetla on światło czerwone
• Proces przed wejściem do sekcji sprawdza światło: – jeśli jest zielone – wchodzi do sekcji i zmienia
światło na czerwone
– jeśli jest czerwone – czeka
• Po opuszczeniu sekcji krytycznej proces zmienia światło na zielone
informatyka + 52
Działanie tego rozwiązania
sek sekcja krytyc zna Własne spraw y
informatyka + 53
Własność żywotności
• Własność żywotności oznacza, że każdy
proces, który dotarł do fragmentu programu objętego synchronizacją, w końcu ten
fragment wykona
• Żywotność wzajemnego wykluczania: każdy proces, który chce wejść do s. kryt., w
końcu do niej wejdzie
• Program poprawny musi spełniać zarówno własność bezpieczeństwa jak i żywotności
informatyka + 54
Przejawy braku żywotności
• Zakleszczenie – w systemie nic się nie
dzieje, a procesy oczekują na zdarzenie, które nigdy nie zajdzie
• Zagłodzenie – lokalny brak żywotności;
pechowy proces nie może wykonywać się dalej
informatyka + 55
Zakleszczenie – przykład
proces 1 proces 2 drukarka skaner ma ma chce chceinformatyka + 56
Zakleszczenie na skrzyżowaniu
równorzędnym
informatyka + 57
informatyka + 58
Problem pięciu filozofów
myśli
informatyka + 59
Pięciu filozofów – próba pierwsza
• Głodny filozof czeka, aż będzie wolny lewy widelec, po czym go podnosi
• Następnie czeka, aż będzie wolny prawy widelec, po czym go podnosi i rozpoczyna jedzenie
• Oddawanie widelców odbywa się w tej samej kolejności
informatyka + 60
Podnoszenie widelców – próba
pierwsza
myśli głodnyje gło dny je m yś liinformatyka + 61
Podnoszenie widelców – zakleszczenie
myśli głodny m yś li gło dny myś li ny głod my śli gło dn y myś li głod ny
informatyka + 62
Pięciu filozofów – próba druga
• Głodny filozof czeka, aż będą dostępneoba widelce
• Następnie podnosi je jednocześnie, a po skończeniu jedzenia – jednocześnie je oddaje
• Jeśli tylko jeden widelec jest wolny, to pozostaje on na stole
informatyka + 63
Podnoszenie widelców – próba druga
myśli głodnyje m yś li gło dny je
informatyka + 64
Podnoszenie widelców – zagłodzenie
myśli głodnyje m yś li gło dny je myś li ny głod myś li my śli
informatyka + 65
Pięciu filozofów – rozwiązanie poprawne
Pierwsza próba + dodatkowy proces „lokaj”, który dopuszcza do stołu co najwyżej 4informatyka + 66
Podsumowanie
• Programowanie współbieżne:
– to ważna technika programowania
zwłaszcza we współczesnej informatyce – umożliwia lepsze wykorzystanie mocy
obliczeniowej współczesnych procesorów – prowadzi do tworzenia bardziej
elastycznych programów o lepszej strukturze
informatyka + 67
Podsumowanie
• Programy współbieżne mogą być wykonywane:
– synchronicznie – asynchronicznie – w przeplocie
• Wielozadaniowe systemy operacyjne wspierają współbieżność
• Systemy z podziałem czasu umożliwiają
uruchamianie programów współbieżnych na jednym procesorze
informatyka + 68
Podsumowanie
• Problemy z programami współbieżnymi: – procesy wymagają synchronizacji
– programy są trudne do analizy
– ich wykonanie bywa nieintuicyjne – trudno wykazać ich poprawność
informatyka + 69
Podsumowanie
• Poprawność programu współbieżnego oznacza:
– bezpieczeństwo
– żywotność (brak zakleszczeń i zagłodzeń) • Własności te muszą być zachowane dla
informatyka + 70
Podsumowanie
• Dobre mechanizmy synchronizacyjne
ułatwiają tworzenie poprawnych programów • Ale to już temat na inną opowieść ...