ProgrWspolbiezneWstep8 id 39746 Nieznany

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 1

1

Podstawowe definicje i pojęcia współbieżności

1.1

Dlaczego zajmujemy się współbieżnością ?

W ci

ągu ostatnich 30 lat wzrost mocy przetwarzania osiągano przez:

Zwi

ększenie częstotliwości zegara

Optymalizacj

ę wykonywania operacji

Zastosowanie pami

ęci podręcznych


Prawo Moor’a mówi

że ekonomicznie optymalna liczba tranzystorów w

uk

ładzie scalonym podwaja się co 20 miesięcy. Jest ono ekstrapolowane

na moc obliczeniow

ą komputerów. Prawo to nie sprawdza się w

odniesieniu do cz

ęstotliwości zegara. Od około roku 2003 obserwuje się

jego stabilizacj

ę.


Prawo Moore’a napotka bariery zwi

ązane z prawami fizyki:

Tranzystor nie mo

że być mniejszy od atomu

Pr

ędkość światła jest ograniczona

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 2


Przewiduje si

ę że w ciągu najbliższych kilku lat wzrost mocy

przetwarzania b

ędzie osiągana przez:

Hyperthreading

Procesory wielordzeniowe

Zastosowanie pami

ęci podręcznych


W dalszej perspektywie g

łównym motorem wzrostu mocy przetwarzania

komputerów b

ędzie zwiększanie stopnia równoległości przetwarzania.

Nie da si

ę jednak tego osiągnąć bez radykalnej zmiany w

oprogramowaniu.









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.

Wnioski:

Aby wykorzystać możliwości sprzętu w dziedzinie przetwarzania
równoległego należy dostosować do tego oprogramowanie.

Aplikacje będą musiały być projektowane jako w coraz większym
stopniu współbieżne aby wykorzystać ciągle rosnącą moc sprzętu

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 3

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 4

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-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. 1-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 5

P1

P2

Procesor 1

Procesor 2

Rys. 1-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 6

1.4

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. 1-4 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.


PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 7

Procesor

Kontroler IO

Programowanie

ukladu IO

Obliczenia

transfer

Obliczenia

przerwanie

Rys. 1-5 Przebieg operacji wej

ścia wyjścia wykonywanej przez kontroler

wej

ścia wyjścia



P1

Procesor

Kontroler IO

P1

P1

P1

T1

Rys. 1-6 Proces P1 wykonywany w trybie wy

łącznym


Procesor

Kontroler IO

P2

P2

P2

P2

T2

Rys. 1-7 Proces P2 wykonywany w trybie wy

łącznym

P1

Procesor

Kontroler IO

P1

P1

P1

P2

P2

P2

P2

T3

Rys. 1-8 Procesy P1 i P2 wykonywane w trybie wieloprogramowym T3 <
T1 + T2

Gdy procesy P1 i P2 wykonywane s

ą w trybie wieloprogramowym ich

łączny czas wykonania T3 jest nie większy niż suma czasów wykonania
w trybie wy

łącznym: T3 <= T1 + T2


PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 8

1.5

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. 1-9 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

Rys. 1-10 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 9


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

decyzja

szeregująca

decyzja

szeregująca

Rys. 1-11 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 10

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 11

1.6

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 12

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 13

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. 1-12 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.



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.



PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 14

1.7

Poprawność aplikacji współbieżnych

Rodzaje aplikacji:

1. Aplikacje transformacyjne – Procesy sko

ńczone które wykonują

obliczenie czyli pobieraj

ą dane które mają przekształcić w wyniki.

Kryterium poprawno

ści: przekształcenie danych zgodnie ze

specyfikacj

ą w skończonym czasie


2. Aplikacja reaktywne – Wykonuj

ą się dowolnie długo (być może w

niesko

ńczoność) i ich celem jest interakcja z otoczeniem

(wymiana danych). Kryterium poprawno

ści: Prawidłowa interakcja

z otoczeniem - czasowa i dotycz

ąca przekształcania danych.


Kryterium poprawno

ści aplikacji transformacyjnej


Aplikacja transformacyjnej jest poprawna je

żeli:

1. Zatrzymuje si

ę

2. Je

żeli się zatrzyma to da poprawne wyniki




Typowe aplikacje reaktywne 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.


PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 15

Dla okre

ślenia prawidłowości aplikacji reaktywnych używa się pojęć:

Bezpiecze

ństwa,

Żywotności

Uczciwo

ści.



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. 1-13 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.


PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 16

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.



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.



Dla aplikacji reaktywnych 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.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

J. U

łasiewicz Programowanie aplikacji współbieżnych 17


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.


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)

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 18

1.8

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:
ProgSieciowe 15 Budowa id 39746 Nieznany
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany
miedziowanie cz 2 id 113259 Nieznany
LTC1729 id 273494 Nieznany
D11B7AOver0400 id 130434 Nieznany
analiza ryzyka bio id 61320 Nieznany
pedagogika ogolna id 353595 Nieznany
Misc3 id 302777 Nieznany
cw med 5 id 122239 Nieznany

więcej podobnych podstron