PROGRAMOWANIE SYSTEMÓW WIELOPROCESOROWYCH
- podział programu na zadania
- dobór języka programowania równoległego
- przydział zadań procesorom
- komunikacja między procesorami i synchronizacja ich pracy
podział programu na zadania
Zadania współbieżne / równoległe
Procesor 1 Procesor 2
Zadaniami są procedury
for i=1 to N do
begin
a[i]:=b[i]+c[i]
d[i]:=a[i]+e[i]
end
Procesor 1
for i=1 to N div 2 do
begin
a[i]:=b[i]+c[i]
d[i]:=a[i]+e[i]
end
Procesor 2
for i=N div 2 to N do
begin
a[i]:=b[i]+c[i]
d[i]:=a[i]+e[i]
end
dobór j. programowania równoległego
Algol 68, Dijkstra
cobegin
S1;
S2; cobegin
… coend
Sn;
coend
Concurrent Pascal (współbieżny P); Modula; Ada; C*; DINO; ParallelDistributedC; PC; Dateparallel C; Fortran 90; Fortran D; Viena Fortran; HPF; Occam (notacja CSP) - synchronizacje przez programowe kanały; Linda (truple space); Strand; Schedule
przydział zadań procesorom
występowanie w zadaniu instrukcji warunkowych
zmienna szybkość pracy procesorów
komunikacja między procesorowa
konflikty w dostępie do wspólnej pamięci (systemy ze wspólna pamięcią)
konflikty w transmisji komunikatu przez sieć połączeń
przydział statyczny Iw trakcie transmisji)
przydział dynamiczny
komunikacja między procesorami i synchronizacja ich pracy
synchronizacja przez
- zmienne dzielone (wspólne)
aktywne czekanie
semafory
monitory
- komunikacja przez przesyłanie komunikatów
Cele:
- sterowanie interferencją procesów
- porządkowanie zdarzeń
sekcja krytyczna - ciąg instrukcji wykonanych w danym odcinku czasowym w ramach jednego tylko procesu jako operacja jednostkowa i niepodzielna
wykluczenie wzajemne - wchodzi do sekcji i wyklucza inne
aktywne czekanie (busy waiting, spin-lock) - pojedyncza zmienna (flaga0; mała liczba procesów, krótkie sekcje krytyczne
semafory (Dijkstra) - to zmienne całkowite mogące przyjmować jedynie wartości nieujemne. Stowarzyszona z nią jest kolejka w której ustawiają się procesy oczekujące na dostęp do zasobów
regulamin naturalny (FIFO - First In First Out) (FCFS - First Come First Served)
P3P2P1 P3P2P1
regulamin stosowy (LIFO - Last In First Out)
P3 P2 P1 P1 P2 P3
Program gł
Procedura A
Procedura B