Sistemas Operacionais
Mutex e Monitores
Daniel Paulo de Assis
3°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
dois ou mais processos ficam impedidos
de continuar suas execuções, ou seja,
ficam bloqueados.

• Inanição
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 Monitor
monitor monitor-name
{
declaração de variáveis compartilhadas
procedure P1 (…) {
...
}
procedure P2 (…) {
...
}
procedure Pn (…) {
...
}
{
}

}

característica mais importante do
monitor é a exclusão mútua
automática entre os seus
procedimentos

código de inicialização
Exemplo de Código Monitor
Monitor Variáveis
Variá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

Mutex and monitores

  • 1.
    Sistemas Operacionais Mutex eMonitores Daniel Paulo de Assis 3°BCC -FEMA
  • 2.
    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
  • 3.
    Mutex • Um meiosimples 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.
  • 4.
    “Efeitos Colaterais” Mutex •Deadlocks dois ou mais processos ficam impedidos de continuar suas execuções, ou seja, ficam bloqueados. • Inanição quando o processo nunca dispõe de recursos suficientes para executar plenamente.
  • 5.
    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
  • 6.
  • 7.
    Monitores • uma técnicapara 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)
  • 8.
    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 !!!
  • 9.
    Monitores • originalmente implementadona linguagem Concurrent Pascal • O monitor é um conjunto de procedimentos, variáveis e inicialização definidos dentro de um módulo.
  • 10.
    Exemplo de CódigoMonitor monitor monitor-name { declaração de variáveis compartilhadas procedure P1 (…) { ... } procedure P2 (…) { ... } procedure Pn (…) { ... } { } } característica mais importante do monitor é a exclusão mútua automática entre os seus procedimentos código de inicialização
  • 11.
  • 12.
    Monitor Variáveis Variáveis decondiçã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
  • 13.
  • 14.
    Referências Bibliográficas Exclusão MútuaDisponí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.
  • 15.
    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