• Nie Znaleziono Wyników

Programowanie wspolbiezne w informatyce

N/A
N/A
Protected

Academic year: 2021

Share "Programowanie wspolbiezne w informatyce"

Copied!
70
0
0

Pełen tekst

(1)

informatyka + 1

Współbieżność w informatyce

i nie tylko

Marcin Engel Instytut Informatyki Uniwersytet Warszawski

(2)

informatyka + 2

Co to jest programowanie współbieżne?

(3)

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

(4)

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 lewoObrót w prawo • Przykład:

(5)

informatyka + 5

Wykonanie instrukcji

B e a t a A n i a C z a r e k D a m i a n

(6)

informatyka + 6

Przykładowy program ...

Ania, krok naprzód Czarek, obrót w lewo Czarek, krok naprzód Damian, krok naprzód

(7)

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

(8)

informatyka + 8

Niebezpieczne ruchy

• Łyżwiarz nie powinien wpaść na bandę

(9)

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 !!! !!!

(10)

informatyka + 10

Instrukcja złożona

Wprowadźmy do języka jeszcze jedną instrukcję:

jeśli pole przed Tobą jest wolne, to krok

(11)

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

(12)

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 k

(13)

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

(14)

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ą

(15)

... 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 k

(16)

informatyka + 16

(17)

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

(18)

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

(19)

informatyka + 19

Zalety programu współbieżnego

• Większa elastyczność:

– łatwo zmienić zachowanie łyżwiarza wręczając mu inny program

(20)

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

(21)

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

(22)

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!

(23)

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!

(24)

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

(25)

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

(26)

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

(27)

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ą

(28)

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

(29)

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

(30)

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 kalkulator

(31)

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

(32)

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

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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

!!!

(38)

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

(39)

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

(40)

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

(41)

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

(42)

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!

(43)

informatyka + 43

Klasyczne problemy współbieżności

• Wzajemne wykluczanie

• Pięciu filozofów

• Producenci i konsumenci • Czytelnicy i pisarze

(44)

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

(45)

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)

(46)

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

(47)

informatyka + 47

Działanie tego rozwiązania

sek sekcja krytyc zna własne spraw y

(48)

informatyka + 48

I znów błąd synchronizacyjny!

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

(49)

informatyka + 49

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

sek sekcja krytyc zna własne spraw y

(50)

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

(51)

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

(52)

informatyka + 52

Działanie tego rozwiązania

sek sekcja krytyc zna Własne spraw y

(53)

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

(54)

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

(55)

informatyka + 55

Zakleszczenie – przykład

proces 1 proces 2 drukarka skaner ma ma chce chce

(56)

informatyka + 56

Zakleszczenie na skrzyżowaniu

równorzędnym

(57)

informatyka + 57

(58)

informatyka + 58

Problem pięciu filozofów

myśli

(59)

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

(60)

informatyka + 60

Podnoszenie widelców – próba

pierwsza

myśli głodnyje gło dny je m yś li

(61)

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

(62)

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

(63)

informatyka + 63

Podnoszenie widelców – próba druga

myśli głodnyje m yś li gło dny je

(64)

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

(65)

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

(66)

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

(67)

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

(68)

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

(69)

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

(70)

informatyka + 70

Podsumowanie

• Dobre mechanizmy synchronizacyjne

ułatwiają tworzenie poprawnych programów • Ale to już temat na inną opowieść ...

Cytaty

Powiązane dokumenty

Założenie: najefektywniejsze rozwiązanie stosu za pomocą tablicy – szczyt stosu to ostatni element wstawiony tablicy począwszy od miejsca o indeksie 0 (jeśli liczba elementów

Konsultacje: Piątek, 13:00-14:00 Jeżeli chcesz spotkać się z prowadzącym podczas konsultacji, postaraj się powiadomić go o tym przed lub po zajęciach, zadzwoń do jego pokoju,

(Jeśli przed nawiasem jest „+” lub nie ma żadnego znaku, to opuszczamy nawias nic nie robiąc. Jeśli przed nawiasem jest znak „–” to opuszczając nawias zmieniamy każdy znak

metrach na następujące miary: cal, stopę, jard, milę lądową, sążnie, mile morskie, angstremy, kable, łokcie, wiorsty, itp... Suma

• Napisad program wyznaczający średni, dobowy kurs waluty EURO na podstawie kursów notowanych na początku każdej godziny.. • Pod koniec doby analityk wprowadza

zyka niż człowieka, wtedy jednak powoływałoby się do istnienia nową total ­ ność, na gruncie której możliwa byłaby ciągła historia, historia dyskursu jako nauka

Jeżeli jakieś dane em ­ piryczne przemawiają przeciw jednej lub drugiej teorii, powstały konflikt traktuje się jako dowód na to, że teoria nie stosuje się do sytuacji,

Jednak język programowania wysokiego poziomu nie jest jasny dla komputera, który rozumie jedynie ciągi zer i jedynek. Dlatego musimy posłużyć się aplikacją,