A ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
Por: Rafael Muniz • 23/11/2022 • Trabalho acadêmico • 806 Palavras (4 Páginas) • 100 Visualizações
UNIVERSIDADE VEIGA DE ALMEIDA[pic 1]
ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
RAFAEL MUNIZ REIS
SISTEMAS OPERACIONAIS – AVA2
Prof. Miguel Angelo Z. de Figueiredo
PARACAMBI/RJ
2022
- A identificação das linhas do sistema que podem causar problemas durante sua execução:
RESPOSTA:
Linhas 4, 9 e 10 do Procedimento Proc_B e linhas 4 e 6 do Procedimento Proc_C.
- A explicação dos problemas que podem ocorrer:
RESPOSTA:
Na linha 4 ao tentar alocar a impressora o Proc_B ficará travando ao processar enquanto aguarda a liberação do Proc_C.
Na linha 4 o Proc_C também irá travar ao tentar alocar o scanner enquanto aguarda a liberação do Proc_B.
Nas linhas 9 e 10 de Proc_B e 6 de Proc_C, pois são as linhas em que os recursos são liberados tardiamente, ocasionado o impasse.
Em certo ponto quando o programa estiver em execução ocorrerá deadlocks, pois alguns processos ficarão parados aguardando a liberação de recursos.
No caso Proc_B ficará aguardando a liberação da impressora, a qual está alocado no Proc_C e Proc_C ficará aguardando a liberação do scanner que está em posse de Proc_B. Esse impasse pode levar ao travamento do sistema.
- Uma proposta de correção no algoritmo para que os problemas sejam corrigidos e o sistema execute sem erros
RESPOSTA:
Cada processo deve ter um recurso de cada vez e se precisar de um segundo recurso, será necessário liberar o primeiro.
Proc_A aloca o potter, processa e depois libera.
Proc_B enquanto o scanner não libera, o sistema não vai conseguir alocar a impressora e nem o potter.
Proc_C ao alocar a impressora, o sistema não consegue alocar o scanner sem liberar a impressora, desta forma o sistema fica confuso e não consegue alocar o scanner
Proc_A
Inicio
Enquanto (verdadeiro) Faça
processa_algo();
aloca_plotter();
processa_algo();
libera_plotter();
Fim;
Proc_B
Inicio
Enquanto (verdadeiro) Faça
processa_algo();
aloca_scanner();
processa_algo();
aloca_plotter();
processa_algo();
libera_plotter();
libera_scanner();
aloca_impressora();
processa_algo();
libera_impressora();
Fim;
Proc_ C
Inicio
Enquanto (verdadeiro) Faça
processa_algo();
aloca_impressora();
processa_algo();
libera_impressora();
...