Progr Wsp Wstep4

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 1

Podstawowe definicje i poj

ęcia współbieżności

1.1 Dlaczego zajmujemy si

ę współbieżnością ?

Wspó

łczesne systemy i aplikacje charakteryzują się coraz większą

z

łożonością. Typowe aplikacje:

1. wiele

procesów

wykonywanych

w

środowisku

systemu

pracuj

ącego z podziałem czasu

2. wiele procesów wykonywanych na komputerze wieloprocesowym
3. wiele procesów wykonywanych na wielu powi

ązanych w jeden

system maszynach (ang. Cluster).


W systemach takich stosuje si

ę podział zadania na procesy gdyż

zapewnia to okre

ślone korzyści:

1. polepszenie wykorzystania systemu,
2. zmniejszenie czasu przetwarzania
3. u

łatwienia w projektowaniu oprogramowania.

1.2 Czym jest proces ?

Proces jest czym

ś innym niż program. Program jest zapisem algorytmu

wraz ze strukturami danych na których algorytm ten operuje. Algorytm
zapisany bywa zwykle w jednym z wielu j

ęzyków programowania.


Za Wirthem mo

żemy podać definicję programu:



Program = algorytm + struktury danych


Program jest wi

ęc strukturą statyczną zapisaną na jakimś nośniku.

Natomiast proces jest wykonuj

ącym się programem.



Proces - wykonuj

ący się program



Proces jest wi

ęc aktywną strukturą dynamiczną istniejącą tylko w

środowisku działającego komputera.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 2

1.3 Podstawowe definicje wspó

łbieżności


Procesy sekwencyjne (ang. Sequential processes)


Procesy s

ą sekwencyjne jeżeli następny proces ze zbioru procesów

rozpoczyna si

ę po zakończeniu procesu poprzedniego.


P1

P2

Rys. 1 Procesy P1 i P2 wykonywane s

ą sekwencyjnie




Procesy wspó

łbieżne (ang. Concurrent processes)


Dwa procesy s

ą współbieżne jeżeli jeden z nich rozpoczyna się przed

zako

ńczeniem drugiego.


P1

P2

Rys. 2 Procesy P1 i P2 wykonywane s

ą współbieżnie


Procesy równoleg

łe (ang.Paralell processes)



Dwa procesy s

ą równoległe jeżeli jeden z nich rozpoczyna się przed

zako

ńczeniem drugiego i wykonywane są jednocześnie na oddzielnych

procesorach.




PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 3

P1

P2

Procesor 1

Procesor 2

Rys. 3 Procesy P1 i P2 wykonywane s

ą równolegle.

Rodzaje wspó

łbieżności


Wspó

łbieżność konkurencyjna – procesy nie współpracują ze sobą.

Ich oddzia

ływanie polega tylko na konkurowaniu o dostęp do zasobów

których potrzebuj

ą.


Wspó

łbieżność kooperacyjna – procesy współpracują ze sobą

dzia

łając w ramach aplikacji jednej współbieżnej. Komunikują i

synchronizuj

ą się ze sobą w celu wykonania pewnego zadania.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 4

1.4 Podstawowe architektury systemów komputerowych

Aby proces móg

ł się wykonywać potrzebne są co najmniej następujące

zasoby:

procesor

pami

ęć operacyjna

urz

ądzenia wejścia / wyjścia


Aby procesy mog

ły być wykonywane niezbędne jest ku temu

odpowiednie

środowisko. Podstawowe architektury używanych obecnie

systemów komputerowych mo

żna podzielić:

1. Komputery z jednym procesorem
2. Komputery równoleg

łe

3. Systemy rozproszone

Komputery
równolegle

Wieloprocesory

(Pami

ęć

wspólna)

Multikomputery

(Pami

ęć lokana)

Komputery

z jednym

procesorem

Komputery

Systemy

rozproszone


Systemy jednoprocesorowe
Wi

ększość tradycyjnych komputerów posiada właśnie taką architekturę.

System sk

łada się z procesora, pamięci i różnych urządzeń wejścia /

wyj

ścia (dysków, napędów dyskietek, kart sieciowych, portów

szeregowych i równoleg

łych itd.). Urządzenia wejścia / wyjścia są

pod

łączone do szyny komputera za pomocą kontrolerów tych urządzeń.


PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 5

Procesor

Pami

ęć

Kontroler

we/wy

2

Magistrala

Urz

ądzenia we /wy

Kontroler

we/wy

1

Kontroler

we/wy

N

Sie

ć

Rys. 4 Struktura systemu jednoprocesorowego


Komputery równoleg

łe (Tanneubauma) dzielą się na dwie klasy. Podział

ten bierze pod uwag

ę komunikację pomiędzy procesorami. Może ona

by

ć przez:

wspóln

ą pamięć

system wej

ścia wyjścia


PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 6

Wieloprocesory (Multiprocessors), maszyny SMP (ang. Symetric
Multiprocessors
)

Jedna przestrze

ń adresowa dzielona pomiędzy wiele

procesorów.

RAM

SIEC PRZE

ŁACZAJACA

CPU 1

CPU 2

CPU N

Schemat multiprocesora

Programowanie multiprocesorów SMP (Shared Memory Processors)

Programowanie multiprocesorów musi uwzgl

ędniać ich architekturę a w

szczególno

ści charakterystyką dostępu do pamięci:


Wszystkie procesory maj

ą dostęp do tego samego obszaru pamięci.


Narz

ędzia programowania:

Model w

ątków operujących na wspólnym obszarze pamięci. Wątki

komunikuj

ą się przez wspólną pamięć a wzajemne wykluczanie

zapewnione jest przez monitory, muteksy czy semafory.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 7


Multikomputery (ang. Multicomputers)
Ka

żdy z procesorów ma swą własną przestrzeń adresowa

SIEC PRZE

ŁACZAJACA

CPU 1

CPU 2

CPU N

RAM 1

RAM 2

RAM N

I/O 1

I/O 2

I/O N

Schemat Multikomputera

Programowanie multikomputerów
W

łasności architektury multikomputerów które muszą być uwzględnione

przy

programowaniu.

1. Ka

żdy z procesorów ma dostęp tylko do swej lokalnej pamięci.

2. Procesory komunikuj

ą się ze sobą poprzez system wejścia /

wyj

ścia a dalej poprzez sieć połączeń.



Do programowania multikomputerów wykorzystywany jest model
procesów komunikuj

ących się poprzez wymianę komunikatów (model

komunikuj

ących się procesów).


PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 8


Systemy rozproszone
System rozproszony sk

łada się z wielu niezależnych komputerów

po

łączonych za pomocą sieci.

Pracuj

ące na nich aplikacje komunikują się poprzez sieć.

RAM

Procesor

System

WE/WY

RAM

Procesor

System

WE/WY

RAM

Procesor

System

WE/WY

Sie

ć

Rys. 5 Struktura systemu rozproszonego


Do programowania systemów rozproszonych wykorzystywany jest
model procesów komunikuj

ących się poprzez wymianę komunikatów

(model komunikuj

ących się procesów).

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 9

1.5 Sprz

ętowe podstawy współbieżności

Niezb

ędnym minimum sprzętowym potrzebnym do implementacji takiego

systemu jest:

- System przerwa

ń

- Uk

ład zegarowy generujący impulsy które są zamieniane w

przerwania.

Procesor

Pami

ęć

Kontroler

przerwa

ń

Zegar

Kontroler

we/wy

M

Kontroler

we/wy

1

IRQ 1

IRQ 2

IRQ N

INT

Magistrala

Urz

ądzenia we /wy

Rys. 6 Uproszczony schemat komputera mog

ącego wykonywać

wspó

łbieżnie wiele procesów.


Zdarzenia w systemie komputerowym:

Uk

ład zegarowy cyklicznie generuje żądania przerwań IRQ0.

Kontrolery urz

ądzeń wejścia / wyjścia generują żądania IRQ1 -

IRQN gdy wyst

ąpi w nich pewne zdarzenie.

Żądania przerwań IRQ0 – IRQN doprowadzane są do kontrolera

przerwa

ń.

Kontroler wysy

ła do procesora przerwanie INT.


Procesor

Kontroler IO

Programowanie

ukladu IO

Obliczenia

transfer

Obliczenia

przerwanie

Przebieg operacji wej

ścia wyjścia wykonywanej przez kontroler

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 10


P1

Procesor

Kontroler IO

P1

P1

P1

T1

Proces P1 wykonywany w trybie wy

łącznym


Procesor

Kontroler IO

P2

P2

P2

P2

T2

Proces P2 wykonywany w trybie wy

łącznym

P1

Procesor

Kontroler IO

P1

P1

P1

P2

P2

P2

P2

T3

Procesy P1 i P2 wykonywane w trybie wieloprogramowym T3 < T1 + T2

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 11

1.6 Prze

łączanie procesów, wieloprogramowość

Wspó

łczesne komputery są na tyle wydajne że bez trudności mogą

wykonywa

ć wiele procesów które współdzielą czas procesora.


Procesy zgodnie z kolejno

ścią wyznaczoną przez procedurę szeregującą

(ang. scheduler) wykonywane s

ą kolejno przez zadany kwant czasu

(ang. time slice).

P1

P2

P3

Czas

Rys. 7 Procesy P1, P2, P3 wykonuj

ące się w trybie podziału czasu (ang.

time scharing)


Podstawowym mechanizmem umo

żliwiającym taki tryb pracy są

przerwania.

ISR

Procedura

obs

ługi

przerwania

Przerwanie

Powrót z

procedury

obs

ługi przerwania

proces P

proces P

Czas

Zachowanie

rejestrów

Odtwo-

rzenienie
rejestrów

Obs

ługa zdarzenia poprzez procedurę obsługi przerwania





PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 12


Obs

ługa przerwania - chwilowe wstrzymanie aktualnie wykonywanego

procesu i wykonanie procedury przypisanej zdarzeniu powoduj

ącemu

przerwanie po zako

ńczeniu której następuje powrót do przerwanego

procesu.


Pojedynczy prze

łączenie składa się z trzech faz:


1. Zachowania kontekstu procesu dotychczas wykonywanego.
2. Podj

ęcie decyzji który z procesów wznowić.

3. Przywrócenie kontekstu nowego procesu.



Kontekst procesu
– wszystkie informacje potrzebne do wznowienia
zawieszonego wcze

śniej procesu.


P1

P2

Czas

wykonywanie

P1

zachowanie

kontekstu P1

przywrócenie

kontekstu P2

wykonywanie

P2

zachowanie

kontekstu P2

przywrócenie

kontekstu P1

P1

Zachowanie kontekstu, wykonywanie i przywrócenie kontekstu
procesu


PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 13

Prze

łączenia procesów mają miejsce w następujących sytuacjach:

Wyst

ąpiło przerwanie zegarowe i system stwierdził że

wykonywany proces wyczerpa

ł już swój kwant czasu.

Wyst

ąpiło przerwanie zewnętrzne np. od kontrolera wejścia /

wyj

ścia pewnego urządzenia sygnalizujące zakończenie się

zleconej wcze

śniej operacji.

Proces bie

żący wykonał pewną niedozwoloną operację polegającą

na naruszeniu systemu ochrony zasobów procesora Zdarzenie
takie powoduje przerwanie wewn

ętrzne procesora .

Wykonywany proces wykona

ł wywołanie systemowe zmieniające

status gotowo

ści przynajmniej jednego procesu.



Prze

łączenia procesów występują w nie dających się przewidzieć

momentach czasu. St

ąd nie można czynić założeń że pewien ciąg

instrukcji danego procesu nie zostanie przerwany.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 14

1.7 Przeplot i operacje atomowe

W systemach z jednym procesorem procesy wspó

łbieżne muszą się

wykonywa

ć z wykorzystaniem podziału czasu procesora (przeplot).


Program jest zazwyczaj pisany w j

ęzyku wysokiego poziomu.

Wykonywane s

ą natomiast instrukcje kodu maszynowego będące

wynikiem kompilacji programu

źródłowego przez kompilator.




Operacja atomowa
Operacj

ą atomową nazywamy taką operację która wykonywana jest

przez procesor niepodzielnie. Znaczy to

że o ile się rozpocznie, musi być

w trybie wy

łącznym wykonana i zakończona.



Pojedyncza instrukcja kodu maszynowego jest operacj

ą atomową.

Trudno jest stwierdzi

ć jakie operacje zapisane w języku wyższego

poziomu b

ędą operacjami atomowymi.


Wyodr

ębnienie instrukcji atomowych jest istotne gdy dwa lub więcej

procesy korzystaj

ą ze wspólnego obszaru pamięci.


Przyk

ład 1 - hazard


Zmienna wspólna

X = 0

Proces 1

Proces 2

X++

X++

Dwa procesy inkrementuj

ą wspólna zmienną


Instrukcja ta mo

że być przetłumaczona przez kompilator co najmniej na

dwa sposoby:

Sposób 1

Sposób 2

INC X

MOV A,X

ADD A, 1

MOV X, A

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 15

Proces Instrukcja

Warto

ść X

0

P1

INC X

1

P2

INC X

2

Przypadek 1

Proces Instrukcja

Warto

ść X

0

P1

MOV A, X

0

P1

ADD A,1

0

P2

MOV A, X

0

P2

ADD A,1

0

P1

MOV X, A

1

P2

MOV X, A

1

Przypadek 2


Przyk

ład 2 - wyścigi

Aplikacja sk

łada się z dwu procesów P1 i P2 mających dostęp do

wspólnej zmiennej i.

Proces P1

Proces P2

i = 0;

i = 0;

while ( i < 10) {

while ( i > - 10) {

i = i +1;

i = i - 1;

}

}

printf(„P1 – wygra

ł”); printf(„P2 – wygrał”);


W powy

ższym przykładzie instrukcje atomowe kodu procesów P1 i P2 są

przeplatane.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 16

A1 A2 A3 A4

...

An

Instrukcje procesu P1

B1 B2 B3 B4

...

Bn

Instrukcje procesu P2

A1 A2 B1 B2 B3 A3 A4 A5

...

An

B4

Przeplot instrukcji procesu P1 i P2

Rys. 8 Instrukcje procesów P1 i P2 wykonywane w trybie przeplotu


- Nie mo

żemy poczynić żadnych założeń dotyczących momentów

prze

łączenia procesów P1 i P2

- Nie da si

ę określić wyniku działania powyższych procesów.



Wynik dzia

łania aplikacji współbieżnej nie może być uzależniony od

sposobu prze

łączania procesów. Musi być prawidłowy dla wszystkich

mo

żliwych przeplotów.



PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 17

1.8 Poprawno

ść aplikacji współbieżnych


Kryterium poprawno

ści aplikacji sekwencyjnej


Aplikacja sekwencyjna jest poprawna je

żeli:

1. Zatrzymuje si

ę

2. Je

żeli się zatrzyma to da poprawne wyniki



Na ogó

ł aplikacje współbieżne nie działają w taki sposób że z danych

wej

ściowych wyliczają wynik i zatrzymują się. Typowe aplikacje

wspó

łbieżne to:

- systemy operacyjne,
- aplikacje steruj

ące obiektami,

- serwery baz danych
- serwery WWW.

Aplikacje te nie ko

ńczą się, a nawet jeżeli, to nie jest ich zadaniem

przedstawienie jakiego

ś końcowego wyniku. Dla tego typu aplikacji

wa

żniejsze są własności dynamiczne to znaczy zachowanie się aplikacji

w czasie.
Wa

żne jest aby system operacyjny prawidłowo sterował komputerem i

nie zawiesza

ł się, program sterujący utrzymywał obiekt w pożądanym

stanie a serwer bazy danych odpowiada

ł na zlecenia prawidłowo i w

rozs

ądnym czasie.



Dla okre

ślenia prawidłowości aplikacji współbieżnych używa się pojęć:

Bezpiecze

ństwa,

Żywotności

Uczciwo

ści.



PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 18

Bezpiecze

ństwo


Aplikacja jest bezpieczna je

żeli utrzymuje system w pożądanym stanie.



Aplikacja nie jest bezpieczna je

żeli:

Da nieprawid

łowe wyniki – np. nie jest zachowany warunek

wzajemnego wykluczania

Nie b

ędzie wykonywał pożądanych działań - ulegnie blokadzie


Z1 Z1 Z3

...

Z2

Z2

Kolejka zleceń

Serwer

K1

K2

KN

Klienci

O1

Odpowiedź

Rys. 9 Model przetwarzania typu klient - serwer


W odniesieniu do modelu klient – serwer bezpiecze

ństwo oznacza że

klienci s

ą obsługiwani w zadowalający sposób.

1. Serwer nie zaprzesta

ł obsługi zleceń.

2. Na zlecenia odpowiada

ł w prawidłowy sposób.



Blokada
Ka

żdy z zablokowanych procesów oczekuje na zdarzenie które może

by

ć wygenerowane tylko przez któryś z zablokowanych procesów.

Blokada zwana te

ż zakleszczeniem jest typowym zagrożeniem aplikacji

wspó

łbieżnych.


PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 19

Zag

łodzenie

Zag

łodzenie występuje gdy procesowi cały czas odmawia się dostępu do

zasobów których ten potrzebuje by wykona

ć zlecone mu zadanie.




Wzajemne wykluczanie
Wzajemne wykluczanie musi by

ć zapewnione gdy kilka procesów ma

dost

ęp do wspólnego obszaru pamięci i przynajmniej jeden z nich

modyfikuje ten obszar.


Dla aplikacji wspó

łbieżnych nie formułuje się warunku zakończenia.

Odpowiednikiem jest

żywotność.


Żywotność
Aplikacja jest

żywotna jeżeli każde pożądane zdarzenie w końcu zajdzie.



W modelu klient – serwer

żywotność oznacza że każdy klient zostanie w

ko

ńcu obsłużony.


Uczciwo

ść

Aplikacja jest uczciwa je

żeli żądające obsługi procesy są traktowane

jednakowo lub zgodnie ze swoimi priorytetami.


W modelu klient – serwer uczciwo

ść oznacza że każdy klient zostanie

obs

łużony zgodnie z kolejnością zgłoszeń lub priorytetem.


Wyró

żnia się następujące rodzaje uczciwości:


1. Uczciwo

ść słaba – jeżeli proces nieprzerwanie zgłasza żądanie to

kiedy

ś będzie ono obsłużone.

2. Uczciwo

ść mocna – jeśli proces zgłasza żądanie nieskończenie wiele

razy to w ko

ńcu zostanie ono obsłużone.

3. Uczciwo

ść liniowa – jeśli proces zgłasza żądanie będzie ono

obs

łużone zanim dowolny inny proces będzie obsłużony więcej niż

raz.

4. Uczciwo

ść typu FIFO – żądania procesów są obsługiwane zgodnie z

kolejno

ścią ich zgłaszania. (FIFO – ang. First-In First-Out)

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 20

sprawdzanie

sprawdzanie

Uczciwo

ść mocna – proces zgłasza żądanie nieskończoną ilość


sprawdzanie

sprawdzanie

Uczciwo

ść słaba – proces musi zgłaszać żądanie nieprzerwanie

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 21

1.9 Skutki stosowania wspó

łbieżności


Korzy

ści wynikające z zastosowania współbieżności:


1. Polepszenie wykorzystania zasobów. Gdy jaki

ś proces czeka na

niedost

ępny w danej chwili zasób, procesor może wykonywać inny

proces.

2. Podzia

ł zadania na procesy umożliwia wykonywanie ich na

oddzielnych maszynach. Prowadzi to do zrównoleglenia
przetwarzania.

3. Podzia

ł dużego zadanie na wiele mniejszych komunikujących się

procesów prowadzi do dekompozycji problemu. Przez co u

łatwia ich

implementacj

ę, uruchamianie i testowanie przez wielu niezależnych

programistów.


Trudno

ści powstające przy implementacji aplikacji współbieżnych:


- problem sekcji krytycznej
- problem synchronizacji procesów
- problem zakleszczenia

Procesy tworz

ące aplikację nie działają w izolacji. Muszą jakoś ze sobą

wspó

łpracować co prowadzi do:


- Konieczno

ści wzajemnej wymiany informacji - komunikacja

mi

ędzyprocesowa.

- Zapewnienia okre

ślonej kolejności wykonania pewnych akcji -

problem synchronizacji.



Przedmiot programowania wspó

łbieżnego


Metodologia tworzenia aplikacji sk

ładających się z wielu komunikujących

si

ę i dzielących zasoby procesów współbieżnych.






PDF created with pdfFactory trial version

www.pdffactory.com


Wyszukiwarka

Podobne podstrony:
Progr-Wsp-Wstep4
Progr wsp Literatura
Progr-wsp-Literatura
Progr wsp 2009 Lit
wsp z rodz
Knopek WSP Kraje egzotyczne tabela
18 Mit mityzacja mitologie wsp Nieznany (2)
Program Progr Syst i Wspolb2011
PHP podst progr suplement wyklad grudzien 2011
Zestaw Fiz.wsp, AGH, ROK I, fizyka, Fizyka
UK+üAD WSP+ô+üCZULNY, Biologia II, Fizjologia zwierząt i człowieka
progr siec, Materiały Ekonomiczna, badania operacyjne
progr, Gazetka szkolna
MSG I STDZIEN-ZAKRES I PROGr.012008(1), SGH, MSG
indyw.progr.eduk.ter, TERAPIA

więcej podobnych podstron