700 likes | 854 Views
Współbieżność w informatyce i nie tylko. Marcin Engel Instytut Informatyki Uniwersytet Warszawski. informatyka +. 1. Co to jest programowanie współbieżne?. Zamiast wstępu obrazek z pewnej gry. informatyka +. 2. Ania. Czarek. Damian. Beata. Lodowisko - model komputera.
E N D
Współbieżność w informatyce i nie tylko Marcin Engel Instytut Informatyki Uniwersytet Warszawski informatyka + 1
Co to jest programowanie współbieżne? Zamiast wstępu obrazek z pewnej gry ... informatyka + 2
Ania Czarek Damian Beata Lodowisko - model komputera informatyka + 3
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:Ania, krok naprzód informatyka + 4
Ania Czarek Damian Beata Wykonanie instrukcji Ania, krok naprzód informatyka + 5
Przykładowy program ... Ania, krok naprzód Czarek, obrót w lewo Czarek, krok naprzód Damian, krok naprzód informatyka + 6
Ania Czarek Damian Beata Czarek ... i jego wykonanie Ania, krok naprzód Czarek, obrót w lewo Czarek, krok naprzód Damian, krok naprzód informatyka + 7
Niebezpieczne ruchy • Łyżwiarz nie powinien wpaść na bandę • Łyżwiarze nie powinni zderzyć się ze sobą informatyka + 8
Ania Czarek Damian Beata Niebezpieczne ruchy !!! !!! Ania, krok naprzód Damian, krok naprzód informatyka + 9
Instrukcja złożona Wprowadźmy do języka jeszcze jedną instrukcję: jeśli pole przed Tobą jest wolne, to krok naprzód, w przeciwnym razie obróć się w lewo informatyka + 10
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 + 11
Ania Ania Czarek Damian Damian Czarek Beata Beata ... i jego wykonanie informatyka + 12
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 • Efekt końcowy jest nierealistyczny informatyka + 13
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ą informatyka + 14
Ania Ania Czarek Damian Damian Czarek Beata Beata ... i jego wykonanie informatyka + 15
Właśnie napisaliśmy program współbieżny! informatyka + 16
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 porusza się wielu łyżwiarzy informatyka + 17
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 + 18
Zalety programu współbieżnego • Większa elastyczność: • łatwo zmienić zachowanie łyżwiarza wręczając mu inny program • Lepsza struktura programu informatyka + 19
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 + 20
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 informatyka + 21
Ania Ania Czarek Damian Damian Czarek Beata Beata Wykonanie synchroniczne RUCH! informatyka + 22
Ania Ania Czarek Damian Damian Czarek Beata Beata Wykonanie w przeplocie Ania! Beata! Czarek! Damian! informatyka + 23
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 procesów informatyka + 24
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 + 25
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 + 26
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ą możliwość wykonywania procesów w przeplocie informatyka + 27
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 informatyka + 28
Budowa systemu z podziałem czasu edytor tekstu Kolejka procesów gotowych proces wykonywany arkusz kalkulacyjny przeglądarka kalkulator informatyka + 29
Przełączenie kontekstu edytor tekstu arkusz kalkulacyjny Kolejka procesów gotowych Kolejka procesów gotowych arkusz kalkulacyjny przeglądarka przeglądarka koniec kwantu kalkulator kalkulator edytor tekstu informatyka + 30
Wirtualne procesory edytor tekstu procesor wirtualny arkusz kalkulacyjny procesor wirtualny procesor fizyczny przeglądarka procesor wirtualny kalkulator procesor wirtualny informatyka + 31
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 + 32
Ania Damian Błędna synchronizacja łyżwiarzy pole przede mną jest wolne pole przede mną jest wolne !!! RUCH! informatyka + 33
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 maszynowym informatyka + 34
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 + 35
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 łyżwiarza może również prowadzić do błędu informatyka + 36
Ania Damian Błędna synchronizacja łyżwiarzy pole przede mną jest wolne pole przede mną jest wolne !!! Ania! Damian! informatyka + 37
załaduj saldo do BX dodaj 1000 do BX prześlij BX do saldo Współbieżny dostęp do konta saldo = 5000 załaduj saldo do AX odejmij 1000 od AX prześlij AX do saldo saldo := saldo – 1000 saldo := saldo + 1000 informatyka + 38
Możliwe wykonanie saldo = 5000 załaduj saldo do AX załaduj saldo do BX dodaj 1000 do BX odejmij 1000 od AX prześlij AX do saldo prześlij BX do saldo saldo = 6000 informatyka + 39
Inny przeplot saldo = 5000 załaduj saldo do AX załaduj saldo do BX dodaj 1000 do BX odejmij 1000 od AX prześlij AX do saldo prześlij BX do saldo saldo = 4000 informatyka + 40
I jeszcze jedna możliwość saldo = 5000 załaduj saldo do AX załaduj saldo do BX dodaj 1000 do BX odejmij 1000 od AX prześlij AX do saldo prześlij BX do saldo saldo = 5000 informatyka + 41
powtórz 5 razy x := x + 1 Jeszcze jeden przykład x = 0 powtórz 5 razy: x := x + 1 Czy na koniec zawsze x = 10? Nie! Czy zawsze x <= 10? Tak! Czy zawsze x >= 5? Nie! informatyka + 42
Klasyczne problemy współbieżności • Wzajemne wykluczanie • Pięciu filozofów • Producenci i konsumenci • Czytelnicy i pisarze Przedstawimy dzisiaj dwa pierwsze z nich informatyka + 43
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 proces? informatyka + 44
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 + 45
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 + 46
Działanie tego rozwiązania sek sekcja krytyczna własne sprawy informatyka + 47
I znów błąd synchronizacyjny! Sprawdzenie światła i zmiana jego koloru nie muszą być niepodzielne! informatyka + 48
Może się więc zdarzyć tak: sek sekcja krytyczna własne sprawy informatyka + 49
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 + 50