Documente Academic
Documente Profesional
Documente Cultură
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
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
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
Coordenação distribuída
Sem exercícios
Capítulo 19
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