Baixe o app para aproveitar ainda mais
Prévia do material em texto
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS AED Atividade Externa da Disciplina SISTEMAS OPERCIONAIS DEADLOCK Marcus Vinicius Vieira de Meneses Mat.: 20201003300170 Prof.: Nilson Cardoso Amaral GOIÂNIA 2022 Introdução Deadlock ou Impasse é uma situação fruto da disputa entre processos por recursos dos sistemas computacionais. Uma vez que processos podem utilizar mais de um recurso simultaneamente, como acesso à memória e uma solicitação de impressão, é natural que dois ou mais processos disputem um mesmo recurso. O problema acontece quando há uma interdependência de recursos entre processos, ou seja, quando dois ou mais processos dependem, cada um, de um recurso utilizado por outro. Nesse ponto há um impasse (deadlock) em que os processos tendem a ficar bloqueados permanentemente. Suponha dois processos A e B. Cada um vai realizar a tarefa de scanear um documento e gravar o resultado da digitalização em um disco CD-ROM. O processo A solicita o recurso de scanner, que é concedido. O processo B solicita inicialmente o recurso gravador CD-ROM, que também é concedido. Nesse ponto, ambos os recursos estão sendo utilizados, cada um alocado para um processo diferente. O problema acontece quando o processo A tenta solicitar o recurso do gravador, enquanto o processo B tenta solicitar o recurso scanner. Ambos os recursos estão alocados e cada processo espera que o outro desaloque para continuar sua rotina. Não há saída, portanto tem-se um deadlock. Condições para ocorrência de deadlock: Segundo Coffman, Elphick e Shosani (1971), existem 4 condições básicas que devem existir para que se possa garantir a existência de um deadlock: 1) Condição de exclusão mútua: cada recurso ou está alocado a exatamente um processo ou está disponível. 2) Condição de posse e de espera: processos que estejam de posse de recursos obtidos anteriormente podem solicitar novos recursos 3) Condição de não-preempção: recursos já alocados a processos não podem ser tomados à força. Eles precisam ser liberados explicitamente pelo processo que detém sua posse. 4) Condição de espera circular: deve existir uma cadeia circular de dois ou mais processos, cada um dos quais esperando por um recurso que está com o próximo membro da cadeia. É necessários que todas as condições estejam presentes para que ocorra um deadlock. Essa esquematização também é importante, pois permite que sejam desenvolvidos esquemas que visam a prevenção de deadlocks. Como lidar com impasses: Para saber lidar corretamente com impasses, precisamos, antes, definir os recursos computacionais disponíveis, e esquematizar a relação entre alocação e requisições destes recursos. Daí, podem ser definidos dois estados possíveis para um sistema: seguro e inseguro. Um estado é seguro se não provocar um impasse, de forma que haja uma maneira de satisfazer todas as solicitações que partem dos processos em execução. No exemplo abaixo, foi definido um único recurso e três processos A, B, C com a alocação inicial e alocação máxima deste recurso. No total, existem 10 instâncias deste recurso, sendo 7 alocadas e 3 livres. Na transição das figuras, o que acontece é um escalonamento cuidadoso dos recursos de forma que seja garantida a execução de todos os processos sem a ocorrência de deadlocks. Algoritmo do banqueiro Desenvolvido por Dijkstra, a ideia do algoritmo é detectar impasses conferindo processos para ver se conceder a solicitação leva a um estado inseguro. Se afirmativo, a solicitação é negada. Se conceder a solicitação conduz a um estado seguro, ela é levada adiante. No exemplo abaixo, há dois cenários possíveis, seguro e inseguro, respectivamente. Conclusão Deadlocks são situações inerentes à estrutura funcional de um sistema operacional que lida com a alocação, uso e liberação de recursos. Essa situação acontece quando um conjunto de processos são bloqueados esperando a liberação de algum recurso que outros processos do mesmo conjunto estão utilizando. Lidar com impasses pode ser complicado, mas uma abordagem eficiente é controlar o uso de recursos garantindo que exista uma sequência de atividades que permita com que todos os processos sejam concluídos. Nesse sentido há uma série de algoritmos e abordagens diferentes, como o algoritmo do banqueiro que garante a existência de uma sequência de atividades que permite a conclusão dos processos. Referências: TANEMBAUM, Andrew S. Sistemas Operacionais Modernos. São Paulo, 2003. Prentice Hall. MAIA, Luiz Paulo e MACHADO, Francis Berenger. Arquitetura de Sistemas Operacionais. Rio de Janeiro, 2002. LTC. RIBEIRO, Lucília. Apostila Sistemas Operacionais.
Compartilhar