Você está na página 1de 4

Comunicação Comunicação entre Processos

entre Processos  Processos Independentes.


– Não afetam nem são afetados por outros
processos.

 Processos Cooperados.
Ernesto Massa – Compartilham:
• Memória;
• Arquivos;
• Dispositivos de E/S;
• Etc.

Processos Cooperados Buffer Circular


 Compartilhamento de dados.  Implementação como um array circular.
– Processo “produtor” de dados. próxima
– Processo “consumidor” de dados, próxima saída
entrada
 Buffer: 4
– Limitado: Produtor e Consumidor.
8 5 Contador
– Ilimitado: Somente Consumidor.
7 6 5
 Implementação.
– Via memória compartilhada;  Introdução de um contador de quantidade.
– Via IPC (Interprocess Comunication - SO)  Produtor e Consumidor manipulam o contador.

Condições de Corrida Condições de Corrida


 Mecanismo de Sincronização.  Exemplo 1:
2
– Garante o compartilhamento de recursos e a 7
1
7
comunicação entre os processos.
– Garante a integridade e a confiabilidade dos
dados compartilhados.
Processo Processo
 Condições de Corrida: A
3
7 B 4
7+1 7-1
– Situações onde dois ou mais processos estão
acessando dados compartilhados.
– O resultado final pode variar de acordo com a 5
6
6
8
ordem de execução.
– Resultado Final: Contador = 6 (ERRO!)

1
Condições de Corrida Condições de Corrida
Processo
2 suspenso
 Exemplo 2: A
8 recebe CPU  Região Crítica:
10
– Parte do código onde é feito acesso a recursos
Y 1 9
compartilhados, e que podem levar a condições
5 6 7 8
de corrida.
4 próxima
entrada  Ex: Processo A.
3 7 – Código normal
6 – Início da Seção Crítica (Protocolo de Entrada)
4 5
X 7 – Seção Crítica
8
Processo 3 recebe CPU – Término da Seção Crítica (Protocolo de Saída)
– Valor armazenado pelo B 7 suspenso
processo B é perdido. – Código normal

Concorrência em programas Problemas de Sincronização


 Enquanto um processo estiver usando um recurso,  Velocidades muito diferentes dos processos:
os outros devem aguardar até que o recurso esteja
– Podem causar problema de solução de
liberado.
sincronização entre processos.
 Exclusão Mútua.
– Ex: Problema produtor / consumidor.
– Exclusividade no acesso a um determinado recurso.
 Starvation (Indefinitely Postponed):
 A exclusão mútua deve afetar os processos
concorrentes quando um deles estiver em uma – Um processo nunca consegue executar sua
região crítica. região crítica e acessar o recurso compartilhado.
• Outros processos são sempre prioritários.

Soluções de Hardware Soluções de Software


 Desabilitação das interrupções:  Variável de Travamento;
– Solução mais simples para a exclusão mútua; – Gera condições de corrida.

– Falha de Proteção:  Estrita Alternância.


• O processo precisa voltar a habilitar as interrupções. – Starvation.

 Instrução Test-and-Set.  Em geral, as soluções por software resolvem a


exclusão mútua, mas geram a espera ocupada
– Utilização de uma variável para testar a (Busy Wait):
possibilidade de executar a região crítica. – Teste contínuo de uma variável até que ocorra uma
– O processo impedido de executar sua região mudança no seu valor;
crítica executa um loop de espera. – O processo impedido de executar sua região crítica executa
• Gasto de CPU. um loop de espera.
• Gasto de CPU.

2
Soluções de Software Semáforos

 Implementações de uso das regiões críticas  Ferramenta de sincronização criada por


sem a espera ocupada: Dijkstra (1965);
– Semáforos (Counting Semaphores);  Características:
– Semáforos Binários – Variável inteira;
(Mutual Exclusion Semaphores); – Não negativa.
– Mutex;  Manipulados por duas operações atômicas:
– Monitores. – DOWN ou Wait (P - Proberen - Testar)
– UP ou Signal (V - Verhogen - Incrementar)
 Implementados como chamada ao sistema.

Semáforos Semáforos

 Semáforos (Counting Semaphores);  Semáforos Binários


– Sincronização entre processos. (Mutual Exclusion Semaphores);

– Full / Empty. – Controle da exclusão mútua.


• Down / Wait: Antes da região crítica.
 Associado a um recurso compartilhado. • Up / Signal : Após a região crítica.
– Indica quando o recurso está alocado a – Chamados MUTEX ou BINÁRIOS, por só
algum processo. assumirem valores 0 e 1.

Mutex Monitores

 Estrutura de sincronização bastante simples  Mecanismo de sincronização de alto nível


que pode estar em dois estados: proposto por Hoare (1974) e Brinch Hansen
(1975);
– Locked;
Processo 1
– Unlocked.  Conjunto de procedimentos, variáveis e
estruturas de dados agrupados em um
lock unlock
 Duas operações são módulo especial;
definidas sobre um mutex: lock
 Característica mais importante é a
– Lock;
unlock
implementação automática da exclusão
– Unlock. Mutex Processo 2 mútua:
– Somente um processo pode estar ativo em um
monitor em um determinado instante de tempo.

3
Monitores Monitores

 A implementação da exclusão múltipla é de  A comunicação do processo com o


responsabilidade do compilador; monitor é feita unicamente através de
 Utilização de variáveis de condição com uma chamadas a seus procedimentos e dos
fila de processos associados a elas; parâmetros passados para eles;
 Um processo em uma fila (bloqueado) só  Podem ser chamadas duas operações:
poderá prosseguir quando outro processo
executar um SIGNAL sobre a respectiva – Wait (variable)
variável de condição. – Signal (variable)

Monitores Troca de Mensagens


 Exemplo de implementação de um Monitor:  Mecanismo de comunicação e sincronização
Inicialização entre processos.
Procedimento A  É implementada pelo Sistema Operacional
• Teste de Unicidade através das rotinas SEND e RECEIVE.
• Corpo do procedimento
• Signal (A)  SEND é responsável pelo envio de
Procedimento B mensagem para o processo receptor:
• Teste de unicidade – SEND (Receptor, Mensagem).
• Corpo do procedimento
• Signal (B)  RECEIVE é responsável pelo recebimento da
Etc... mensagem de um processo transmissor:
FIM – RECEIVE (Transmissor, Mensagem).

Troca de Mensagens Endereçamento Indireto

 Para garantir que uma mensagem não  Duas formas de comunicação entre os
se perca, o receptor deve enviar uma processos:
mensagem de recebimento. – Comunicação Síncrona.
 Duas formas de endereçamento: • Comunicação 1 a 1 (limitada ao tempo de
processamento da mensagem).
– Direto – Comunicação Assíncrona.
• Apenas dois processos trocam mensagens.
• Necessidade de buffer de mensagens.
– Indireto • Necessidade de mecanismos de sincronização.
• Mailbox. • Maior paralelismo na execução dos processos.

Você também pode gostar