Você está na página 1de 24

Comunicao entre Processos

Ernesto Massa

Comunicao entre Processos




Processos Independentes.
No afetam nem so afetados por outros processos.

Processos Cooperados.
Compartilham:
Memria; Arquivos; Dispositivos de E/S; Etc.

Processos Cooperados


Compartilhamento de dados.
Processo produtor de dados. Processo consumidor de dados,

Buffer:
Limitado: Produtor e Consumidor. Ilimitado: Somente Consumidor.

Implementao.
Via memria compartilhada; Via IPC (Interprocess Comunication - SO)

Buffer Circular


Implementao como um array circular.


prxima sada

prxima entrada

4 8 7
 

5 6

Contador 5

Introduo de um contador de quantidade. Produtor e Consumidor manipulam o contador.

Condies de Corrida


Mecanismo de Sincronizao.
Garante o compartilhamento de recursos e a comunicao entre os processos. Garante a integridade e a confiabilidade dos dados compartilhados.

Condies de Corrida:
Situaes onde dois ou mais processos esto acessando dados compartilhados. O resultado final pode variar de acordo com a ordem de execuo.

Condies de Corrida


Exemplo 1:
1 2

Processo A 3 7+1

Processo B 4 7-1

Resultado Final: Contador = 6 (ERRO!)

Condies de Corrida


Exemplo 2:
10

Processo A

2 8

suspenso recebe CPU

5 4 3

7
prxima entrada 7

X Valor armazenado pelo processo B perdido.

7
Processo B

8
3 7

recebe CPU suspenso

Condies de Corrida


Regio Crtica:
Parte do cdigo onde feito acesso a recursos compartilhados, e que podem levar a condies de corrida.

Ex: Processo A.
Cdigo normal Incio da Seo Crtica (Protocolo de Entrada) Seo Crtica Trmino da Seo Crtica (Protocolo de Sada) Cdigo normal

Concorrncia em programas


Enquanto um processo estiver usando um recurso, os outros devem aguardar at que o recurso esteja liberado. Excluso Mtua.
Exclusividade no acesso a um determinado recurso.

A excluso mtua deve afetar os processos concorrentes quando um deles estiver em uma regio crtica.

Problemas de Sincronizao


Velocidades muito diferentes dos processos:


Podem causar problema de soluo de sincronizao entre processos. Ex: Problema produtor / consumidor.

Starvation (Indefinitely Postponed):


Um processo nunca consegue executar sua regio crtica e acessar o recurso compartilhado.
Outros processos so sempre prioritrios.

Solues de Hardware


Desabilitao das interrupes:


Soluo mais simples para a excluso mtua; Falha de Proteo:
O processo precisa voltar a habilitar as interrupes.

Instruo Test-and-Set.
Utilizao de uma varivel para testar a possibilidade de executar a regio crtica. O processo impedido de executar sua regio crtica executa um loop de espera.
Gasto de CPU.

Solues de Software


Varivel de Travamento;
Gera condies de corrida.

Estrita Alternncia.
Starvation.

Em geral, as solues por software resolvem a excluso mtua, mas geram a espera ocupada (Busy Wait):
Teste contnuo de uma varivel at que ocorra uma mudana no seu valor; O processo impedido de executar sua regio crtica executa um loop de espera.
Gasto de CPU.

Solues de Software


Implementaes de uso das regies crticas sem a espera ocupada:


Semforos (Counting Semaphores); Semforos Binrios (Mutual Exclusion Semaphores); Mutex; Monitores.

Semforos
 

Ferramenta de sincronizao criada por Dijkstra (1965); Caractersticas:


Varivel inteira; No negativa.

Manipulados por duas operaes atmicas:


DOWN ou Wait (P - Proberen - Testar) UP ou Signal (V - Verhogen - Incrementar)

Implementados como chamada ao sistema.

Semforos


Semforos (Counting Semaphores); Sincronizao entre processos. Full / Empty.

Associado a um recurso compartilhado.


Indica quando o recurso est alocado a algum processo.

Semforos


Semforos Binrios (Mutual Exclusion Semaphores); Controle da excluso mtua.


Down / Wait: Antes da regio crtica. Up / Signal : Aps a regio crtica.

Chamados MUTEX ou BINRIOS, por s assumirem valores 0 e 1.

Mutex


Estrutura de sincronizao bastante simples que pode estar em dois estados:


Locked; Unlocked.
Processo 1 lock unlock lock unlock

Duas operaes so definidas sobre um mutex:


Lock; Unlock.

Mutex

Processo 2

Monitores


Mecanismo de sincronizao de alto nvel proposto por Hoare (1974) e Brinch Hansen (1975); Conjunto de procedimentos, variveis e estruturas de dados agrupados em um mdulo especial; Caracterstica mais importante a implementao automtica da excluso mtua:
Somente um processo pode estar ativo em um monitor em um determinado instante de tempo.

Monitores


A implementao da excluso mltipla de responsabilidade do compilador; Utilizao de variveis de condio com uma fila de processos associados a elas; Um processo em uma fila (bloqueado) s poder prosseguir quando outro processo executar um SIGNAL sobre a respectiva varivel de condio.

Monitores


A comunicao do processo com o monitor feita unicamente atravs de chamadas a seus procedimentos e dos parmetros passados para eles; Podem ser chamadas duas operaes:
Wait (variable) Signal (variable)

Monitores


Exemplo de implementao de um Monitor:


Inicializao Procedimento A
Teste de Unicidade Corpo do procedimento Signal (A)

Procedimento B
Teste de unicidade Corpo do procedimento Signal (B)

Etc... FIM

Troca de Mensagens
  

Mecanismo de comunicao e sincronizao entre processos. implementada pelo Sistema Operacional atravs das rotinas SEND e RECEIVE. SEND responsvel pelo envio de mensagem para o processo receptor:
SEND (Receptor, Mensagem).

RECEIVE responsvel pelo recebimento da mensagem de um processo transmissor:


RECEIVE (Transmissor, Mensagem).

Troca de Mensagens


Para garantir que uma mensagem no se perca, o receptor deve enviar uma mensagem de recebimento. Duas formas de endereamento:
Direto
Apenas dois processos trocam mensagens.

Indireto
Mailbox.

Endereamento Indireto


Duas formas de comunicao entre os processos:


Comunicao Sncrona.
Comunicao 1 a 1 (limitada ao tempo de processamento da mensagem).

Comunicao Assncrona.
Necessidade de buffer de mensagens. Necessidade de mecanismos de sincronizao. Maior paralelismo na execuo dos processos.

Você também pode gostar