Documente Academic
Documente Profesional
Documente Cultură
Roteiro - ExclusoMtua
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
Introduo
acesso a eles
processos ou threads
compartilha x seja 0
essa varivel
RogrioSantosPozza
Introduo
atomicamente
executada pelo processador, como: LD R,x; l o valor de x para o registrador R INC R ; incrementa o registrador R ST R, x; armazena o valor do registrador R em x
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
Introduo
Agora a execuo dos processos P0 e P1 pode ser intercaladas: P0: LD R,x ; l o valor de x para R P0: INC R ; incrementa o registrador R P1: LD R,x ; l o valor de x para R P1: INC R ; incrementa o registrador R P0: ST R,x ; armazena o valor de R em x P1: ST R,x ; armazena o valor de R em x
O problema assegurar que x=x+1 seja executado atomicamente A seo que deve ser executada atomicamente chamada de regio
Introduo
Este um problemas fundamentais na computao concorrente Pode-se abstrair o problema da excluso mtua implementando a
interface mostrada abaixo: public interface Lock{ public void requestCS(int pid); //deve bloquear public void releaseCS(int pid); }
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
Introduo
(releaseCS)
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
Algoritmo de Peterson
processos ou threads
Utiliza uma varivel boolean abre inicializada como verdadeira O protocolo de entrada deve esperar que seu valor seja true Se for true, o processo entra na regio crtica e seta o valor de abre
para false
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
Algoritmo de Peterson
classAttemptimplementsLock{ booleanabre=true; publicvoidrequestCS(inti){//verificaovalordeabre while(!abre);//esperaocupada abre=false;//atribuifalsoparaentrarnaregiocrtica } publicvoidreleaseCS(inti){ abre=true;//atribuiverdadeiroaosair } }
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
10
Algoritmo de Peterson
RogrioSantosPozza
Algoritmo de Peterson
classAttemptimplementsLock{ booleanabre=true; publicvoidrequestCS(inti) while(!abre); abre=false; } publicvoidreleaseCS(inti){ abre=true; } } RogrioSantosPozza TecnologiaJavaSistemasDistribudos 12 T1 T2 T3 T4 Ambosnaregiocrtica Exclusomtuaviolada
Algoritmo de Peterson
querCS[0] e querCS[1]
Cada processo primeiro seta seu prprio querCS como true e espera
(P0 e P1)
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
13
Algoritmo de Peterson
classAttempt1implementsLock{ booleanquerCS[]={false,false}; publicvoidrequestCS(inti){//protocolodeentrada querCS[i]=true;//intenodeentrar while(querCS[1i]);//Esperaocupada } publicvoidreleaseCS(inti){ querCS[i]=false;//protocolodesada } } RogrioSantosPozza TecnologiaJavaSistemasDistribudos 14
Algoritmo de Peterson
porque ambos processos podem setar querCS como true e executar indefinidamente
varivel vez
Um processo espera por sua vez para entrar na regio crtica Ao sair da regio crtica setado o valor para 1-i
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
15
Algoritmo de Peterson
classAttempt2implementsLock{ Esseprotocologaranteaexclusomtua
intvez=0;
} }
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
16
Algoritmo de Peterson
Combinando o que foi visto dos algoritmos tem-se um outra proposta Neste caso mantem-se querCS[0] e querCS[1] e uma varivel vez A chamada para os processos funciona do mesmo jeito que os
classPetersonAlgorithmimplementsLock{ booleanquerCS[]={false,false}; intturn=1; publicvoidrequestCS(inti){ intj=1i; querCS[i]=true; turn=j; while(querCS[j]&&(turn==j));} publicvoidreleaseCS(inti){ querCS[i]=false; }} TecnologiaJavaSistemasDistribudos
anteriores
RogrioSantosPozza
17
Algoritmo de Peterson
propriedades:
Excluso Mtua dois processos no podem executar a mesma seo ao mesmo tempo
Progresso se um ou mais processos tentar entrar na regio crtica e no h processo algum dentro dela, pelo menos um processo deve ser capaz de entrar
Liberdade de Starvation se um processo est tentando entrar na regio crtica, eventualmente ele ter sucesso
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
18
citas? Prove.
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
19
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
20
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
21
22
Soluo de Hardware
Solues via software so complexas e exigem muito processamento Excluso mtua pode ser conseguida com uma pequena ajuda do
hardware
Em um sistema monoprocessado, um processo pode desabilitar todas as interrupes antes de entrar na regio crtica. Isso garante que o processador no o interrompa enquanto o processo no terminar o processamento
Muitas mquinas tm instrues com alto nvel de atomicidade para leitura ou escrita
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
23
Soluo de Hardware
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
24
Soluo de Hardware
ocupada
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
25
Exerccios
Um processo no algoritmo de Peterson seta a sua varivel vez ao invs de setar a do outro processo
RogrioSantosPozza
TecnologiaJavaSistemasDistribudos
26
Exerccios
processos. Este protocolo satisfaz (a) excluso mtua e (b) liberdade de livelock (ambos processos tentarem entrar na regio crtica e nenhum deles conseguirem)? Ele satisfaz a liberdade de starvation?
swap.
RogrioSantosPozza TecnologiaJavaSistemasDistribudos 27