51
Strona 1 z 51 Politechnika Częstochowska Wydzial InŜynierii Mechanicznej i Informatyki Instytut Informatyki Teoretycznej i Stosowanej Przetwarzanie WspólbieŜne i Równolegle prof. Roman Wyrzykowski

Wykłady z przetwarzania równoległego i współbieznego

  • Upload
    vokhue

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Wykłady z przetwarzania równoległego i współbieznego

Strona 1 z 51

Politechnika Częstochowska

Wydział InŜynierii Mechanicznej i Informatyki

Instytut Informatyki Teoretycznej i Stosowanej

Przetwarzanie WspółbieŜne i Równoległe

prof. Roman Wyrzykowski

Page 2: Wykłady z przetwarzania równoległego i współbieznego

Strona 2 z 51

Wykład 1

Trzy przykładowe zadania i czas jaki zajmie ich wykonanie sekwencyjne

Wykonanie trzech zadań sekwencyjnie

Wykonanie trzech zadań równoległe. PoniewaŜ zadania wykonują się równolegle na jednym procesorze, kaŜde z zadań będzie wykonywać się dłuŜej, przykładowo 110% czasu wykonywania na jednym procesorze sekwencyjnie.

Wykonanie trzech zadań równoległe

Obliczenia

Edytor tekstu

Drukowanie

11 jednostek procesora

11 jednostek procesora

11 jednostek procesora

0 11

Obliczenia

Edytor tekstu

Drukowanie (11+11+11)/3=11

0 10 20 30

Obliczenia Edytor tekstu Drukowanie

(10+20+30)/3=20

Obliczenia

Edytor tekstu

Drukowanie

10 jednostek procesora

10 jednostek procesora

10 jednostek procesora

Równoległość – szybsze wykonywanie jednego duŜego zadania poprzez rozbicie go na kilka podzadań i wykonanie ich równolegle na więcej niŜ jednym komputerze.

WspółbieŜność – zmniejsza czas reakcji systemu na Ŝądanie obsługi danego zadania ze strony jednego uŜytkownika. Zadania wykonywane są na jednym procesorze. Wykorzystuje się to, Ŝe róŜne zadania maja róŜne wymagania odnośnie zasobów komputera.

Page 3: Wykłady z przetwarzania równoległego i współbieznego

Strona 3 z 51

Podział procesorów

RISC (Reduced Instruction Set Computer) CISC (Complex Instruction Set Computer) • duŜo instrukcji • łatwość programowania

• większa wydajność • jednostka sterująca moŜe być

prostsza, mniejsza a to miejsce moŜna wykorzystać na pamięć

• moŜna zwiększyć częstotliwość • prościej zaimplementować potok

Serwer Klienci

Klient – serwer

Serwer Serwery

p2p = serwer – serwer = równy – równy

Wykonywanie rozproszone – wykonywanie obliczeń w sieci komputerowej

Potok – zadanie dzielimy na podzadania. Podzadania wykonywane są na osobnych jednostkach przetwarzających. RóŜne jednostki przetwarzające mogę pracować równolegle.

Page 4: Wykłady z przetwarzania równoległego i współbieznego

Strona 4 z 51

Przykładem ilustrującym działanie potoku moŜe być linia montaŜowa produkująca samochody. ZłoŜone zadanie jakim jest produkowanie samochodu zostało podzielone na mniejsze zadania. KaŜde takie małe zadanie wykonywane jest w innym miejscu linii produkcyjnej. W związku z tym, na jednej linii produkcyjnej składanych jest jednocześnie kilka samochodów co podnosi wydajność produkcji.

∆T

czas 1

1

1

1

1

1

2

2

2

2

2

2

3

3

3

3

3

3

Zadanie 3 zaleŜy od zadania 1, zadanie trzecie moŜe rozpocząć się dopiero gdy zadanie 1 się skończy

jednostki sterujące

T1

Przykład przetwarzania trzech zadań na 6 stopniowym potoku

FLOPS – FLoating Operations Per Second – ilość operacji zmiennoprzecinkowych na sekundę

Wzrost w ydajności na rok

66%

11%

0%

10%

20%

30%

40%

50%

60%

70%

Procesor Pamięć

Prawo Moore’a – wydajność procesorów zwiększa się dwukrotnie co 18 miesięcy

Page 5: Wykłady z przetwarzania równoległego i współbieznego

Strona 5 z 51

Wykład 2

Skupimy się na architekturze MIMD, czyli Multiple Instruction Multiple Data.

1. Systemy z pamięcią rozproszoną. MULTIKOMPUTER (słabo związany)

Zalety

Skalowalność – wraz ze wzrostem liczby procesorów proporcjonalnie wzrasta wydajność

Wady

Trzeba bezpośrednio programować operacje komunikacyjne np. przesyłanie zmiennej lokalnej z jednej do drugiej pamięci.

2. Systemy z pamięcią współdzieloną. MULTIPROCESOR (silnie związany)

MoŜna polepszyć wydajność poprzez dołączenie do cache-u ($) zazwyczaj drugiego poziomu

Architektura pamięci

Disturbed Memory (Rozproszona)

Shared Memory (Współdzielona)

Sieć komunikacyjna

P M P M P M . . .

x

wada

x – przekazywana zmienna

Sieć komunikacyjna

P P P . . .

M M M . . .

Systemy z pamięcią współdzieloną to „SMP” bo procesy spełniają te same funkcje (w kaŜdym procesorze jest jądro systemu operacyjnego)

Page 6: Wykłady z przetwarzania równoległego i współbieznego

Strona 6 z 51

Zalety

Lepsza komunikacja. Wszystkie procesory mają dostęp do wspólnej pamięci. Wady

Niska skalowalność; Wąskie gardło w dostępie do pamięci współdzielonej.

ARCHITEKTURA Z PAMIĘCIĄ ROZPROSZONĄ Zastosowanie w klasycznych komputerach równoległych (MPP – Massive Parallel Processor czyli

Maszyny Masywnie Równoległe). Obecnie zastępowane są przez KLASTRY (Cluster), gdzie zamiast węzłów stosowane są normalne komputery dostępne na rynku. Architektura Klastra:

1) SOI – Wspólny obraz systemu

Sieć komunikacyjna

. . .

M M M . . .

P $

y

y’ P $ P $

Wszystkie procesory mają dostęp do pamięci, a zatem y jest dostępna dla wszystkich

procesorów. ZauwaŜmy na powyŜszym rysunku, Ŝe pierwszy procesor działa na y’, pozostałe na y. Zachodzi wówczas tutaj przekłamanie np. podczas obliczeń

Aplikacje

Środowisko programowania (SOI) 1

Oprogramowanie warstwy pośredniej 2

SO3

K4

SO

K

SO

K

SO

K

SAN 5, LAN 6, WAN 7

Zastosowanie cache-u znacznie polepsza wydajność systemu, jednakŜe występuje problem z jego spójnością tzw. NUMA – Non Uniform Memory Access – z niejednorodnym dostępem do pamięci.

Page 7: Wykłady z przetwarzania równoległego i współbieznego

Strona 7 z 51

2) Jest to tzw. Middleware np. NFS (Network File System) – wspólny system plików. Kilka dysków jest widziana jako jeden dysk.

3) SO – System Operacyjny 4) K – Komputer 5, 6, 7) objaśnione przy omówieniu sieci (patrz niŜej)

Szybciej realizują zadania tzw. tryb przetwarzania równoległego

krótki czas reakcji na Ŝądanie obsługi uŜytkownika oraz zabezpieczenie przed awariami

SIECI

SAN (5)

System Area Network

• Myrinet (szybka) • Infiniband

LAN (6)

Local Area Network

• Gigabit Ethernet

WAN (7)

Wide Area Network

• Gigabit Ethernet • ATM

MAN Metropolitan Area Network

• 10 Gigabit Ethernet np. PIONIER (na jej bazie

powstał CLUSTERIX)

GRIDY

System rozproszony w skali geograficznej połączony za pomocą sieci rozległej WAN i widziany jako jedna całość. CLUSTERIX to 12 klastrów lokalnych połączonych za pomocą sieci optycznej PIONIER z wykorzystaniem odpowiedniego oprogramowania. Więcej informacji na temat CLUSTERIXA moŜna znaleźć na stronie http://clusterix.pcz.pl/

KLASTRY

obliczeniowe (wysokiej wydajności)

wysokiej dostępności

Page 8: Wykłady z przetwarzania równoległego i współbieznego

Strona 8 z 51

Wykład 3

Sieci dynamiczne i sieci statyczne

a) Sieci statyczne

Topologia liniowa

Topologia siatka

Topologia pierścieniowa

Topologia drzewiasta

Page 9: Wykłady z przetwarzania równoległego i współbieznego

Strona 9 z 51

Hipersześcian 0 rzędu

Hipersześcian 1 rzędu

Hipersześcian 2 rzędu

Hipersześcian 3 rzędu

0

000

10

001

10 11

00 01

010 011

100 101

110 111

010 011

000 001

110 111

101 100

Funkcja XOR x y x XOR y 0 0 0 0 1 1 1 0 1 1 1 0

111

Dystans Hamminga

010101111

111

111

111

Page 10: Wykłady z przetwarzania równoległego i współbieznego

Strona 10 z 51

b) Sieci dynamiczne zawierają przełączniki

Magistrala

Cross Bar

MSN – Multi Step Network OMEGA (8x8)

out1

out2

in

out in

Rodzaje przełączników

BUS

Pamięć Pamięć Pamięć

Procesor Procesor Procesor

Procesor Procesor Procesor

Pamięć

Pamięć

Pamięć

Page 11: Wykłady z przetwarzania równoległego i współbieznego

Strona 11 z 51

Przełączników jest NN

2log2

000

001

010

011

100

101

110

111

000

001

010

011

100

101

110

111

011 000 011

0 - prosto

1 - odwrotnie

Funkcja XOR x y x XOR y 0 0 0 0 1 1 1 0 1 1 1 0

Page 12: Wykłady z przetwarzania równoległego i współbieznego

Strona 12 z 51

Wykład 4

• Algorytmy równoległe • Wskaźniki Czas realizacji Trealizacji algorytmu składa się z 3 składników:

� To – czas obliczenia � Tkom – czas komunikacji � Tidle – czas przestoju

WZÓR:

p – liczba procesorów

Sp (Speed-up) – Przyśpieszenie na procesorach

(czas realizacji na procesorach)

T1 – np. najszybszy algorytm sekwencyjny na

świecie

1<Sp≤p

0<Ep≤1

Prawo Amdahla

1

2

3

4

t

procesory

∑−

=

++=1

0

)(1 p

i

i

idle

i

kom

i

o TTTp

T

pT

TSp 1=

p

SpEp = )( ćefektywnoś

Ep

p

1

Sp

p

idealnie

Zjawisko super przyśpieszenia. Przyśpieszenie większe niŜ liczba procesorów

Page 13: Wykłady z przetwarzania równoległego i współbieznego

Strona 13 z 51

czyli 0, gdy p→∞

gdy p→∞ to

β=0.05 → Sp<20 β – nie jest stałe. Wraz ze wzrostem rozmiaru algorytmu β jest coraz mniejsze

ALGORYTM MNOśENIA MACIERZY i=0, M-1 j=0, N-1 Dla jednego Cij mamy 1 procesor M=N=K=4

– procesor a – wiersze b – kolumny

Wskaźniki efektywności:

∑−

=

=1

0

k

k

kjikij baC

M

K

K

N N

M=

x

część

sekw

ency

jna

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

β 1-β

pT

TSp 1=T1

p

TTTp

11

)1( ⋅−+⋅=

ββ

p

TT

TSp

11

1

)1( ⋅−+⋅

β

β

1→Sp

N β

b0 b1 b2 b3

a0

a1

a2

a3

03

12 13 11

01 02

21 22 23

30 31 32 33

10

00

20

1 2 3 4

5

6

7

N-1(M-1) w ogólnym przypadku

najkrótsza droga pracy ostatniego procesora

N-1(M-1)

Page 14: Wykłady z przetwarzania równoległego i współbieznego

Strona 14 z 51

00 01 10 02 11 20 03 12 21 30 13 22 31 23 32 33

p

t 4 5 6 7 8 9 10

10 taktów

1 2 3

Tp=T16=10 taktów (równolegle na procesorach), a sekwencyjnie 64

a) przyśpieszenie

T1 = N3 = 43 = 64 operacje mnoŜenia z dodawaniem Tp przy p=16

Następne z opóźnieniem 1 taktu.

Procesor potrzebuje 4 takty

p=16

pT

TSp 1=

12

16

p

t 4 5 6 7 8 9 10 1 2 3

4,610

64==Sp

4,016

4,6===

p

SpEp

pT

T

⋅=

1

Page 15: Wykłady z przetwarzania równoległego i współbieznego

Strona 15 z 51

Wykład 5 Mamy macierz procesorów MxN

0

1

2

3

c00 c10 c20 c30

K/M taktów

5 taktów

a0

a1

a2

a3

M

N

a0

a1

b0

=

c00

c10

...

a3a2a1a0

A

sekwencyjnie

b0 b1 b2 b3

c0 c1 c2 c3

TN=(K·M+N-1)·To

TNxM=(T+M+K-2)·Top

(4x5) x (5x4) M K K N

Page 16: Wykłady z przetwarzania równoległego i współbieznego

Strona 16 z 51

Ziarnistość – stosunek czasu obliczeń do czasu komunikacji Algorytm dwuwymiarowy MxN

Nazwa Przepustowość ts β Fast Ethernet 100 Mb/s 50 µs 0,08 Gigabit Ethernet 1 Gb/s 50 µs 0,008 Myrinet 2,5 Gb/s 8 µs 0,0032 Infiniband 10 Gb/s 4 µs 0,0008 β – wynika z przepustowości sieci. Jest to odwrotność przepustowości sieci

ts – czas przesyłania komunikatu o zerowej długości np. Fast Ethernet, 100 Mb/s tj. 12,5 MB/s Zad. 1

MxN ZałoŜenie: N=M=K czas startu ts=0 β=0,008 (Gigabit Ethernet)

p

pT

TS 1=

n

NT

TS 1=

o

op

NTNMK

TMKNS

⋅−+⋅

⋅⋅⋅=

)1( 1−+⋅

⋅⋅=

NMK

MKNSN

NN

N

NN

NSN ≈

+=

⋅+=

1)1(

23

1=≈=N

NEE Np

k

o

T

TG =

3~ rTo

2~ rTKr

r

rG ~~

2

3

, , ,

,

opo TLT ⋅=czas operacji

liczba operacji

czas trwania

operacji

β⋅+= LtT sK

czas komunikacji

czas startu

t0=0

liczba przesłanych

danych

(przesyłanie bajtów)

czas przesłania

1 bajtu

wraz ze wzrostem r

wzrasta ziarnistość

s66

1008,0105,12

1 −⋅=⋅

opo TNT ⋅=

(wiersz x kolumna) β⋅⋅⋅= 84 NTKwiersz wiersz

kolumna

kolumna

strzałki

na kaŜdej strzałce mamy N

elementów

64 słowa

bitowe

G2>G1

GG

Page 17: Wykłady z przetwarzania równoległego i współbieznego

Strona 17 z 51

ALGORYTM CANNONA Przekątna w Cannonie

MnoŜenie macierzy

po cyklicznym przesunięciu:

00 01

02

03

11 12

13 10

22 23

20

21

33 31

30

32

10

21

32

03

20

31

02

13

30

12

01

23

A

c03

00 11

22

33

x =

B C

a00 x b03 = c03

00 11

00 11

00

11 00

11 00 01

02

03

11 12

13 10

22 23

20

21

33 31

30

32

00 11

22

33

10

21

32

03

20

31

02

13

30

12

01

23

A B

c03

C

x =

a03 x b33 = c03

00 01 02 03

10 11 12 13

20 21 22 23

30 32 31 33

00

11

22

33

00 11

22

33

A B

k

o

T

TG =

β⋅⋅⋅

⋅=

84 N

TNG

op

ssTop µµτ 25,044 =⋅=⋅=

takt

128

1

832

2

32

2=

⋅=

⋅=

s

ssG

µ

µ

β

µ

Częstotliwość taktowania: 2GHz → 0,5 µs

Page 18: Wykłady z przetwarzania równoległego i współbieznego

Strona 18 z 51

A01 A00

A10 A11

50

100

50

50

100

B01 B00

B10 B11

50

C01 C00

C10 C11

X =

C00 = A00B00 + A01B10

B10 B00

B11 B01

A00

A10 11

01

10

00 A01

A11

C00 = A00B00 C00 = C00 + A01B10

Wykład 6 Ziarnistość: TO – czas obliczeń TK – czas komunikacji System komputerowy: Pojedyncze komputery:

I. ALGORYTM BLOKOWY (NATURALNY, ZWYKŁY) a) Mamy macierz 100x100 i procesory 2x2 Praca na blokach: Tyle bloków ile procesorów w macierzy C.

K

O

T

TG =

K

O

T

TG =

– duŜe

– małe

K

O

T

TG =

– obliczenia są małe, szybko robione

– komunikacja jest duŜa

Algorytmy, które mają duŜą ziarnistość (przede wszystkim algorytmy blokowe) pozwalają się uniezaleŜnić od rozmiaru zadania i ilości procesorów.

Page 19: Wykłady z przetwarzania równoległego i współbieznego

Strona 19 z 51

00

01

10

11

liczba operacji: 503

X =

A0

A1

A2

B0

B1

B2

34

34

32

C00

34 34 32

b) Zastosujmy większe bloki N=100

Policzmy ziarnistość

C

B (liczba bloków)

N

K

O

T

TG = B

B B

NN B =

opO TBT ⋅= 3

β⋅⋅⋅= 84 2BTK

l. bitów

ββ ⋅⋅=

⋅⋅⋅

⋅=

8484 2

3opop T

BB

TBG

Im większy blok tym lepsza ziarnistość (więcej obliczeń mniej komunikacji)

Page 20: Wykłady z przetwarzania równoległego i współbieznego

Strona 20 z 51

Przykład Mamy macierz 6x6 oraz mniejszą macierz procesorów 3x3

II. ALGORYTM CANNONA

c12 = a12b22 + a13b32

Operacje na blokach: C01 = A01 x B11

Drugi krok: Teraz po cyklicznym przesunięciu otrzymujemy

c12 = c12 + a14b42 + a15b52

Operacje na blokach: C01 = C01 + A02 x B21

12

A B C

X =

40 41

50 51

02 03

12 13

42 43

52 53

04 05

14 15

24 25

34 35

20 21

30 31

00 01

10 11

44 45

54 55

22 23

32 33

40 41

50 51

02 03

12 13

42 43

52 53

04 05

14 15

24 25

34 35

20 21

30 31

00 01

10 11

44 45

54 55

22 23

32 33

00 01

10 11

20 21

30 31

40 41

50 51

02 03

12 13

22 23

32 33

42 43

52 53

04 05

14 15

24 25

34 35

44 45

54 55

00 01 02

12 10 11

20 21 22

00 01

10 11

44 45

54 55

22 23

32 33

00 01

10 11

44 45

54 55

22 23

32 33

00 01

10 11

40 41

50 51

02 03

12 13

42 43

52 53

04 05

14 15

24 25

34 35

44 45

54 55

22 23

32 33

20 21

30 31 00 01

10 11

44 45

54 55

22 23

32 33

00 01

10 11

44 45

54 55

22 23

32 33

00 01

10 11

40 41

50 51

02 03

12 13

42 43

52 53

04 05

14 15

24 25

34 35

44 45

54 55

22 23

32 33

20 21

30 31

12

A B C

X =

00 01 02

11 12 10

22 20 21

00 01 02

11 12 10

22 20 21

00 11 22

10 21 02

20 01 12 00 11 22

10 21 02

20 01 12

A A B B

Page 21: Wykłady z przetwarzania równoległego i współbieznego

Strona 21 z 51

0

0

0

0

0 0

krok 0 krok 1 krok 2

j

i

Mamy macierz 4x4

wiersz wodzący (wiersz 0)

ten wiersz odejmujemy od wiersza zerowego.

Tak samo robimy z pozostałymi wierszami (odejmując je od

wiersza zerowego)

kroków jest o jeden mniej niŜ wielkość macierzy tj. n-1 kroków

III. ALGORYTM ELIMINACJI GAUSSA

czyli mamy

krok 0: wiersz1 = wiersz1 – wiersz0 · m a10=0 0 = a10 – a00 · m

0 = a10 – a00 · = 0 Program do Eliminacji Gaussa

for (k=0; k<n-1; k++)

for(i=k+i; i<n; i++)

{

mik=aik/akk;

for(j=k+1; j<n; j++)

aij=aij-mik·akj

}

A · x = y wektor niewiadomych

prawa strona

A = L · U

Lower Upper

dolna

trójkątna

górna

trójkątna

L

U L · U · x = y //obustronnie dzielimy przez L-1

U · x = L-1 · y

U · x = b

a33

x0

b3

x1

x2

x3

X =

U x b

00

10

a

a

00

10

a

a

Page 22: Wykłady z przetwarzania równoległego i współbieznego

Strona 22 z 51

Wykład 7 Kontynuujemy rozwaŜania na temat Algorytmu Eliminacji Gaussa.

Mamy macierz 4x4. N=4

• k=0

• k=1

• k=2

a11 a12 a13

a21

a31

a22

a32

a23

a33

m21

m31

2 wiersz

3 wiersz

przechodzą do kolejnego kroku

w kolejnym kroku

wiersz 2 będzie

wierszem wiodącym

j

i

00

00

k

od danego wiersza odejmujemy wiersz

wodzący k

dzielenie mnoŜenie i odejmowanie

a00 a01 a02 a03

a10

a20

a30

a11

a21

a31

a12

a22

a32

a13

a23

a33

m10

m20

m30

1 wiersz

2 wiersz

3 wiersz

akj

przechodzą do kolejnego kroku

aij

w kolejnym kroku

wiersz 1 będzie

wierszem wiodącym

Page 23: Wykłady z przetwarzania równoległego i współbieznego

Strona 23 z 51

Przedstawmy to samo w 3D

mnoŜenie macierzy: cij = cij - aik · bkj

(1) (2) (3) (4) a32 = a32 - m31 · a12

(1) (2) (3) (4) a22 = a22 - m21 · a12

a22 a23

a32 a33

m32

i

j k

1 2 3 4

2 3 4 5

3 4 5 6

4 5 6

5 6 7

7 8

3 wiersz

(3) (3)

(2)

(1) (4)

(3) (3)

(2)

(1)

(4) (4)

Page 24: Wykłady z przetwarzania równoległego i współbieznego

Strona 24 z 51

Aby odzwierciedlić naszą macierz na sieć procesorów trzeba dokonać projekcji. Zastosujemy metodę rzutowania-szeregowania. Trzeba równieŜ uszeregować operacje w czasie (co zostało zrobione i przedstawione na rysunku wyŜej)

a00 a01 a02 a03

1 wiersz

2 wiersz

3 wiersz

wiersz 0

macierz U

j

i

m

m

m

2 wiersz

1 wiersz

0 wiersz

a0 a1 a2 a3

mnoŜniki

macierz

U

kolumny macierzy

j k

5,28

201 ===p

pT

TS 278,0

9

5,2≈==

p

SE

p

p

5,28

201 ===p

pT

TS 2083,0

12

5,2≈==

p

SE

p

p

Page 25: Wykłady z przetwarzania równoległego i współbieznego

Strona 25 z 51

Wykład 8 Metodologia budowy algorytmów równoległych na podstawie algorytmów sekwencyjnych.

1. Wyznaczenie zbioru operacji bazowych algorytmu (wierzchołki grafu) 2. Wyznaczenie zaleŜności pomiędzy operacjami bazowymi (krawędzie grafu) 3. Agregacja operacji (wierzchołków grafu) – zwiększenie ziarnistości 4. Wyznaczenie uszeregowania (scheduling) w przestrzeni – czyli przydziału operacji do

procesorów 5. Wyznaczenie uszeregowania w czasie – czyli momentów wykonywania poszczególnych

operacji Filtr cyfrowy nierekursywny / algorytm splotu liniowego

Algorytm sekwencyjny np. dla K=3 y(0) = w(0) x(0) y(1) = w(0) x(1) + w(1) x(0) y(2) = w(0) x(2) + w(1) x(1) + w(2) x(0) y(3) = w(0) x(3) + w(1) x(2) + w(2) x(1) y(4) = w(0) x(4) + w(1) x(3) + w(2) x(2)

w x y

ciąg wejściowy ciąg wyjściowy

charakterystyka

filtru

A

x

∑−

=

−=1

0

)()()(K

k

kjxkwjyx(i) i=0, 1, ..., N-1 w(k) k=0, 1, ..., K-1 y(j) j=0, 1, ..., N+K-2

Page 26: Wykłady z przetwarzania równoległego i współbieznego

Strona 26 z 51

Ad 1, Ad 2) Wyznaczenie zbioru operacji bazowych algorytmu, Wyznaczenie zaleŜności pomiędzy operacjami bazowymi. Operacjami są kolejne mnoŜenia z dodawaniem. Zakładamy, Ŝe N=5, K=3

Ad3) (pominięta)

x(0) x(1) x(2) x(3) x(4)

w(0)

w(1)

w(2)

y(0)

y(1)

y(2) y(3) y(4) y(5) y(6)

+ + + +

+ + + +

j

k

Σ

X w

sumator

Page 27: Wykłady z przetwarzania równoległego i współbieznego

Strona 27 z 51

Ad 4) Wyznaczenie uszeregowania w przestrzeni Najlepiej jest to przedstawić za pomocą projekcji

Ad 5) Wyznaczenie uszeregowania w czasie

Trzeba sprawdzić czy nie występuje konflikt między uszeregowaniem w czasie a uszeregowaniem w przestrzeni, czyli sprawdzić czy w pojedynczym procesorze w jednym czasie wykonuje się tylko 1 zadanie. Nasze uszeregowanie w czasie spełnia ten wymóg.. Tp = 9 p = k = 3 T1 – tyle ile operacji Tp = (N+K-1+K-1)Top = (N+2K-2)Top T1 = N·K Przykład dynamicznego przydziału zadań do procesorów (Master Worker)

x(0) x(1) x(2) x(3) x(4)

w(0)

w(1)

w(2)

y(0)

y(1)

y(2) y(3) y(4) y(5) y(6)

+ + + +

+ + + +

j

k

1 2 3 4 5

3

5

4 5 6 7

6 7 8 9

w(0)

w(1)

w(2)

x

y

potrzebny jest 1 rejestr na

przesłanie y (Patrz Ad5)

potrzebne są 2 rejestry na

przesłanie x (Patrz Ad5)

22)22(1

−+

⋅=

⋅−+

⋅⋅==

KN

KN

TKN

TKN

T

TS

op

op

p

p

KN

KNS p ≈

⋅≈

Najlepiej gdyby Sp było równe K

(gdy N jest duŜo większe od K)

Page 28: Wykłady z przetwarzania równoległego i współbieznego

Strona 28 z 51

Mamy pewien zbiór procesorów: P1 – normalnie P2 – 2x wolniejszy niŜ P1 P3 – 4x wolniejszy niŜ P1 oraz mamy zbiór zadań: 3 zadania o złoŜoności 3

Zobaczymy jak będzie wyglądał wykres w przypadku gdy nasze zadania będą podzielne

1.1 P1

P2

P3

6

Procesory

Takty

2.1 2.2 3.1 3.2

1.2 2.3 3.3

1.3

1

2

3

P1

P2

P3

12

Procesory

Takty

Page 29: Wykłady z przetwarzania równoległego i współbieznego

Strona 29 z 51

Wykład 9

Szeregowanie zadań (task scheduling / job scheduling) Mamy:

1) Zbiór zadań (prac) Z={z0, z1, ..., zN-1) wi – pracochłonność, złoŜoność danego zadania 2) Zbiór maszyn (procesorów) P={P0, P1, ..., PM-1) fj – wydajność, szybkość danego procesora

Mając te dwa zbiory musimy znaleźć odwzorowanie zbioru prac na zbiór procesorów, a zatem musimy mieć pewne kryterium optymalności uszeregowania. Standardowym kryterium optymalności uszeregowania jest czas realizacji zbioru zadań na zbiorze procesorów.

min tk (minimalizacja czasu)

Algorytmy heurystyczne pozwalają nam przybliŜyć optymalną wartość złoŜoności.

Algorytmy listowe Algorytmy listowe będą generalnie szeregowały zadania w sposób dynamiczny. Rozpatrzymy dwa przypadki: zadania zaleŜne i zadania niezaleŜne (dla kaŜdego przypadku 2 strategie) Mamy uporządkowane listy zadań i procesorów. Zadania po kolei przydziela się pierwszemu wolnemu procesorowi na liście w sposób dynamiczny.

ZłoŜoność

wielomianowa niewielomianowa

N c stała

rozmiar

zadania

np. 10002=106

c N

stała

rozmiar

zadania

np. 21000=(210)100≈(1000)100

=10300

NP-złoŜoność

(Non-Polynomia)

Page 30: Wykłady z przetwarzania równoległego i współbieznego

Strona 30 z 51

Zbiór procesorów: P1 – nominalna 2 takty

P2 – 2x wolniejszy 4 takty

P3 – 2x szybszy 1 takt Zbiór zadań: z0,..., z8 (zadania) wi = i%3 + 1 (złoŜoność)

w0 = 1 w1 = 2 w2 = 3 w3 = 1 w4 = 2 w5 = 3 w6 = 1 w7 = 2 w8 = 3

I. Zadania niezaleŜne

1) Strategia: Procesory – od najwolniejszego do najszybszego

P2 – 2x wolniejszy 4 takty P1 – nominalna 2 takty

P3 – 2x szybszy 1 takt Zadania – od najmniej do najbardziej złoŜonego w0, w3, w6, w1, w4, w7, w2, w5, w8

1 2 3 (złoŜoności)

6 P3

P1

P2

3

0

1 7

4

5

8

2

16

złoŜoność = 1

złoŜoność = 2

złoŜoność = 3

Legenda

Page 31: Wykłady z przetwarzania równoległego i współbieznego

Strona 31 z 51

2) Strategia: Procesory (tak jak wyŜej) – od najwolniejszego do najszybszego

P2 – 2x wolniejszy 4 takty P1 – nominalna 2 takty

P3 – 2x szybszy 1 takt Zadania – od najbardziej do najmniej złoŜonego w2, w5, w8, w1, w4, w7, w0, w3, w6

3 2 1 (złoŜoności)

II. Zadania zaleŜne a) Ustalmy zaleŜności między zadaniami. MoŜna tego dokonać za pomocą grafu skierowanego

acyklicznego (bez pętli)

Powstaje pytanie dlaczego w grafie nie moŜna zastosować pętli (czyli np. przejść z a

i powrócić do a) ? Musi być spełniony warunek: tp

a, tka

tk

a ≤ tpb

tpb, tk

b

8 P3

P1

P2

5

2

12

7 4

1

6 3 0

0

4

8

2

7

5

1

3

6

a

b

a

b c

1,2

3,4

5,6

warunek nie byłby spełniony!

Page 32: Wykłady z przetwarzania równoległego i współbieznego

Strona 32 z 51

b) Dokonamy uporządkowania (sortowania) wierzchołków grafu budując graf uporządkowany. Na pierwszym poziomie znajdują się te wierzchołki, które nie zaleŜą od Ŝadnych innych wierzchołków.

1) Strategia:

Procesory – od najwolniejszego do najszybszego

P2 – 2x wolniejszy 4 takty P1 – nominalna 2 takty

P3 – 2x szybszy 1 takt Zadania – od najmniej do najbardziej złoŜonego (na danym poziomie!) w4, w7, w1, w6, w2, w3, w0, w8, w5

2 1 3 1 3 (złoŜoności)

I II III IV (poziomy)

4

1 7

2 6

0 8 3 5

I

II

III

IV

Aby wykonywać dany poziom (warstwę) nie trzeba czekać na skończenie całej warstwy, ale jedynie na wyniki z zaleŜnych wierzchołków.

P3

P1

P2 4

26

1

7 2 0

6 3

8

5

złoŜoność = 1

złoŜoność = 2

złoŜoność = 3

Legenda

Page 33: Wykłady z przetwarzania równoległego i współbieznego

Strona 33 z 51

2) Strategia: Procesory – od najszybszego do najwolniejszego

P3 – 2x szybszy 1 takt P1 – nominalna 2 takty

P2 – 2x wolniejszy 4 takty Zadania – od najbardziej do najmniej złoŜonego (na danym poziomie!) w4, w7, w1, w2, w6, w8, w5, w3, w0

2 3 1 3 1 (złoŜoności)

I II III IV (poziomy)

4 P3

P1

P2

14

7

1

2

6

8

5

0

3

złoŜoność = 1

złoŜoność = 2

złoŜoność = 3

Legenda

Page 34: Wykłady z przetwarzania równoległego i współbieznego

Strona 34 z 51

Wykład 10 Przy algorytmie eliminacji Gaussa mieliśmy:

czyli

Postępowanie odwrotne do eliminacji Gaussa

Mamy układ równań z górną macierzą trójkątną: u00x0 + u01x1 + u02x2 + u03x3 = y0

u11x1 + u12x2 + u13x3 = y1 u22x2 + u23x3 = y2 u33x3 = y3

obliczamy x (od końca) x3 = y3 / u33 x2 = (y2 - u23x3) / u22

x1 = (y1 - u13x3 - u12x2) / u11 x0 = (y0 - u03x3 - u02x2 - u01x1) / u00

MoŜemy teraz narysować graf (rysując od dołu)

dzielenie mnoŜenie

x1 x2 x3

x2 x3

x3

u01 u02 u03

u12 u13

u23

u33

u22

u11

u00

7

2

4

6

3

4 5

5

3

1

y3

y2

y1

y0

n

n - 1

A · x = y wektor niewiadomych

prawa strona

A = L · U

Lower Upper

dolna

trójkątna

górna

trójkątna

L

U L · U · x = y //obustronnie dzielimy przez L-1

U · x = L-1 · y

U · x = b

Page 35: Wykłady z przetwarzania równoległego i współbieznego

Strona 35 z 51

Postępowanie odwrotne Liczba operacji ZłoŜoność O(n2) Czas Tmin=(2n-1)To

Eliminacja Gaussa ZłoŜoność O(n3) Czas T=O(n)

Zamiast postępowania odwrotnego moŜemy zastosować algorytm Jordana-Gaussa. Dzięki algorytmowi Jordana-Gaussa otrzymujemy macierz diagonalną. Nie musimy juŜ robić postępowania odwrotnego. Wadą tego algorytmu jest to, Ŝe trzeba wykonać dwa razy więcej operacji. Rozpatrywaliśmy Gaussa przy załoŜeniu Ŝe ilość procesorów była tak jak wymiar macierzy.

Przykład 1

Mieliśmy projekcję na podstawę:

teraz będziemy mieli tylko 3 procesory.

N-1

N

N-1

2

)1( +=

nnL

x x x x

x x x x

x x x x

x x x x

x x x x

0 x x x

0 0 x x

0 0 0 x

x 0 x x

0 x x x

0 0 x x

0 0 0 x

x 0 0 x

0 x 0 x

0 0 x x

0 0 0 x

x 0 0 0

0 x 0 0

0 0 x 0

0 0 0 x

odejmujemy wiersz oznaczony przez od pozostałych

dokonajmy jeszcze raz projekcji

Page 36: Wykłady z przetwarzania równoległego i współbieznego

Strona 36 z 51

Przykład 2

dla n=7 (n-1=6)

Dekompozycja cykliczna (przydział cykliczny)

wirtualne połączenie

MoŜemy połączyć te procesory

i zamiast 6-ci będą 3

2, 1

4, 3

6, 5

1, 4

2, 5

3, 6

moŜliwe jest teŜ inne

połączenie:

ze skokiem o liczbę

procesorów (tutaj co 3)

UWAGA!!

Procesory 5 i 6 przetwarzają cały czas. Procesory są nierównomiernie obciŜone

Przydział wierszy do procesorów

Dekompozycja blokowa (przydział blokowy)

0

1

2

1

2

3

4

5

6

0

1

2

0

1

2

wiersze procesory

(zwiększona komunikacja)

Page 37: Wykłady z przetwarzania równoległego i współbieznego

Strona 37 z 51

Kombinowany przydział wierszy do procesorów (cykliczno – blokowy): N=19, 3 procesory

0

1

2

1 2

3 4

5 6

7 8

9 10

11 12

13 14

15 16

17 18

procesor

Page 38: Wykłady z przetwarzania równoległego i współbieznego

Strona 38 z 51

PROGRAMOWANIE WSPÓŁBIEśNE

PODSTAWOWE POJĘCIA I PROBLEMY

• proces - program sekwencyjny w trakcie wykonywania • dwa procesy są współbieŜne, jeŜeli jeden z nich rozpoczyna się

przed zakończeniem drugiego • będą nas interesować jedynie takie procesy, których wykonania są

od siebie uzaleŜnione, przy czym uzaleŜnienie wynika z faktu, Ŝe procesy ze sobą współpracują lub między sobą współzawodniczą.

• komunikacja i synchronizacja:

Współpraca wymaga od procesów komunikowania się. Akcje komunikujących się procesów muszą być częściowo uporządkowane w czasie, poniewaŜ informacja musi najpierw zostać utworzona, zanim zostanie wykorzystana. Takie porządkowanie w czasie róŜnych procesów nazywa się synchronizacją. Współzawodnictwo takŜe wymaga synchronizacji - akcja procesu musi być wstrzymana, jeśli zasób potrzebny do jej wykonania jest w danej chwili zajęty przez inny proces. • program współbieŜny jest zbiorem procesów (wątków)

Page 39: Wykłady z przetwarzania równoległego i współbieznego

Strona 39 z 51

PROBLEM WZAJEMNEGO WYKLUCZENIA • W teorii procesów współbieŜnych wspólny obiekt, z którego moŜe

korzystać w sposób wyłączny wiele procesów (np. łazienka, koszyk w sklepie) nazywa się zasobem współdzielonym, natomiast fragment procesu, w którym korzysta on z obiektu dzielonego (mycie się, zakupy), nazywa się sekcją krytyczną tego procesu

• Problem wzajemnego wykluczenia definiuje się następująco: zsynchronizować N procesów, z których kaŜdy w nieskończonej pętli na przemian zajmuje się własnymi sprawami i wykonuje sekcję krytyczną, w taki sposób, aby wykonanie sekcji krytycznych jakichkolwiek dwóch lub więcej procesów nie pokrywało się w czasie Aby ten problem rozwiązać, naleŜy do treści tego procesu wprowadzić dodatkowe instrukcje poprzedzające sekcję krytyczną (nazywa się je protokołem wstępnym) i instrukcje następujące bezpośrednio po sekcji krytycznej (zwane protokołem końcowym)

Page 40: Wykłady z przetwarzania równoległego i współbieznego

Strona 40 z 51

PRZYKŁĄD PROBLEMU WZAJEMNEGO WYKLUCZENIA

• system komputerowy (jedno- lub wieloprocesorowy) z pamięcią wspólną

• dwa procesy współbieŜne, z których jeden realizuje operację x =

x + 1, a drugi x = x + 2 • kaŜda z powyŜszych operacji realizowana jest w za pomocą trzech

operacji maszynowych, tj. (i) load x, (ii) add 1 lub 2, (iii) store x • przypuśćmy, Ŝe x = 5, wówczas jeden z moŜliwych scenariuszy

wygląda następująco: 1. Pierwszy proces pobiera swoją kopię x : x = 5 . 2. Pierwszy proces oblicza x = x + 1 : x = 6 (lecz wartość wynikowa

nie zostaje jeszcze zapisana do pamięci wspólnej) . 3. Drugi proces włącza się do akcji, pobierając swoją kopię x : x = 5

. 4. Drugi proces oblicza x = x + 2 : x = 7, nie zapisując wyniku do

pamięci wspólnej. 5. Pierwszy proces zapisuje swój wynik x = 6 do pamięci. 6. Drugi proces zapisuje swój wynik x = 7 do pamięci wspólnej. Wniosek: Otrzymujemy x = 7 zamiast prawidlowego wyniku x = 8

Page 41: Wykłady z przetwarzania równoległego i współbieznego

Strona 41 z 51

BLOKADA I ZAGŁODZENIE • W poprawnym programie współbieŜnym, tj. posiadającym własność Ŝywotności, w kaŜdym procesie powinno w końcu nastąpić oczekiwane zdarzenie

• W niepoprawnym programie mogą wystąpić zjawiska blokady lub

zagłodzenia • Zbiór procesów znajduje się w stanie blokady, jeŜeli kaŜdy z tych

procesów jest wstrzymany w oczekiwaniu na zdarzenie, które moŜe spowodowane tylko przez jakiś inny proces z tego zbioru

• Inna nazwa zjawiska blokady to zastój, zakleszczenie lub martwy

punkt • Specyficznym przypadkiem nieskończonego wstrzymywania

procesu jest zjawisko zagłodzenia • JeŜeli sygnał synchronizacyjny moŜe być odebrany tylko przez

jeden z czekających nań procesów, powstaje problem, który z procesów wybrać.

• Zjawisko zagłodzenia występuje wówczas, gdy proces nie zostaje

wznowiony, mimo, Ŝe zdarzenie na które czeka występuje dowolną liczbę razy. Za kaŜdym razem, gdy proces ten mógłby być wznowiony, jest wybierany jakiś inny czekający proces.

Page 42: Wykłady z przetwarzania równoległego i współbieznego

Strona 42 z 51

MECHANIZMY SYNCHRONIZACJI

• Do rozwiązania problemu wzajemnego wykluczenia moŜna

zastosować niskopoziomowy mechanizm, jakim są przerwania, które umoŜliwiają przelączenie procesora na wykonywanie innego procesu

• W systemie jednoprocesorowym do realizacji wzajemnego

wykluczenia moŜna wykorzystać (i) procedury obsługi przerwań spowodowanych wykonaniem specjalnej instrukcji oraz (ii) mechanizm maskowania przerwań, umoŜliwiający zablokowanie następnych przerwań w czasie, gdy jest realizowana procedura obsługi poprzedniego przerwania

• Wadą takiego podejścia jest konieczność ingerencji w obszar

systemu operacyjnego (instrukcje procedury obsługi przerwania wykonywane są przez system operacyjny, który posiada najwyŜszy priorytet)

• w systemie wieloprocesorowym mechanizm przerwań nie

gwarantuje wzajemnego wykluczenia przy dostępie do pamięci, gdyŜ dwa róŜne procesory mogą w tym samym czasie realizować róŜne przerwania

• mechanizmy wysokopoziomowe: semafory i monitory

Page 43: Wykłady z przetwarzania równoległego i współbieznego

Strona 43 z 51

SEMAFORY

Semafor - abstrakcyjny typ danych, na którym oprócz określenia jego stanu początkowego, moŜna wykonywać tylko dwie operacje, umoŜliwiające wstrzymywanie i wznawianie procesów, a mianowicie:

• opuszczenie semafora,

• podniesienie semafora,

o których zakłada się, Ŝe są niepodzielne, co oznacza, Ŝe dana operacja musi być wykonana od początku do końca bez moŜliwości przerwania przez inną operację

SEMAFOR BINARNY

definicja klasyczna: • opuszczenie semafora binarnego to wykonanie instrukcji PB(S):

czekaj aŜ S = = 1; wtedy ustaw S = 0 (i kontynuuj proces)

• podniesienie semafora binarnego VB(S) :

S = 1

definicja praktyczna : • opuszczenie semafora binarnego PB(S) :

jeŜeli S = = 1, to S =0, w przeciwnym razie wstrzymaj

działanie procesu wykonującego tę operację;

• podniesienie semafora binarnego VB(S) :

jeŜeli są procesy wstrzymane w wyniku wykonania operacji

opuszczania semafora S, to wznów jeden z nich, w przeciwnym

razie S = 1.

Page 44: Wykłady z przetwarzania równoległego i współbieznego

Strona 44 z 51

SEMAFOR OGÓLNY

definicja praktyczna : • opuszczenie semafora ogólnego P(S) :

jeŜeli S > 0, to S =S -1, w przeciwnym razie wstrzymaj

działanie procesu wykonującego tę operację;

• podniesienie semafora ogólnego V(S) :

jeŜeli są procesy wstrzymane w wyniku wykonania operacji

opuszczania semafora S, to wznów jeden z nich, w przeciwnym

razie S = S + 1 .

Definiowanie zmiennych semaforowych w programach semafor ogólny semaphore SEM = 4; semafor binarny binary semaphore SEM = 1;

Page 45: Wykłady z przetwarzania równoległego i współbieznego

Strona 45 z 51

PRZYKŁADY PROGRAMÓW WSPÓŁBIEśNYCH

Z WYKORZYSTANIEM SEMAFORÓW

WZAJEMNE WYKLUCZENIE int n = ? ;

binary semaphore S = 1; process P ( int i ) /* i = 0 . . n-1 */

{ while {true}

{ własne_sprawy;

PB(S);

sekcja_krytyczna;

VB(S);

} }

Page 46: Wykłady z przetwarzania równoległego i współbieznego

Strona 46 z 51

PROBLEM PIĘCIU FILOZOFÓW

Rozwiązanie z moŜliwością blokady binary semaphore widelec [5] = {1, 1, 1, 1, 1}; process FILOZOF(int i) /* i = 0 . . 4 */

{ while {true}

{ myślenie;

PB(widelec [i] );

PB(widelec[ (i+1) % 5 ] );

jedzenie;

VB(widelec [i] );

VB(widelec[ (i+1) % 5 ] );

} }

Page 47: Wykłady z przetwarzania równoległego i współbieznego

Strona 47 z 51

PROBLEM PIĘCIU FILOZOFÓW

Rozwiązanie poprawne binary semaphore widelec [5] = {1, 1, 1, 1, 1};

semaphore LOKAJ = 4; process FILOZOF(int i) /* i = 0 . . 4 */

{ while {true}

{ myślenie;

P(LOKAJ);

PB(widelec [i] );

PB(widelec[ (i+1) % 5 ] );

jedzenie;

VB(widelec [i] );

VB(widelec[ (i+1) % 5 ] );

V(LOKAJ); } }

Page 48: Wykłady z przetwarzania równoległego i współbieznego

Strona 48 z 51

MONITORY

Monitor to zebrane w jednej konstrukcji programowej pewne wyróŜnione zmienne oraz procedury i funkcje synchronizujące działające na tych zmiennych. Część tych procedur i funkcji jest udostępniona na zewnątrz monitora. Tylko ich wywołanie umoŜliwia procesom dostęp do zmiennych ukrytych wewnątrz monitora.

• Wykonanie procedury monitora jest sekcją krytyczną wykonu- jącego go procesu. Oznacza to, Ŝe w danej chwili tylko jeden spośród współbieŜnie wykonujących się procesów moŜe wykonywać procedurę monitora.

• Oprócz tego istnieje moŜliwość wznawiania i wstrzymywania

procesów wewnątrz procedury monitorowej. SłuŜą do tego zmienne specjalnego typu warunkowego (condition). Na zmiennych tego typu moŜna wykonywać dwie operacje:

- wait ( c ) powoduje wstrzymanie procesu wykonującego tę operację i wstawienie go na koniec kolejki związanej ze zmienną c , z jednoczesnym zwolnieniem monitora, - signal ( c ) powoduje wznowienie pierwszego procesu wstrzy manego w kolejce związanej ze zmienną c . Jeśli operacja ta nie jest ostatnią instrukcją procedury monitorowej, to proces wyko- nujący tę operację jest wstrzymany aŜ do chwili, gdy wznowio- ny przezeń proces zwolni monitor. Jeśli w chwili wywołania operacji signal Ŝaden proces nie czeka w kolejce, to operacja ta ma efekt pusty.

Page 49: Wykłady z przetwarzania równoległego i współbieznego

Strona 49 z 51

PROCES A MONITOR M procedure P(x : integer);

M.P(y) begin Procesy . . . oczekujące na wejście wait ( C ) ; . . . Procesy wstrzymane signal ( C ) ; Procesy po signal oczekujące na C . . . end;

• Gdy jakiś proces wykonuje w danej chwili procedurę monitora, jednoczśnie mogą Ŝądać dostępu do monitora inne procesy. Będą one czekać w trojakiego rodzaju kolejkach :

• Procesy, które chcą rozpocząć wykonanie procedury monitora, czekają w kolejce wejściowej, a te, które zostały wstrzymane w wyniku operacji wait, czekają w kolejce związanej ze zmienną c. Na wejście do monitora, odłoŜone na stos, mogą równieŜ czekać procesy, które wykonały operację signal, ale same zostały wstrzymane.

• JeŜeli proces P znajdujący się wewnatrz monitora wykona operację signal(c) , będzie odłoŜony na stos, a do monitora wejdzie pierwszy proces czekający w kolejce związanej ze zmienną c .

• JeŜeli proces P opuści monitor albo wykonując operację wait(c), albo kończąc procedurę monitora, to do monitora wejdzie proces odłoŜony, który poprzednio wznowił proces P . Jeśli takiego procesu nie ma, oznacza to. Ŝe stos procesów odłoŜonych jest pusty i do monitora moŜe wejść proces czekający w kolejce wejściowej.

Page 50: Wykłady z przetwarzania równoległego i współbieznego

Strona 50 z 51

PROBLEM PIĘCIU FILOZOFÓW

ROZWIĄZANIE POPRAWNE Z MONITOREM

monitor WIDELCE;

var WIDELEC : array [0 .. 4] of condition; zajęty : array [0 .. 4] of boolean; LOKAJ : condition; jest , i : integer; export procedure BIORĘ (i : integer); begin if jest = 4 then wait (LOKAJ); jest := jest + 1;

if zajęty[i] then wait (WIDELEC [ i ] ); zajęty [ i ] := true;

if zajęty[ (i+1) mod 5] then wait (WIDELEC [(i+1) mod 5 ] ); zajęty [ (i+1) mod 5 ] := true;

end; {BIORĘ}

export procedure ODKŁADAM (i : integer); begin zajęty [i] := false; SIGNAL (WIDELEC [i] );

zajęty[ (i+1) mod 5] := false; signal (WIDELEC [ (i+1) mod 5 ] );

jest := jest -1; SIGNAL (LOKAJ);

end; {ODKŁADAM}

begin for i := 0 to 4 do zajęty [i] := false; jest := 0;

end; {WIDELCE}

Page 51: Wykłady z przetwarzania równoległego i współbieznego

Strona 51 z 51

PROBLEM PIĘCIU FILOZOFÓW

ROZWIĄZANIE POPRAWNE Z MONITOREM

process FILOZOF (i: 0 .. 4);

begin

while (true) do

begin

myślenie;

WIDELCE . BIORĘ (i);

jedzenie;

WIDELCE . ODKŁADAM (i);

end;

end;