18
 Sistemas Operacionais  Sistemas de Informação  . 2º. Semestre PARTE II

Parte 02.2 - Deadlock

Embed Size (px)

Citation preview

Sistemas de InformaoSistemas OperacionaisProf. Luiz Carlos Reis

PARTE II

2. Semestre

DeadlocksUm processo em um sistema multiprogramado dito estar em uma situao de deadlock quando ele est esperando por um evento particular que jamais ocorrer. Em um deadlock em um sistema, um ou mais processos esto em deadlock. Em sistemas multiprogramados, o compartilhamento de recursos uma das principais metas do sistemas operacionais. Quando recursos so compartilhados entre uma populao de usurios, e cada usurio mantm controle exclusivo sobre os recursos particulares a ele alocados, possvel que haja a ocorrncia de deadlocks no sentido em que alguns usurios jamais sejam capazes de terminar seu processamento. - O estudo de deadlocks envolve quatro reas: prevenir, evitar, detectar e recuperar. - A maioria dos deadlocks em sistemas reais geralmente envolve mltiplos processos competindo por mltiplos recursos.

Deadlocks - Exemplo1 - Processo A solicita o scanner e autorizado 3 - O gravador de CD solicitado pelo Processo A

Gravador de CD Scanner

4 - O scanner solicitado pelo processo B

2 - Processo B solicita o Gravador CD e autorizado

Deadlocks OcorrnciasEm uma Rede:Vrios usurios compartilhando recursos como impressora, scanner, gravadores de CD e unidades de fitas podem causar deadlocks. Situaes mais delicadas podem causar deadlocks que envolvam 3, 4 ou mais dispositivos. Deadlocks podem ocorrer em diversas situaes alm daquelas que envolvem requisies simultneas a dispositivos de E/S dedicados: - Em sistemas de Banco de Dados: um programa pode ter de bloquear o acesso a diversos registros que estiver usando, a fim de evitar condies de disputa (race conditions). Se o processo A bloquear o acesso ao registro R1, o processo B bloquear o acesso ao registro R2 e depois cada processo tentar bloquear o acesso ao registro do outro, teremos um Deadlocks. Portanto deadlocks podem ocorrer tanto em software quanto em hardware.

Deadlocks alguns exemplosUm Deadlock de Trfego:A figura abaixo, ilustra um tipo de deadlock que ocasionalmente se desenvolve em cidades. Um certo nmero de automveis esto tentando atravessar uma parte da cidade bastante movimentada, mas o trfego ficou completamente paralisado. O trfego chegou numa situao onde somente a polcia pode resolver a questo, fazendo com que alguns carros recuem na rea congestionada. Eventualmente o trfego volta a fluir normalmente, mas a essa altura os motoristas j se aborreceram e perderam tempo considervel.

Deadlocks alguns exemplosUm Deadlock Simples de Recursos:Muitos deadlocks ocorrem em sistemas de computao devido natureza de recursos dedicados (isto , os recursos somente podem ser usados por um usurio por vez, algumas vezes sendo chamados de recursos serialmente reusveis). Suponha que em um sistema o processo A detm um recurso 1, e preciso alocar o recurso 2 para poder prosseguir. O processo B, por sua vez, detm o recurso 2, e precisa do recurso 1 para poder prosseguir. Nesta situao, temos um deadlock, porque um processo est esperando pelo outro. Esta situao de espera mtua chamada muitas vezes de espera circular (circular wait).(exemplo do slide 3).

Deadlocks alguns exemplosDeadlock em Sistemas de Spooling:Spooling: mecanismo que o SO utiliza para agilizar a impresso de documentos. Ao invs de mandar linhas para impresso o sistema cria uma rea de spool em disco, gerando um arquivo de spool com filas de impresso. Em alguns sistemas de spool, todo o job de impresso deve ser gerado antes do incio da impresso. Isto pode gerar uma situao de deadlock, uma vez que o espao disponvel em disco para a rea de spooling limitado. Se vrios processos comearem a gerar seus dados para o spool, possvel que o espao disponvel para o spool fique cheio antes mesmo de um dos jobs de impresso tiver terminado de ser gerado. Neste caso, todos os processos ficaro esperando pela liberao de espao em disco, o que jamais vai acontecer, e portanto gerando uma situao de deadlock. A soluo neste caso seria o operador do sistema cancelar um dos jobs parcialmente gerados. No Sistemas operacionais moderno, como Windows 9x, W2K, o sistema de spool pode ser configurado para comear a imprimir assim que uma pgina estiver disponvel em disco. No Windows 3.X o spool s iniciava a impresso aps todo o job de impresso ter sido gerado.

Recursos: ConceitosPara tornar a discusso sobre Deadlocks mais ampla possvel, faremos referncia aos objetos acessados como recursos. Um recurso pode ser um dispositivo de hardware (fita, impressora,etc) ou uma informao (um registro de B.D.), ou seja um recursos algo que pode ser usado por somente um nico processo em um dado instante de tempo. Um Processo pode requisitar quantos recursos precisar para desempenhar a tarefa para qual foi projetado. Um Processo pode utilizar um recurso na seqncia: - Requisitar: se a requisio no pode ser atendida imediatamente (pois o recurso est em uso por outro processo) ento o processo requisitante deve esperar at obter o recurso; - Usar o recurso; - Liberar o recurso.

Tipos de RecursosRecurso Preemptvel: aquele que pode ser retirado do processo proprietrio sem nenhum prejuzo. (memria, CPU,etc)

Situao: Pa em execuo. Pa solicita Impressora O time slice do Pa acaba (sai da CPU) Pb entra em execuo. Solicita, sem sucesso, a impressora. Pa tem a impressora e Pb tem a memria. Poderia ocorrer um deadlock, mas possvel tomar a memria do Pb (levar p/ o disco) e carregar o Pa. Termina a execuo e impresso do Pa e carrega o Pb sem nenhum Deadlock.

Tipos de RecursosRecurso No Preemptvel: aquele que no podo ser retirado do atual processo proprietrio sem que a computao apresente falha. (unidade de fita, gravador de CD). Situao: Pa comeou a gravar um CD, o Pb solicita tal recurso. Se o sistema retirar repentinamente o gravador de CDs do Pa e fornec-lo a Pb, resultar em um CD com erros.

Deadlocks, em geral, envolvem recursos no preemptveis. Situaes com recursos preemptveis podem ser resolvidos realocando recursos de um processo a outro.

Quatro condies necessrias para o Deadlock1 Condio de Excluso Mtua: somente um processo pode usar o recurso. 2 Condio de Posse e Espera: um processo pode segurar recursos enquanto espera por outros. 3 Condio de no preempo: nenhum recurso pode ser retirado de um processo eles devem ser explicitamente liberados pelos processo que os retm. 4 Condio de espera circular: uma corrente de processos existe, de maneira que cada processo possui pelo menos um recurso desejado pelo prximo processo na corrente. - conseqncia das 3 primeiras condies e a definio de deadlock.

Todas esses quatro condies devem estar presentes para que ocorra um deadlock.

Grafos de Deadlocks

Grafos de Deadlocks

Prevenir DeadlocksPrevenir que pelo menos uma das condies necessrias para deadlock no ocorra.

Excluso Mtua:Exemplo de preveno: spooling para impressoras Realidade: no pode ser evitada na maioria das situaes.

Posse e Espera:Preveno: - um processo deve solicitar todos os seus recursos simultaneamente. - conhecimento anterior dos recursos necessrios. Realidade: - maior espera por recursos - recursos alocados desnecessariamente

Prevenir DeadlocksNo preempo:preveno: devolver recurso assim que necessrio Realidade: somente prtico quando o estado do recurso pode ser facilmente salvo e restaurado (processador)

Espera Circular:Preveno: - ordenar todos os recurso e permitir apenas que sejam solicitas em ordem. (R1, R2, R3, R4, R5,...). Realidade: - exige conhecimento prvio de todos os recursos necessrios. - a alocao dos recursos pode no ser a mais eficiente.

Impedir DeadlocksEstratgias: - no disparar um processo cujo uso de recurso pode levar a um deadlock - no atender pedidos de recursos que podem levar a um deadlock Vantagens: - menos restritivo que preveno Desvantagens: - somente memria,etc) para recursos preemptveis (processador,

Detectar DeadlocksO S.O. verifica periodicamente o estado dos recursos e processos procurando por deadlocks. Essa procura pode demandar recursos de processador Encontrou ? Como Recuper-los ? cancelar todos os processos em deadlock rollback e restart dos processos em deadlock cancelar progressivamente os processos em deadlock.

Ignorar DeadlocksAlgoritmo do Avestruz Assumir que deadlocks so raros. No justificar o (mau) uso dos recursos para prevenir, evitar ou detectar deadlocks. estratgia adotada Operacionais. pela maioria dos Sistemas