Você está na página 1de 14

COMUNICAO ENTRE PROCESSOS

- Pipeline
- Regio Crtica
- Compartilhamento de recursos

CONDIES DE
CORRIDA

- Spool de impresso:

EXCLUSO MTUA

EXCLUSO MTUA
- Desabilitando interrupes

EXCLUSO MTUA
- Desabilitando interrupes
- Variveis do tipo trava(lock)

ESPERA OCIOSA (SPIN LOCK)

A INSTRUO TSL

boolean testset (int lock) {


if (lock == 0) {
lock = 1;
return true;
}
else{
return false;
}
}

DORMIR E ACORDAR

TROCA DE MENSAGENS
uma forma da comunicao entre processos que consiste em enviar mensagens a destinatrios, sob forma
de invocao de funes, sinais ou pacote de dados.
primitivas bsica:
- send: utilizada por um processo para enviar uma mensagem.
- receive: Utilizada por um processo para responder a uma mensagem recebida. Pode conter uma
informao de resposta ou simplesmente pode indicar que uma mensagem enviada com uma operao
send foi recebida sem erros.
Existem dois tipos de comunicao por troca de mensagens.
- Direta simtrica: Os processos de identificam mutuamente, isto , o remetente identifica o recebedor e
o recebedor identifica o remetente.
- Direta assimtrica: O remetente identifica o recebedor e o recebedor recebe de qualquer processo.

MONITORES
Os monitores apresentam uma propriedade importante que
os torna teis para realizar a excluso mtua: somente um
processo pode estar ativo em um monitor em um dado
momento. O monitor uma construo da linguagem de
programao e, portanto, os compiladores sabem que
eles so especiais e, por isso, tratam as chamadas a
rotinas do monitor de modo diferente de outras chamadas
de procedimentos.

SEMFOROS
uma tcnica que usa uma varivel para contar o
nmero de sinal de acordar.
0: indica que nenhum sinal de acordar foi salvo.
n>0: se um ou mais sinais estiverem pendentes.
Dijkstra props a operao, down e up que so as
generalizaes de sleep e wakeup.

O PROBLEMA DO PRODUTO CONSUMIDOR


Dois processos compartilham um buffer comum e de tamanho fixo. Um deles, o
produtor, pe informao dentro do buffer e o outro, o consumidor, a retira. O
problema se origina quando o produtor quer colocar um novo item no buffer, mas
ele j est cheio. A soluo pr o produtor parar dormir e s despert-lo quando
o consumidor remover um ou mais itens.
Da mesma maneira, se o consumidor quiser remover um item do buffer e
perceber que est vazio, ele dormir at que o produtor ponha algo no buffer e o
desperte.

COMO O PRODUTOR SERIA BLOQUEADO CASO ELE


ENCONTRASSE O BUFFER CHEIO
A soluo est na introduo de variveis condicionais, com duas
operaes sobre elas: wait e signal. Quando uma rotina do monitor
descobre que no pode prosseguir (por exemplo, o produtor percebe que
o buffer est cheio), executa um wait sobre alguma varivel condicional
por exemplo, cheio. Essa ao resulta no bloqueio do processo
anteriormente proibido de entrar no monitor agora entre.

Você também pode gostar