Académique Documents
Professionnel Documents
Culture Documents
Distribuda
Um curso prtico
Mario J. Jnior Gabriel P. Silva
Colaborao: Adriano O. Cru! Julio S. Aude
Curso de "n#orm$ti%a & DCC'"M ( )*+J
,menta
Paradigma de -ro%a de Mensagens
P.M
MP"
Paradigma de Mem/ria Com0artil1ada
O0enMP
P-1reads
,menta
Con%eitos 2$si%os de %on%orr3n%ia e
0aralelismo. Con%eitos de avaliao de
desem0en1o. Modelos de 0rogramao
0aralela. Modelos de 0rogramao 0or tro%a de
mensagens. Programao utiliando P.M e
MP". ,4em0los.
Modelos de 0rogramao %om Mem/ria
Com0artil1ada. Con%eitos de -1read e
Pro%essos. Primitivas de Sin%roniao em
mem/ria %om0artil1ada. Algoritmos 0aralelos
%om mem/ria %om0artil1ada. Programao
utiliando bibliote%as O0enMP e Pt1reads.
,4em0los. *erramentas de avaliao e
de0urao de 0rogramas 0aralelos.
Con%eitos 2$si%os de
Paralelismo
Pro%esso
)m 0ro%esso 5 %riado 0ara e4e%uo de um
0rograma 0elo sistema o0era%ional.
A %riao de um 0ro%esso envolve os seguintes
0assos:
,4%luso Mtua
2arreira
Alo%ao de Mem/ria Privada e Global.
Modelos de Programao
Ar:uitetura de Comuni%ao
-ro%a de Mensagens
Comuni%ao atrav5s do envio e40l%ito de
mensagens.
-are#as so ma0eadas em 0ro%essos! %ada um
%om sua mem/ria 0rivada.
Pro%essos 0odem ser %riados de #orma est$ti%a
ou din@mi%a.
Sin%roniao 5 #eita de #orma im0l%ita 0ela
tro%a de mensagens ou 0or o0era=es %oletivas
de sin%roniao >barreiras?.
-ro%a de Mensagens ' Modelo
recv(&y, 1);
send(&x, 2);
Processo 1
x
Processo 2
y
Movimento
dos Dados
Comuni%ao Sn%rona
O 0ro%esso :ue dese;a enviar uma mensagem
#a uma re:uisio ini%ial de autoriao 0ara
enviar a mensagem ao 0ro%esso destinat$rio.
De0ois de re%eber essa autoriao! a
o0erao de envio >AsendA? 5 realiada.
A o0erao de envio s/ se %om0leta :uando a
o0erao de re%e0o >8re%eive9?
%orres0ondente retorna uma mensagem de
8a%BnoClegement9.
Portanto! ao se %on%luir a o0erao de envio!
os bu##ers e estruturas de dados utiliados na
%omuni%ao 0odem ser reutiliados.
Comuni%ao Sn%rona
,ste modo de %omuni%ao 5 sim0les e
seguro! %ontudo elimina a 0ossibilidade de
1aver su0er0osio entre o 0ro%essamento da
a0li%ao e o 0ro%essamento da transmisso
das mensagens.
+e:uer um 0roto%olo de :uatro #ases 0ara a
sua im0lementao do lado do transmissor:
0edido de autoriao 0ara transmitir6
re%ebimento da autoriao6 transmisso
0ro0riamente dita da mensagem6 e
re%ebimento da mensagem de
8a%BnoCledgement.
Comuni%ao Sn%rona
Pede para enviar
Confirmao
Mensagem
send();
Processo 1
Processo
Suspenso
empo
recv();
Processo 2
!m"os coninuam
Comuni%ao Sn%rona
Pede para enviar
Confirmao
Mensagem
send();
Processo 1
empo
recv();
Processo 2
!m"os coninuam
Processo
Suspenso
Comuni%ao Assn%rona
2lo:ueante
A o0erao de envio >AsendA? s/ retorna o
%ontrole 0ara o 0ro%esso :ue a %1amou a0/s
ter sido #eita a %/0ia da mensagem a ser
enviada de um bu##er da a0li%ao 0ara um
bu##er do sistema o0era%ional.
Portanto! ao 1aver o retorno da o0erao de
envio! a a0li%ao est$ livre 0ara reutiliar o
seu bu##er! embora no 1a;a nen1uma garantia
de :ue a transmisso da mensagem ten1a
%om0letado ou v$ %om0letar satis#atoriamente.
A operao de envio bloqueante difere da
operao de envio sncrona, uma vez que
no implementado o protocolo de
quatro fases entre os processos origem e
destino.
A operao de recepo ("receive")
bloqueante semelhante operao de
recepo sncrona, s! retornando para o
processo que a chamou ap!s ter
concludo a transfer"ncia da mensagem
do buffer do sistema para o buffer
especificado pela aplicao. A diferena
em relao a operao de recepo
sncrona que a mensagem de
acknowledgement no enviada.
Comuni%ao Assn%rona
2lo:ueante
7a 0rimeira #ase! a o0erao de AsendA retorna
imediatamente! tendo a0enas dado in%io ao
0ro%esso de transmisso da mensagem e a
o0erao de Are%eiveA retorna a0/s noti#i%ar a
inteno do 0ro%esso de re%eber uma
mensagem.
As o0era=es de envio e re%e0o
0ro0riamente ditas so realiadas de #orma
assn%rona 0elo sistema.
O retorno das o0era=es de 8send9 e de
8re%eive9 nada garantem e no autoria a
reutiliao das estruturas de dados 0ara nova
mensagem.
Comuni%ao Assn%rona
7o 2lo:ueante
7a segunda #ase! 5 veri#i%ado se a o0erao de
tro%a de mensagens ini%iada anteriormente
0elas 0rimitivas AsendA eAre%eiveA ;$ #oi
%on%luda.
Somente a0/s esta veri#i%ao 5 :ue o
0ro%esso :ue realiou o envio de dados 0ode
alterar %om segurana sua $rea de dados
original.
,ste modo de %omuni%ao 5 o :ue 0ermite
maior su0er0osio no tem0o entre
%om0uta=es da a0li%ao e o 0ro%essamento
da transmisso das mensagens.
Comuni%ao Assn%rona
7o 2lo:ueante
Comuni%ao Assn%rona
Buffer de
mensagens
send();
Processo 1
empo
recv();
Processo 2
Coninua
o processo
#$ buffer
de mensagen
7e%essita de um bu##er 0ara guardar a mensagem
Comuni%ao Assn%rona
Buffer de
mensagens
send();
Processo 1
empo
recv();
Processo 2
Coninua
o processo
Coninua o
processo
,ta0as da Criao de um
Programa Paralelo
De%om0osio da
Com0utao em -are#as
2us%a e40or su#i%iente 0aralelismo sem
gerar uma sobre%arga de geren%iamento
das tare#as :ue se torne signi#i%ativo
0erante o trabal1o til a ser #eito.
Ou se;a! as tare#as de %omuni%ao e
sin%roniao no 0odem ser mais
%om0le4as :ue as tare#as de
%om0utao. Se isto o%orrer! a e4e%uo
em 0aralelo %ertamente ser$ mais
ine#i%iente do :ue a se:<en%ial.
Ma0eamento nos
Pro%essadores
Os 0ro%essos e t1reads devem ser
ma0eadas 0ara os 0ro%essadores reais
:ue e4istam no sistema.
Para :ue isto se;a #eito de uma maneira
e#i%iente! deve'se e40lorar a lo%alidade
da rede de inter%one4o! mantendo os
0ro%essos rela%ionados alo%ados ao
mesmo 0ro%essador.
Se a rede a0resentar %ustos de
%omuni%ao vari$veis! alo%ar os
0ro%essos %om maior %arga de
%omuni%ao aos n/s %om menor %usto
de %omuni%ao entre si.
Alo%ao de -are#as
As tare#as devem ser alo%adas a
0ro%essos ou t1reads de modo :ue:
o
S
(
p
)
Mesmo %om um nmero in#inito de
0ro%essadores! o s0eedu0 m$4imo est$
limitado a F(# ! onde # 5 a #rao serial do
0rograma.
,4em0lo:
II(JY
FO(JO
FR(FJ
IF(FF
Tuatro Provas
JG(JO
FJ(FJ
FP(FF
FP(FI