Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

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.

Mais conteúdos dessa disciplina