70
informatyka + 1 Współbieżność w informatyce i nie tylko Marcin Engel Instytut Informatyki Uniwersytet Warszawski

Współbieżność w informatyce i nie tylko

  • Upload
    dareh

  • View
    33

  • Download
    0

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: Współbieżność w informatyce  i nie tylko

informatyka + 1

Współbieżność w informatyce i nie tylko

Marcin EngelInstytut Informatyki

Uniwersytet Warszawski

Page 2: Współbieżność w informatyce  i nie tylko

informatyka + 2

Co to jest programowanie współbieżne?

Zamiast wstępu obrazek z pewnej gry ...

Page 3: Współbieżność w informatyce  i nie tylko

Beata

informatyka + 3

Lodowisko - model komputera

Ania

Czarek

Damian

Page 4: Współbieżność w informatyce  i nie tylko

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:Ania, krok naprzód

Page 5: Współbieżność w informatyce  i nie tylko

informatyka + 5

Wykonanie instrukcji

Beata

Ania

Czarek

Damian

Ania, krok naprzód

Page 6: Współbieżność w informatyce  i nie tylko

informatyka + 6

Przykładowy program ...

Ania, krok naprzódCzarek, obrót w lewoCzarek, krok naprzódDamian, krok naprzód

Page 7: Współbieżność w informatyce  i nie tylko

informatyka + 7

... i jego wykonanie

Ania, krok naprzódCzarek, obrót w lewoCzarek, krok naprzódDamian, krok naprzód

Beata

Ania

Czarek

Damian

Czarek

Page 8: Współbieżność w informatyce  i nie tylko

informatyka + 8

Niebezpieczne ruchy

• Łyżwiarz nie powinien wpaść na bandę• Łyżwiarze nie powinni zderzyć się ze sobą

Page 9: Współbieżność w informatyce  i nie tylko

informatyka + 9

Niebezpieczne ruchy

Ania, krok naprzód

Ania

Damian, krok naprzód

Beata

Czarek

Damian

!!!

!!!

Page 10: Współbieżność w informatyce  i nie tylko

informatyka + 10

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

Page 11: Współbieżność w informatyce  i nie tylko

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

Page 12: Współbieżność w informatyce  i nie tylko

informatyka + 12

... i jego wykonanie

Ania

Czarek

Beata

Damian

Beata

Damian

Ania

Czarek

Page 13: Współbieżność w informatyce  i nie tylko

informatyka + 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

• Efekt końcowy jest nierealistyczny

Page 14: Współbieżność w informatyce  i nie tylko

informatyka + 14

Inne podejście

• Trener przygotowuje program dla jednego łyżwiarza, na przykładpowtarzaj:

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ą

Page 15: Współbieżność w informatyce  i nie tylko

... i jego wykonanie

informatyka + 15

Ania

Czarek

Beata

Damian

Beata

Damian

Ania

Czarek

Page 16: Współbieżność w informatyce  i nie tylko

informatyka + 16

Właśnie napisaliśmy program współbieżny!

Page 17: Współbieżność w informatyce  i nie tylko

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 porusza się wielu łyżwiarzy

Page 18: Współbieżność w informatyce  i nie tylko

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

Page 19: Współbieżność w informatyce  i nie tylko

informatyka + 19

Zalety programu współbieżnego

• Większa elastyczność:– łatwo zmienić zachowanie łyżwiarza wręczając

mu inny program

• Lepsza struktura programu

Page 20: Współbieżność w informatyce  i nie tylko

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

Page 21: Współbieżność w informatyce  i nie tylko

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

Page 22: Współbieżność w informatyce  i nie tylko

Wykonanie synchroniczne

informatyka + 22

Ania

Czarek

Beata

Damian

Beata

Damian

Ania

Czarek

RUCH!

Page 23: Współbieżność w informatyce  i nie tylko

Wykonanie w przeplocie

informatyka + 23

Ania

Czarek

Beata

Damian

Beata

Damian

Ania

Czarek

Ania!Beata!Czarek!Damian!

Page 24: Współbieżność w informatyce  i nie tylko

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 procesów

Page 25: Współbieżność w informatyce  i nie tylko

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

Page 26: Współbieżność w informatyce  i nie tylko

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

Page 27: Współbieżność w informatyce  i nie tylko

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ą możliwość wykonywania procesów w przeplocie

Page 28: Współbieżność w informatyce  i nie tylko

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

Page 29: Współbieżność w informatyce  i nie tylko

Kol

ejka

pro

cesó

w g

otow

ych

informatyka + 29

Budowa systemu z podziałem czasu

edytor tekstu

arkusz kalkulacyjny

przeglądarka

kalkulator

proces wykonywany

Page 30: Współbieżność w informatyce  i nie tylko

Kol

ejka

pro

cesó

w g

otow

ych

informatyka + 30

Przełączenie kontekstu

edytor tekstu

arkusz kalkulacyjny

przeglądarka

kalkulator

koniec kwantu

Kol

ejka

pro

cesó

w g

otow

ych

edytor tekstu

arkusz kalkulacyjny

przeglądarka

kalkulator

Page 31: Współbieżność w informatyce  i nie tylko

informatyka + 31

Wirtualne procesory

edytor tekstu

arkusz kalkulacyjny

przeglądarka

kalkulator

procesor wirtualny

procesor wirtualny

procesor wirtualny

procesor wirtualny

proc

esor

fiz

yczn

y

Page 32: Współbieżność w informatyce  i nie tylko

informatyka + 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

Page 33: Współbieżność w informatyce  i nie tylko

informatyka + 33

Błędna synchronizacja łyżwiarzy

Ania

Damian

RUCH!

pole przede mną jest wolne

pole przede mną jest wolne

!!!

Page 34: Współbieżność w informatyce  i nie tylko

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 maszynowym

Page 35: Współbieżność w informatyce  i nie tylko

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– …

Page 36: Współbieżność w informatyce  i nie tylko

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 łyżwiarza może również prowadzić do błędu

Page 37: Współbieżność w informatyce  i nie tylko

informatyka + 37

Błędna synchronizacja łyżwiarzy

Ania

Damian

Ania!

pole przede mną jest wolne

pole przede mną jest wolne

!!!

Damian!

Page 38: Współbieżność w informatyce  i nie tylko

informatyka + 38

Współbieżny dostęp do konta

załaduj saldo do AXodejmij 1000 od AXprześlij AX do saldo

załaduj saldo do BXdodaj 1000 do BXprześlij BX do saldo

saldo = 5000

saldo := saldo – 1000 saldo := saldo + 1000

Page 39: Współbieżność w informatyce  i nie tylko

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 = 6000

Page 40: Współbieżność w informatyce  i nie tylko

informatyka + 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 = 4000

Page 41: Współbieżność w informatyce  i nie tylko

informatyka + 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

Page 42: Współbieżność w informatyce  i nie tylko

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!

Czy zawsze x >= 5? Nie!

Maciej M Syslo
Przydałyby się ilustracje, jak przy kontach, że można otrzymać różne wyniki.
mengel
Ten przykład łatwo jest zasymulować w trakcie wykładu na dwóch uczestnikach. Chyba lepiej widać wówczas te różne przeploty.
Page 43: Współbieżność w informatyce  i nie tylko

informatyka + 43

Klasyczne problemy współbieżności

• Wzajemne wykluczanie• Pięciu filozofów• Producenci i konsumenci• Czytelnicy i pisarze

Przedstawimy dzisiaj dwa pierwsze z nich

Page 44: Współbieżność w informatyce  i nie tylko

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 proces?

Page 45: Współbieżność w informatyce  i nie tylko

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)

Page 46: Współbieżność w informatyce  i nie tylko

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

Page 47: Współbieżność w informatyce  i nie tylko

informatyka + 47

Działanie tego rozwiązania

sek

sekcja

krytyczna

własne

sprawy

Page 48: Współbieżność w informatyce  i nie tylko

informatyka + 48

I znów błąd synchronizacyjny!

Sprawdzenie światła i zmiana jego koloru nie muszą być niepodzielne!

Page 49: Współbieżność w informatyce  i nie tylko

informatyka + 49

Może się więc zdarzyć tak:

sek

sekcja

krytyczna

własne

sprawy

Page 50: Współbieżność w informatyce  i nie tylko

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

Page 51: Współbieżność w informatyce  i nie tylko

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

Page 52: Współbieżność w informatyce  i nie tylko

informatyka + 52

Działanie tego rozwiązania

sek

sekcja

krytyczna

Własne

sprawy

Page 53: Współbieżność w informatyce  i nie tylko

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

Page 54: Współbieżność w informatyce  i nie tylko

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

Page 55: Współbieżność w informatyce  i nie tylko

informatyka + 55

Zakleszczenie – przykład

proces 1 proces 2

drukarka

skaner

ma

machce

chce

Page 56: Współbieżność w informatyce  i nie tylko

informatyka + 56

Zakleszczenie na skrzyżowaniu równorzędnym

Page 57: Współbieżność w informatyce  i nie tylko

informatyka + 57

Zagłodzenie na skrzyżowaniu

Page 58: Współbieżność w informatyce  i nie tylko

informatyka + 58

Problem pięciu filozofówmyśligłodnyje

Page 59: Współbieżność w informatyce  i nie tylko

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

Page 60: Współbieżność w informatyce  i nie tylko

informatyka + 60

Podnoszenie widelców – próba pierwsza

myśligłodnyje

głodnyje

myśli

Page 61: Współbieżność w informatyce  i nie tylko

informatyka + 61

Podnoszenie widelców – zakleszczeniemyśligłodny

myśli

głodny

myśli

głodny

myśli

głodnym

yśli

głod

ny

Page 62: Współbieżność w informatyce  i nie tylko

informatyka + 62

Pięciu filozofów – próba druga

• Głodny filozof czeka, aż będą dostępne oba 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

Page 63: Współbieżność w informatyce  i nie tylko

informatyka + 63

Podnoszenie widelców – próba drugamyśligłodnyje

myśli

głodnyje

Page 64: Współbieżność w informatyce  i nie tylko

informatyka + 64

Podnoszenie widelców – zagłodzenie

myśligłodnyje

myśli

głodny

jemyśli

głodny

myś

li

myśli

Page 65: Współbieżność w informatyce  i nie tylko

informatyka + 65

Pięciu filozofów – rozwiązanie poprawne

Pierwsza próba + dodatkowy proces „lokaj”, który dopuszcza do stołu co najwyżej 4 filozofów jednocześnie.

Page 66: Współbieżność w informatyce  i nie tylko

informatyka + 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

Page 67: Współbieżność w informatyce  i nie tylko

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

Page 68: Współbieżność w informatyce  i nie tylko

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ść

Page 69: Współbieżność w informatyce  i nie tylko

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 każdego przeplotu

Page 70: Współbieżność w informatyce  i nie tylko

informatyka + 70

Podsumowanie

• Dobre mechanizmy synchronizacyjne ułatwiają tworzenie poprawnych programów

• Ale to już temat na inną opowieść ...