Mindmap
Deadlock/Impasse
Inhalt der Mindmap
Deadlock/Impasse
Loop de solicitações sem respostas que geram um impasse.
Processo relativamente para por falta de recursos
Condições para o Deadlock (todas as condições precisam acontecer ao mesmo tempo para que haja o deadlock)
- Exclusão mútua --> dois processos não podem usar o mesmo recurso, um irá ficar na espera
- Ex: impressora; dois arquivos distintos não podem ser impressos ao mesmo tempo
- Posse e espera--> O processo que já possui um recurso, pode fazer solicitação de outro, mas vai ficar na fila de espera
- Não preempção--> recursos concedidos com antecedência não podem ser tomados
- Espera circular--> cadeia circular entre dois ou mais processos onde um está a espera de um recurso retido pelo membro da cadeia seguinte
- Comunicação e sincronização de processos
- Sistemas multiprogramados com um processador--> os processos se alternam no uso do processador e demais recursos de acordo com critérios de escalonamento.
- Sistemas com multiprocessadores--> pode ter várias tarefas sendo executada em paralelo, sendo cada tarefa em um processador diferente.
- Comunicação entre aplicações concorrentes--> a comunicação pode ser implementada de várias maneiras, entre elas, o uso da memória compartilhada entre os processos ou através de troca de mensagens entre processos em execução.
- Comunicação compartilhada por memória--> os processos compartilham informações de leitura e escrita através do buffer de memória.
- Operação de escrita--> um processo só pode gravar dados no buffer se ela não estiver cheio.
- Operação de leitura--> um processo só pode ler os dados do buffer caso exista algum dado para ser lido.
- Nos dois casos, o processo fica em estado de espera até que o buffer esteja pronto para a operação.
- Problemas de compartilhamento de recursos--> sempre que houver dois ou mais processos compartilhando um recurso, é necessário um mecanismo de controle para evitar conflitos de concorrência, esse mecanismo é chamado de CONDIÇÃO DE CORRIDA.
- Sincronização
- Mecanismo que deixa os processos aguardando o recurso para prosseguir sua execução.
- importante para garantir a integridade e a confiabilidade na execução de aplicações concorrentes.
- Exclusão mútua --> dois processos não podem usar o mesmo recurso, um irá ficar na espera
Tratamento
- algoritmo Avestruz--> ignorar por completo e fingir que não existe nenhum problema
- Preempção--> tomar o recurso de algum outro processo
- Restauração de estado--> armazenar pontos de verificação de processos regularmente para que o estado salvo sirva para restaurar o processo em deadlock. (é como uma restauração de sistema)
- Eliminar processos--> jeito mais agressivo, porém mais fácil de se quebrar um deadlock.
- Evitar dinamicamente--> definir os recursos com cuidado, avaliando a chance de tal ação gerar um deadlock.
- Prevenção--atacar antes de ser atacado
- Atacar uma das condições necessárias para o deadlock
- Exclusão mútua-- usar spool em tudo.
- posse e espera-- requisitar inicialmente os recursos necessários.
- Não preempção-- retomar recursos alocados
- Espera circular-- ordenação numérica de recursos.