Anderson Moreira Arquitetura de Computadores 1
Concorrência em ProcessosConcorrência em Processos
Anderson L. S. [email protected]
http://dase.ifpe.edu.br/~alsm
Baseado nas aulas do professor Alberto Costa Neto da UFS
Anderson Moreira Arquitetura de Computadores 3
Conteúdo
• O que é• Motivação• Processos• Threads• Conceitos• Propriedades• Por que Java?• Bibliografia
Anderson Moreira Arquitetura de Computadores 4
O que é?
• “Um programa concorrente é
um conjunto de programas seqüenciais comuns que são executados em um paralelismo abstrato”
(M.Bem-
Ari)
Anderson Moreira Arquitetura de Computadores 5
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)
Anderson Moreira Arquitetura de Computadores 6
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
Anderson Moreira Arquitetura de Computadores 8
Memória compartilhada
• Ambiente com vários processadores que compartilham o espaço de endereçamento de uma única memória;
• Os processadores podem operar independentemente, mas compartilham os recursos dá
mesma memória;
• Mudanças num endereço da memória por um processador, é
visível por todos os
outros processadores, tornando a programação mais simples;
• Os processos compartilham um espaço de endereçamento comum, no qual o acesso é
feito no modo assíncrono; não há
necessidade de especificar explicitamente a comunicação entre os processos. A implementação desse modelo pode ser feita pelos compiladores nativos do ambiente.
Anderson Moreira Arquitetura de Computadores 9
Memória Distribuída
• Ambiente com vários processadores, cada um com sua própria memória e interconectados por uma rede de comunicação;
• Tal ambiente torna a programação mais complexa do que o ambiente de memória compartilhada, sendo do programador a responsabilidade de determinar todo o paralelismo e a comunicação entre os processadores;
• As tarefas compartilham dados através de comunicação de envio e recebimento de mensagens ( “passagem de mensagens”); múltiplas tarefas iniciadas e distribuídas pelos processadores do ambiente, utilizando o seu próprio endereçamento de memória.
Anderson Moreira Arquitetura de Computadores 10
Programação de dados paralelos
• Modelo de programação que utiliza memória compartilhada, permitindo a todas as tarefas acesso à
estrutura de dados na
memória global;• O trabalho paralelo é
efetuado em um conjunto de dados, e os
dados devem estar organizados na forma de conjuntos (“loops”), aonde cada tarefa irá
trabalhar com partições diferentes dessa
estrutura de dados e efetuar a mesma operação em sua partição da estrutura de dados.
Anderson Moreira Arquitetura de Computadores 12
Conceitos
• Paralelismo– Processamento simultâneo físico
• Concorrência– Processamento simultâneo lógico (aparente)– Requer entrelaçamento (interleaving) de ações
• Processo– Execução de um programa
• Programa Concorrente– Vários processos que cooperam para a realização de uma
tarefa
Anderson Moreira Arquitetura de Computadores 13
Conceitos
• Comunicação– Variáveis compartilhadas– Passagem de mensagens
• Sincronização– Exclusão mútua de seções críticas– Sincronização por condição
• Estado de um programa concorrente– Consiste dos valores das variáveis (explícitas e implícitas)– A execução de um comando muda o estado
• Ações atômicas– Transformação indivisível de estado
Anderson Moreira Arquitetura de Computadores 14
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)
Anderson Moreira Arquitetura de Computadores 15
Processos
Espaço de Endereçamento Lógico
Instruções
Dados Globais
Espaço de Endereçamento Lógico de um
Processo
Pilha
Heap
Anderson Moreira Arquitetura de Computadores 16
Processos
• Tabela de Processos
– Estado do processo– Valores dos registradores– Arquivos abertos– Alocação de memória– PID (Process
ID)
– UID (User
ID)– GID (Owner’s
Group
ID)
Anderson Moreira Arquitetura de Computadores 17
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.
Anderson Moreira Arquitetura de Computadores 18
Processos
Executando
Suspenso
Executável
Bloqueado
EncerradoIniciado
Ativo
Anderson Moreira Arquitetura de Computadores 19
Threads
• Um processo pode ter mais de uma Thread (Linha);
• Cada Thread possui contador de programa e pilha próprios;
• Quando um processo é
escalonado para ser executado, uma das Threads entra em execução;
• As Threads compartilham as variáveis globais do processo
Anderson Moreira Arquitetura de Computadores 20
Threads
Espaço de Endereçamento de um Processo
Instruções
Variáveis Globais
Pilha
Heap
Pilha
Contador de Programa
Thread 1Pilha
Contador de Programa
Thread 2Pilha
Contador de Programa
Thread n
Anderson Moreira Arquitetura de Computadores 21
Threads
• Vantagens sobre processos compartilhando memória– 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.
Anderson Moreira Arquitetura de Computadores 22
Propriedades
• Safety:
O programa nunca entra em um estado inconsistente);
• Liveness:
Em algum momento o programa entra em um estado consistente;
• Correção Parcial:
Se o programa terminar, o resultado está correto. Caso contrário, nunca pode dar o resultado correto;
• Término:
O programa termina eventualmente;
• Ausência de Deadlock:
Nunca todos os processos estarão bloqueados;
• Correção Total:
O programa sempre termina e produz o resultado correto.
Anderson Moreira Arquitetura de Computadores 23
Bibliografia
Principles of Concurrent and Distributed Programming Ben-Ari, M.
Prentice Hall, 1990 ISBN: 013711821X
Concurrent Programming: Principles and Practice Andrews, Gregory R.
Addison-Wesley, 1991 ISBN: 0805300864