mutex and monitores

15
Sistemas Operacionais Mutex e Monitores Daniel Paulo de Assis 3°BCC -FEMA

Upload: daniel-paulo-de-assis

Post on 06-Jun-2015

200 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Mutex and monitores

Sistemas Operacionais

Mutex e Monitores

Daniel Paulo de Assis3°BCC -FEMA

Page 2: Mutex and monitores

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

Page 3: Mutex and monitores

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.

Page 4: Mutex and monitores

“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.

Page 5: Mutex and monitores

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

Page 6: Mutex and monitores

Implementação

Page 7: Mutex and monitores

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)

Page 8: Mutex and monitores

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 !!!

Page 9: Mutex and 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.

Page 10: Mutex and monitores

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

Page 11: Mutex and monitores

Exemplo de Código Monitor

Page 12: Mutex and monitores

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

Page 13: Mutex and monitores

Exemplo Monitor em Java

Page 14: Mutex and monitores

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.

Page 15: Mutex and monitores

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