exclusão mútua a solução mais simples para evitar os problemas de compartilhamento é impedir...
TRANSCRIPT
![Page 1: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/1.jpg)
Exclusão Mútua
A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso, todos os demais processos deverão esperar pelo término da utilização do recurso.
![Page 2: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/2.jpg)
Exclusão Mútua
A exclusão mútua deve afetar apenas os processos concorrentes somente quando um deles estiver fazendo acesso ao recurso compartilhado. A parte do programa onde é feito o acesso compartilhado é denominada REGIÃO CRÍTICA(RC).
![Page 3: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/3.jpg)
Exclusão Mútua
Os protocolos de entrada e saída garantem a exclusão mútua da região crítica de um programa.BEGIN
.
Entra_Regiao_Critica; (* Protocolo de Entrada *)
Regiao_Critica;
Sai_Regiao_Critica; (* Protocolo de saída *)
.
END.
![Page 4: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/4.jpg)
Exclusão Mútua
Diversas soluções foram desenvolvidas com esse propósito; porém, duas situações indesejadas também devem ser evitadas.
Espera indefinida e o processo fora da sua região crítica impede que outros entrem nas suas próprias regiões críticas.
![Page 5: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/5.jpg)
Exclusão Mútua
Soluções de Hardware
Podem ser implementadas através de mecanismos de hardware, desabilitação interrupções e test-and-set.
![Page 6: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/6.jpg)
Exclusão Mútua
Desabilitação de Interrupções
Antes de entrar em sua região crítica o processo desabilita todas as suas interrupções e as reabitam após deixar a sua região crítica.
![Page 7: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/7.jpg)
Exclusão Mútua
Desabilitação de InterrupçõesBegin
.
.
Desabilita_interrupções;
Região_Critica;
Habilita_interrupções;..
End.
![Page 8: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/8.jpg)
Exclusão Mútua
Desabilitação de Interrupções
Limitação
A multiprogramação pode ficar comprometida, pois, a concorrência entre processo tem como base o uso de interrupção
![Page 9: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/9.jpg)
Exclusão Mútua
Desabilitação de Interrupções
Para arquitetura de múltiplos processadores a solução torna-se ineficiente, devido ao tempo de propagação quando um processador sinaliza aos demais que as interrupções devem ser habilitadas ou desabilitadas.
![Page 10: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/10.jpg)
Exclusão Mútua
Instruções Test-and-set
Muitos processadores possuem uma instrução de máquina que permite ler uma variável, armazenar seu conteúdo em uma outra área e atribuir um valor à mesma variável.
![Page 11: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/11.jpg)
Exclusão Mútua
Instruções Test-and-set
Característica – é executada sem interrupção
Quando executada o valor lógico da variável Y é copiado para X, sendo atribuído à variável Y o valor lógico verdadeiro
![Page 12: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/12.jpg)
Exclusão Mútua
Instruções Test-and-set
Quando a variável lógica Bloqueio for falsa, qualquer processo poderá alterar seu valor para verdadeiro através da instrução Test-and-set e acessar o recurso de forma exclusiva. Ao término do acesso retorna o valor da variável para falso, liberando o recurso.
![Page 13: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/13.jpg)
Exclusão Mútua
Instruções Test-and-set
Desvantagem
Starvation (quando dois processos diferentes tentam acessar o mesmo recurso, mas não existem recursos suficientes para os dois, um precisa abrir mão para o outro)
![Page 14: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/14.jpg)
Exclusão Mútua
Solução de Software
Primeiro Algoritmo – Looping infinito
• Repeat/until
• Variável de bloqueio para liberar o recurso (variável global)
![Page 15: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/15.jpg)
Exclusão Mútua
Primeiro Algoritmo
A sequência de comandos, dentro do loop, é formada por um protocolo de entrada, uma região crítica e um protocolo de saída. A região crítica é representada por uma rotina, onde o acesso ao recurso realmente acontece
![Page 16: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/16.jpg)
Exclusão Mútua
Primeiro Algoritmo
Limitações
Quando um processo A permanece muito tempo em uma rotina, é possível que um processo B queira executar sua região crítica e não consiga, mesmo eu o processo A não esteja utilizando o recurso.
![Page 17: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/17.jpg)
Exclusão Mútua
Primeiro Algoritmo
Limitações
No caso da ocorrência de algum problema com um dos processos, de forma que a variável de bloqueio não seja alterada, o outro processo permanecerá indefinida-mente bloqueado.
![Page 18: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/18.jpg)
Exclusão Mútua
Segundo Algoritmo
Como o primeiro algoritmo utiliza a mesma variável global entre ambos os processos, o segundo introduz uma variável para cada processo (CA e CB) que indica se o processo está ou não em sua região crítica.
![Page 19: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/19.jpg)
Exclusão Mútua
Segundo Algoritmo
Limitação
Caso um processo tenha um problema dentro da sua região crítica ou antes de alterar a variável, o outro processo ficará indefinidamente bloqueado.
![Page 20: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/20.jpg)
Exclusão Mútua
Terceiro Algoritmo
Soluciona o problema do segundo colocando a instrução de atribuição das variáveis antes do LOOP de teste, garantindo a Exclusão Mútua. Porém introduz um novo problema.
Ambos os processos não poderão entrar em suas regiões críticas como se o recurso já estivesse alocado.
![Page 21: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/21.jpg)
Exclusão Mútua
Quarto Algoritmo
Altera o estado da variável antes de entrar na sua região crítica, com a possibilidade de ser revertida.
![Page 22: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/22.jpg)
Exclusão Mútua
Quarto Algoritmo
Limitação
O bloqueio simultâneo dos processos
![Page 23: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/23.jpg)
Exclusão Mútua
Algoritmo de Dekker
Primeira solução de software, sem a ocorrência de novos problemas. Baseado no primeiro e no quarto algoritmo, com uma lógica muito complexa.
Mas Peterson propôs outra solução mais simples.
![Page 24: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/24.jpg)
Exclusão Mútua
Algoritmo de Peterson
• Solução para N processos
• Similar ao terceiro algoritmo (variáveis CA e CB)
• Introduz uma variável Vez (para conseguir resolver os conflitos gerados pela concorrência
![Page 25: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/25.jpg)
Exclusão Mútua
Algoritmo de Peterson
• While como protocolo de entrada na região Crítica.
•Variável Vez permitirá a continuidade da execução de um dos processos.
![Page 26: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/26.jpg)
Exclusão Mútua
Algoritmo para exclusão Mútua entre N processos
Todas as soluções possuíam uma deficiência conhecida como espera ocupada (busy wait) que consome tempo do processador desnecessariamente.
![Page 27: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/27.jpg)
Exclusão Mútua
Algoritmo para exclusão Mútua entre N processos
A solução do problema foi introduzir o mecanismo de sincronização que permitia que um processo, quando não pudesse entrar em sua RC, fosse colocado no estado espera. Conhecidos como semáforos e monitores.
![Page 28: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/28.jpg)
Exclusão Mútua
Sincronização Condicional
É uma situação onde o acesso ao recurso compartilhado exige a sincronização de processos vinculada a uma condição de acesso.
![Page 29: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/29.jpg)
Exclusão Mútua
Sincronização Condicional
Um recurso pode não se encontrar pronto para uso devido a uma condição específica. Neste caso o processo que deseja acessá-lo deverá permanecer bloqueado até que o recurso fique disponível.
![Page 30: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/30.jpg)
Exclusão Mútua
Sincronização Condicional
Limitação
Espera ocupada que é solucionada com os mecanismos de sincronização semáforos e monitores.
![Page 31: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/31.jpg)
Exclusão MútuaSemáforos
Atualmente, a maioria das linguagens de programação disponibiliza rotinas para o uso de semáforos.
Semáforos são variáveis inteiras, não-negativas, manipulados por duas instruções:
Down – decrementa (P)
Up – incrementa (V)
![Page 32: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/32.jpg)
Exclusão Mútua
Semáforos
Semáforos são classificados como binários ou contadores:
• Binários (mutexes) podem assumir valores 0 e 1;
• Contadores podem assumir valor inteiro positivo, além do 0.
![Page 33: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/33.jpg)
Exclusão Mútua
Exclusão Mútua utilizando semáforos
A implementação ocorre através de um semáforo binário associado ao recurso compartilhado. Não ocorre a espera ocupada
As instruções DOWN e UP funcionam como protocolos de entrada e saída.
![Page 34: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/34.jpg)
Exclusão Mútua
Sincronização condicional utilizando semáforos
Os semáforos podem ser utilizados nos casos onde a sincronização condicional é exigida.
Exemplo: sincronização quando o processo solicita uma operação de E/S.
![Page 35: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/35.jpg)
Exclusão Mútua
Sincronização condicional utilizando semáforos
O pedido faz com que o processo execute um DOWN no semáforo até que a operação seja completada. Ao término, a rotina de tratamento da interrupção executa um UP no semáforo, liberando o processo do estado espera.
![Page 36: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/36.jpg)
Exclusão Mútua
Problema dos Filósofos
Há uma mesa com cinco pratos e cinco garfos, onde os filósofos podem sentar, comer e pensar. Toda vez que um filósofo pára de pensar e deseja comer, é necessário que ele utilize dois garfos, posicionados à sua direita e à sua esquerda
![Page 37: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/37.jpg)
Exclusão Mútua
Solução
• Permitir que apenas quatro filósofos sentem à mesa simultaneamente;
• Permitir que um filósofo pegue um garfo apenas se o outro estiver disponível;
• Permitir que um filósofo impar pegue primeiro o seu garfo da esquerda e depois o da direita, enquanto o par pegue o garfo da direita e, em seguida, o da esquerda;
![Page 38: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/38.jpg)
Exclusão Mútua
![Page 39: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/39.jpg)
Exclusão Mútua
Problema do Barbeiro
Na barbearia há uma cadeira de barbeiro e apenas cinco cadeiras para clientes esperarem. Quando um cliente chega, caso o barbeiro esteja trabalhando, ele senta se houver cadeira vazia ou vai embora se todas estiverem ocupadas. No caso de o barbeiro não ter nenhum cliente para atender, ele senta na cadeira e dorme até que um novo cliente apareça.
![Page 40: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/40.jpg)
Exclusão Mútua
Solução
Semáforo contador Clientes
Semáforo binários Barbeiro e Mutex
O processo cliente, garante a exclusão mútua da variável Espera (permitindo verificar se todas as cadeiras já estão ocupadas)
![Page 41: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/41.jpg)
Exclusão Mútua
Monitores
São mecanismos de sincronização de alto nível e estruturados em função de serem implementados pelo compilador.
![Page 42: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/42.jpg)
Exclusão Mútua
Monitores
O monitor é formado por procedimentos e variáveis encapsulados dentro de um módulo.
Somente um processo pode estar executando um dos procedimentos do monitor em um determinado instante.
![Page 43: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/43.jpg)
Exclusão Mútua
Estrutura do Monitor
![Page 44: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/44.jpg)
Exclusão Mútua
Exclusão Mútua Utilizando Monitores
Não é realizada diretamente pelo programador, como no caso do uso de semáforos.
As regiões críticas devem ser definidas como procedimentos no monitor, e o compilador se encarregará de garantir a exclusão mútua entre esses procedimentos.
![Page 45: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/45.jpg)
Exclusão Mútua
Exclusão Mútua Utilizando Monitores
A comunicação do processo com o monitor é feita unicamente através de chamadas a seus procedimentos e dos parâmetros passados.
![Page 46: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/46.jpg)
Exclusão Mútua
Sincronização Condicional Utilizando Monitores
Utilizam variáveis especiais de condição
WAIT – coloca o processo em espera, até que algum outro processo sinalize com a instrução SIGNAL
SIGNAL - libera apenas um único processo da fila de espera.
![Page 47: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/47.jpg)
Exclusão Mútua
Troca de mensagens
• Possui um subsistema de mensagem (canal de comunicação) buffer ou link de uma rede;
• SEND (Receptor,mensagem)
• Reciver (Transmissor, mensagem)
• Execuções sincronizadas
![Page 48: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/48.jpg)
Exclusão Mútua
Troca de mensagens
• Comunicação indireta através MAILBOX ou PORT(buffer);
• Vários processos podem estar associados a MAILBOX;
• Forma assíncrona de comunicação (receptor e transmissor não permanece aguardando o envio e recebimento de mensagens).
![Page 49: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/49.jpg)
Exclusão Mútua
Deadlock
Ocorre quando o processo aguarda por um recurso que nunca estará disponível ou um evento que não ocorrerá.
![Page 50: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/50.jpg)
Exclusão Mútua
Deadlock
Condições para que ocorra um Deadlock:
• Exclusão mútua onde cada recurso pode estar alocado a um único processo
• Espera por recursos onde um processo pode estar esperando por outro recurso
![Page 51: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/51.jpg)
Exclusão Mútua
Deadlock
Condições para que ocorra um Deadlock:
• Não-preempção onde um recurso não pode ser liberado só porque outros processos desejam o mesmo recurso;
• Espera circular onde um processo pode ter que esperar por um recurso alocado a outro processo e vice-versa.
![Page 52: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/52.jpg)
Exclusão MútuaEspera circular
![Page 53: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/53.jpg)
Exclusão Mútua
Prevenção de Deadlock
A prevenção da ocorrência das quatro condições é bastante limitadas, por isso não é utilizada na prática.
![Page 54: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/54.jpg)
Exclusão Mútua
Prevenção de Deadlock
A solução mais conhecida é o algoritmo do banqueiro que exige que os processos informem o número máximo de cada tipo de recurso necessários para a sua execução.
Este algoritmo também possui limitações: número fixo de processos ativos.
![Page 55: Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc120497959413d8cbb04/html5/thumbnails/55.jpg)
Exclusão Mútua
Correção do Deadlock
Eliminar os processos envolvidos no deadlock e liberar os seus recursos envolvidos.
Caso o recurso seja uma atualização de um arquivo ou impressão, o sistema deve garantir que esses recursos sejam liberados sem problemas. A escolha é feita aleatoriamente.