Baixe o app para aproveitar ainda mais
Prévia do material em texto
Nome: Vitória Verônica Oliveira da Silva dos Santos Professor: Fábio Contarini Disciplina: sistemas operacionais Curso: sistemas de informação AVA2 Novembro/2021 Rio de Janeiro 1-As linhas que causam problemas na execução do programa são as linhas 4, 9 e 10 do proc_B e linhas 4 e 6 do proc_C. Quando tentar alocar a impressora (linha 4) o proc_B ficará travado, com o processo parado, esperando a liberação do proc_C, equanto o proc_C quando tentar alocar o scanner (linha 4), vai ficar com o processo parado, esperando a liberação do proc_B. As linhas 9 e 10 do proc_B e 6 do proc_C, são as linhas que os recursos são liberados depois de ocasionado o impasse. 2-Em determinado ponto de execução do programa, ocorrerá deadlocks(que são os impasses), porque os processos vão ficar parados, esperando a então liberação de recursos. No caso do proc_B, vai ficar esperando a liberação da impressora, que está alocada no proc_C e o proc_C, vai ficar esperando a liberação do scanner que está em posse de proc_B. Esse impasse pode levar ao travamento do sistema. Existem 4 condições para esse impasse, que são: • Exclusão mútua, onde cada recurso estava associado a exatamente a um processo, ou estava disponível. No caso do primeiro passo do processo, proc_A-plotter// proc_B-scanner// proc_C- impressora • Condição de posse e espera, que são processos com posses de recurso que foram concedidos antes e podem solicitar novos recursos. No caso do processo, proc_B e proc_C. • Condição e não preempção, onde recursos concedidos antes não podem ser tomados a força de um processo, ou seja, precisam ser claramente liberados pelos processos que os tem. • Condição de espera circular, no qual deve haver uma lista circular de dois ou mais processos, cada um deles esperando por um processo de possse do membro seguinte. 3-Reescrevendo o código, correspondi a condição de que cada processo tem direito a somente 1 único recurso de cada vez, e se por acaso ele precisar de um segundo recurso, vai ser necessário liberar o primeiro recurso. Também teria outra maneira de reescrever, que seria por ordenação numérica dos recursos. • Código reescrito (Alterado proc_B e proc_C) Proc_A processa_algo(); aloca_plotter(); processa_algo(); libera_plotter(); ///////// Proc_B processa_algo(); aloca_scanner(); processa_algo(); aloca_plotter(); processa_algo(); libera_plotter(); libera_scanner(); aloca_impressora(); processa_algo(); libera_impressora(); ///////// Proc_ C processa_algo(); aloca_impressora(); processa_algo(); libera_impressora(); processa_algo(); aloca_scanner(); processa_algo(); libera_scanner();
Compartilhar