Buscar

Aula08_Deadlock

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Aula 08 
Capítulo 8 – Deadlocks 
• 8.1 Modelo do sistema 
• 8.2 Caracterização do deadlock 
• 8.3 Métodos para tratamento de deadlocks 
• 8.4 Prevenção de deadlock 
• 8.5 Evitar deadlock 
• 8.6 Detecção de deadlock 
• 8.7 Recuperação do deadlock 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
O Problema do Deadlock 
• Um conjunto de processos bloqueados, cada um 
retendo um recurso e esperando para adquirir um 
recurso retido de outro processo no conjunto. 
• Exemplo: 
– O sistema possui 2 unidades de fita 
– P1 e P2 mantêm, cada um, uma unidade de fita, e cada 
uma delas precisa de outra unidade. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Exemplo do Cruzamento da Ponte 
 
• Tr fego em um nico sentido. 
• Cada se ão de uma ponte pode ser vista como um 
recurso. 
• Se ocorrer um deadlock, ele pode ser resolvido se um 
dos carros recuar (preemptar recursos e reverter). 
• V rios carros podem ter de recuar se um deadlock 
ocorrer. 
 poss vel haver Starvation. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.1 Modelo do Sistema 
• Um sistema consiste em um número finito de recursos 
a serem distribuídos entre processos concorrentes. 
• Os recursos são divididos em vários tipos, cada qual 
consistindo em múltiplas instâncias idênticas. 
• Um processo deve solicitar um recurso antes de usá-
lo, e deverá liberar o recurso após o uso. 
• O processo pode solicitar tantos recursos quantos 
achar necessários para realizar sua tarefa. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.1 Modelo do Sistema 
• Mas o número de recursos solicitados não pode 
exceder o número total de recursos disponíveis no 
sistema. 
• Tipos de recursos R1, R2, . . ., Rm 
Ciclos de CPU, espaço de memória, dispositivos 
de E/S 
• Cada tipo de recurso Ri possui Wi instâncias. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.1 Modelo do Sistema 
• Cada processo usa um recurso desta forma: 
– Requisitar => o processo requisita o recurso, se o 
pedido não puder ser satisfeito o processo entrar em 
estado de espera. 
– Usar => o processo pode operar o recurso. 
– Liberar => o processo libera o recurso. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.2 Caracterização do Deadlock 
• Deadlocks são indesejáveis. 
• Os processos nunca terminam sua execução e os 
recursos do sistema ficam comprometidos, impedindo 
que outras tarefas sejam iniciadas. 
• Vamos examinar mais de perto as características dos 
deadlocks. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.2.1 Condições necessárias 
• Pode haver deadlock se quatro condições ocorrerem 
simultaneamente: 
– Exclusão mútua: Somente um processo de cada vez 
pode usar um recurso. 
– Manter e esperar: Um processo retendo pelo menos 
um recurso está esperando para adquirir recursos 
adicionais mantidos por outros processos. 
 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
– Sem preempção: Um recurso pode ser liberado 
apenas voluntariamente pelo processo que o mantém, 
após esse processo ter completado sua tarefa. 
– Espera circular: Existe um conjunto {P0, P1, …, Pn} de 
processos esperando de modo que P0 está esperando 
um recurso que é mantido por P1, P1 está esperando 
um recurso que é mantido por P2, …, Pn–1 está 
esperando um recurso que é mantido por Pn, e Pn está 
esperando um recurso que é mantido por P0. 
8.2.1 Condições necessárias 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.2.2 Grafo de Alocação de Recursos 
• Um conjunto de vértices V e um conjunto de arestas A 
– V é particionado em dois tipos: 
• P = {P1, P2, …, Pn}, o conjunto consistindo em todos 
os processos ativos no sistema 
 
• R = {R1, R2, …, Rm}, o conjunto consistindo em todos 
os tipos de recursos no sistema 
– aresta de requisição – aresta direcionada P1  Rj 
– aresta de atribuição – aresta direcionada Rj  Pi 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Processo 
 
• Tipo de recurso com 4 instâncias 
 
 
• Pi requisita instância de Rj 
 
 
• Pi está mantendo 
 uma instância de Rj 
Pi
Pi 
Rj 
Rj 
8.2.2 Grafo de Alocação de Recursos 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Os conjuntos P, R e A: 
– P = {P1, P2, P3} 
– R = {R1, R2, R3 , R4} 
– A = {P1  R1, P2  R3, R1  P2 , R2  P2 , R2  P1, R3 
 P3} 
• Instância de Recursos: 
– 1 instância para R1 
– 2 instância para R2 
– 1 instância para R3 
– 3 instância para R4 
8.2.2 Grafo de Alocação de Recursos 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Estados do processo: 
– P1 mantém 1 instância de R2 e espera por 1 instância 
de R1; 
– P2 mantém 1 instância de R1 e R2 e espera por 1 
instância de R3; 
– P3 mantém 1 instância de R3. 
• Se o grafo não tiver ciclos, nenhum processo no 
sistema está em deadlocks, senão poderá haver 
deadlocks. 
8.2.2 Grafo de Alocação de Recursos 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Exemplo de um Grafo de Alocação 
de Recursos 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Grafo de Alocação de Recursos com um 
Deadlock 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Grafo de Alocação de Recursos 
com um Ciclo mas sem Deadlock 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Fatos Básicos 
• Se o gr fico não cont m ciclos  nenhum deadlock. 
 
• Se o gr fico cont m um ciclo  
– se apenas uma instância por tipo de recurso, ocorre 
deadlock 
– se v rias instâncias por tipo de recurso, h 
possibilidade de deadlock 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.3 Métodos para Tratamento de 
Deadlocks 
• Podemos lidar com o problema de deadlock de três 
maneiras: 
– Podemos usar um protocolo para prevenir ou evitar 
deadlocks, garantindo que o sistema nunca entre em 
estado de deadlock. 
– Podemos permitir que o sistema entre em um estado de 
deadlock, detectá-lo e recuperar. 
– Podemos ignorar o problema e fingir que os deadlocks 
nunca ocorrem no sistema. 
• Ignora o problema e finge que o deadlock nunca 
ocorre no sistema; usado pela maioria dos sistemas 
operacionais, inclusive o UNIX e o Windows. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.4 Prevenção de Deadlock 
• É um conjunto de métodos utilizados para garantir que 
pelo menos uma das condições necessárias não 
seja válida. 
• Esses métodos previnem deadlocks restringindo o 
modo como as requisições de recursos podem ser 
feitas. 
• Quais são as condições necessárias? Lembra? 
– Exclusão Mútua 
– Manter e esperar 
– Não preempção 
– Espera circular 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.4.1 Exclusão mútua 
• A condição de exclusão mútua precisa ser mantida 
para recursos não compartilháveis. 
• Por exemplo: 
– Uma impressora não pode ser compartilhada 
simultaneamente por vários processos. 
• Recursos compartilháveis, ao contrário, não exigem 
acesso por exclusão mútua e, portanto, não podem 
estar envolvidos em um deadlock. 
• Por exemplo: 
– Arquivo somente de leitura, vários processos podemreceber acesso simultâneo ao arquivo. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Para garantir que a condição de manter e esperar 
nunca ocorra no sistema, precisamos garantir que, 
sempre que um processo requisitar um recurso, ele 
não manterá quaisquer outros recursos. 
– Exige que cada processo requisite e receba a alocação 
de todos os seus recursos antes de iniciar sua 
execução, ou permite que um processo requisite 
recursos apenas quando não tiver nenhum outro. 
8.4.2 Manter e esperar 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.4.3 Não preempção 
• Para garantir que essa condição não seja satisfeita, 
podemos usar o protocolo a seguir: 
– Se um processo que estiver mantendo alguns recursos 
requisitar outro recurso que não possa ser alocado 
imediatamente para ele, então todos os recursos 
atualmente mantidos são liberados. 
– Os recursos preemptados são acrescentados lista de 
recursos pelos quais o processo est esperando. 
– O processo ser reiniciado somente quando puder 
reaver seus recursos antigos, assim como os novos que 
ele est requisitando. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.4.4 Espera circular 
• Um modo de garantir que essa condição nunca 
aconteça é impor uma ordena ão total de todos os 
tipos de recursos e exigir que cada processo requisite 
recursos em uma ordem crescente de enumera ão. 
 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.5 Evitar Deadlock 
• Um método alternativo para evitar deadlocks é exigir 
informações adicionais sobre como os recursos 
devem ser requisitados. 
• Os diversos algoritmos diferem na quantidade e no 
tipo de informações exigidas. 
• O modelo mais simples e útil exige que cada processo 
declare o número máximo de recursos de cada tipo 
que possa ser necessário. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.5 Evitar Deadlock 
• O algoritmo para evitar deadlock examina 
dinamicamente o estado de alocação de recursos 
para garantir que a condição de espera circular nunca 
possa existir. 
• O estado de alocação de recursos é definido pelo 
número de recursos disponíveis e alocados e pelas 
demandas máximas dos processos. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.6 Detecção de Deadlock 
• Se um sistema não emprega um algoritmo para 
prevenção de deadlock nem para evitar deadlock, 
então uma situação de deadlock poderá ocorrer. 
Nesse caso o sistema deverá fornecer uma das 
seguintes opções: 
– Um algoritmo que examine o estado do sistema para 
determinar se ocorreu um deadlock. 
– Um algoritmo para recuperar o sistema do deadlock. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.7 Recuperação do Deadlock 
• Quando um algoritmo de detecção determina a 
existência de um deadlock, há várias alternativas: 
– Uma possibilidade é informar ao operador que ocorreu 
um deadlock e deixar que o operador trate do deadlock 
manualmente. 
– Outra possibilidade é deixar o sistema se recuperar do 
deadlock automaticamente. 
 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.7 Recuperação do Deadlock 
• Existem duas opções para desfazer um deadlock: 
– Uma é abortar um ou mais processos para interromper 
a espera circular – 8.7.1 Término do processo. 
– A outra é fazer a preempção de alguns recursos de um 
ou mais processos em deadlock – 8.7.2 Preempção de 
recursos. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
8.7.1 Término do processo 
• Para eliminar deadlocks abortando um processo, 
usamos um dentre dois métodos. Nos dois métodos, o 
sistema reinvidica todos os recursos alocados aos 
processos terminados. 
• Dois métodos: 
– Abortar todos os processos em deadlock. 
– Abortar um processo de cada vez até que o ciclo de 
deadlock seja eliminado. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
– Abortar todos os processos em deadlock 
• Esse método desfará o ciclo de deadlock, mas com um 
custo alto; os processos em deadlock podem ter sido 
executados por muito tempo, e os resultados da 
computação parcial precisam ser descartados e 
provavelmente terão de ser refeitos mais tarde. 
8.7.1 Término do processo 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
– Abortar um processo de cada vez até que o ciclo de 
deadlock seja eliminado 
• esse método incorre em um custo adicional considerável, 
visto que, depois de cada processo ser abortado, um 
algoritmo de detecção de deadlock precisa ser invocado 
para determinar se quaisquer processos ainda estão em 
deadlock. 
8.7.1 Término do processo 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Abortar um processo pode não ser fácil. Muitos 
fatores podem afetar qual processo é escolhido, 
incluindo: 
– Prioridade do processo 
– Por quanto tempo o processo esteve em execução e 
quanto tempo mais levará para ser concluído 
– Recursos que o processo usou 
– Recursos de que o processo precisa para ser concluído 
– Quantos processos precisarão ser terminados 
– Se o processo é interativo ou em batch 
8.7.1 Término do processo 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Para eliminar deadlocks usando preempção de 
recursos, apropriamos alguns recursos dos processos 
com sucesso e entregamos esses recursos a outros 
processos, até que o ciclo de deadlock ser desfeito. 
• Se a preempção tiver de lidar com deadlocks, então 
três questões precisam ser resolvidas: 
– Seleção de uma vítima 
– Reversão (Rollback) 
– Starvation 
8.7.2 Preempção de recursos 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
– Seleção de uma vítima 
• Quais recursos e quais processos devem ser 
preemptados? 
• Assim como no término do processo, temos de determinar 
a ordem da preempção para minimizar o custo. 
• Os fatores de custo podem incluir parâmetros como 
número de recursos que um processo em deadlock está 
mantendo e o tempo que o processo consumiu até aqui 
durante sua execução. 
8.7.2 Preempção de recursos 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
– Reversão (Rollback) 
• Se apropriarmos um recurso de um processo, o que 
deverá ser feito com esse processo? 
• Logicamente, ele não pode continuar com sua 
execução normal; ele não possui algum recurso 
necessário. 
• Temos de efetuar o rollback do processo até algum 
estado seguro e reiniciá-lo a partir desse estado. 
8.7.2 Preempção de recursos 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
– Starvation 
• Como garantimos que a starvation não ocorrerá? Ou 
seja, como podemos garantir que nem sempre os 
recursos do mesmo processo serão preemptados? 
• Em um sistema em que a seleção da vítima se 
baseia principalmente em fatores de custo, pode 
acontecer que o mesmo processo sempre seja 
escolhido como vítima. 
• Temos de garantir que um processo poderá ser 
escolhido como vítima apenas por um número finito 
(pequeno)de vezes. A solução é incluir o número de 
rollback no fator de custo. 
8.7.2 Preempção de recursos 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Técnica Combinada 
para Tratamento de Deadlock 
• Combina os três m todos b sicos: 
– Prevenir 
– Impedir 
– Detectar 
• Usa a t cnica mais apropriada para tratarde 
deadlocks dentro de cada classe de recursos em um 
sistema. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Deadlock de tráfego 
Sistemas Operacionais com Java 
Referências 
• Capítulo 8 da referência abaixo: 
– SILBERSCHATZ, ABRAHAM; GAGNE, GREG; 
GALVIN, PETER BAES. Sistemas operacionais: 
com java. . Rio de Janeiro: Elsevier, 2004. 
 
Silberschatz, Galvin e Gagne (c) 2003

Outros materiais