Grátis 45 pág.
Pré-visualização | Página 6 de 15em 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.
|