Você está na página 1de 40

Capítulo 1

Introdução
Exercícios práticos
1.1
Quais são as três finalidades principais de um sistema operacional?
1.2
Quais são as principais diferenças entre sistemas operacionais para
computadores de grande porte (mainframes) e computadores pessoais?
1.3
Liste as quatro etapas que são necessárias para se executar um programa
em uma máquina completamente dedicada.
1.4
Enfatizamos a necessidade de um sistema operacional fazer uso eficiente
do hardware de computação. Quando é apropriado que o sistema operacional
deixe de lado esse princípio e “desperdice” recursos? Por que esse tipo
de sistema não é realmente desperdiçador?
1.5
Qual é a principal dificuldade que um programador precisa contornar na
escrita de um sistema operacional para um ambiente de tempo real?
1.6
Considere as diversas definições de sistema operacional. Considere se o
sistema operacional deverá incluir aplicações como navegadores Web e
programas de correio. Argumente tanto contra como a favor, e dê suporte à
sua resposta.
1.7
Como a distinção entre o modo kernel e o modo usuário funciona como uma
forma rudimentar de sistema de proteção (segurança)?
1.8
Quais das seguintes instruções deverão ser privilegiadas?
a.
Definir o valor do timer.
b.
Ler o clock.
c.
Limpar a memória.
d.
Emitir uma instrução de trap.
e.
Desativar interrupções.
f.
Modificar entradas na tabela de status de dispositivo.
g.
Passar do modo usuário para kernel.
h.
Acessar dispositivo de E/S.
1.9
Alguns computadores antigos protegiam o sistema operacional colocando-o
em uma partição da memória que não poderia ser modificada pelo job do
usuário ou pelo próprio sistema operacional. Descreva duas dificuldades
que você acredita que poderiam surgir com tal esquema.
1.10
Algumas CPUs oferecem mais de dois modos de operação. Quais são os dois
usos possíveis desses modos múltiplos?
1.11
Os timers poderiam ser usados para calcular a hora atual. Dê uma pequena
descrição de como isso poderia ser realizado.
1.12
A Internet é uma LAN ou uma WAN?

Capítulo 2

Estruturas do sistema operacional


Exercícios práticos
2.1
Qual é a finalidade das chamadas do sistema?
2.2
Quais são as cinco principais atividades de um sistema operacional em
relação ao gerenciamento de processos?
2.3
Quais são as três atividades principais de um sistema operacional em
relação ao gerenciamento de memória?
2.4
Quais são as três atividades principais de um sistema operacional em
relação ao gerenciamento de armazenamento secundário?
2.5
Qual é a finalidade do interpretador de comandos? Por que ele normalmente
é separado do kernel?
2.6
Que chamadas do sistema precisam ser executadas por um interpretador de
comandos ou shell a fim de inicial um novo processo?
2.7
Qual é a finalidade dos programas do sistema?
2.8
Qual é a principal vantagem da técnica em camadas para o projeto do
sistema? Quais são as desvantagens do uso da técnica em camadas?
2.9
Liste cinco serviços fornecidos por um sistema operacional. Explique como
cada um oferece conveniência aos usuários. Explique também em quais casos
seria impossível para os programas em nível de usuário oferecerem esses
serviços.
2.10
Qual é a finalidade das chamadas do sistema?
2.11
Quais são as principais vantagens da técnica de microkernel para o
projeto do sistema?
2.12
Por que alguns sistemas armazenam o sistema operacional em firmware, e
outros em disco?
2.13
Como um sistema poderia ser projetado para permitir uma escolha de
sistemas operacionais para inicializar? O que o programa de bootstrap
precisaria fazer?
Capítulo 3

Processos
Exercícios práticos
3.1
O Palm OS não fornece meios de processamento simultâneo. Discuta três
complicações principais que o processamento simultâneo acrescenta a um
sistema operacional.
3.2
O processador Sun UltraSPARC possui múltiplos conjuntos de registradores.
Descreva as ações de uma troca de contexto se o novo contexto já estiver
carregado em um dos conjuntos de registradores. O que mais precisa
acontecer se o novo contexto estiver na memória, ao invés de um conjunto
de registradores e todos os conjuntos de registradores estiverem em uso?
3.3
Quando um processo cria um novo processo usando a operação fork(), qual
dos seguintes estados é compartilhado entre o processo pai e o processo
filho?
a.
Pilha
b.
Heap
c.
Segmentos de memória compartilhada
3.4
Novamente considerando o mecanismo de RPC, considere a semântica
“exatamente uma vez”. O algoritmo para implementar essa semântica é
executado corretamente, mesmo que a mensagem “ACK” de volta ao cliente
seja perdida devido a um problema de rede? Descreva a seqüência de
mensagens e se a semântica “exatamente uma vez” ainda é preservada.
3.5
Considere que um sistema distribuído é suscetível a falhas no servidor.
Que mecanismos seriam exigidos para garantir a semântica “exatamente uma
vez” para a execução de RPCs?
Capítulo 4

Threads
Exercícios práticos
4.1
Forneça dois exemplos de programação em que o multithreading oferece
melhor desempenho do que uma solução de único thread.
4.2
Quais são duas diferenças entre os threads em nível de usuário e os
threads em nível de kernel? Sob quais circunstâncias um tipo é melhor que
o outro?
4.3
Descreva as ações tomadas por um kernel para a troca de contexto entre os
threads em nível de kernel.
4.4
Que recursos são usados quando um thread é criado? Como eles diferem
daqueles usados quando um processo é criado?
4.5
Considere que um sistema operacional relaciona threads em nível de
usuário ao kernel usando o modelo muitos-para-muitos e o mapeamento é
feito por meio de LWPs. Além do mais, o sistema permite que os
desenvolvedores criem threads em tempo real. É necessário vincular um
thread em tempo real a um LWP? Explique.
4.6
Um programa Pthread que realiza a função de somatório foi apresentado na
Seção 4.3.1. Reescreva esse programa em Java.
Capítulo 5

Escalonamento de CPU
Exercícios práticos
5.1
Um algoritmo de escalonamento de CPU determina uma ordem para a execução
de seus processos escalonados. Dados n processos a serem escalonados em
um processador, quantos schedules diferentes possíveis existem? Dê uma
fórmula em termos de n.
5.2
Defina a diferença entre escalonamento preemptivo e não preemptivo.
5.3
Suponha que os processos a seguir cheguem para execução nos momentos
indicados. Cada processo será executado pela quantidade de tempo listada.
Ao responder as perguntas, use o escalonamento não preemptivo e baseie
todas as decisões na informação que você tem no momento em que a decisão
precisa ser tomada.
Processo Tempo de chegada Tempo de burst
P1 0,0 8
P2 0,4 4
P3 1,0 1
a.
Qual é o tempo de turnaround médio para esses processos com o algoritmo
de escalonamento FCFS?
b.
Qual é o tempo de turnaround médio para esses processos com o algoritmo
de escalonamento SJF?
c.
O algoritmo SJF deveria melhorar o desempenho, mas observe que decidimos
executar o processo P1 no tempo 0 porque não sabíamos se dois processos
mais curtos chegariam cedo. Calcule o tempo de turnaround médio se a CPU
ficar ociosa pela primeira 1 unidade e depois o escalonamento SJF for
usado. Lembre-se de que os processos P1 e P2 estão aguardando durante
esse tempo ocioso, de modo que seu tempo de espera poderá aumentar. Esse
algoritmo poderia ser conhecido como escalonamento com conhecimento
futuro.
5.4
Que vantagem existe em haver diferentes tamanhos de quantum de tempo em
diferentes níveis de um sistema de enfileiramento multinível?
5.5
Muitos algoritmos de escalonamento de CPU são parametrizados. Por
exemplo, o algoritmo RR requer que um parâmetro indique a fatia de tempo.
As filas de feedback multinível exigem parâmetros para definir o número
de filas, os algoritmos de escalonamento para cada fila, os critérios
usados para mover processos entre as filas, e assim por diante.
Esses algoritmos, portanto, na realidade são conjuntos de algoritmos (por
exemplo, o conjunto de algoritmos RR para todas as fatias de tempo, e
assim por diante). Um conjunto de algoritmos pode incluir outro (por
exemplo, o algoritmo FCFS é o algoritmo RR com um quantum de tempo
infinito). Que relação (se houver) existe entre os seguintes pares de
conjuntos de algoritmos?
a.
Prioridade e SJF
b.
Filas de feedback multinível e FCFS
c.
Prioridade e FCFS
d.
RR e SJF
5.6
Suponha que um algoritmo de escalonamento (no nível de escalonamento de
CPU a curto prazo) favorece aqueles processos que usaram o menor tempo de
processador no passado recente. Por que esse algoritmo favorece os
programas voltados para E/S e não deixa os programas voltados para CPU
estagnados permanentemente?
5.7
Faça a distinção entre escalonamento PCS e SCS.
5.8
Considere que um sistema operacional relaciona os threads em nível de
usuário ao modelo muitos-para-muitos, onde o mapeamento é feito por meio
do uso de LWPs. Além do mais, o sistema permite que desenvolvedores de
programa criem threads de tempo real. É necessário vincular um thread de
tempo real a um LWP?
Capítulo 6

Sincronismo de processos
Exercícios práticos
6.1
Na Seção 6.4, mencionamos que desativar interrupções com freqüência
poderia afetar o clock do sistema. Explique por que isso poderia
acontecer e como esses efeitos poderiam ser monimizados.
6.2
O problema dos fumantes de cigarro. Considere um sistema com três
processos fumante e um processo agente. Cada fumante continuamente
prepara um cigarro e depois o fuma. Mas, para preparar e fumar um
cigarro, o fumante precisa de três ingredientes: tabaco, papel e
fósforos. Um dos processos fumante tem papel, outro tem tabaco, e o
terceiro tem fósforos. O agente tem um estoque infinito de todos os três
materiais. O agente coloca dois dos ingredientes sobre a mesa. O fumante
que tem o ingrediente restante, então, prepara e fuma um cigarro,
sinalizando ao agente quando terminar. O agente, então coloca outros dois
dos ingredientes, e o ciclo se repete. Escreva um programa para
sincronizar o agente e os fumantes usando o sincronismo Java.
6.3
Dê os motivos pelos quais Solaris, Windows XP e Linux implementam
múltiplos mecanismos de bloqueio. Descreva as circunstâncias sob as quais
eles usam spinlocks, mutexes, semáforos, mutexes adaptativos e variáveis
de condição. Em cada caso, explique por que o mecanismo é necessário.
6.4
Explique as diferenças, em termos de custo, entre os três tipos de
armazenamento: volátil, não volátil e estável.
6.5
Explique a finalidade do mecanismo de ponto de verificação. Com que
freqüência os pontos de verificação devem ser realizados? Descreva como a
freqüência dos pontos de verificação afeta:
O desempenho do sistema quando não ocorre falha
O tempo gasto para se recuperar de uma falha do sistema
O tempo gasto para se recuperar de uma falha do disco
6.6
Explique o conceito da atomicidade da transação.
6.7
Mostre que alguns schedules são possíveis sob o protocolo de bloqueio em
duas fases, mas não sob o protocolo de estampa de tempo, e vice-versa.
6.8
A instrução [TD]wait()[TN] em todos os exemplos de programa Java fez
parte de um loop [TD]while[TN]. Explique por que você sempre deverá ter
que usar uma instrução [TD]while[TN] ao usar [TD]wait()[TN] e por que
você nunca usaria uma instrução [TD]if[TN].
Capítulo 7

Deadlocks
Exercícios práticos
7.1
Liste três exemplos de deadlocks que não estão relacionados a um ambiente
de sistema de computador.
7.2
Suponha que um sistema esteja em um estado inseguro. Mostre que é
possível que os processos terminem sua execução sem entrar em um estado
de deadlock.
7.3
Prove que o algoritmo de segurança apresentado na Seção 7.5.3 requer uma
ordem de m x n2 operações.
7.4
Considere um sistema de computação que executa 5.000 jobs por mês sem
esquema de prevenção ou impedimento de deadlock. Os deadlocks ocorrem por
volta de duas vezes por mês, e o operador precisa terminar e reexecutar
cerca de 10 jobs por deadlock. Cada job tem valor aproximado de US$ 2 (em
tempo de CPU), e os jobs terminados tendem a estar na metade quando são
abortados.
Um programador de sistemas estimou que um algoritmo de impedimento de
impasse (como o algoritmo do banqueiro) poderia ser instalado no sistema
com um aumento no tempo médio de execução por tarefa de aproximadamente
10 por cento. Como a máquina atualmente possui um tempo ocioso de 30 por
cento, todos os 5.000 jobs por mês ainda poderiam ser executados, embora
o tempo de turnaround aumente em cerca de 20 por cento na média.
a.
Quais são os argumentos a favor da instalação do algoritmo de impedimento
de impasse?
b.
Quais são os argumentos contra a instalação do algoritmo de impedimento
de impasse?
7.5
Um sistema poderia detectar que alguns de seus processos estão
estagnando? Se a sua resposta for “sim”, explique como isso pode ser
feito. Se a resposta for “não”, explique como o sistema pode lidar com o
problema de estagnação.
7.6
Considere a política de alocação de recursos a seguir. Solicitações e
liberações de recursos são permitidas a qualquer momento. Se uma
solicitação de recursos não puder ser satisfeita porque os recursos não
estão disponíveis, então verificamos quaisquer processos que estão
bloqueados, esperando pelos recursos. Se eles tiverem os recursos
desejados, então esses recursos são retirados deles e dados aos processos
solicitantes. O vetor de recursos pelos quais o processo está esperando é
aumentado para incluir os recursos que foram retirados.
Por exemplo, considere um sistema com três tipos de recurso e um vetor
Available inicializado com (4,2,2). Se o processo P0 solicitar (2,2,1),
ele os obtém. Se P1 solicitar (1,0,1), ele os obtém. Depois, se P0
solicitar (0,0,1), ele é bloqueado (recurso não disponível). Se P2 agora
solicitar (2,0,0), ele recebe o recurso disponível (1,0,0) e um que foi
alocado a P0 (pois P0 está bloqueado). O vetor Allocation de P0 chega até
(1,2,1) e seu vetor Need vai até (1,0,1).
a.
O deadlock pode ocorrer? Se a sua resposta for “sim”, dê um exemplo. Se
você responder “não”, especifique qual condição necessária não pode
ocorrer.
b.
Pode ocorrer bloqueio indefinido? Explique sua resposta.
7.7
Suponha que você tenha codificado o algoritmo de segurança de impedimento
de deadlock e agora tenha que implementar o algoritmo de detecção de
impasse. Você pode fazer isso usando simplesmente o código do algoritmo
de segurança e redefinindo Maxi = Waitingi + Allocationi, onde Waitingi é
um vetor especificando os recursos que o processo i está esperando, e
Allocationi é conforme definido na Seção 7.5? Explique sua resposta.
7.8
É possível ter um deadlock envolvendo apenas um único processo? Explique
sua resposta.
Capítulo 8

Gerenciamento de memória
Exercícios práticos
8.1
Cite duas diferenças entre endereços lógico e físico.
8.2
Considere um sistema em que um programa pode ser separado em duas partes:
código e dados. A CPU sabe se deseja uma instrução (busca de instrução)
ou dados (busca ou armazenamento de dados). Portanto, dois pares de
registrador de limite de base são fornecidos: um para instruções e um
para dados. O par de registradores de limite de base de instrução é
automaticamente somente de leitura, de modo que os programas podem ser
compartilhados entre diferentes usuários. Discuta as vantagens e
desvantagens desse esquema.
8.3
Por que os tamanhos de página sempre são potências de 2?
8.4
Considere o espaço de endereços lógico de oito páginas de 1024 words
cada, mapeado em uma memória física de 32 frames.
a.
Quantos bits existem no endereço lógico?
b.
Quantos bits existem no endereço físico?
8.5
Qual é o efeito de permitir duas entradas em uma tabela de página para
apontar para o mesmo frame de página na memória? Explique como esse
efeito poderia ser usado para diminuir a quantidade de tempo necessária
para copiar uma grande quantidade de memória de um lugar para outro. Que
efeito teria a atualização de algum byte na página um sobre a outra
página?
8.6
Descreva um mecanismo pelo qual um segmento poderia pertencer ao espaço
de endereços de dois processos diferentes.
8.7
O compartilhamento de segmentos entre processos sem exigir o mesmo número
de segmento é possível em um sistema de segmentação vinculado
dinamicamente.
a.
Defina um sistema que permita o vínculo e compartilhamento estático de
segmentos sem exigir que os números de segmento sejam os mesmos.
b.
Descreva um esquema de paginação que permita que as páginas sejam
compartilhadas sem exigir que os números de página sejam os mesmos.
8.8
Em um IBM/370, a proteção de memória é fornecida por meio do uso de
chaves. Uma chave é uma quantidade de 4 bits. Cada bloco de 2K de memória
tem uma chave (a chave de armazenamento) associada a ele. A CPU também
tem uma chave (a chave de proteção) associada a ela. Uma operação de
armazenamento só é permitida se as duas chaves forem iguais, ou se
qualquer uma delas for zero. Qual dos seguintes esquemas de gerenciamento
de memória poderia ser usado com sucesso com esse hardware?
a.
Máquina simples
b.
Sistema monousuário
c.
Multiprogramação com um número fixo de processos
d.
Multiprogramação com um número variável de processos
e.
Paginação
f.
Segmentação
Capítulo 9

Memória virtual
Exercícios práticos
9.1
Sob quais circunstâncias ocorrem as faltas de página? Descreva as ações
tomadas pelo sistema operacional quando ocorre uma falta de página.
9.2
Considere que você tem uma string de referência de página para um
processo com m frames (todos inicialmente vazios). A string de referência
de página possui tamanho p; n números de página distintos ocorrem nela.
Responda a estas perguntas para quaisquer algoritmos de substituição de
página:
a.
Qual é um limite inferior no número de faltas de página?
b.
Qual é um limite superior no número de faltas de página?
9.3
Quais das seguintes técnicas e estruturas de programação são “boas” para
um ambiente paginado por demanda? Quais “não são boas”? Explique suas
respostas.
a.
Pilha
b.
Tabela de símbolos com hash
c.
Busca seqüencial
d.
Busca binária
e.
Código puro
f.
Operações de vetor
g.
Indireção
9.4
Considere os seguintes algoritmos de substituição de página. Avalie esses
algoritmos em uma escala de cinco pontos, desde “ruim” até “perfeito”, de
acordo com sua taxa de falta de página. Separe os algoritmos que sofrem a
anomalia de Belady do restante.
a.
Substituição LRU
b.
Substituição FIFO
c.
Substituição ideal
d.
Substituição da segunda chance
9.5
Quando a memória virtual é implementada em um sistema de computação,
existem certos custos associados à técnica e certos benefícios. Liste os
custos e os benefícios. É possível que os custos excedam os benefícios?
Se for, que medidas podem ser tomadas para garantir que isso não
aconteça?
9.6
Um sistema operacional admite uma memória virtual paginada, usando um
processador central com um tempo de ciclo de 1 microssegundo. É
necessário 1 microssegundo adicional para acessar uma página diferente da
atual. As páginas têm 1000 words, e o dispositivo de paginação [e um
tambor que gira a 3000 rotações por minuto e transfere 1 milhão de words
por segundo. As medições estatísticas a seguir foram obtidas a partir do
sistema:
1 por cento de todas as instruções executadas acessaram uma página
diferente da página atual.
Das instruções que acessaram outra página, 80 por cento acessou uma
página já na memória.
Quando uma nova página era exigida, a página substituída era modificada 5
por cento do tempo.
Calcule o tempo de instrução efetivo nesse sistema, supondo que o sistema
esteja rodando um processo apenas e que o processador esteja ocioso
durante as transferências de tambor.
9.7
Considere o array bidimensional A:
[LIST]int A[][] = new int[100][100];
onde [TD]A[0][0][TN] está no local 200, em um sistema de memória paginada
com páginas de tamanho 200. Um pequeno processo está na página 0 (locais
de 0 a 199) para manipular a matriz; assim, cada busca de instrução será
a partir da página 0.
Para três frames de página, quantas faltas de página são geradas pelos
seguintes loops de inicialização de array, usando a substituição LRU, e
supondo que o frame de página 1 tenha o processonele, e os outros dois
estejam inicialmente vazios?
a.
[LIST]for (int j = 0; j < 100; j++)
for (int i = 0; i < 100; i++)
A[i][j] = 0;
b.
[LIST]b. for (int i = 0; i < 100; i++)
for (int j = 0; j < 100; j++)
A[i][j] = 0;
9.8
Considere a seguinte string de referência de página:
1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6.
Quantas faltas de página ocorreriam para os seguintes algoritmos de
substituição, considerando um, dois, três, quatro, cinco, seis ou sete
frames? Lembre-se de que todos os frames estão inicialmente vazios, de
modo que suas primeiras páginas exclusivas custarão uma falta cada.
Substituição LRU
Substituição FIFO
Substituição ideal
9.9
Suponha que você queira usar um algoritmo de página que exige um bit de
referência (como a substituição da segunda chance ou modelo de conjunto
de trabalho), mas o hardware não oferece um. Esboce como você poderia
simular um bit de referência mesmo que não fosse fornecido pelo hardware,
ou explique por que não é possível fazer isso. Se for possível, calcule
qual seria o custo.
9.10
Você idealizou um novo algoritmo de substituição de página que acredita
poder ser ideal. Em alguns casos de teste complicados, ocorre a anomalia
de Belady. O novo algoritmo é ideal? Explique sua resposta.
9.11
A segmentação é semelhante à paginação, mas usa “páginas” de tamanho
variável. Defina dois algoritmos de substituição de segmento baseados nos
esquemas de substituição de página FIFO e LRU. Lembre-se de que, como os
segmentos não têm o mesmo tamanho, o segmento escolhido para ser
substituído pode não ser grande o suficiente para deixar locais
consecutivos suficientes para o segmento necessário. Considere
estratégias para sistemas onde os segmentos não podem ser relocados, e
aqueles para sistemas onde eles podem.
9.12
Considere um sistema de computador paginado por demanda, onde o grau de
multiprogramação é atualmente fixado em quatro. O sistema foi medido
recentemente para se determinar a utilização da CPU e o disco de
paginação. Os resultados são uma das seguintes alternativas. Para cada
caso, o que está acontecendo? O grau de multiprogramação pode ser
aumentado para aumentar a utilização de CPU? A paginação está ajudando?
a.
Utilização de CPU 13 por cento; utilização de disco 97 por cento
b.
Utilização de CPU 87 por cento; utilização de disco 3 por cento
c.
Utilização de CPU 13 por cento; utilização de disco 3 por cento
9.13
Temos um sistema operacional para uma máquina que usa registradores de
base e limite, mas modificamos a máquina para fornecer uma tabela de
página. As tabelas de página podem ser montadas para simular
registradores de base e limite? Como elas podem, ou por que elas não
podem?
Capítulo 10

Interface do sistema de arquivos


Exercícios práticos
10.1
Alguns sistemas automaticamente excluem todos os arquivos do usuário
quando um usuário efetua o logoff ou termina um job, a menos que o
usuário solicite explicitamente que eles sejam mantidos; outros sistemas
mantêm todos os arquivos, a menos que o usuário os exclua explicitamente.
Discuta os méritos relativos de cada técnica.
10.2
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 sistema é “melhor”?
10.3
De modo semelhante, alguns sistemas admitem muitos tipos de estruturas
para os dados de um arquivo, enquanto outros simplesmente dão suporte a
um fluxo de bytes. Quais são as vantagens e desvantagens?
10.4
Você conseguiria simular uma estrutura de diretório multinível com uma
estrutura de diretório de único nível em que nomes arbitrariamente longos
possam ser usados? Se a sua resposta for sim, explique como você pode
fazer isso, e compare esse esquema com o esquema de diretório multinível.
Se a sua resposta for não, explique o que impede o sucesso da sua
simulação. Como você responderia a mudança se os nomes de arquivo fossem
limitados a sete caracteres?
10.5
Explique a finalidade das operações [TD]open()[TN] e [TD]close()[TN].
10.6
Dê um exemplo de uma aplicação em que os dados em um arquivo devem ser
acessados na seguinte ordem:
a.
Seqüencialmente
b.
Aleatoriamente
10.7
Em alguns sistemas, um subdiretório pode ser lido e escrito por um
usuário autorizado, assim como os arquivos comuns.
a.
Descreva os problemas de proteção que poderiam surgir.
b.
Sugira um esquema para lidar com cada um dos problemas de proteção que
você nomeou na parte a.
10.8
Considere um sistema que admita 5000 usuários. Suponha que você queira
permitir que 4990 desses usuários consigam acessar um arquivo.
a.
Como você especificaria esse esquema de proteção no UNIX?
b.
Você poderia sugerir outro esquema de proteção que possa ser usado de
modo mais eficaz para essa finalidade do que o esquema fornecido pelo
UNIX?
10.9
Pesquisadores sugeriram que, ao invés de ter uma lista de acesso
associada a cada arquivo (especificando quais usuários podem acessar o
arquivo, e como), deveríamos ter uma lista de controle de usuário
associada a cada usuário (especificando quais arquivos um usuário pode
acessar, e como). Discuta os méritos relativos desses dois esquemas.
Capítulo 11

Implementação do sistema de arquivos


Exercícios práticos
11.
Considere um arquivo consistindo atualmente em 100 blocos. Considere que
o bloco de controle de arquivo (e o bloco de índice, no caso da alocação
indexada) já está na memória. Calcule quantas operações de E/S de disco
são exigidas para estratégias de alocação contígua, vinculada e indexada
(único nível), se, para um bloco, as condições a seguir se mantiverem. No
caso de alocação contígua, considere que não existe espaço para
crescimento no início, mas existe espaço para crescer no final. Suponha
que a informação do bloco a ser acrescentado esteja armazenada na
memória.
a.
O bloco é acrescentado no início.
b.
O bloco é acrescentado no meio.
c.
O bloco é acrescentado no final.
d.
O bloco é removido do início.
e.
O bloco é removido do meio.
f.
O bloco é removido do final.
11.2
Que problemas poderiam ocorrer se um sistema permitisse que um sistema de
arquivos fosse montado simultaneamente em mais de um local?
11.3
Por que o mapa de bits para alocação de arquivos deve ser mantido no
armazenamento em massa, ao invés da memória principal?
11.4
Considere um sistema que admita as estratégias de alocação contígua,
vinculada e indexada. Que critérios deverão ser usados na decisão de qual
estratégia é melhor utilizada para determinado arquivo?
11.5
Um problema com a alocação contígua é que o usuário deve pré-alocar
espaço suficiente para cada arquivo. Se o arquivo crescer e se tornar
maior do que o espaço alocado para ele, ações especiais deverão ser
tomadas. Uma solução para esse problema é definir uma estrutura de
arquivo consistindo em uma área contígua inicial (de um tamanho
especificado). Se essa área for preenchida, o sistema operacional define
automaticamente uma área de estouro que está vinculada à área contígua
inicial. Se a área de estouro for preenchida, outra área de estouro é
alocada. Compare essa implementação de um arquivo com as implementações
contígua e vinculada padrão.
11.6
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?
11.7
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?
11.8
Explique como a camada VFS permite que um sistema operacional facilmente
dê suporte a vários tipos de sistemas de arquivo?
Capítulo 12

Estrutura de armazenamento em massa


Exercícios práticos
12.1
A busca acelerada descrita no Exercício 12.3 é típica de unidades de
disco rígido. Ao contrário, disquetes (e muitos discos rígidos
manufaturados antes de meados da década de 1980) normalmente buscam em
uma velocidade fixa. Suponha que o disco no Exercício 12.3 tenha uma
busca com taxa constante, ao invés de uma busca com aceleração constante,
de modo que o tempo de busca seja na forma t = x + yL, onde t é o tempo
em milissegundos e L é a distância da busca. Suponha que o tempo para
busca a um cilindro adjacente seja 1 milissegundo, como antes, e 0,5
milissegundos para cada cilindro adicional.
a.
Escreva uma equação para esse tempo de busca como uma função da distância
de busca.
b.
Usando a função de tempo de busca da parte a, calcule o tempo de busca
total para cada um dos schedules no Exercício 12.2. Sua resposta é igual
à do Exercício 12.3(c)?
c.
Qual é o ganho de velocidade percentual do schedule mais rápido em
relação ao FCFS nesse caso?
12.2
O escalonamento de disco, que não seja o escalonamento FCFS, é útil em um
ambiente de único usuário? Explique sua resposta.
12.3
Explique por que o escalonamento SSTF tende a favorecer cilindros do meio
em relação aos cilindros mais internos e mais externos.
12.4
Por que a latência de rotação normalmente não é considerada no
escalonamento de disco? Como você modificaria SSTF, SCAN e C-SCAN para
incluir a otimização da latência?
12.5
Como o uso de um disco de RAM afetaria a sua seleção de um algoritmo de
escalonamento de disco? Que fatores você precisaria considerar? As mesmas
considerações se aplicam ao escalonamento de disco rígido, dado que o
sistema de arquivo armazena os blocos usados recentemente em um cache de
buffer na memória principal?
12.6
Por que é importante balancear a E/S do sistema de arquivos entre os
discos e os controladores de um sistema em um ambiente multitarefa?
12.7
Quais são os prós e os contras envolvidos na leitura repetida de páginas
de código do sistema de arquivos em comparação com o uso do espaço de
swap para armazená-las?
12.8
Existe algum meio de implementar o armazenamento verdadeiramente estável?
Explique sua resposta.
12.9
O termo “SCSI-II fast wide” indica um barramento SCSI que opera em uma
taxa de dados de 20 megabytes por segundo quando move um pacote de bytes
entre o host e um dispositivo. Suponha que uma unidade de disco SCSI-II
fast wide gire a 7200 RPM, tenha um tamanho de setor de 512 bytes e
mantenha 160 setores por trilha.
a.
Estime a taxa de transferência sustentada dessa unidade em megabytes por
segundo.
b.
Suponha que a unidade tenha 7000 cilindros, 20 trilhas por cilindro, um
tempo de troca de cabeça (de uma placa para outra) de 0,5 milissegundos e
um tempo de busca de cilindro adjacente de 2 milissegundos. Use essa
informação adicional para oferecer uma estimativa precisa da taxa de
transferência sustentada para uma transferência em grande quantidade.
c.
Suponha que o tempo de busca médio para a unidade seja de 8
milissegundos. Estime o número de E/Ss por segundo e a taxa de
transferência efetiva para uma carga de trabalho de acesso aleatório que
lê setores individuais que estão espalhados pelo disco.
d.
Calcule o número de E/Ss de acesso aleatório por segundo e a taxa de
transferência para tamanhos de E/S de 4 kilobytes, 8 kilobytes e 64
kilobytes.
e.
Se várias solicitações estiverem em uma fila, um algoritmo de
escalonamento como SCAN deverá ser capaz de reduzir a distância média de
busca. Suponha que uma carga de trabalho de acesso aleatório esteja lendo
páginas de 8 kilobytes, o tamanho médio da fila seja 10 e o algoritmo de
escalonamento reduza o tempo médio de busca para 3 milissegundos. Agora,
calcule o número de E/Ss por segundo e a taxa de transferência efetiva da
unidade.
12.10
Mais de uma unidade de disco pode estar conectada a um barramento SCSI.
Em particular, um barramento SCSI-II fast wide (ver Exercício 12.9) pode
estar conectado a no máximo 15 unidades de disco. Lembre-se de que esse
barramento tem uma largura de banda de 20 megabytes por segundo. A
qualquer momento, apenas um pacote pode ser transferido no barramento
entre o cache interno de algum disco e o host. Porém, um disco pode estar
movendo seu braço de disco enquanto algum outro disco está transferindo
um pacote no barramento. Além disso, um disco pode estar transferindo
dados entre suas placas magnéticas e seu cache interno enquanto algum
outro disco está transferindo um pacote no barramento. Considerando as
taxas de transferência que você calculou para as diversas cargas de
trabalho no Exercício 12.9, discuta quantos discos podem ser usados
efetivamente por um barramento SCSI-II fast wide.
12.11
O remapeamento de blocos defeituosos por reserva de setor ou por
deslizamento de setor poderia influenciar o desempenho. Suponha que a
unidade no Exercício 12.9 tenha um total de 100 setores defeituosos em
locais aleatórios e que cada setor defeituoso seja mapeado para uma
reserva localizada em uma trilha diferente, mas dentro do mesmo cilindro.
Estime o número de E/Ss por segundo e a taxa de transferência efetiva
para uma carga de trabalho de acesso aleatório consistindo em leituras de
8 kilobytes, com um tamanho de fila de 1 (ou seja, a escolha do algoritmo
de escalonamento não é um fator). Qual é o efeito de um setor defeituoso
sobre o desempenho?
12.12
Em um jukebox de disco, qual seria o efeito de ter mais arquivos abertos
do que o número de unidades no jukebox?
12.13
Se os discos rígidos magnéticos por fim têm o mesmo custo por gigabyte
das fitas, as fitas se tornarão obsoletas, ou elas ainda serão
necessárias? Explique sua resposta.
12.14
Às vezes é dito que a fita é um meio de acesso seqüencial, enquanto o
disco magnético é um meio de acesso aleatório. Na verdade, a conveniência
de um dispositivo de armazenamento para acesso aleatório depende do
tamanho da transferência. O termo taxa de transferência de streaming
indica a taxa de dados para uma transferência que está a caminho,
excluindo o efeito da latência de acesso. Ao contrário, a taxa de
transferência efetiva é a razão do total de bytes pelo total de segundos,
incluindo o tempo adicional, como a latência de acesso.
Suponha que, em um computador, o cache de nível 2 tenha uma latência de
acesso de 8 nanossegundos e uma taxa de transferência de streaming de 800
megabytes por segundo, a memória principal tenha uma latência de acesso
de 60 nanossegundos e uma taxa de transferência de streaming de 80
megabytes por segundo, o disco magnético tenha uma latência de acesso de
15 milissegundos e uma taxa de transferência de streaming de 5 megabytes
por segundo, e a unidade de fita tenha uma latência de acesso de 60
segundos e uma taxa de transferência de streaming de 2 megabytes por
segundo.
a.
O acesso aleatório faz com que a taxa de transferência efetiva de um
dispositivo diminua, pois nenhum dado é transferido usando o tempo de
acesso. Para o disco descrito, qual é a taxa de transferência efetiva se
um acesso médio for seguido por uma transferência de streaming de 512
bytes, ou 8 kilobytes, 1 megabyte e 16 megabytes?
b.
A utilização de um dispositivo é a razão entre a taxa de transferência
efetiva e a taxa de transferência de streaming. Calcule a utilização da
unidade de disco para acesso aleatório que realiza transferências em cada
um dos quatro tamanhos dados na parte a.
c.
Suponha que uma utilização de 25 por cento (ou mais) seja considerada
aceitável. Usando os valores de desempenho fornecidos, calcule o menor
tamanho de transferência para o disco que ofereça uma utilização
aceitável.
d.
Complete a seguinte sentença: Um disco é um dispositivo de acesso
aleatório para transferências maiores do que _____ bytes, e é um
dispositivo de acesso seqüencial para transferências menores.
e.
Calcule os tamanhos de transferência mínimos que ofereçam utilização
aceitável para cache, memória e fita.
f.
Quando uma fita é um dispositivo de acesso aleatório e quando é um
dispositivo de acesso seqüencial?
12.15
Suponha que concordemos que 1 kilobyte seja 1.024 bytes, 1 megabyte seja
1.0242 bytes, e 1 gigabyte seja 1.0243 bytes. Essa progressão continua
por terabytes, petabytes e exabytes (1.0246). Atualmente, existem vários
novos projetos científicos propostos que planejam registrar e armazenar
alguns exabytes de dados durante a próxima década. Para responder as
perguntas seguintes, você precisará fazer algumas hipóteses razoáveis;
expresse as hipóteses que você fizer.
a.
Quantas unidades de disco seriam necessárias para manter 4 exabytes de
dados?
b.
Quantas fitas magnéticas seriam necessárias para manter 4 exabytes de
dados?
c.
Quantas fitas ópticas seriam necessárias para manter 4 exabytes de dados
(ver Exercício 12.21)?
d.
Quantos cartuchos de armazenamento holográfico seriam necessários para
manter 4 exabytes de dados (ver Exercício 12.20)?
e.
Quantos pés cúbicos de espaço de armazenamento cada opção exigiria?
Capítulo 13

Sistemas de E/S
Exercícios práticos
13.1
Cite três vantagens de se colocar funcionalidade em um controlador de
dispositivo, ao invés do kernel. Cite três desvantagens.
13.2
O exemplo de handshaking da Seção 13.2 usou 2 bits: um bit de ocupado e
um bit de comando pronto. É possível implementar esse handshaking com
apenas 1 bit? Se for, descreva o protocolo. Se não for, explique por que
1 bit é insuficiente.
13.3
Por que um sistema poderia usar a E/S controlada por interrupção para
gerenciar uma única porta serial, mas realizar o polling de E/S para
gerenciar um processador de front-endereço, como um concentrador de
terminais?
13.4
O polling para o término de uma E/S pode desperdiçar uma grande
quantidade de ciclos de CPU se o processador repetir um loop de espera
ocupada muitas vezes antes que a E/S termine. Mas, se o dispositivo de
E/S estiver pronto para atendimento, o polling pode ser muito mais
eficiente do que capturar e despachar uma interrupção. Descreva uma
estratégia híbrida, que combina polling, sleeping e interrupções para
atendimento de dispositivo de E/S. Para cada uma dessas três estratégias
(polling puro, interrupções puras, híbrida), descreva um ambiente de
computação em que essa estratégia é mais eficiente do que qualquer uma
das outras.
13.5
Como o DMA aumenta a concorrência do sistema? De que maneira ele complica
o projeto do hardware?
13.6
Por que é importante expandir o barramento do sistema e as velocidades de
dispositivo à medida que a velocidade da CPU aumenta?
13.7
Faça a distinção entre um driver STREAMS e um módulo STREAMS.
Capítulo 14

Proteção
Exercícios práticos
14.1
Quais são as principais diferenças entre listas de capacidade e listas de
acesso?
14.2
Um arquivo MCP do Burroughs B7000/B6000 pode ser marcado como dados
sensíveis. Quando um arquivo desse tipo é excluído, sua área de
armazenamento é alterada para alguns bits aleatórios. Para que finalidade
esse esquema seria útil?
14.3
Em um sistema de proteção por anel, o nível 0 tem o maior acesso aos
objetos, e o nível n (maior que zero) tem menos direitos de acesso. Os
direitos de acesso de um programa em determinado nível na estrutura de
anel são considerados como um conjunto de capacidades. Qual é o
relacionamento entre as capacidades de um domínio no nível j e um domínio
no nível i a um objeto (para j > i)?
14.4
O sistema RC 4000 (e outros sistemas) definiu uma árvore de processos
(chamada árvore de processos) de modo que todos os descendentes de um
processo recebam recursos (objetos) e direitos de acesso apenas por seus
ancestrais. Assim, um descendente nunca pode ter a capacidade de fazer
algo que seus ancestrais não podem fazer. A raiz da árvore é o sistema
operacional, que tem a capacidade de fazer qualquer coisa. Suponha que o
conjunto de direitos de acesso fosse representado por uma matriz de
acesso, A. A(x,y) define os direitos de acesso do processo x ao objeto y.
Se x é um descendente de z, qual é o relacionamento entre A(x,y) e A(z,y)
para um objeto qualquer y?
14.5
Que problemas de proteção podem surgir se uma pilha compartilhada for
usada para a passagem de parâmetros?
14.6
Considere um ambiente de computação onde um único exclusivo é associado a
cada processo e cada objeto no sistema. Suponha que permitamos que um
processo com número n acesse um objeto com número m somente se n > m. Que
tipo de estrutura de proteção nós temos?
14.7
Considere um ambiente de computação onde um processo recebe o privilégio
de acessar um objeto apenas n vezes. Sugira um esquema para implementar
essa política.
14.8
Se todos os direitos de acesso a um objeto forem excluídos, o objeto não
pode mais ser acessado. Nesse ponto, o objeto também deverá ser excluído,
e o espaço que ele ocupa deverá ser retornado ao sistema. Sugira uma
implementação eficiente desse esquema.
14.9
Por que é difícil proteger um sistema em que os usuários têm permissão
para realizar sua própria E/S?
14.10
Listas de capacidade normalmente são mantidas dentro do espaço de
endereços do usuário. Como o sistema garante que o usuário não pode
modificar o conteúdo da lista?
Capítulo 15

Segurança
Sem exercícios
Capítulo 16

Estruturas de sistemas distribuídos


Exercícios práticos
16.1
A maioria das WANs emprega apenas uma topologia parcialmente conectada.
Por que isso acontece?
16.2
Sob que circunstâncias uma rede por passagem de tokens é mais eficaz do
que uma rede Ethernet?
16.3
Por que seria uma má idéia que os gateways passem pacotes de broadcast
entre as redes? Quais seriam as vantagens de se fazer isso?
16.4
Discuta as vantagens e desvantagens de se colocar traduções de nomes em
cache para os computadores localizados em domínios remotos.
16.5
Quais são as vantagens e desvantagens de se usar a comutação de
circuitos? Para que tipos de aplicações a comutação de circuitos é uma
estrutura viável?
16.6
Quais são dois problemas amedrontadores que os projetistas precisam
solucionar para implementar um sistema transparente à rede?
16.7
A migração de processos dentro de uma rede heterogênea normalmente é
impossível, dadas as diferenças em arquiteturas e sistemas operacionais.
Descreva um método para processar a migração por diferentes arquiteturas
executando:
a.
O mesmo sistema operacional
b.
Diferentes sistemas operacionais
16.8
Para criar um sistema distribuído robusto, você precisa saber que tipos
de falhas podem ocorrer.
a.
Liste três tipos possíveis de falha em um sistema distribuído.
b.
Especifique quais das entradas na sua lista também se aplicam a um
sistema centralizado.
16.9
É sempre crucial saber que a mensagem que você enviou chegou em seu
destino com segurança? Se a sua resposta for sim, explique por que. Se a
sua resposta for não, ofereça exemplos apropriados.
16.10
Apresente um algoritmo para reconstruir um anel lógico após a falha de um
processo no anel.
16.11
Considere um sistema distribuído com dois locais, A e B. Considere se o
local A pode distinguir entre o seguinte:
a.
B está parado.
b.
O link entre A e B está interrompido.
c.
B está extremamente sobrecarregado e seu tempo de resposta é 100 vezes
maior do que o normal.
Que implicações tem a sua resposta para a recuperação nos sistemas
distribuídos?
Capítulo 17

Sistemas de arquivos distribuídos


Sem exercícios
Capítulo 18

Coordenação distribuída
Sem exercícios
Capítulo 19

Sistemas de tempo real


Sem exercícios
Capítulo 20

Sistemas de multimídia
Sem exercícios
Capítulo 21

O sistema Linux
Exercícios práticos
21.1
Módulos de kernel carregáveis dinamicamente oferecem flexibilidade quando
os drivers são acrescentados a um sistema, mas eles também possuem
desvantagens? Sob que circunstâncias um kernel seria compilado em um
único arquivo binário, e quando seria melhor mantê-lo dividido em
módulos? Explique sua resposta.
21.2
Multithreading é uma técnica de programação comumente utilizada. Descreva
três maneiras diferentes como os threads poderiam ser implementados.
Explique como essas maneiras se comparam com o mecanismo clone do Linux.
Quando cada mecanismo alternativo poderia ser melhor ou pior do que o uso
de clones?
21.3
O kernel do Linux não permite a paginação para fora da memória do kernel.
Que efeito tem essa restrição sobre o projeto do kernel? Quais são duas
vantagens e duas desvantagens dessa decisão de projeto?
21.4
Quais são três vantagens do vínculo dinâmico (compartilhado) de
bibliotecas em comparação com o vínculo estático? Quais são dois casos
onde o vínculo estático é preferível?
21.5
Compare o uso de soquetes de rede como uso de memória compartilhada como
um mecanismo para comunicar dados entre processos em um computador
isolado. Quais são as vantagens de cada método? Quando cada um poderia
ser preferido?
21.6
Sistemas UNIX costumavam usar otimizações de layout de disco com base na
posição rotativa dos dados do disco, mas as implementações modernas,
incluindo o Linux, simplesmente otimizam para o acesso seqüencial aos
dados. Por que eles fazem isso? De que características do hardware o
acesso seqüencial tira proveito? Por que a otimização da rotação não é
mais tão útil?
Capítulo 22

Windows XP
Exercícios práticos
22.1
Que tipo de sistema operacional é o Windows XP? Descreva duas de suas
principais características.
22.2
Liste os objetivos de projeto do Windows XP. Descreva dois com detalhes.
22.3
Descreva o processo de booting para um sistema Windows XP.
22.4
Descreva as três principais camadas arquitetônicas do Windows XP.
22.5
Qual é a tarefa do gerenciador de objetos?
22.6
Que tipos de serviços o gerenciador de processos oferece? O que é uma
chamada de procedimento local?
22.7
Quais são as responsabilidades do gerenciador de E/S?
22.8
O Windows XP oferece quaisquer processos no modo usuário que lhe permitam
executar programas desenvolvidos para outros sistemas operacionais?
Descreva dois desses subsistemas.
22.9
Que tipos de rede o Windows XP admite? Como o Windows XP implementa os
protocolos de transporte? Descreva dois protocolos de rede.
22.10
Como o namespace do NTFS é organizado? Descreva.
22.11
Como o NTFS trata das estruturas de dados? Como o NTFS se recupera de uma
falha no sistema? O que é garantido após uma recuperação?
22.12
Como o Windows XP aloca memória do usuário?
22.13
Descreva algumas das maneiras como uma aplicação pode usar a memória por
meio da API Win32.
Capítulo 23

Sistemas operacionais influentes


Sem exercícios

Você também pode gostar