Programação Concorrente

13
Programação Concorrente Eduardo Nicola F. Zagari Principles of Concurrent and Distributed Programming - Ben- Ari

description

Programação Concorrente. Eduardo Nicola F. Zagari Principles of Concurrent and Distributed Programming - Ben-Ari. O que é Programação Concorrente. Introdução E/S e Computação sobrepostas Multiprogramação Multitarefa. Introdução. Programa “ordinário”: instruções executadas seqüencialmente - PowerPoint PPT Presentation

Transcript of Programação Concorrente

Page 1: Programação Concorrente

Programação Concorrente

Eduardo Nicola F. Zagari

Principles of Concurrent and Distributed Programming - Ben-Ari

Page 2: Programação Concorrente

O que é Programação Concorrente

• Introdução

• E/S e Computação sobrepostas

• Multiprogramação

• Multitarefa

Page 3: Programação Concorrente

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

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

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

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

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

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

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

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

Multitarefa

• Concorrência em programas independentes– Ex.: pipes no Unix

sort | remove_duplicates | format | print

Page 12: Programação Concorrente

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

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;