Upload
hayes-padilla
View
50
Download
0
Embed Size (px)
DESCRIPTION
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ń: - PowerPoint PPT Presentation
Citation preview
informatyka + 2
Co to jest programowanie współbieżne?
Zamiast wstępu obrazek z pewnej gry ...
Beata
informatyka + 3
Lodowisko - model komputera
Ania
Czarek
Damian
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
informatyka + 5
Wykonanie instrukcji
Beata
Ania
Czarek
Damian
Ania, krok naprzód
informatyka + 6
Przykładowy program ...
Ania, krok naprzódCzarek, obrót w lewoCzarek, krok naprzódDamian, krok naprzód
informatyka + 7
... i jego wykonanie
Ania, krok naprzódCzarek, obrót w lewoCzarek, krok naprzódDamian, krok naprzód
Beata
Ania
Czarek
Damian
Czarek
informatyka + 8
Niebezpieczne ruchy
• Łyżwiarz nie powinien wpaść na bandę• Łyżwiarze nie powinni zderzyć się ze sobą
informatyka + 9
Niebezpieczne ruchy
Ania, krok naprzód
Ania
Damian, krok naprzód
Beata
Czarek
Damian
!!!
!!!
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
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
Ania
Czarek
Beata
Damian
Beata
Damian
Ania
Czarek
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
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ą
... i jego wykonanie
informatyka + 15
Ania
Czarek
Beata
Damian
Beata
Damian
Ania
Czarek
informatyka + 16
Właśnie napisaliśmy program współbieżny!
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
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
• Lepsza struktura programu
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
Ania
Czarek
Beata
Damian
Beata
Damian
Ania
Czarek
RUCH!
Wykonanie w przeplocie
informatyka + 23
Ania
Czarek
Beata
Damian
Beata
Damian
Ania
Czarek
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 procesów
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ą możliwość wykonywania procesów w przeplocie
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
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
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
informatyka + 31
Wirtualne procesory
edytor tekstu
arkusz kalkulacyjny
przeglądarka
kalkulator
procesor wirtualny
procesor wirtualny
procesor wirtualny
procesor wirtualny
proc
esor
fiz
yczn
y
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
informatyka + 33
Błędna synchronizacja łyżwiarzy
Ania
Damian
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 maszynowym
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 łyżwiarza może również prowadzić do błędu
informatyka + 37
Błędna synchronizacja łyżwiarzy
Ania
Damian
Ania!
pole przede mną jest wolne
pole przede mną jest wolne
!!!
Damian!
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
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
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
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
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!
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
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?
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
krytyczna
własne
sprawy
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
krytyczna
własne
sprawy
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
krytyczna
Własne
sprawy
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
machce
chce
informatyka + 56
Zakleszczenie na skrzyżowaniu równorzędnym
informatyka + 57
Zagłodzenie na skrzyżowaniu
informatyka + 58
Problem pięciu filozofówmyśligłodnyje
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śligłodnyje
głodnyje
myśli
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
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
informatyka + 63
Podnoszenie widelców – próba drugamyśligłodnyje
myśli
głodnyje
informatyka + 64
Podnoszenie widelców – zagłodzenie
myśligłodnyje
myśli
głodny
jemyśli
głodny
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 4 filozofów jednocześnie.
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
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 każdego przeplotu
informatyka + 70
Podsumowanie
• Dobre mechanizmy synchronizacyjne ułatwiają tworzenie poprawnych programów
• Ale to już temat na inną opowieść ...