[ O que é ] - Hudson Costa · 25/05/2011 2 Programação Concorrente [ O que é ] •“Um...
Transcript of [ O que é ] - Hudson Costa · 25/05/2011 2 Programação Concorrente [ O que é ] •“Um...
![Page 1: [ O que é ] - Hudson Costa · 25/05/2011 2 Programação Concorrente [ O que é ] •“Um programa concorrente especifica 2 ou mais processos que cooperam para realizar uma tarefa.](https://reader031.fdocumentos.tips/reader031/viewer/2022022602/5b5068717f8b9a256e8e566a/html5/thumbnails/1.jpg)
25/05/2011
1
Programação
Concorrente
Programação Concorrente[ O que é ]
• “Um programa concorrente é um conjunto de
programas seqüenciais comuns que são
executados em um paralelismo abstrato”
(M.Bem-Ari)
![Page 2: [ O que é ] - Hudson Costa · 25/05/2011 2 Programação Concorrente [ O que é ] •“Um programa concorrente especifica 2 ou mais processos que cooperam para realizar uma tarefa.](https://reader031.fdocumentos.tips/reader031/viewer/2022022602/5b5068717f8b9a256e8e566a/html5/thumbnails/2.jpg)
25/05/2011
2
Programação Concorrente[ O que é ]
• “Um programa concorrente especifica 2 ou mais
processos que cooperam para realizar uma
tarefa. Processos cooperam através de
comunicação; utilizam variáveis compartilhadas
ou troca de mensagens“(G. R. Andrews)
Programação concorrente:
introdução
• O mundo real funciona concorrentemente: várias atividades podem
ser executadas em paralelo. Exemplo: uma pessoa pode estar– respirando, e,– falando, e– escrevendo, e– lendo, etc.
• Computadores também operam concorrentemente. Exemplo: um
computador pode estar– compilando um programa, e– recebendo uma mensagem, e,– imprimindo um arquivo, e,– tocando música, etc.
![Page 3: [ O que é ] - Hudson Costa · 25/05/2011 2 Programação Concorrente [ O que é ] •“Um programa concorrente especifica 2 ou mais processos que cooperam para realizar uma tarefa.](https://reader031.fdocumentos.tips/reader031/viewer/2022022602/5b5068717f8b9a256e8e566a/html5/thumbnails/3.jpg)
25/05/2011
3
Programação Concorrente[ Motivação ]
• Aproveitar hardware com múltiplos
processadores
• Atender a vários usuários simultaneamente
• Melhorar o desempenho das aplicações
• Aumentar a disponibilidade para o usuário
• Objetos ativos e controle de atividades
• Programas paralelos
Programação Concorrente[ Processos ]
• Um processo é um programa que está em algum estado de
execução
• Tem espaço de endereçamento próprio, que é mapeado
pelo S.O. para memória física
• Possui um fluxo de controle ou thread único
• Mantém um contador de programa (PC) que indica o
endereço da próxima instrução
• A MMU (Memory Management Unit) traduz os endereços
lógicos em endereços físicos, que normalmente não são
contíguos (Memória Virtual)
![Page 4: [ O que é ] - Hudson Costa · 25/05/2011 2 Programação Concorrente [ O que é ] •“Um programa concorrente especifica 2 ou mais processos que cooperam para realizar uma tarefa.](https://reader031.fdocumentos.tips/reader031/viewer/2022022602/5b5068717f8b9a256e8e566a/html5/thumbnails/4.jpg)
25/05/2011
4
Programação Concorrente[ Processos ]
• Espaço de Endereçamento Lógico
Instruções
Dados Globais
Espaço de Endereçamento
Lógico de um Processo
Pilha
Heap
Programação Concorrente[ Processos ]
• Estados de um processo
– Executando (Running): Utilizando a CPU
– Executável ou Pronto (Runnable ou Ready):
Esperando para ser escalonado para usar a CPU
– Suspenso (Suspended): Recebeu um sinal para ser
suspenso
– Bloqueado (Blocked): Esperando pela conclusão de
algum serviço solicitado ao S.O.
![Page 5: [ O que é ] - Hudson Costa · 25/05/2011 2 Programação Concorrente [ O que é ] •“Um programa concorrente especifica 2 ou mais processos que cooperam para realizar uma tarefa.](https://reader031.fdocumentos.tips/reader031/viewer/2022022602/5b5068717f8b9a256e8e566a/html5/thumbnails/5.jpg)
25/05/2011
5
Programação Concorrente[ Processos ]
Executando
Suspenso
Executável
Bloqueado
Encerrado
Iniciado
Ativo
Programação Concorrente[ Threads ]
• O que é uma thread e como funciona?
![Page 6: [ O que é ] - Hudson Costa · 25/05/2011 2 Programação Concorrente [ O que é ] •“Um programa concorrente especifica 2 ou mais processos que cooperam para realizar uma tarefa.](https://reader031.fdocumentos.tips/reader031/viewer/2022022602/5b5068717f8b9a256e8e566a/html5/thumbnails/6.jpg)
25/05/2011
6
Programação Concorrente[ Threads ]
• Como funciona o Kernel-Level Thread (KLT)?
Programação Concorrente[ Threads ]
• Como funciona o User-Level Thread (ULT)?
![Page 7: [ O que é ] - Hudson Costa · 25/05/2011 2 Programação Concorrente [ O que é ] •“Um programa concorrente especifica 2 ou mais processos que cooperam para realizar uma tarefa.](https://reader031.fdocumentos.tips/reader031/viewer/2022022602/5b5068717f8b9a256e8e566a/html5/thumbnails/7.jpg)
25/05/2011
7
Programação Concorrente[ Threads ]
Espaço de Endereçamento de um Processo
Instruções
Variáveis Globais
Pilha
Heap
Pilha
Contador
de Programa
Thread 1
Pilha
Contador
de Programa
Thread 2
Pilha
Contador
de Programa
Thread n
Threads[ Ciclo de Vida ]
Criada
Pronta Executando
Esperando
Dormindo
Encerrada
Bloqueada
Operaçãode E/Siniciada
Término
sleep
waitnotifynotityAll
Operaçãode E/Sconcluída
start
Intervalo de tempo expirou
escalonada
interrompida
![Page 8: [ O que é ] - Hudson Costa · 25/05/2011 2 Programação Concorrente [ O que é ] •“Um programa concorrente especifica 2 ou mais processos que cooperam para realizar uma tarefa.](https://reader031.fdocumentos.tips/reader031/viewer/2022022602/5b5068717f8b9a256e8e566a/html5/thumbnails/8.jpg)
25/05/2011
8
Programação Concorrente[ Threads ]
• Vantagens sobre o uso de Threads:
– São muito mais leves de serem criadas
– A troca de contexto é mais suave pois compartilha
instruções, heap e variáveis globais
– Facilitam o compartilhamento de memória