mutex and monitores
TRANSCRIPT
Sistemas Operacionais
Mutex e Monitores
Daniel Paulo de Assis3°BCC -FEMA
Mutex
• mutual exclusion, o termo em inglês
• é uma técnica usada em programação concorrente para evitar que dois processos ou threads tenham acesso simultaneamente a um recurso compartilhado (Região Crítica)
N processos competindo para utilizar os mesmos dados compartilhados
Mutex
• Um meio simples para exclusão mútua é a utilização de um semáforo binário
• Apenas 1 ou 0, onde 0 = impedido e 1 = Desimpedido
• O travamento por semáforo deve ser feito antes de utilizar o recurso
• Enquanto o recurso estiver em uso, qualquer outro processo que o utilize deve esperar a liberação.
“Efeitos Colaterais” Mutex
• Deadlocks
• Inanição
dois ou mais processos ficam impedidos de continuar suas execuções, ou seja, ficam bloqueados.
quando o processo nunca dispõe de recursos suficientes para executar plenamente.
Implementação
• Manipulação com:– Mutex_lock():• Testa o mutex e o coloca em impedido se
estiver desimpedido, bloqueia o processo caso contrário
– Mutex_unlock():• Coloca o mutex em desimpedido
Implementação
Monitores
• uma técnica para sincronizar duas ou mais tarefas que compartilham um recurso em comum, geralmente um dispositivo de hardware ou uma região da memória.
• Grande diferencial o trabalho com linguagem de alto nível(mais transparente)
Monitores
• Desenvolvimento é mais fácil
• Existem linguagens que não possuem monitores. Os monitores são um conceito de linguagem de programação.
Java sempre suportou
monitores !!!
Monitores
• originalmente implementado na linguagem Concurrent Pascal
• O monitor é um conjunto de procedimentos, variáveis e inicialização definidos dentro de um módulo.
Exemplo de Código Monitormonitor monitor-name
{declaração de variáveis compartilhadasprocedure P1 (…) {. . .}procedure P2 (…) {. . .} procedure Pn (…) { . . .}
{código de inicialização}}
característica mais importante do monitor é a exclusão mútua
automática entre os seus procedimentos
Exemplo de Código Monitor
Monitor VariáveisVariáveis de condição são tipos de dados especiais dos monitores
duas instruções Wait e Signal
• Wait(C): suspende a execução do processo, colocando-o em estado de espera associado a condição C
• Signal(C): permite que um processo bloqueado por wait(C) continue a sua execução.
Se existir mais de um processo bloqueado, apenas um é liberado
Se não existir nenhum processo bloqueado, não faz nada
Exemplo Monitor em Java
Referências Bibliográficas
Exclusão Mútua Disponível em :<http://pt.wikipedia.org/wiki/Exclus%C3%A3o_m%C3%BAtua>.Acesso em : setembro de 2011.
Sistemas Operacionais Disponível em :<http://www.inf.ufrgs.br/~asc/livro/transparencias/cap3.pdf>.Acesso em : setembro de 2011.
Monitor (concorrência)Disponível em :<http://pt.wikipedia.org/wiki/Monitor_%28concorr%C3%AAncia%29>.Acesso em : setembro de 2011.
TANEMBAUM ANDREW, S. WOODHULL ALBERTT, S: Sistemas Operacionais: Projeto e Implementação. 2ed. Porto Alegre: Bookman, 2000