Prévia do material em texto
EXERCÍCIOS 1. Explique o que é espera ocupada e por que os mecanismos que empregam essa técnica são considerados ineficientes. R=Espera ocupada é um modelo de programação paralela caracterizado por testes repetidos de um condição que impedem o progresso de um processo e que só pode ser alterada por outro processo. Possui a grande desvantagem de levar a desperdícios de tempo em um monoprocessador, já que este passa parte do tempo testando condições (cujo resultado é falso), ao invés de realizar trabalho útil. Porém, pode ser uma solução aceitável para multiprocessadores. 2.Em que circunstâncias o uso de espera ocupada é inevitável? 3.Explique o que são condições de disputa, mostrando um exemplo real. R= Condições de Disputa: Em alguns SO, processo compartilham a mesma área de processamento na memória principal ou o mesmo arquivos. Ex.: Spool de impressão.Existem dois processos. Um gera um nome de arquivo para ser impresso em um Diretório de Spool, um outro processo, Daemons de impressão, verifica constantemente este diretório para checar arquivos a serem impressos. Encontrando arquivos ele os remove e imprime. Também no meio deste processo existem duas variáveis que determina as próximas unidade o diretório de Sspool vazias e quais as próximas unidades a serem impressas. Ex.: Supondo que em algum momento a variável entra, esta =7, e um processo A solicita a impressão de um arquivo.a, neste instante o escalonador de processo inte3rrompe o processo A e inicial um processo B que solicita a impressão de um arquivo.b, este ele a variável entra = 7 e incrementa de 1, entra fica igual a 8, neste instante o escalonador volta a a da execução ao processo A. Para este processo o valor de entra é iguak a 7, e ele coloca seu arquivo.a no diretório de Spool 7. No mesmo lugar onde se havia alterado ante pelo processo B. Colocando em seu lugar o arquivo.a e não o arquivo.b. como conseqüência de tudo isso, o arquivo do processo B desaparece e não imprime. (Condição de disputa). 4.Mostre como pode ocorrer violação da condição de exclusão mútua em um semáforo se as operações down e up não forem implementadas de forma atômica. R= podem ocorrer problemas de consistência dos dados ou do estado .O código apresentado a seguir implementa de forma simplificada. A operação de violação da exclusão mútua ! busy: 1. Figura 4: Condição de que a execução das operações Down(s) e Up(s) deve ser atômica. 5.Em que situações um semáforo deve ser inicializado em 0, 1 ou n > 1? R=Alocação de Recursos (semáforos contadores) Para permitir que mais de um processo acesse a região crítica ao mesmo tempo (e.g., no caso de recursos compartilhados) basta inicializar o semáforo com o valor especificado. Neste caso: s.count>=0: s.count representa o número de processos que podem executar o P(S) sem bloquear. s.count<0: a magnitude de s.count representa o número de processos suspensos em s.queue. 6.Por que não existem operações read(s) e write(s) para ler ou ajustar o valor corrente de um semáforo? 7.Explique cada uma das quatro condições necessárias para ao corrênciade Impasses. Condição de exclusão mútua: cada recurso está atribuído a um único processo em um dado intervalo de tempo. Condição de segura e espera: um processo pode solicitar novos recursos quando ainda está segurando outros recursos.. Condição de nenhuma preempção: um recurso concedido a um processo somente pode ser liberado pelo processo. Condição de espera circular: existe uma cadeia circular de dependência entre os processos. 8.Na prevenção de impasses, como pode ser feita a quebra da condição de posse e espera? R= A condição de espera circular pode ser evitada se um processo somente puder usar um recurso em um dado intervalo de tempo: Para evitar a condição de nenhuma preempção: O problema é que alguns recursos devem ser não-preemptivos, O sistema poderá tirar um recurso do processo, se necessário. tempo para reposicionar a fita na próxima posição do arquivo a ser lido. mesmo tempo, além de a impressão ser incorreta, perderemos um bom unidade de fita. 9.Na prevenção de impasses, como pode ser feita a quebra da condição de exclusão mútua? Exclusão mútua : se não houver exclusão mútua no acesso a recursos, não poderão ocorrer impasses. Mas, como garantir a integridade de recursos compartilhados sem usar mecanismos de exclusão mútua? Uma solução interessante é usada na gerência de impressoras: um processo servidor de impressão (printer spooler) gerencia a impressora e atende as solicitações dos demais processos. Com isso, os processos que desejam usar a impressora não precisam obter acesso exclusivo a esse recurso. A técnica de spooling previne impasses envolvendo as impressoras, mas não é facilmente aplicável a outros tipos de recurso, como arquivos em disco e áreas de memória compartilhada. 10.Na prevenção de impasses, como pode ser feita a quebra da condição de espera circular? Posse e espera : caso as tarefas usem apenas um recurso de cada vez, solicitandoo e liberando-o logo após o uso, impasses não poderão ocorrer. No exemplo da transferência de fundos da figura 9, seria possível separar a operação de transferência em duas operações isoladas: débito em c1 e crédito em c2 (ou viceversa), sem a necessidade de acesso exclusivo simultâneo às duas contas. Com isso, a condição de posse e espera seria quebrada e o impasse evitado. Outra possibilidade seria somente permitir a execução de tarefas que detenham todos os recursos necessários antes de iniciar. Todavia, essa abordagem poderia levar as tarefas a reter os recursos por muito mais tempo que o necessário para suas operações, degradando o desempenho do sistema. Uma terceira possibilidade seria associar um prazo (time-out) às solicitações de recursos: ao solicitar um recurso, a tarefa define um tempo máximo de espera por ele; caso o prazo expire, a tarefa pode tentar novamente ou desistir, liberando os demais recursos que detém. 11.Na prevenção de impasses, como pode ser feita a quebra da condição de não- preempção? Não-preempção : normalmente uma tarefa obtém e libera os recursos de que necessita, de acordo com sua lógica interna. Se for possível “arrancar” um recurso da tarefa, sem que esta o libere explicitamente, e devolvê-lo mais tarde, impasses envolvendo aquele recurso não poderão ocorrer. Essa técnica é frequentemente usada em recursos cujo estado interno pode ser salvo e restaurado de forma transparente para a tarefa, como páginas de memória e o contexto do processador. No entanto, é de difícil aplicação sobre recursos como arquivos ou áreas de memória compartilhada, porque a preempção viola a exclusão mútua e pode deixar inconsistências no estado interno do recurso. 12. Uma vez detectado um impasse, quais as abordagens possíveis para resolvê-lo? Explique-as e comente sua viabilidade. . Nesta abordagem, nenhuma medida preventiva é adotada para prevenir ou evitar impasses. As tarefas executam normalmente suas atividades, alocando e liberando recursos conforme suas necessidades. Quando ocorrer um impasse, o sistema o detecta, determina quais as tarefas e recursos envolvidos e toma medidas para desfazê-lo. 13.Como pode ser detectada a ocorrência de impasses, considerando disponível apenas um recurso de cada tipo? A detecção de impasses pode ser feita através da inspeção do grafo de alocação de recursos (Seção 10.2), que deve ser mantido pelo sistema e atualizado a cada alocação ou liberação de recurso. Um algoritmo de detecção de ciclos no grafo deve ser executado periodicamente, para verificar a presença das dependências cíclicas que podem indicar impasses. 14. Mostre como pode ocorrer violação da condição de exclusão mútua se as operações down(s) e up(s) não forem implementadas de forma atômica. Apostila de Sistemas Operacionais - Comunicação e Coord importante observar que a execução das operações Down(s)e Up(s) deve ser atômica, ou seja, não devem ocorrer acessos concorrentes às variáveis internas do semáforo, para evitar condições. Alguns sistemas implementam também a chamada TryDown(s), cuja semântica é não-bloqueante: caso o semáforo solicitado esteja ocupado, a chamada retorna imediatamente, com um código de erro. de disputa sobre as mesmas.