programação concorrente e paralela - puc-rionoemi/pcp-16/aula1/aula1.pdf · o que e...
TRANSCRIPT
![Page 1: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/1.jpg)
Programacao Concorrente e Paralela
Noemi Rodriguez
2016
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 2: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/2.jpg)
o que e programacao concorrente e paralela?
programacao concorrente: composicao de linhas de atividadesindependentes
programacao paralela: execucao simultanea de linhas de atividades
Go blog (Rob Pike)
Concurrency is about dealing with lots of things at once. Parallelism isabout doing lots of things at once.
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 3: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/3.jpg)
Programacao Concorrente
nao necessariamente envolve diferentes linhas de execucao
alternativas para modelos de servidores concorrentes
mas modelo mais comum de concorrencia e multitarefa
necessidade de comunicacao entre diferentes linhas deexecucao
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 4: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/4.jpg)
programacao concorrente e paralela — comunicacao entreprocessos
acesso compartilhado a dados
concorrencia: bases de dados, informacoes sobre conexoes, ...paralelismo: dados de problemas cientıficos, ...
espera por estados desejaveis
concorrencia: nova requisicao de cliente, ...paralelismo: novos resultados, novos dados para
processamento, ...
sincronizacao!
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 5: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/5.jpg)
Programacao Concorrente
linhas de controle independentes ativas simultaneamente
o que e “atividade”?um processador X multiplos processadores
estudo nasceu com sistemas operacionais
importancia hoje: atendimentos concorrentes
disputa por recursos!
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 6: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/6.jpg)
Programacao Paralela
execucao realmente simultanea
linhas de execucao que colaboram (ou nao) em busca desolucao
paralelismo para melhoria de desempenho (ou viabilidade deexecucao)
paralelismo e concorrencia
em ambos os casos necessidade de coordenacao entreatividades
cooperacao x competicao
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 7: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/7.jpg)
Objetivos da disciplina
princıpios e tecnicas de programacao concorrentemultiprocessadores
memoria compartilhadatroca de mensagens
memoria distribuıda
troca de mensagens
padroes de programacao paralela
exemplos classicos: multiplicacao de matrizes, resolucao desistemascasos mais irregulares: espacos de busca
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 8: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/8.jpg)
que princıpios e tecnicas sao esses?
notacoes para controle de fluxo
criacao de processos e threads, ou outras formas de expressaode paralelismo
abstracoes de comunicacao
sincronizacao em sistemas de memoria compartilhada
... mas problemas tambem existem sem memoriacompartilhada...
propriedades: safety e liveness
avaliacao de desempenho
balanceamento de carga
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 9: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/9.jpg)
Referencias
M. Herlihy, N. Shavit. The Art of MultiprocessorProgramming. Morgan Kaufmann, 2008.
M. Quinn. Parallel Programming in C with MPI andOpenMP. McGraw-Hill, 2003.
P. Pacheco. An Introduction to Parallel Programming.McGraw-Hill, 2011.
artigos tecnicos.
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 10: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/10.jpg)
Fluxos de Execucao
classificacao
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 11: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/11.jpg)
Fluxos de Execucao
processos, threads preemptivos, threads cooperativos
pilha de execucaodados globais?espacos de enderecamento protegidos?preempcao?
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 12: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/12.jpg)
Fluxos Independentes
transferência
pilha 1 pilha 2
globaisarquivos abertos
...
pilhas independentes?
acesso a globais?
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 13: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/13.jpg)
Processos
transferência
pilha 1 pilha 2
globaisglobais
descritoreslocais
descritoreslocais
descritoresglobais
pilhas independentes
globais independentes
descritores podem ser compartilhados
preempcao
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 14: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/14.jpg)
Threads Preemptivas
transferência
pilha 1 pilha 2
globais
descritores
pilhas independentes
globais compartilhadas
descritores compartilhados
preempcao
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 15: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/15.jpg)
Preempcao
bloqueado
finalizado
em execução
prontoI/Ocompletado escalonado
requisição i/o
fim
preempção
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 16: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/16.jpg)
Threads Cooperativas
transferência
pilha 1 pilha 2
globais
descritores
pilhas independentes
globais compartilhadas
descritores compartilhados
sem preempcao
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 17: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/17.jpg)
Concorrencia: modelo mais comum
threads preemptivos com memoria compartilhada
pthreads
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 18: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/18.jpg)
Exemplo: Busca de primos com memoria compartilhada
imprimir primos entre 1 e 1010
maquina de 10 processadores
um thread por processador
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 19: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/19.jpg)
Busca de Primos com Memoria Compartilhada
void primePrint (void) {
long int j;
for (j = 1, j<100000000000; j++) {
if (isPrime(j))
printf("%ld\n", j);
}
}
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 20: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/20.jpg)
Busca de Primos com Memoria Compartilhada
ideia 1: cada thread testa um intervalo pre-definido
cada thread executa:
void primePrint (void){
long int j;
int i = ThreadID.get(); // IDs in {0..9}
for (j = i*109+1, j<(i+1)*109; j++) {
if (isPrime(j))
printf("%ld\n", j);
}
}
nem todos os intervalos tem numeros iguais de primosnumeros grandes: maior dificuldade computacionaldesbalanceamento
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 21: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/21.jpg)
Busca de Primos com Memoria Compartilhada
ideia 2: contador compartilhado
int counter = new Counter(1);
cada thread executa:
void primePrint {
long j = 0;
while (...) {
j = counter.getAndIncrement();
if (isPrime(j))
print(j);
}
}
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 22: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/22.jpg)
Contador Compartilhado
o objeto counter e unico para todos os threads
public class Counter {
private long value;
public long getAndIncrement() {
return value++;
}
}
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 23: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/23.jpg)
Contador Compartilhado
o objeto counter e unico para todos os threads
e o problema e que podemos ter:
public class Counter { private long value;
public long getAndIncrement() { return value++; }}
temp = value;value = value + 1;return temp
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 24: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/24.jpg)
Memoria Compartilhada e Preempcao
muitos entrelacamentos sao possıveis...
thread 1: thread 2:
temp = value
temp = value
temp = temp + 1
temp = temp +1
value = temp
value = temp
que mundo e esse em que value++ nao tem o efeito queesperamos...?
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 25: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/25.jpg)
Memoria Compartilhada e Preempcao
e mais do que isso...
nao basta pensar nos entrelacamentos possıveis!
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 26: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/26.jpg)
Memoria Compartilhada e Preempcao
You don’t know Jack about shared variables or memorymodels. Hans-J. Boehm and Sarita V. Adve. 2012. Commun.ACM 55, 2 (February 2012), 48-54.
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 27: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/27.jpg)
Memoria Compartilhada e Preempcao
imagine que o programa usa valores maiores do que a palavrado hardware
x++ traduzido para algo como:
tmp_hi = x_hi;
tmp_lo = x_lo;
(tmp_hi, tmp_lo)++;
x_hi = tmp_hi;
x_lo = tmp_lo;
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 28: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/28.jpg)
Memoria Compartilhada e Preempcao
ler artigo Boehm para a proxima aula
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 29: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/29.jpg)
Concorrencia: programador sempre tera que lidar comdificuldades de programacao?
mecanismos e tecnicas
mecanismos para lidar com memoria compartilhada
semaforos e locksmonitoresmecanismos nao bloqueantesmemoria transacional
eliminar memoria compartilhada
troca de mensagens e outras abstracoes
utilizar multithreading cooperativo
solucoes mais recentespropriedades garantidas pelo compilador
D, DPJ, ...
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 30: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/30.jpg)
Paralelismo: questoes
como paralelizar a solucao de um problema?
objetivo maior normalmente e obter menor tempo de execucaodesenho da solucao paralela normalmente e dependente daplataforma de execucao
que plataformas facilitam o desenvolvimento e depuracao?
como medir o tempo de execucao e comparar solucoes?
tolerancia a falhas: como garantir que o trabalho feito ate omomento da falha nao seja perdido?
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 31: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/31.jpg)
Inicialmente: Sincronizacao
como criar mecanismos que garantam acesso exclusivo aosdados em ambientes de memoria compartilhada...?
propriedades de safety e liveness
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 32: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/32.jpg)
Secoes Crıticas
conceito classico em sistemas de memoria compartilhada
secao crıtica: trecho de codigo que apenas uma thread podeestar executando em determinado momento
public class Counter {
private long value;
private Lock lock;
public long getAndIncrement() {
int temp = value;
value = value + 1;
return temp;
}
}
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 33: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/33.jpg)
Garantia de Exclusao Mutua
protocolos de entrada e saıda de regioes crıticas
public class Counter {
private long value;
private Lock lock;
public long getAndIncrement() {
lock.lock();
try {
int temp = value;
value = value + 1;
} finally {
lock.unlock();
}
return temp;
}
}
se executado em threads 0 e 1: RC0 → RC1 ou RC1 → RC0
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 34: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/34.jpg)
Exclusao Mutua – Propriedades
garantia da exclusao mutua
ausencia de deadlock
entrada em algum momento (ausencia de starvation)
ausencia de esperas desnecessarias
thread nao espera quando nao ha competicao pela RC
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 35: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/35.jpg)
Classes de Propriedades
safety
programa nunca entra em estado ruim
liveness
programa em algum momento entra em estado bom
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 36: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/36.jpg)
Solucoes de exclusao mutua utilizando espera ocupada
estudo classico
alguma utilidade com multiplos processadores
algoritmos interessantes (!)
complexidade: caso com 2 threads e o mais inteligıvel
Peterson
Filtros
Padaria
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 37: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/37.jpg)
Exclusao Mutua – Propriedades
garantia da exclusao mutua
safety
ausencia de deadlock
safety
entrada em algum momento (ausencia de starvation)
liveness
ausencia de esperas desnecessarias
nıvel de concorrencia
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 38: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/38.jpg)
Exclusao mutua: algoritmo de Peterson
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 39: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/39.jpg)
Exclusao Mutua
public void lock(0) { flag[A] = true; victim = A; while (flag[B] && victim == A) {};
public void lock(0) { flag[B] = true; victim = B; while (flag[A] && victim == B) {};
funciona?
vamos supor, por contradicao, que ambos estao na secaocrıtica
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 40: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/40.jpg)
... funciona? prova por contradicao
Art of Multiprocessor Programming
55
• do código: – writeA(flag[A]=true) ! writeA(victim=A) !
readA(flag[B]) ! readA(victim) !CSA – writeB(flag[B]=true) ! writeB(victim=B) !
readB(flag[A]) ! readB(victim) !CSB • vamos assumir:
– writeB(victim=B) ! writeA(victim=A) • como A entrou na RC:
• writeA(victim=A) ! readA(flag[B] == false) – mas então
• writeB(flag[B]=true) ! writeB(victim=B) ! writeA(victim=A) ! readA(flag[B] == false)
public void lock() { flag[i] = true; victim = i; while (flag[j] && victim == i) {};
public void lock(1) { flag[A] = true; victim = A; while (flag[B] && victim == A) {};
Noemi Rodriguez Programacao Concorrente e Paralela
![Page 41: Programação Concorrente e Paralela - PUC-Rionoemi/pcp-16/aula1/aula1.pdf · o que e programa˘c~ao concorrente e paralela? programa˘c~ao concorrente:composi˘c~ao de linhas de](https://reader030.vdocuments.site/reader030/viewer/2022041201/5d4463d588c993050a8d9265/html5/thumbnails/41.jpg)
Exclusao Mutua: problemas!
solucoes baseadas em variaveis dependem de ordenacao quepode se perder na compilacao...
public void lock(0) { victim = 0; [2] flag[0] = true; [3] while (flag[1] && victim == 0) [4] {};
public void lock(1) { victim = 1; [1] flag[1] = true; [5] while (flag[0] && victim == 1) [6] {};
Noemi Rodriguez Programacao Concorrente e Paralela