O que é um deadlock quais as condições para obtê lo e quais as soluções possíveis?

Grátis

45 pág.

O que é um deadlock quais as condições para obtê lo e quais as soluções possíveis?

O que é um deadlock quais as condições para obtê lo e quais as soluções possíveis?

  • Denunciar


Pré-visualização | Página 6 de 15

em ambientes cliente-servidor é a melhoria no desempenho da aplicação 
servidora. Além disso, a comunicação entre os threads no servidor pode ser feita através de mecanismos mais simples e 
eficientes. 
 
11. Como o uso de threads pode ser útil em arquiteturas microkernel? 
A arquitetura microkernel utiliza processos para implementar funções relativas ao kernel do sistema operacional, sendo 
que esses processos são utilizados como servidores quando algum cliente necessita de algum serviço do sistema. 
Arquiteturas que implementam threads, possibilitam um melhor desempenho dos processos servidores. 
Soluções de Exercícios – Autores – Versão 3.1 (Jan/2004) 
Arquitetura de Sistemas Operacionais – 3a Edição – Machado/Maia 13 
Capítulo 7 – Sincronização e Comunicação entre Processos 
 
1. Defina o que é uma aplicação concorrente e dê um exemplo de sua utilização. 
É uma aplicação estruturada de maneira que partes diferentes do código do programa possam executar 
concorrentemente. Este tipo de aplicação tem como base a execução cooperativa de múltiplos processos ou threads, que 
trabalham em uma mesma tarefa na busca de um resultado comum. 
 
2. Considere uma aplicação que utilize uma matriz na memória principal para a comunicação entre vários 
processos concorrentes. Que tipo de problema pode ocorrer quando dois ou mais processos acessam uma 
mesma posição da matriz? 
Caso não haja uma gerência no uso concorrente dos recursos compartilhados, inconsistências nos dados podem ocorrer. 
 
3. O que é exclusão mútua e como é implementada? 
É impedir que dois ou mais processos acessem um mesmo recurso simultaneamente. Para isso, enquanto um processo 
estiver acessando determinado recurso, todos os demais processos que queiram acessá-lo deverão esperar pelo término 
da utilização do recurso 
 
4. Como seria possível resolver os problemas decorrentes do compartilhamento da matriz, apresentado 
anteriormente, utilizando o conceito de exclusão mútua? 
Garantindo na aplicação que somente um único processo pode estar acessando a matriz por vez. 
 
5. O que é starvation e como podemos solucionar esse problema? 
Starvation é a situação onde um processo nunca consegue executar sua região crítica e, conseqüentemente, acessar o 
recurso compartilhado. A solução para o problema depende de estabelecimentos de mecanismos de acesso pelo sistema 
operacional que garantam o acesso ao recurso por todos os processos que solicitarem uso. 
 
6. Qual o problema com a solução que desabilita as interrupções para implementar a exclusão mútua? 
Essa solução apesar de simples, apresenta algumas limitações. Primeiramente, a multiprogramação pode ficar 
seriamente comprometida, já que a concorrência entre processos tem como base o uso de interrupções. Um caso mais 
grave poderia ocorrer caso um processo desabilitasse as interrupções e não tornasse a habilitá-las. Nesse caso, o 
sistema, provavelmente, teria seu funcionamento seriamente comprometido. 
 
Em sistemas com múltiplos processadores, esta solução torna-se ineficiente devido ao tempo de propagação quando um 
processador sinaliza aos demais que as interrupções devem ser habilitadas ou desabilitadas. Outra consideração é que o 
mecanismo de clock do sistema é implementado através de interrupções, devendo esta solução ser utilizada com 
bastante critério. 
 
7. O que é espera ocupada e qual o seu problema? 
Na espera ocupada, toda vez que um processo não consegue entrar em sua região crítica, por já existir outro processo 
acessando o recurso, o processo permanece em looping, testando uma condição, até que lhe seja permitido o acesso. 
Dessa forma, o processo em looping consome tempo do processador desnecessariamente, podendo ocasionar problemas 
ao desempenho do sistema. 
 
8. Explique o que é sincronização condicional e dê um exemplo de sua utilização. 
Sincronização condicional é uma situação onde o acesso ao recurso compartilhado exige a sincronização de processos 
vinculada a uma condição de acesso. Um recurso pode não se encontrar pronto para uso devido a uma condição 
específica. Nesse caso, o processo que deseja acessá-lo deverá permanecer bloqueado até que o recurso fique 
disponível. Um exemplo clássico desse tipo de sincronização é a comunicação entre dois processos através de operações 
de gravação e leitura em um buffer. 
 
9. Explique o que são semáforos e dê dois exemplos de sua utilização: um para a solução da exclusão 
mútua e outro para a sincronização condicional. 
Um semáforo é uma variável inteira, não negativa, que só pode ser manipulada por duas instruções: DOWN e UP. Ver 
itens 7.7.1 e 7.7.2. 
 
 
 
Soluções de Exercícios – Autores – Versão 3.1 (Jan/2004) 
Arquitetura de Sistemas Operacionais – 3a Edição – Machado/Maia 14 
10. Apresente uma solução para o problema dos Filósofos que permita que os cinco pensadores sentem à 
mesa, porém evite a ocorrência de starvation e deadlock. 
Livre. 
 
11. Explique o que são monitores e dê dois exemplos de sua utilização: um para a solução da exclusão mútua 
e outro para a sincronização condicional. 
Monitores são mecanismos de sincronização de alto nível que torna mais simples o desenvolvimento de aplicações 
concorrentes. Ver itens 7.8.1 e 7.8.2. 
 
12. Qual a vantagem da forma assíncrona de comunicação entre processos e como esta pode ser 
implementada? 
A vantagem deste mecanismo é aumentar a eficiência de aplicações concorrentes. Para implementar essa solução, além 
da necessidade de buffers para armazenar as mensagens, devem haver outros mecanismos de sincronização que 
permitam ao processo identificar se uma mensagem já foi enviada ou recebida. 
 
13. O que é deadlock, quais as condições para obtê-lo e quais as soluções possíveis? 
Deadlock é a situação em que um processo aguarda por um recurso que nunca estará disponível ou um evento que não 
ocorrerá. Para que ocorra a situação de deadlock, quatro condições são necessárias simultaneamente: 
 
ƒ exclusão mútua: cada recurso só pode estar alocado a um único processo em um determinado instante; 
ƒ espera por recurso: um processo, além dos recursos já alocados, pode estar esperando por outros recursos; 
ƒ não-preempção: um recurso não pode ser liberado de um processo só porque outros processos desejam o mesmo 
recurso; 
ƒ espera circular: um processo pode ter de esperar por um recurso alocado a outro processo e vice-versa. 
 
Para prevenir a ocorrência de deadlocks, é preciso garantir que uma das quatro condições apresentadas, necessárias para 
sua existência, nunca se satisfaça. A prevenção de deadlocks evitando-se a ocorrência de qualquer uma das quatro 
condições é bastante limitada e, por isso, na prática não é utilizada. Uma solução conhecida como Algoritmo do 
Banqueiro (implementada com a presença das quatro condições) também possui várias limitações. A maior delas é a 
necessidade de um número fixo de processos ativos e de recursos disponíveis no sistema. Essa limitação impede que a 
solução seja implementada na prática, pois é muito difícil prever o número de usuários no sistema e o número de 
recursos disponíveis. 
 
14. Em uma aplicação concorrente que controla saldo bancário em contas correntes, dois processos 
compartilham uma região de memória onde estão armazenados os saldos dos clientes A e B. Os 
processos executam, concorrentemente os seguintes passos: 
 
Processo 1 (Cliente A) Processo 2 (Cliente B) 
 
/* saque em A */ /*saque em A */ 
1a. x := saldo_do_cliente_A; 2a. y := saldo_do_cliente_A; 
1b. x := x - 200; 2b. y := y - 100; 
1c. saldo_do_cliente_A := x; 2c. saldo_do_cliente_A := y; 
 
/* deposito em B */ /* deposito em B */ 
1d. x := saldo_do_cliente_B; 2d. y := saldo_do_cliente_B; 
1e. x := x + 100; 2e. y := y + 200; 
1f. saldo_do_cliente_B := x; 2f. saldo_do_cliente_B := y; 
 
Supondo que os valores dos saldos de A e B sejam, respectivamente, 500 e 900, antes de os processos

O que é deadlock quais as condições para obtê lo e Auqis as soluções possíveis?

Um estado de deadlock ocorre quando dois ou mais processos estão esperando indefinidamente por um evento que só pode ocorrer por um dos processos em espera. Existem alguns métodos para tratar deadlocks, como, por exemplos, detecção e recuperação, evitar deadlock e prevenção de deadlock.

Quais são as 4 condições para um deadlock?

Condições para que ocorra um deadlock: 1) Exclusão Mútua: cada recurso ou está associado a exatamente um processo ou está disponível; 2) Posse e espera: um processo que já possui algum recurso pode requisitar outros e aguardar por sua liberação; 3) Não existe preempção: recursos dados a um processo não podem ser ...

Quais são as condições necessárias e suficientes para que aconteça um deadlock?

Quais são as condições necessárias e suficientes para que aconteça um Deadlock? Exclusão mútua; Posse e espera; Preempção; Espera Circular.

O que é deadlock e como evitá lo?

Prevenção de Deadlock Uma maneira de evitar deadlocks é impedir que ao menos uma das condições para sua existência ocorra: Exclusão mútua: impossível de evitar em geral. Aquisição gradativa de recursos: impossível de evitar. Sem preempção: Evitável.