Buscar

Execução de Programas e Diferenças entre SOs

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Quatro passos para executar um programa em uma máquina completamente dedicada.
.Reservar tempo de máquina.
.Carregar o programa manualmente para a memória.
.Carregar o endereço inicial e iniciar a execução.
.Monitorar e controlar a execução do programa a partir do console.
Quais são as principais diferenças entre os SOs para mainframes e PCs?
Resposta: Em geral, os sistemas operacionais para mainframes possuem requisitos mais
 simples do que para computadores pessoais. Eles precisam se preocupar com a interação com um usuário tanto quanto um pc. Um sistema operacional para um PC precisa se preocupar com o tempo de resposta para um usuário interativo. Os sistemas batch não possuem esses requisitos. Um sistema batch puro também pode não precisar lidar
 com o compartilhamento de tempo, enquanto um sistema operacional precisa alternar rapidamente
 entre diferentes tarefas
Batch As tarefas com necessidades semelhantes são agrupadas e executadas no computador
 como um grupo por um operador ou um seqüenciador de tarefas automático. O desempenho é
 aumentado pela tentativa de manter a CPU e os dispositivos de E/S ocupados o tempo todo através de buffers, operação off-line, spooling,multiprogramação. O batch é bom para executar tarefas grandes, que precisam de pouca interação; ele pode ser submetido e apanhado mais tarde.
Interativo Esse sistema é composto de muitas transações curtas, em que os resultados da próxima transação podem ser imprevisíveis. O tempo de resposta precisa ser curto, pois o
 usuário submete e espera o resultado. 
Tempo compartilhado Esses sistemas utilizam o escalonamento de CPU e multiprogramação
 para prover o uso interativo econômico de um sistema. A CPU comuta rapidamente de um usuário para outro. Cada programa precisa do seu cartão de controle a partir do terminal, e a saída normalmente é impressa imediatamente na tela.
Tempo real Normalmente usado em uma aplicação dedicada, esse sistema lê informações de sensores e precisa responder dentro de um período de tempo fixo, para garantir o desempenho correto.
Rede Oferece recursos do sistema operacional por uma rede, como compartilhamento de arquivos.
SMP Usado em sistemas em que existem várias CPUs, cada uma executando a mesma cópia do sistema operacional. A comunicação ocorre através do barramento do sistema.
Distribuído Esse sistema distribui a computação entre vários processadores físicos. Os processadores não compartilham memória ou um relógio. Em vez disso, cada processador possui sua própria memória local. Eles se comunicam entre si através de diversas linhas de comunicação, como um barramento de alta velocidade ou uma rede local.
Clusters Um sistema em clusters combina diversos computadores em um único sistema, para
 realizar a tarefa computacional distribuída pelo cluster.
Portátil Um pequeno computador que realiza tarefas simples, como calendários, e-mail e navegação Web. Os sistemas portáteis diferem dos sistemas desktop tradicionais por terem memória e
 tela menores, e processadores mais lentos.
Quando é apropriado que um sistema operacional abandone esse princípio e “desperdice” recursos? Por que esse sistema não é realmente desperdiçador?
Sistemas monousuários devem maximizar o uso do sistema para o usuário. Uma GUI poderia “desperdiçar” ciclos de CPU, mas otimiza a interação do usuário com o sistema.
Como um sistema poderia ser projetado para permitir uma escolha dos sistemas operacionais que darão boot? O que o programa de boot precisaria fazer?
Checar o Hardware, os discos, a memória, verifica os SO´s instalados e carregar os arquivos da MBR.
Alguns computadores não oferecem um modo de operação privilegiado no hardware. É possível construir um sistema operacional seguro para esses computadores?
Um sistema operacional para uma máquina desse tipo precisaria permanecer no controle o tempo todo. Isso poderia ser realizado por dois métodos:
a.Interpretação do software de todos os programas do usuário. O interpretador de software ofereceria, no software, o que o hardware não oferece.
b. Exigir que todos os programas sejam escritos em linguagens de alto nível, para que todo o código objeto seja produzido pelo compilador. O compilador geraria as verificações de proteção que o hardware não realiza.
Proteção de Memoria
É preciso prover proteção da memória pelo menos para o vetor de interrupção e as rotinas de serviço de interrupção. Para isso é necessário, no mínimo, dois registradores que determinem o intervalo de endereços válidos que um programa pode acessar
.
Quais são as cinco principais atividades de um sistema operacional em relação à gerência de processos?
A criação e a exclusão de processos do sistema e do usuário.
A suspensão e a retomada de processos.
A provisão de mecanismos para o sincronismo de processo.
A provisão de mecanismos para a comunicação entre processos.
A provisão de mecanismos para o tratamento de deadlock.
Quais são as três principais atividades de um sistema operacional em relação à gerência de memória?
Acompanhar quais partes da memória estão atualmente sendo usadas e por quem.
Decidir quais processos devem ser carregados para a memória quando o espaço na memória se
 tornar disponível.
Alocar e desalocar o espaço de memória conforme a necessidade.
Quais são as três principais atividades de um sistema operacional em relação à gerência do armazenamento secundário?
Gerência de espaço livre.
Alocação de armazenamento.
Escalonamento de disco.
Quais são as cinco principais atividades de um sistema operacional em relação à gerência de arquivos?
A criação e a exclusão de arquivos.
A criação e a exclusão de diretórios.
 O suporte de primitivas para manipulação de arquivos e diretórios.
O mapeamento de arquivos no armazenamento secundário.
 O backup de arquivos em meio de armazenamento estável
Relacione cinco serviços fornecidos por um sistema operacional.Explique.
Execução de programa O sistema operacional carrega o conteúdo de um arquivo para a memória e inicia sua execução. Um programa em nível de usuário pode não ser confiável para alocar o tempo de CPU.
Operações de E/S Alguns dispositivos precisam ter comunicação em um nível muito baixo. O usuário só precisa especificar o dispositivo e a operação que atuará sobre ele, pois o sistema cuida disso. Não se pode confiar que os programas no nível do usuário acessarão apenas os dispositivos aos quais devem ter acesso e que somente os acessarão quando não estiverem sendo usados.
Manipulação do sistema de arquivos Existem muitos detalhes na criação, exclusão, alocação e nomeação de arquivos que os usuários não terão de realizar. Os blocos de espaço no disco são usados por arquivos e precisam ser rastreados. As proteções precisam ser verificadas para garantir o acesso apropriado ao arquivo. Os programas do usuário não poderiam garantir a aderência aos métodos de proteção, nem se pode confiar neles para alocar apenas blocos livres e desalocar blocos na exclusão do arquivo.
Comunicações A troca de mensagens entre os sistemas requer que as mensagens sejam transformadas em pacotes de informação, enviadas ao controlador de rede, transmitidas por um meio de comunicação e remontadas pelo sistema de destino. É preciso que haja ordem nos pacotes e correção de dados. Os programas do usuário não poderiam coordenar o acesso ao dispositivo da rede, pois poderiam receber pacotes destinados a outros processos.
Detecção de erros A detecção de erros ocorre nos níveis de hardware e de software. No nível de hardware, todas as transferências de dados precisam ser inspecionadas para garantir que os dados não tenham sido adulterados em trânsito. No nível de software, a mídia precisa ser verificada em busca da consistência dos dados. Os erros são constantemente independentes do processo de modo que é preciso haver um SO que trate de todos os tipos de erros. Além disso, processando os erros pelo SO, os processos não precisam conter código para apanhar e corrigirtodos os erros possíveis.
Qual é a finalidade das chamadas de sistema?
As chamadas de sistema permitem que os processos no nível do usuário solicitem serviços
 do sistema operacional.
Qual é a principal vantagem da técnica em camadas para o projeto do sistema?
O sistema é mais fácil de depurar e modificar, pois as mudanças afetam apenas seções limitadas do sistema, em vez de tocar em todas as seções do SO. As informações são mantidas apenas onde são necessárias e são acessíveis apenas dentro de uma área definida e restrita, de modo que quaisquer bugs que afetam esses dados precisam ser
 limitados a um módulo ou camada específica.
Vantagem da técnica de microkernel?
(a) acrescentar um novo serviço não exige modificação do kernel (b) é mais seguro, à medida que mais operações são feitas no modo usuário do que no modo kernel, e (c) projeto e funcionalidade de kernel mais simples normalmente resultam em um sistema operacional mais confiável.
Por que a separação do mecanismo e da política é desejável?
Mecanismo e política precisam ser separados para garantir que os sistemas sejam fáceis de modificar. Duas instalações do sistema nunca são iguais, de modo que cada instalação pode querer
 se ajustar ao SO para atender suas necessidades. Com a separação entre mecanismo
 e política, a política pode ser alterada à vontade, enquanto o mecanismo permanece inalterado. Esse arranjo ocasiona um sistema mais flexível.
Curto prazo seleciona as tarefas na memória cujas tarefas não estejam
 prontas para execução e aloca a CPU para elas.
Médio prazo usado especialmente com sistemas de tempo compartilhado, como um nível de escalonamento intermediário. Um esquema de swap é implementado para retirar da memória programas
 parcialmente executados e reinstanciá-los depois para continuar de onde pararam.
Longo prazo determina quais tarefas são trazidas para a memória, para processamento.
A diferença principal está na freqüência de sua execução. O escalonamento de curto prazo precisa
 selecionar um novo processo com muita freqüência. O de longo prazo é usado muito menos freqüentemente, pois trata de colocar tarefas no sistema e pode esperar até que uma tarefa termine, antes de admitir outra.
UltraSparc
O ponteiro do conjunto de registradores atual da CPU é alterado para apontar para o con-
junto contendo o novo contexto. Se o contexto estiver na memória, um
 dos contextos em um conjunto de registradores precisa ser escolhido e movido para a memória, e o
 novo contexto precisa ser carregado da memória para o conjunto.
Diferenças entre as threads no nível do usuário e threads no nível do kernel.
As threads no nível do usuário são desconhecidas pelo kernel, enquanto o kernel está ciente das threads do kernel. As threads do usuário são escalonadas pela biblioteca de threads e o kernel escalona as threads do kernel. As threads do kernel não precisam estar associadas a um processo, enquanto cada thread do usuário pertence a um processo
.
Multithreads não oferece melhor desempenho do que uma solução com uma única thread.
Qualquer tipo de programa seqüencial não é um bom candidato para usar threads. Exemplo disso é um programa para calcular a devolução de imposto de renda individual. Outro exemplo é um programa de “shell”, como o C-shell ou o Korn shell. Esse tipo de programa precisa
 monitorar de perto seu próprio espaço de trabalho, como arquivos abertos, variáveis de ambiente e
 diretório de trabalho atual.
Que recursos são usados quando uma thread é criada? Como eles diferem daqueles usados quando
 um processo é criado?
Como uma thread é menor do que um processo, a criação de thread normalmente utiliza
menos recursos do que a criação de um processo. A criação de um processo exige a alocação de uma estrutura de dados um tanto grande (PCB) que inclui um
 mapa de memória, uma lista de arquivos abertos e variáveis de ambiente. A criação de uma thread do
 usuário ou do kernel envolve a alocação de uma estrutura de dados pequena para manter um conjunto de registradores, pilha e prioridade.
Por que Java admite duas técnicas para a
 criação de threads? Qual técnica é mais apropriada?
Java não suporta heranças multiplas logo é necessário criar uma a implementação (técnica) de uma interface runnable.
Considere uma variante do algoritmo de escalonamento RR, em que as entradas na fila de prontos
 são ponteiros para os PCBs.
a. Qual seria o efeito de colocar dois ponteiros para o mesmo processo na fila de prontos?
b. Quais seriam as vantagens e desvantagens mais importantes desse esquema?
c. Como você modificaria o algoritmo RR básico para conseguir o mesmo efeito sem os ponteiros
 duplicados?
a. Esse processo terá aumentado sua prioridade, pois ao obter tempo com mais freqüência ele está
 recebendo tratamento preferencial.
b. A vantagem é que tarefas mais importantes poderiam receber mais tempo, em outras palavras, maior prioridade no tratamento. A conseqüência, naturalmente, é que tarefas menores sofrerão
 mais.
c. Distribui uma quantidade de tempo maior para os processos que merecem maior prioridade. Ou seja: tenha dois ou mais quantums possíveis no esquema Round-Robin.
Que vantagem existe em ter diferentes tamanhos de quantum de tempo em diferentes níveis de um
 sistema de enfileiramento multinível?
Os processos que precisam de atendimento mais freqüente podem estar em uma fila com um quantum de tempo pequeno. Os processos sem necessidade de atendimento mais freqüente podem estar em uma fila com um quantum
 maior, exigindo menos trocas de contexto para completar o processamento, criando um uso mais
 eficiente do computador.
a. Prioridade e SJF
b. Filas multinível com feedback e FCFS
c. Prioridade e FCFS
d. RR e SJF
Resposta:
a. A tarefa mais curta tem a prioridade mais alta.
b. O menor nível de MLFQ é FCFS.
c. FCFS oferece prioridade mais alta para a tarefa que existe há mais tempo.
d. Nenhuma.
Suponha que um algoritmo de escalonamento (no nível de escalonamento de CPU de curto prazo) favorece os processos que têm usado o menor tempo do processador no passado recente. Por que esse
 algoritmo favorece programas I/O-Bound e não causa starvation permanente nos programas
 CPU-Bound?
Ele favorecerá os programas I/O-Bound por causa da requisição de burst de CPU relativamente curta por parte deles; os programas CPU-Bound não sofrerão starvation porque os programas I/O-Bound abrirão mão da CPU com relativa freqüência para realizar sua E/S.
Explique as diferenças no grau ao qual os algoritmos de escalonamento a seguir são discriminados
 em favor de processos curtos:
a. FCFS – discrimina tarefas curtas, pois quaisquer tarefas curtas que chegam após tarefas longas terão um tempo de espera mais longo.
b. RR – trata todas as tarefas igualmente de modo que
 as tarefas curtas poderão sair do sistema mais rapidamente, pois terminarão primeiro.
c. Multilevel feedback queues – funcionam de modo semelhante ao algoritmo RR – elas discriminam em favor de tarefas curtas.
Com as interrupções desativadas, nenhum processo que está na sua região crítica
 pode ser interrompido, o que garante o
 acesso exclusivo aos dados compartilhados. Problemas com esta abordagem?
Não é aconselhável dar aos processos de
 usuário o poder de desabilitar interrupções
 e não funciona com vários processadores.
Qual é o significado do termo espera ocupada? Que outros tipos de espera existem em um SO? A espera ocupada pode ser completamente evitada? Explique sua resposta.
A espera ocupada ocorre quando um processo está realizando um loop enquanto espera a ocorrência de um evento externo. Ela é chamada espera ocupada porque o processo normalmente
 está em um loop tipo while(true);. Existem outros exemplos de espera ocupada em um sistema operacional: esperar até que a E/S esteja disponível, esperar até que um semáforo seja liberado etc. Sim, a espera ocupada pode ser evitada por meio de uma primitiva de sincronismo, como um mutex, semáforo ou variável de condição.
Explique por que os spinlocks não sãoapropriados em sistemas monoprocessados, embora possam
 ser adequados em sistemas multiprocessados.
Resposta: Em sistemas monoprocessados, os spinlocks são um desperdício de recursos do processador, pois um processo exige o uso da única CPU enquanto espera por um evento externo. Na verdade, o processo que está realizando o spinlock pode estar usando a CPU exigida por outro processo
 para realizar o evento externo, pelo qual o primeiro processo está aguardando. Em sistemas multiprocessados, isso pode não acontecer, pois o segundo processo pode ser executado em outra CPU.
 Com freqüência, os spinlocks são usados em sistemas multiprocessados se o processo só utilizar o spinlock por um curto período de tempo. Ou seja, pode ser mais rápido para um processo ficar no loop de espera por um curto período de tempo do que bloquear o processo e depois desbloqueá-lo
 quando o evento que ele está esperando tiver sido completado.
A desativação de interrupções constantemente pode afetar o relógio do sistema. Explique por que isso acontece e como tais efeitos podem ser minimizados.
O relógio do sistema é atualizado a cada interrupção de relógio. Se as interrupções fossem
 desativadas por longo tempo é possível que o relógio do sistema facilmente
 perdesse a hora correta. O relógio do sistema é usado para fins de escalonamento. Por
 exemplo, o quantum de tempo para um processo é expresso como uma quantidade de batidas do relógio. A cada interrupção do relógio, o escalonador determina se o quantum de tempo para o processo atualmente em execução expirou. Se as interrupções de relógio fossem desativadas, o escalonador poderia não atribuir quantums de tempo com precisão. Esse efeito pode ser aliviado desativando-se as interrupções de relógio apenas por períodos muito curtos.
Explique as diferenças, em termos de custo, entre os três tipos de armazenamento: volátil, não-volátil e estável.
O armazenamento volátil refere-se à memória principal e de cache, e é mais rápido. Porém, o armazenamento volátil não pode sobreviver a falhas do sistema ou desligamento do sistema.
 O armazenamento não-volátil sobrevive a falhas do sistema e sistemas desligados. Os discos e as fitas são exemplos de armazenamento não-volátil. Recentemente, apareceram dispositivos USB usando
 memória somente de leitura programáveis e apagáveis (EPROM) oferecendo armazenamento não volátil. O armazenamento estável refere-se ao armazenamento que tecnicamente nunca pode ser
perdido, pois existem cópias de backup redundantes dos dados (normalmente em disco).
Explique a finalidade do mecanismo de ponto de verificação (checkpoint). Com que freqüência os
 pontos de verificação devem ser realizados? Como a freqüência dos pontos de verificação afeta:
Um registro de log de ponto de verificação indica que um registro de log e seus dados modificados foram escritos no armazenamento estável e que a transação não precisa ser refeita no caso de
 uma falha do sistema. Obviamente, quanto mais freqüentes forem os pontos de verificação, menores
 as probabilidades de realização de atualizações redundantes durante o processo de recuperação.
O desempenho do sistema quando não ocorrem falhas – Se nenhuma falha ocorrer, o sistema deverá incorrer o custo de realizar pontos de verificação que são essencialmente desnecessários.
 Nessa situação, a realização de pontos de verificação com menos freqüência levará a um desempenho melhor do sistema.
O tempo gasto para a recuperação de uma falha do sistema – A existência de um registro de ponto
 de verificação significa que uma operação não terá de ser refeita durante a recuperação do sistema. Nessa situação, quanto maior a freqüência de realização dos pontos de verificação, mais rápido será o tempo de recuperação de uma falha do sistema.
O tempo gasto para a recuperação de uma falha do disco – A existência de um registro de ponto de verificação significa que uma operação não terá de ser refeita durante a recuperação do sistema. Nessa situação, quanto maior a freqüência de realização dos pontos de verificação, mais rápido será o tempo de recuperação de uma falha do disco.
Explique o conceito de atomicidade da transação.
Uma transação é uma série de operações de leitura e escrita sobre algum dado, acompanhada de uma operação de commit. Se a série de operações em uma transação não puder ser completada, a transação deverá ser cancelada e as operações que ocorreram deverão ser revertidas. É importante que a série de operações em uma transação apareça como uma operação atômica, para garantir a integridade dos dados sendo atualizados. Caso contrário, os dados poderiam ser
 comprometidos se as operações de transações diferentes fossem misturadas.
Considere um sistema em que um programa pode ser separado em duas partes: código e dados. A
 CPU sabe onde deseja ter uma instrução (busca de instrução) ou dados (busca ou armazenamento de
 dados). Portanto, dois pares de registrador de base-limite são fornecidos: um para instruções e um
 para dados. O par de registradores de base-limite de instrução é definido automaticamente como somente leitura, de modo que os programas possam ser compartilhados entre diferentes usuários. Discuta as vantagens e desvantagens desse esquema.
A principal vantagem desse esquema é que ele é um mecanismo eficaz para o compartilhamento de código e dados. Por exemplo, somente uma cópia de um editor ou de um compilador precisa ser mantida na memória, e esse código pode ser compartilhado por todos os processos que precisam de acesso ao editor ou código do compilador. Outra vantagem é a proteção do código contra a modificação errônea. A única desvantagem é que o código e os dados precisam ser separados, o que
 normalmente é juntado em um código gerado pelo compilador.
Por que os tamanhos de página sempre são potências de 2?
Lembre-se de que a paginação é implementada dividindo-se um endereço em um número
de página e deslocamento. É mais eficiente desmembrar o endereço em X bits de página e Y bits de
 deslocamento, em vez de realizar a aritmética sobre o endereço para calcular o número de página e deslocamento. Como cada posição de bit representa uma potência de 2, a divisão de um endereço
 entre os bits resulta em um tamanho de página que é uma potência de 2.
Em um sistema com paginação, um processo não pode acessar a memória que ele não possui. Por
 quê? Como o sistema operacional poderia permitir o acesso a outra memória? Por que deveria ou não?
Um endereço em um sistema de paginação é um número de página lógico e um deslocamento. A página física é encontrada com a pesquisa de uma tabela com base no número de página lógico, para produzir um número de página físico. Como o sistema operacional controla o conteúdo dessa tabela, ele pode limitar um processo a acessar apenas as páginas físicas alocadas ao processo.
 Não existe um meio de um processo se referir a uma página que não possui, pois a página não estará na tabela de página. Para permitir tal acesso, um sistema operacional simplesmente precisa permitir
 que as entradas para a memória que não a do processo, sejam incluídas na tabela de página do processo. Isso é útil quando dois ou mais processos precisam trocar dados – eles simplesmente lêem e escrevem nos mesmos endereços físicos.
Explique por que o compartilhamento de um módulo reentrante é mais fácil quando a segmentação
 é usada, do que quando a paginação pura é usada.
Como a segmentação é baseada em uma divisão lógica da memória, e não física, os segmentos de qualquer tamanho podem ser compartilhados com apenas uma entrada nas tabelas de
 segmento de cada usuário. Com a paginação, é preciso haver uma entrada comum nas tabelas de página para cada página que é compartilhada.
Rotina de tratamento de falha de página
1Encontra o local da página desejada no disco
2Encontra um frame livre:
 se houver um frame livre, usa-o; se não
 houver um frame livre, usa um algoritmo de
 em uma memória física menor
 substituição de página para selecionar um
 quadro vítima e envia vítimapara o disco
3Lê a página desejada para o quadro liberado; atualiza as tabelas de página e frame
4 Reiniciar o processo do usuário
Sob que circunstâncias ocorrem falhas de página? Descreva as ações tomadas pelo SO quando ocorre uma falha de página.
Uma falha de página ocorre quando acontece um acesso a uma página que não foi trazida
 para a memória principal. O SO verifica o acesso à memória, abortando o programa se o acesso for inválido. Se for válido, um quadro livre é localizado e a E/S é requisitada para ler a
 página necessária para o quadro livre. Ao terminar a E/S, a tabela de processos e a tabela de página
 são atualizadas e a instrução é reiniciada.
Quando a memória virtual é implementada em um sistema de computação, isso gera certos custos e certos benefícios. Relacione esses custos e benefícios. É possível que os custos ultrapassem os benefícios? Explique que medidas você pode tomar para garantir que esse desequilíbrio não aconteça.
Os custos são hardware adicional e tempo de acesso mais lento. Os benefícios são boa utilização da memória e maior espaço de endereço lógico do que o espaço de endereço físico.
Considere um sistema de paginação por demanda com as seguintes utilizações medidas no tempo:
 Utilização de CPU 20%
 Disco de paginação 97,7%
 Outros dispositivos de E/S 5%
Para cada um dos seguintes, diga se a utilização de CPU melhorará (ou se isso é provável). Explique
O sistema obviamente está gastando a maior parte do seu tempo paginando, indicando a sobrealocação de memória. Se o nível de multiprogramação for reduzido, processos residentes causariam falha de página com menos freqüência e a utilização da CPU melhoraria. Outra maneira de melhorar o desempenho seria obter mais memória física ou um tambor de paginação mais rápido.
a. Instalar uma CPU mais rápida – Não.
b. Instalar um disco de paginação maior – Não.
c. Aumentar o grau de multiprogramação – Não.
d. Diminuir o grau de multiprogramação – Sim.
e. Instalar mais memória principal – Provavelmente melhora a utilização de CPU porque mais páginas podem permanecer residentes e não exigir paginação de ou para os discos.
f. Instalar um disco rígido mais rápido ou múltiplos controladores com múltiplos discos rígidos - Também é uma melhoria, pois à medida que o gargalo do disco é removido pela resposta mais rápida e maior throughput para os discos, a CPU receberá mais dados mais rapidamente.
g. Acrescentar a pré-paginação aos algoritmos de busca de página – Novamente, a CPU receberá
 mais dados mais rapidamente, de modo que será mais utilizada. Isso só acontece se a ação de paginação for favorável à pré-paginação (ou seja, se o acesso for seqüencial).
h. Aumentar o tamanho da página – Aumentar o tamanho da página resultará em menos falhas de
 página se os dados estiverem sendo acessados seqüencialmente. Se o acesso aos dados for mais ou menos aleatório, pode haver mais ação de paginação, pois menos páginas podem ser mantidas na memória e mais dados são transferidos por falha de página. Assim, essa mudança tanto pode diminuir a utilização quanto aumentá-la.
Considere um computador paginado por demanda, no qual o grau de multiprogramação atualmente está fixado em quatro. O sistema foi medido recentemente para determinar a utilização da CPU e do disco de paginação. Os resultados correspondem a uma das alternativas a seguir. Para cada caso, o que está acontecendo? Você pode aumentar o grau de multiprogramação para aumentar a utilização de CPU? A paginação está ajudando a melhorar o desempenho?
a. Utilização de CPU, 13%; utilização de disco, 97%
b. Utilização de CPU, 87%; utilização de disco, 3%
c. Utilização de CPU, 13%; utilização de disco, 3%
a. Está ocorrendo o thrashing.
b. A utilização de CPU é suficientemente alta para deixar as coisas como estão.
c. Aumente o grau de multiprogramação.
Qual é a causa do thrashing? Como o sistema detecta o thrashing? Ao detectar o thrashing, o que o
 sistema pode fazer para eliminar esse problema?
O thrashing é causado pela falta de alocação do número mínimo de páginas exigidas por
um processo, forçando-o a gerar falha de página continuamente. O sistema pode detectar o thrashing avaliando o nível de utilização de CPU comparado com o nível de multiprogramação. Ele
 pode ser eliminado reduzindo-se o nível de multiprogramação.
Por que alguns sistemas registram o tipo de um arquivo, enquanto outros deixam isso para o usuário
 ou simplesmente não implementam múltiplos tipos de arquivo? Qual é o “melhor” sistema?
Alguns sistemas permitem diferentes operações sobre o arquivo com base no tipo do arquivo. Outros sistemas deixam tal interpretação
 dos dados de um arquivo para o processo e não oferecem ajuda no acesso aos dados. O “melhor”
 método depende das necessidades dos processos no sistema e das demandas que os usuários fazem
sobre o SO. Se um sistema executar principalmente aplicações de banco de dados,
 pode ser mais eficiente para o SO implementar um arquivo tipo banco de dados e
 oferecer operações apropriadas, em vez de fazer com que cada programa as implemente. Para sistemas de uso geral, pode ser melhor implementar apenas os
 tipos de arquivo básicos, para manter o tamanho do SO menor e permitir o máximo de liberdade aos processos no sistema.
Considere um sistema de arquivos no qual um arquivo pode ser excluído e seu espaço em disco retomado enquanto os links para esse arquivo ainda existem. Que problemas poderão ocorrer se um novo arquivo for criado na mesma área de armazenamento ou com o mesmo nome de caminho absoluto? Como esses problemas podem ser evitados?
Seja F1 o arquivo antigo e F2 o novo. Um usuário que deseja acessar F1 através de um link existente na realidade acessará F2. A proteção de acesso para o arquivo F1 é usada em vez daquela associada a F2. Esse problema pode ser evitado garantindo-se que todos os links para um arquivo excluído também sejam excluídos.
De modo semelhante, alguns sistemas admitem muitos tipos de estruturas para os dados de um arquivo, enquanto outros simplesmente admitem um fluxo de bytes. Quais são as vantagens e desvantagens de cada abordagem?
Uma vantagem de fazer com que o sistema admita diferentes estruturas de arquivos reside no fato de que o suporte é fornecido pelo sistema operacional; as aplicações não precisam prover o suporte. Além disso, se o sistema operacional oferece o suporte para diferentes estruturas de arquivo, ele pode implementar o suporte de forma eficiente, presumivelmente mais eficiente do que
 uma aplicação.
A desvantagem de fazer com que o sistema forneça o suporte para tipos de arquivos definidos é que
 isso aumenta o tamanho do sistema. Além disso, as aplicações que podem exigir diferentes tipos de arquivo além do que é fornecido pelo sistema podem não ser capazes de executar em tais sistemas.
 Uma estratégia alternativa é que o sistema operacional não defina suporte para as estruturas de arquivo e, em vez disso, trate todos os arquivos como uma série de bytes. A vantagem dessa técnica é que ela simplifica o suporte do SO para os sistemas de arquivo, já que o SO não precisa mais fornecer a estrutura
 para diferentes tipos de arquivos. Além do mais, isso permite que as aplicações definam estruturas
 de arquivo, aliviando assim a situação em que um SO pode não oferecer uma definição de arquivo exigida para uma aplicação específica.
Considere um sistema que admita 5.000 usuários. Suponha que você queira permitir que 4.990 desses usuários possam acessar um arquivo.
a. Como você especificaria esse esquema de protocolo em UNIX?
b. Você poderia sugerir um esquema de proteção que fosse mais eficiente para essa finalidade do
 que o esquema fornecido pelo UNIX?
a. Existem dois métodos para conseguir isso:
 i. Crie uma lista de controle de acesso com os nomes de todos os 4.990 usuários.
 ii. Coloque esses 4.990 usuários em um grupo e defina o acesso ao grupo devidamente.b. As informações de acesso universal se aplicam a todos os usuários, a menos que seu nome apareça
 na lista de controle de acesso com permissão de acesso diferente. Com esse esquema, você simplesmente coloca os nomes dos dez usuários restantes na lista de controle de acesso, mas sem privilégios de acesso permitidos.
Considere um sistema no qual o espaço livre é mantido em uma lista de espaço livre.
a. Suponha que o ponteiro para a lista de espaço livre seja perdido. O sistema pode reconstruir a lista de espaço livre? Explique sua resposta.
b. Sugira um esquema para garantir que o ponteiro nunca é perdido como resultado de falha na memória.
a. Para reconstruir a lista de espaço livre, seria necessário realizar a “garbage collection” ocasionando a busca da estrutura de diretório inteira para determinar quais páginas já estão alocadas às tarefas. Essas páginas desalocadas restantes seriam reinterligadas como a lista de
 espaço livre.
b. O ponteiro da lista de espaço livre poderia ser armazenado no disco, talvez em vários lugares.
Considere um sistema que admita as estratégias de alocação contígua, interligada e indexada. Que critérios devem ser usados na decisão de qual estratégia é melhor utilizada para determinado arquivo?
Contígua – se o arquivo normalmente é acessado seqüencialmente, se o arquivo é relativamente
 pequeno.
Interligada – se o arquivo é grande e normalmente acessado seqüencialmente.
Indexada – se o arquivo é grande e normalmente acessado aleatoriamente.
Que problemas poderiam ocorrer se um sistema permitisse que um sistema de arquivos fosse montado simultaneamente em mais de um local?
Haveria múltiplos caminhos para o mesmo arquivo, o que confundiria os usuários ou motivaria erros (a exclusão de um arquivo com um caminho exclui o arquivo em todos os outros caminhos).
Como os caches ajudam a melhorar o desempenho? Por que os sistemas não usam mais caches ou caches maiores, se eles são tão úteis?
O cache permite que componentes de velocidades diferentes se comuniquem de forma
mais eficiente, armazenando dados do dispositivo mais lento, temporariamente, em um dispositivo mais veloz (o cache). Os caches são, quase por definição, mais dispendiosos do que o dispositivo aos quais estão servindo, de modo que o aumento da quantidade ou do tamanho de caches aumentaria o
 custo do sistema.
Indique dois motivos pelos quais os caches são úteis. Que problemas eles resolvem? Que problemas
 eles causam? Se um cache puder ser tão grande quanto o dispositivo para o qual está dando suporte, por que não mantê-lo com esse tamanho e eliminar o dispositivo?
Os caches são úteis quando dois ou mais componentes precisam trocar dados, e os com-
ponentes realizam transferências em velocidades diferentes. O caches solucionam o problema de
 transferência oferecendo um buffer de velocidade intermediária entre os componentes. Se o dispositivo rápido encontrar os dados de que precisa no cache, ele não precisa esperar pelo dispositivo mais lento. Os dados no cache precisam ser mantidos consistentes com os dados nos componentes. Isso é um problema em sistemas multiprocessados,
 em que mais de um processo pode estar acessando um dado. Um componente pode ser eliminado
 por um cache de mesmo tamanho, mas somente se: o cache e o componente tiverem capacidade
 equivalente para salvar o estado e o cache for acessível, pois o armazenamento mais rápido costuma ser mais caro.
Por que é vantajoso para o usuário que um sistema operacional aloque dinamicamente suas tabelas
 internas? Quais são as penalidades para o sistema operacional por fazer isso?
As tabelas dinâmicas permitem mais flexibilidade no crescimento do uso do sistema. As
tabelas nunca são excedidas, evitando limites de uso artificiais. As estruturas do kernel
 e o código são mais complicados, de modo que o potencial para bugs é maior. O uso de um recurso
 pode tomar mais recursos do sistema do que com tabelas estáticas.

Continue navegando