24
Anderson Moreira Arquitetura de Computadores 1 Concorrência em Processos Concorrência em Processos Anderson L. S. Moreira [email protected] http://dase.ifpe.edu.br/~alsm Baseado nas aulas do professor Alberto Costa Neto da UFS

Concorrência em Processos - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/arqt_aula6_concorrencia.pdf · Concorrência em Processos Anderson L. S. Moreira [email protected]

Embed Size (px)

Citation preview

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 2

O que fazer com essa apresentação

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 7

Motivação - Hardware com múltiplos processadores

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 11

Thread/Multi-Thread

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

Anderson Moreira Arquitetura de Computadores 24

DDúúvidasvidas