Escolar Documentos
Profissional Documentos
Cultura Documentos
Operacionais
Comunicãção entre
Processos
Comunicação Entre Processos
Uma situação bastante comum no sistema operacional, é haver dois
ou mais processos precisando se comunicar para funcionar
corretamente
Exemplo: processos que controlam a interface gráfica do
Windows precisam interagir com processos que controlam o
mouse e o teclado, além de trocar informações com os
processos de cada programa que está sendo executado, do
contrário o usuário não consegue trabalhar.
Problemas:
Desperdiça recursos, pois o processo que aguarda pode
ser rápido e mesmo assim aguardar muito tempo
Existe o risco de acontecer uma condição de corrida na
própria variável lock
Soluções para Exclusão Mútua:
Alternância
Semelhante à solução anterior, o sistema
operacional usa uma variável lock, mas o
conteúdo da variável indica de quem é a vez
de usar o recurso que está sendo disputado
Problemas:
O teste contínuo do valor da variável lock
desperdiça tempo de CPU
Um processo fora da sua região crítica pode
continuar bloqueando outro (não é uma condição
desejável)
Soluções para Exclusão Mútua:
Dormir e Acordar
A idéia é evitar a espera ocupada que causa
desperdício de CPU
Para isso, os processos são bloqueados quando não
podem entrar na região crítica
Os processos usam as primitivas (rotinas) sleepe
wakeup:
Sleep(dormir)
Bloqueia o processo e o coloca a espera de um sinal de
wakeup.
Wakeup(acordar)
Sinaliza o processo anteriormente bloqueado
Solução: