Programação Concorrente
description
Transcript of Programação Concorrente
![Page 1: Programação Concorrente](https://reader036.fdocumentos.tips/reader036/viewer/2022082518/5681507a550346895dbe776e/html5/thumbnails/1.jpg)
Programação Concorrente
Eduardo Nicola F. Zagari
Principles of Concurrent and Distributed Programming - Ben-Ari
![Page 2: Programação Concorrente](https://reader036.fdocumentos.tips/reader036/viewer/2022082518/5681507a550346895dbe776e/html5/thumbnails/2.jpg)
O que é Programação Concorrente
• Introdução
• E/S e Computação sobrepostas
• Multiprogramação
• Multitarefa
![Page 3: Programação Concorrente](https://reader036.fdocumentos.tips/reader036/viewer/2022082518/5681507a550346895dbe776e/html5/thumbnails/3.jpg)
Introdução
• Programa “ordinário”: instruções executadas seqüencialmente
• Programa Concorrente: conjunto de programas seqüenciais (processos) executados em um pseudo-parelelismo
• Pseudo-parelelismo: paralelismo abstrato– não necessariamente vários processadores
![Page 4: Programação Concorrente](https://reader036.fdocumentos.tips/reader036/viewer/2022082518/5681507a550346895dbe776e/html5/thumbnails/4.jpg)
E/S e Computação Sobrepostas
• Digitação de 60 palavras por minuto
• Impressão de 200 caracteres por segundo
• Processamento de 1 caracter a cada 10 s.
• Uso da abstração da programação concorrente
![Page 5: Programação Concorrente](https://reader036.fdocumentos.tips/reader036/viewer/2022082518/5681507a550346895dbe776e/html5/thumbnails/5.jpg)
E/S e Computação Sobrepostas
Principal
E/S
Início E/S Fim E/S
Aguarda E/S
Tempo
![Page 6: Programação Concorrente](https://reader036.fdocumentos.tips/reader036/viewer/2022082518/5681507a550346895dbe776e/html5/thumbnails/6.jpg)
Multiprogramação
• Programa típico:Loop
Read;
Process;
Write;
End-loop.
• Generalização:E/S de um processo é feita
sobreposta com a computação de outro.
• Multiprogramação:execução concorrente de
vários processos independentes em um processador
![Page 7: Programação Concorrente](https://reader036.fdocumentos.tips/reader036/viewer/2022082518/5681507a550346895dbe776e/html5/thumbnails/7.jpg)
Multiprogramação
• Generalização adicional: Compartilhamento de tempo (time-sharing)– compartilhamento do processador entre
computações.
• Escalonador
• Sistemas de tempo compartilhado: bons tempos de resposta, mesmo em sistemas com grandes processos
![Page 8: Programação Concorrente](https://reader036.fdocumentos.tips/reader036/viewer/2022082518/5681507a550346895dbe776e/html5/thumbnails/8.jpg)
Multiprogramação
• Multiprogramação em computadores pessoais– processos concorrentes usando diferentes
recursos
• Enfim: abstração de programação concorrente é aplicável à multiprogramação
![Page 9: Programação Concorrente](https://reader036.fdocumentos.tips/reader036/viewer/2022082518/5681507a550346895dbe776e/html5/thumbnails/9.jpg)
Multitarefa
• Generalização do conceito de multiprogramação:– solução de um problema pela decomposição em
vários processos concorrentes
• Problema: o tamanho do grão– tarefas menores, maior potencial de
concorrência, mas maior o overhead
![Page 10: Programação Concorrente](https://reader036.fdocumentos.tips/reader036/viewer/2022082518/5681507a550346895dbe776e/html5/thumbnails/10.jpg)
Multitarefa
• Concorrência de grão pequenoE := (A*B) + (C*D)
ou
for I in 1..100 loop
A(I) := B(I) + C(I)*D(I);
end loop;
• Depende muito da arquitetura
![Page 11: Programação Concorrente](https://reader036.fdocumentos.tips/reader036/viewer/2022082518/5681507a550346895dbe776e/html5/thumbnails/11.jpg)
Multitarefa
• Concorrência em programas independentes– Ex.: pipes no Unix
sort | remove_duplicates | format | print
![Page 12: Programação Concorrente](https://reader036.fdocumentos.tips/reader036/viewer/2022082518/5681507a550346895dbe776e/html5/thumbnails/12.jpg)
Multitarefa• Concorrência de grão grande
– usada em sistemas de tempo-real embarcados– usada para melhor desempenho em sistemas
multiprocessados e multicomputadores.– Ex.: processador de texto
• Ler caracteres e colecionar palavras• Colecionar palavras para preencher uma linha• Hifenizar, se necessário• Introduzir espaços para justificar a linha com a margem direita
• Colecionar linhas o bastante para encher uma página• Imprimir a página
![Page 13: Programação Concorrente](https://reader036.fdocumentos.tips/reader036/viewer/2022082518/5681507a550346895dbe776e/html5/thumbnails/13.jpg)
Multitarefa
• Algoritmo Mergesortprocedure Merge_Sort is
A: array(1..N) of Integer;
procedure Sort(Low, High: Integer);
procedure Merge;
begin
Sort( 1, N/2);
Sort(N/2 + 1, N);
Merge;
end;