Mutex and monitores
-
Upload
daniel-paulo-de-assis -
Category
Technology
-
view
203 -
download
4
Transcript of Mutex and monitores
![Page 1: Mutex and monitores](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/1.jpg)
Sistemas Operacionais
Mutex e Monitores
Daniel Paulo de Assis3°BCC -FEMA
![Page 2: Mutex and monitores](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/2.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/4.jpg)
“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](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/5.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/6.jpg)
Implementação
![Page 7: Mutex and monitores](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/7.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/8.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/9.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/10.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/11.jpg)
Exemplo de Código Monitor
![Page 12: Mutex and monitores](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/12.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/13.jpg)
Exemplo Monitor em Java
![Page 14: Mutex and monitores](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/14.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022052322/557237acd8b42a78548b48c4/html5/thumbnails/15.jpg)
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