Anda di halaman 1dari 39

1

CAPÍTULO

Introdução 
Exercícios Práticos Resposta:
Um argumento a favor da inclusão de aplicações popu-
1.1 Quais são as três finalidades principais de um sistema lares no sistema operacional é que, se a aplicação estiver
operacional? embutida no sistema operacional
operacional,, provavelmente poderá
Resposta: se beneficiar melhor dos recursos do kernel e, portanto,
As três finalidades principais são: terá vantagens de desempenho que não teria uma aplica-
 Fornecer um ambiente para que um usuário de compu- ção executada fora do kernel. No entanto, normalmente
tador execute programas no hardware do computador os argumentos contra a inclusão de aplicações no sistema
de maneira conveniente e eficiente. operacional prevalecem: (1) aplicações são aplicações —
não fazem parte do sistema operacional; (2) nenhum
 Alocar os recursos separados do computador conforme ganho de desempenho obtido com a execução dentro do
é preciso para resolver o problema dado. O processo de kernel compensa as vulnerabilidades de segurança; (3)
alocação deve ser o mais claro e eficiente possível. leva a um sistema operacional inchado.
 Como programa de controle, serve a duas funções prin-
prin -
cipais: (1) supervisão da execução de programas de 1.5 Como a diferença entre a modalidade de kernel e a mo-
usuário para evitar erros e o uso impróprio do com- dalidade de usuário funciona como um tipot ipo rudimentar
putador; (2) gerenciamento da operação e controle dos de sistema de proteção (segurança)?
Resposta:
dispositivos de I/O.
A diferença entre modalidade de kernel e modalidade de
1.2 Enfatizamos a necessidade de o sistema operacional usar usuário fornece uma forma rudimentar de proteção da
eficientemente o hardware do computador
computador.. Quando é maneira a seguir. Certas instruções só podem ser execu-
apropriado que o sistema operacional ignore esse princí- tadas quando a CPU está em modalidade de kernel. Da
pio e “desperdice” recursos? Por que um sistema assim mesma forma, dispositivos de hardware só podem ser
não está na verdade sendo ineficiente? acessados quando o programa está sendo executado em
Resposta: modalidade de kernel. O controle de quantas interrup-
Sistemas monousuário devem maximizar o uso do sistema ções podem ser habilitadas ou desabilitadas também só
para o usuário. Uma GUI pode “desperdiçar” ciclos da é possível quando a CPU está em modalidade de kernel.
CPU, mas otimiza a interação do usuário com o sistema. Consequentemente, a CPU tem uma capacidade muito
limitada quando executando em modalidade de usuário,
1.3 Qual é a principal dificuldade que um programador
programador deve o que reforça a proteção de recursos críticos.
superar ao escrever um sistema operacional para um am-
 biente de tempo real? 1.6 Qual das instruções a seguir deve ser privilegiada?
Resposta: a. Configurar o valor do timer
timer..
A principal dificuldade é manter o sistema operacional  b. Ler o relógio.
dentro das restrições de tempo fixadas para um sistema c. Limpar a memória.
de tempo real. Se um sistema não concluir uma tarefa em
determinado intervalo de tempo, pode causar uma para- d. Emitir uma instrução de exceção.
lisação do sistema inteiro que está em execução. Logo, ao e. Desativar interrupções.
escrever um sistema operacional para um sistema de tem- f. Modificar entradas na tabela de status de dispositi-
po real, o programador deve se certificar de que seus es- vos.
quemas de scheduling não permitam que o tempo de g. Passar de modalidade de usuário para a de kernel.
resposta exceda a restrição de tempo.
1.4 Lembrando-se das diversas definições de sistema opera- h. Acessar dispositivo de I/O.
cional, considere se ele deve incluir aplicações como na- Resposta:
vegadores da web e programas de e-mail. Defenda tanto As instruções a seguir precisam ser privilegiadas: Posi-
que ele deve como que ele não deve fazer isso, e funda- cionar o valor do timer, limpar a memória, desativar in-
mente suas respostas. terrupções, modificar entradas na tabela de status de
1
2 Capítulo 1

dispositivos, acessar dispositivo


disposit ivo de I/O. As outras podem rupções de timer e atualizar seu estado local quando as
ser executadas em modalidade de usuário. interrupções fossem realmente ativadas.
1.7 Alguns computadores antigos protegiam o sistema opera- 1.10 Cite duas razões que tornam os caches úteis. Que proble-
cional alocando-o a uma partição da memória que não po- mas eles resolvem? Que problemas causam? Se um cache
dia ser modificada tanto pelo job do usuário quanto pelo puder ser tão grande quanto o dispositivo para o qual es-
próprio sistema operacional. Descreva duas dificuldades tá armazenando (por exemplo, um cache tão extenso
que você acha que poderiam surgir nesse esquema. quanto um disco), por que não lhe dar esse tamanho e
Resposta: eliminar o dispositivo?
Os dados requeridos pelo sistema operacional (senhas, Resposta:
controles de acesso, informações de contabilidade, e as- Os caches são úteis quando dois ou mais componentes
sim por diante) teriam de ser armazenados em memória precisam trocar dados, e esses componente
componentess executam
não protegida, ou passados através dela; sendo, portanto, transferências com velocidades diferentes. Os caches re-
acessíveis a usuários não autorizados. solvem o problema da transferência fornecendo um bu-
1.8 Algumas CPUs fornecem mais de duas modalidades de ffer de velocidade intermediária entre os componentes.
operação. Cite dois usos possíveis para essas múltiplas Se o dispositivo rápido achar os dados de que precisa no
modalidades. cache, não precisará esperar pelo dispositivo mais lento.
Resposta: Os dados no cache devem ser mantidos consistentes com
Embora a maioria dos sistemas só faça distinção entre os dados nos componentes. Se um componente tiver um
modalidades de usuário e de kernel, algumas CPUs su- valor de dado alterado, e o dado também estiver no ca-
portam múltiplas modalidades. Múltiplas modalidades che, o cache também deve ser atualizado. Isso é um pro-
podem ser usadas para fornecer uma política de segurança  blema principalmente
pri ncipalmente em sistemas
sistema s multiprocessadores
multip rocessadores
mais refinada. Por exemplo, em vez de fazer a distinção em que mais de um processo pode estar acessando um
apenas entre modalidade de usuário e de kernel, você dado. Um componente pode ser eliminado por um cache
poderia fazer a distinção entre diferentes tipos de moda- de mesmo tamanho, mas apenas se: (a) o cache e o com-
lidade de usuário. Talvez usuários pertencentes ao mes- ponente tiverem capacidade equivalente de salvamento
mo grupo pudessem executar os códigos uns dos outros. de estado (isto é, se o componente retiver seus dados
A máquina entraria em uma modalidade especificada quando a energia é removida, o cache também deverá re-
quando um desses usuários estivesse executando código. ter dados) e (b) o cache puder ser custeado, porque uma
Quando a máquina estivesse nessa modalidade, um mem- memória mais rápida tende a ser mais cara.
 bro do grupo poderia executar código pertencente a qual-
qual- 1.11 Qual a diferença entre os modelos cliente-servidor e entre
quer outro membro do grupo. pares dos sistemas distribuídos?
Outra possibilidade seria fornecer diferentes distinções Resposta:
dentro do código do kernel. Por exemplo, um u m modalida- O modelo cliente-servidor distingue claramente os papéis
de específica poderia permitir que drivers de dispositivos do cliente e do servidor.
servidor. Nesse modelo, o cliente solicita
USB fossem executados. Isso significaria que os disposi- serviços que são fornecidos pelo servidor. O modelo en-
tivos USB poderiam ser atendidos sem ter de passar para tre pares não tem esses papéis rígidos. Na verdade, todos
a modalidade de kernel, permitindo, essencialmente,
essencialmente, que os nós do sistema são considerados pares e, portanto, po-
drivers de dispositivos USB fossem executados em uma dem atuar como clientes ou servidores — ou ambos. Um
quase modalidade de usuário/kernel. nó pode solicitar um serviço a outro par ou pode fornecer
1.9 Os timers podem ser usados para computar a hora cor- esse serviço a outros pares do sistema.
rente. Forneça uma breve descrição de como isso pode Por exemplo, considerem
consideremos os um sistema de nós que
ser feito. compartilhem receitas culinárias. No modelo cliente-ser-
Resposta: vidor,, todas as receitas são armazenadas no servidor. Se
vidor
Um programa poderia usar a abordagem a seguir para um cliente quiser acessar uma receita, deve solicitá-la a o
computar a hora corrente utilizando interrupções de ti- servidor especificado. Com o uso do modelo entre pares,
mer. O programa poderia posicionar um timer para al- um nó pode solicitar a outros nós pares a receita especi-
gum momento futuro e adormecer. Quando fosse ficada. O nó (ou talvez os nós) que tiver a receita solicita-
despertado pela interrupção, poderia atualizar seu esta- da poderá fornecê-la ao nó solicitante. Observe como
do local, que está sendo usado para rastrear o número de cada par pode atuar como um cliente (ele pode solicitar
interrupções que recebeu até então. Em seguida, poderia receitas) e como um servidor (pode fornecer receitas).
repetir esse processo de posicionar continuamente inter-
Estr uturas do Sistema
Estruturas Sistema 2
CAPÍTULO

Operacional 

Exercícios Práticos Resposta:


Ele lê comandos do usuário ou de um arquivo de coman-
2.1 Qual é a finalidade das chamadas de sistema? dos e os executa, colocando-os, usualmente, em uma ou
Resposta: mais chamadas de sistema. Não é, em geral, parte do ker-
As chamadas de sistema permitem que processos
p rocessos de nível nel, já que o interpretador de comandos é sujeito a modi-
de usuário solicitem serviços do sistema operacional. ficações.
2.2 Quais são as cinco principais atividades de um sistema 2.6 Que chamadas de sistema têm de ser executadas por um
operacional relacionadas com o gerenciamento de pro- shell ou interpretador de comandos para iniciar um novo
cessos? processo?
Resposta: Resposta:
As cinco atividades principais são: Em sistemas UNIX, uma chamada de sistema fork , segui-
a. A criação e destruição tanto de processos de usuário da por uma chamada de sistema exec, precisa ser execu-
quanto de sistema. tada para iniciar um novo processo. A chamada fork clona
 b. A suspensão e retomada
retomada de processos.
processos. o processo em execução corrente, enquanto a chamada
exec substitui o processo que fez a chamada por um novo
c. O fornecimento de mecanismos para sincronização processo com um executável diferente.
de processos.
2.7 Qual é a finalidade dos programas de sistema?
d. O fornecimento de mecanismos para comunicação Resposta:
entre processos. Os programas de sistema podem ser imaginados como
e. O fornecimento de mecanismos para manipulação feixes de chamadas de sistema úteis. Eles fornecem
de deadlocks. funcionalidade básica para usuários de modo que os usuá-
usuá -
2.3 Quais são as três principais atividades
ativida des de um sistema ope- rios não precisem escrever seus próprios programas para
racional relacionadas com o gerenciamento de memória? resolver problemas comuns.
Resposta: 2.8 Qual é a principal vantagem da abordagem em camadas
As três atividades principais são: para o projeto de sistemas? Quais são as desvantagens do
a. Controlar as partes da memória que estão sendo cor- uso da abordagem em camadas?
rentemente utilizadas e quem as está utilizando. Resposta:
 b. Deci
Decidir
dir que proce
processos
ssos deve
devemm ser carr
carregad
egados
os na Como em todos os casos de projeto modular,
modular, o projeto de
memória quando o espaço em memória se torna dis- um sistema operacional de forma modular tem diversas
ponível. vantagens. O sistema é mais fácil de depurar e modificar
porque as mudanças afetam apenas seções limitadas do
c. Alocar e desalocar espaço da memória quando neces- sistema em vez de mexer com todas as seções do sistema
sário. operacional. As informações são mantidas apenas onde
2.4 Quais são as três principais atividades
atividad es de um sistema ope- são necessárias e são acessíveis somente dentro de uma
racional relacionadas com o gerenciamento de memória área definida e restrita, de modo que quaisquer bugs que
secundária? afetem os dados devem ficar limitados a um módulo es-
Resposta: pecífico ou camada.
As três atividades principais são: 2.9 Liste cinco serviços fornecidos por um sistema operacio-
 Gerenciamento do espaço livre.
Gerenciamento nal e explique por que cada um deles é conveniente para
 Alocação de memória. os usuários. Em que casos seria impossível que progra-
mas de nível de usuário fornecessem esses serviços? Ex-
 Scheduling de disco. plique sua resposta.
2.5 Qual é a finalidade do interpretador de comandos? Por Resposta:
que geralmente ele é separado do kernel? Os cinco serviços são:
3
4 Capítulo 2

a. Execução de programas. O sistema operacional car- dia. No nível de software, as mídias devem ser veri-
rega o conteúdo (ou seções) de um arquivo em me- ficadas quanto à consistência dos dados; por exemplo,
mória e inicia sua execução. Um programa de nível se o número de blocos de armazenamento alocados
de usuário poderia não ser confiável para alocar tem- e não alocados coincide com o número total do dis-
po de CPU apropriadamente. positivo. Aqui, os erros são, com frequência, inde-
 b. Operações de I/O. Discos, fitas, linhas seriais e ou- pendentes de processo (por exemplo, a corrupção de
tros dispositivos têm que se comunicar em um nível dados em um disco), de modo que deve existir um
muito baixo. O usuário precisa apenas especificar o programa global (o sistema operacional) que mani-
dispositivo e a operação a ser executada sobre ele, pule todos os tipos de erro. Além disso, tendo os er-
enquanto o sistema converte a solicitação em coman- ros processados pelo sistema operacional, os processo
processoss
dos específicos do dispositivo
dispositi vo ou do controlador. Pro- não precisam conter código para capturar e corrigir
gramas de nível de usuário não podem ser confiáveis todos os erros possíveis em um sistema.
para acessar somente os dispositivos que eles podem 2.10 Por que alguns sistemas armazenam o sistema operacional
acessar e acessá-los somente quando eles não estive- em firmware enquanto outros o armazenam em disco?
rem sendo usados. Resposta:
c. Manipulação do sistema de arquivos. Existem mui- Para certos dispositivos, tais como PDAs móveis e tele-
tos detalhes na criação, exclusão, alocação e nomea- fones celulares, um disco com um sistema de arquivos
ção de arquivos que os usuários não devem
deve m executar. pode não estar disponível para o dispositivo. Nessa si-
Blocos de espaço em disco são utilizados por arquivos tuação, o sistema operacional deve estar armazenado em
e devem ser formatados. A exclusão de um arquivo firmware.
requer a remoção das informações do arquivo de no- 2.11 Como seria o projeto de um sistema que permitisse a es-
mes e a liberação dos blocos alocados. As proteções colha, entre sistema operacionais, daquele a ser iniciali-
também precisam ser verificadas para garantir o aces- zado? O que o programa bootstrap teria que fazer?
so apropriado ao arquivo. Programas de usuário nem Resposta:
podem garantir aderência aos métodos de proteção Considere um sistema que queira operar tanto o Windows
nem são confiáveis para alocar apenas blocos livres e XP como três diferentes distribuições do Linux (isto é,
desalocar blocos na exclusão do arquivo. RedHat, Debian e Mandrake). Cada sistema operacional
d. Comunicações. A passagem de mensagens entre siste- será armazenado em disco. Durante a inicialização do
mas requer que as mensagens componham pacotes sistema, um programa especial (que chamaremos de ge-
de informação, sejam enviadas ao controlador da re- renciador de inicialização) determinará qual sistema ope-
de, transmitidas por um meio de comunicação e re- racional deverá ser inicializado. Isso significa que, em vez
montadas pelo sistema de destino. A ordenação dos de inicializar a princípio um sistema operacional, o ge-
pacotes e a correção dos dados precisam ter lugar. renciador de inicialização executará primeiro durante o
Mais uma vez, programas de usuário não podem co- início do sistema. É o gerenciador de inicialização que é
ordenar o acesso ao dispositivo de rede nem receber o responsável por determinar qual sistema deve ser ini-
pacotes destinados a outros processos. cializado. Normalmente, os gerenciadores de inicialização
e. Detecção de erros. A detecção de erros acontece em devem ser armazenados em determinadas locações do
nível tanto de hardware quanto de software. No ní- disco rígido para serem reconhecid
reconhecidos
os durante o início do
vel de hardware, todas as transferênc
transferências
ias de dados sistema. Gerenciadores de inicialização colocam, com fre-
devem ser inspecionadas para garantir que os dados quência, à disposição do usuário, uma seleção de sistemas
não foram corrompidos em trânsito. Todos os dados a serem inicializados; eles também são normalmente pro-
em mídia devem ser verificados para assegurar que  jetados para inicializar
inicializar um sistema
sistema operacional
operacional default se
eles não mudaram desde que foram gravados na mí- nenhuma escolha for feita pelo usuário.
3
CAPÍTULO

Processos 
Exercícios Práticos recém-criado por fork. São feitas cópias da pilha e do he-
ap para o processo recém-criado.
3.1 Utilizando o programa mostrado na Figura 3.30, explique
qual será a saída na Linha A. 3.6 No que diz respeito ao mecanismo RPC, considere a se-
Resposta:
mântica “exatamente um”. O algoritmo para implemen-
O resultado ainda é 5, já que o filho atualiza sua cópia de tação dessa semântica é executado corretamente, mesmo
value. Quando o controle retornar ao pai, sua variável value quando a mensagem ACK retornada ao cliente é perdida
continuará sendo 5. por causa de um problema na rede? Descreva a sequência
sequê ncia
de mensagens e discuta se a semântica “exatamente um”
3.2 Incluindo o processo-pai inicial, quantos processos são continua sendo preservada.
criados pelo programa mostrado na Figura 3.31? Resposta:
Resposta: A semântica “exatamente um” garante que um procedi-
São criados 16 processos. mento remoto seja executado exatamente uma vez e
3.3 As versões originais do sistema operacional móvel iOs somente uma vez. O algoritmo geral para fornecer essa
da Apple não forneciam meios de processamento concor- garantia combina um esquema de conhecimento (ACK
rente. Discuta três grandes complicações que o processa- — acknowledgment) com marcadores de tempo (ou algum
mento concorrente adiciona a um sistema operacional. outro contador incremental que permita ao servidor dis-
tinguir entre mensagens duplicadas).
3.4 O processador UltraSPARC da Sun tem múltiplos con- A estratégia geral é que o cliente envie uma RPC ao
 juntos de registradores. Descreva o que acontece quando
quando servidor junto com um marcador de tempo. O cliente tam-
ta m-
ocorre uma mudança de contexto, e o novo contexto já  bém dará início a um relógio de expiração de tempo. O
está carregado em um dos conjuntos de registradores. O cliente então esperará por uma de duas ocorrências: (1)
que acontece quando o novo contexto está na memória, ele receberá um ACK do servidor indicando que o proce-
e não em um conjunto de registradores, e todos os con- dimento remoto foi executado, ou (2) ele expirará por
 juntos de registradores
registradores estão sendo usados? tempo. Se o cliente expirar por tempo, assumirá que o
Resposta: servidor foi incapaz de executar o procedimento remoto;
O ponteiro do conjunto de registradores correntes da CPU assim, o cliente invocará a RPC uma segunda vez, envian-
é alterado para apontar para o conjunto que contém o no- do um último marcador de tempo. O cliente pode não
vo contexto, o que leva muito pouco tempo. Se o contex- receber o ACK por uma de duas razões: (1) a RPC origi-
to estiver em memória, um dos contextos em um nal jamais foi recebida pelo servidor, ou (2) a RPC foi cor-
conjunto de registradores deverá ser selecionado e movi- retamente recebida — e executada pelo servidor —, mas
do para a memória, e o novo contexto deverá ser carre- o ACK foi perdido. Na situação (1), o uso de ACKs per-
gado da memória, no conjunto de registradores. Esse mitirá que o servidor finalmente receba e execute a RPC.
processo leva um pouco mais de tempo do que em siste- Na situação (2), o servidor receberá uma RPC em dupli-
mas com um conjunto de registradores, dependendo de cata e utilizará o marcador de tempo para identificá-la
como a vítima da substituição é selecionada. como uma duplicata e não executar a RPC uma segunda
3.5 Quando um processo cria um novo processo usando a vez. É importante observar que o servidor deverá enviar
operação fork(), qual dos estados a seguir é compartilha- um segundo ACK de volta ao cliente para informá-lo de
do entre o processo-pai e o processo-filho? que a RPC foi executada.
a. Pilha 3.7 Suponha que um sistema distribuído seja suscetível a fa-
 b. Heap lhas no servidor. Que mecanismos seriam necessários pa-
ra garantir a semântica “exatamente um” na execução de
c. Segmentos de memória compartilhada RPCs?
Resposta: Resposta:
Somente os segmentos de memória compartilhada são O servidor deverá rastrear em memória estável (tal como
compartilhados entre o processo-pai e o processo-filho um log em disco) informações referentes a quais opera-
5
6 Capítulo 3

ções de RPC foram recebidas, se elas foram executadas mensagem RPC, o servidor pode verificar se a RPC foi
com sucesso, e os resultados associados às operações. anteriormente executada e garantir, portanto, a semânti-
Quando ocorre uma queda do servidor e é recebida uma ca “exatamente um” para a execução de RPCs.
4
CAPÍTULO

Threads 
Exercícios Práticos 4.4 Que recursos são usados quando um thread é criado?
Em que eles diferem dos usados quando um processo é
4.1 Forneça dois exemplos de programação em que a criação criado?
de múltiplos threads proporcione melhor desempenho Resposta:
do que uma solução com um único thread. Como um thread é menor do que um processo, a criação
Resposta: do thread normalmente utiliza menos recursos do que a
a. Um servidor web que sirva cada solicitação em um criação do processo. A criação de um processo requer a
thread separado. alocação de um bloco de controle de processo (PCB), que
 b. Uma aplicação paralelizada, tal como
como uma multipli- é uma estrutura de dados um tanto grande. O PCB inclui
cação de matrizes, em que diferentes partes da ma- um mapa da memória, uma lista de arquivos abertos e
triz podem ser trabalhadas em paralelo. variáveis ambientais. A alocação e o gerenciamento do
mapa da memória são normalmente a atividade de maior
c. Um programa de GUI interativo, tal como um depu- consumo de tempo. A criação tanto de um thread de usuá-
rador, em que são utilizados um thread para moni- rio quanto de um thread de kernel envolve a alocação de
torar a entrada do usuário, outro thread para uma pequena estrutura de dados para manter um con-
representar a aplicação em execução, e um terceiro  junto de registradores,
registradores, a pilha e as prioridades.
thread para monitorar o desempenho.
4.5 Suponha que um sistema operacional mapeie threads de
4.2 Cite duas diferenças entre os threads de nível de usuário nível de usuário para o kernel usando o modelo muitos-
e os de nível de kernel. Sob que circunstâncias um tipo é para-muitos e que o mapeamento seja feito por meio de
melhor do que o outro? LWPs.
LW Ps. Além disso, o sistema permite que os desenvolve-
Resposta: dores criem threads de tempo real para uso em sistemas
a. Threads de nível de usuário são desconhecidos pelo de tempo real. É necessário vincular um thread de tempo
kernel, enquanto o kernel está ciente dos threads de real a um LWP? Explique.
nível de kernel. Resposta:
 b. Em sistemas
s istemas que utiliz
utilizem
em mapeament
ma peamentoo tanto
t anto M:1 Sim. O timing é crucial para as aplicações de tempo real.
quanto M:N, os threads de usuário são alocados ao Se um thread é marcado como de tempo real mas não está
schedule pela biblioteca de threads, e o kernel orga- vinculado a um LWP,
LWP, o thread pode ter que esperar até que
niza o schedule dos threads de nível de kernel. seja ligado a um LWP antes da execução. Suponha que um um
thread de tempo real esteja em execução (vinculado a um
c. Os threads do kernel não precisam estar associados LWP) e, então, seja bloqueado (isto é, deve executar I/O,
a um processo, enquanto todo thread de usuário per- sofreu preempção por um thread de tempo real de priori-
tence a um processo. Os threads do kernel são geral- dade mais alta, está esperando por um lock de exclusão
mente mais dispendiosos para manter do que os mútua etc.). Enquanto o thread de tempo real estiver blo-
threads de usuário, já que eles devem ser represen- queado, o LWP ao qual ele estava vinculado foi atribuído
tados com uma estrutura de dados do kernel. a outro thread. Quando o thread de tempo real foi alocado
4.3 Descreva as ações executadas por um kernel para mudar ao schedule para nova execução, ele deverá primeiro es-
o contexto entre threads de nível de kernel. perar para ser vinculado a um LWP
LWP.. Vinculando um LWP
Resposta: a um thread de tempo real, você está garantindo que o
A mudança de contexto entre threads do kernel normal- thread será capaz de entrar em execução, com demora mí-
mente requer o salvamento do valor dos registradores da nima, assim que for alocado ao schedule.
CPU do thread expulso e a restauração dos registradores
da CPU do novo thread alocado ao schedule.

7
Sincronização de 5
CAPÍTULO

Processos 
Exercícios Práticos nar o processador
processador.. Alternativamente, um processo poderia es-
perar abandonando o processador
processador,, ficando bloqueado em uma
5.1 Na Seção 5.4, mencionamos que a desabilitação de inter- condição e esperando ser desperto em algum momento apro-
rupções pode, com frequência, afetar o relógio do sistema. priado no futuro. A espera em ação pode ser evitada, mas isso
Explique por que isso pode ocorrer e como esses efeitos po- incorre no overhead associado à colocação de um processo pa-
dem ser minimizados. ra dormir e ter de despertá-lo quando o estado apropriado do
Resposta: programa for alcançado.
O relógio do sistema é atualizado sempre que é interrompido.
Se as interrupções forem desabilitadas — particularmente 5.4 Explique por que os spinlocks não são apropriados para sis-
por um longo período de tempo —, é possível que o relógio temas uniprocessadores, mas são usados com frequência em
do sistema possa perder a hora certa facilmente. O relógio do sistemas multiprocessadores.
Resposta:
sistema também é utilizado para fins de scheduling. Por
exemplo, o quantum de tempo de um processo é expresso Os spinlocks não são apropriados para sistemas de proces-
por um número de tiques do relógio. A cada interrupção do sador único porque a condição que removeria um processo
relógio, o scheduler determina se o quantum de tempo do do spinlock só pode ser obtida pela execução de um proces-
processo em execução corrente expirou. Se as interrupções so diferente. Se o processo não abandonar o processador, ou-
do relógio forem desabilitadas, o scheduler não poderá atri- tros processos não terão a oportunidade de posicionar a
 buir, com precisão, os quanta de tempo. Esse efeito pode ser condição do programa requerida para o primeiro processo
minimizado desabilitando as interrupções do relógio somen- avançar. Em um sistema multiprocessador, outros processos
te por períodos muito curtos. são executados em outros processadores e, portanto, modi-
ficam o estado do programa para liberar o primeiro processo
5.2 Explique por que o Windows, o Linux e o Solaris implementam do spinlock.
múltiplos mecanismos de trancamento. Descreva as circuns-
tâncias em que eles usam spinlocks, locks mutexes, semáforos, 5.5 Mostre que, se as operações de semáforo wait()  e sig-
nal() não forem executadas atomicamente, a exclusão mú-
locks mutexes adaptativos e variáveis de condição. Em cada
caso, explique por que o mecanismo é necessário. tua pode ser violada.
Resposta:
Resposta:
Esses sistemas operacionais fornecem diferentes mecanismos Uma operação wait decrementa atomicamente o valor asso-
de trancamento, dependendo das necessidades dos desen- ciado a um semáforo. Se duas operações wait forem execu-
volvedores das aplicações. Os spinlocks são úteis para siste- tadas em um semáforo quando seu valor for 1, se as duas
mas multiprocessadores em que um thread pode executar operações não forem executadas atomicamente, é possível
em um busy-loop1 (por um curto período de tempo) em vez que ambas decrementem o valor do semáforo, violando as-
de incorrer no overhead de ser colocado em uma fila de ador- sim a exclusão mútua.
mecidos. Os mutexes são úteis para recursos de trancamento. 5.6 Mostre como um semáforo binário pode ser usado para im-
O Solaris 2 utiliza mutexes adaptativos, significando que o plementar a exclusão mútua entre n processos.
mutex é implementado com um spinlock em máquinas mul- Resposta:
tiprocessadoras. Os semáforos e as variáveis de condição são Os n processos compartilham um semáforo, mutex, iniciali-
ferramentas mais apropriadas para sincronização, no caso zado com 1. Cada processo Pi é organizado como mostrado
em que um recurso deve ser mantido por um longo período a seguir:
de tempo, já que o spinning é ineficiente para uma longa du- do {
ração. wait (mutex);
5.3 Qual é o significado do termo espera em ação? Que outros
tipos de espera existem em um sistema operacional? A espe- /* seção crítica */
ra em ação pode ser totalmente evitada? Explique sua res-
posta. signal (mutex);
Resposta:
Espera em ação significa que um processo está esperando que /* seção restante */
uma condição seja satisfeita em um loop restrito, sem abando- }while (true);

8
6
CAPÍTULO

Scheduling da CPU 
Exercícios Práticos Resposta:
a. 10,53
6.1 Um algoritmo de scheduling da CPU determina uma or-  b. 9,53
dem para a execução dos processos a serem alocados à
CPU. Dados n processos a serem alocados a um processa- c. 6,86
dor,, quantos schedules diferentes são possíveis? Forneça
dor Lembre-se de que o tempo de turnaround é igual à hora
uma fórmula em função de n. de término menos a hora de chegada; assim,
as sim, você tem que
Resposta: subtrair as horas de chegada para calcular os tempos de
n! (n factorial = n × n –  1
 1 × n –  2
 2 × … × 2 × 1). turnaround. O FCFS será igual a 11 se você se esquecer
de subtrair a hora de chegada.
6.2 Explique a diferença entre scheduling preemptivo e não
preemptivo. 6.4 Qual a vantagem de termos tamanhos diferentes para o
Resposta: quantum de tempo em níveis distintos de um sistema de
O scheduling preemptivo permite que um processo seja enfileiramento multinível?
interrompido no meio de sua execução, tomando a CPU Resposta:
e alocando-a a outro processo. O scheduling não preemp- Os processos que precisam de serviço mais frequente, co-
tivo garante que um processo deixe o controle da CPU mo, por exemplo, os processos interativos, tais como os
somente quando terminar o seu pico de CPU corrente. editores, podem estar em uma fila com um quantum de
tempo pequeno. Os processos que não precisam de ser-
6.3 Suponha que os processos a seguir cheguem para exe- viço frequente podem estar em uma fila com um quan-
cução nos momentos indicados. Cada processo será execu- tum de tempo maior, requerendo menos mudanças de
tado durante o período de tempo listado. Ao responder contexto para completar o processamento e fazendo, as-
às perguntas, use o scheduling não preemptivo e baseie sim, uso mais eficiente do computador.
todas as decisões nas informações disponíveis no momento 6.5 Muitos algoritmos de scheduling da CPU são parametri-
em que a decisão tiver de ser tomada. zados. Por exemplo, o algoritmo RR requer um parâme-
tro que indique a parcela de tempo. Filas multiníveis com
Processo Tempo de Chegada Duração do Pico retroalimentação requerem parâmetros que definam o nú-
P1 0,0 8 mero de filas, o algoritmo de scheduling para cada fila,
P2 0,4 4 os critérios usados para mover processos entre as filas, e
assim por diante.
P3 1,0 1 Portanto, na verdade, esses algoritmos são conjuntos
a. Qual é o tempo médio de turnaround desses processos de algoritmos (por exemplo, o conjunto de algoritmos RR
com o algoritmo de scheduling FCFS? para todas as parcelas de tempo etc.). Um conjunto de
algoritmos pode incluir outro (por exemplo, o algoritmo
 b. Qual é o tempo médi
médioo de turnar
turnaround
ound desse
dessess pro
processo
cessoss FCFS é o algoritmo RR com um quantum de tempo infi-
com o algoritmo de scheduling SJF? nito). Que relação existe (se existir alguma) entre os con-
c. O algoritmo SJF deveria melhorar o desempenho,  juntos de pares de algoritmos
algoritmos a seguir?
mas observe que optamos por executar o processo a. Por prioridades e SJF
P1 no momento 0 porque não sabíamos que dois pro-
cessos mais curtos estavam
estava m para chegar. Calcule qual  b. Filas multiníveis com retroalimentação
retroalimentação e FCFS
FCFS
será o tempo médio de turnaround se a CPU for dei- c. Por prioridades e FCFS
xada ociosa durante a primeira unidade de tempo 1 d. RR e SJF
para, então, o scheduling SJF ser usado. Lembre que Resposta:
os processos P1 e P2 estão esperando durante esse
tempo ocioso e, portanto, seu tempo de espera pode a. O job mais curto tem a prioridade mais alta.
aumentar. Esse algoritmo poderia ser chamado de  b. O nível mais baixo do MLFQ (filas multiníveis com
scheduling de conhecimento futuro. retroalimentação)) é o FCFS.
retroalimentação
9
10 Capítulo 6

c. O FCFS
FCFS dá a prioridade
prioridade mais alta ao job com o tem- uso de LWPs. Além disso, o sistema permite que os de-
po de existência mais longo. senvolvedoress de programas criem threads de tempo re-
senvolvedore
d. Nenhuma. al. É necessário vincular um thread de tempo real a um
LWP?
6.6 Suponha que um algoritmo de scheduling (do nível do Resposta:
scheduling de CPU de curto prazo) favoreça os processos Sim; caso contrário um thread de usuário poderia ter que
que usaram o menor tempo do processador no passado competir por um LWP disponível antes de ser realmente
recente. Por que esse algoritmo favorecerá programas li- alocado ao schedule. Vinculando o thread de usuário a
mitados por I/O e, ao mesmo tempo, não deixará os pro- um LWP,
LWP, não existe latência durante a espera por um LWP
gramas limitados por CPU em estado permanente de disponível; o thread de usuário de tempo real pode ser
inanição? imediatamente alocado ao schedule.
Resposta:
O algoritmo favorecerá os programas limitados por I/O 6.9 O scheduler tradicional do UNIX impõe um relaciona-
por causa do pico de CPU relativamente curto requerido mento inverso entre números de prioridade e prioridades:
por eles; entretanto, os programas limitados por CPU não quanto mais alto o número, menor a prioridade. O sche-
entrarão em inanição porque os programas limitados por duler recalcula as prioridades dos processos uma vez por
I/O liberarão a CPU, relativamente com mais frequência, segundo usando a função a seguir:
para fazer o seu I/O. Prioridade = (uso recente da CPU / 2) + base
6.7 Explique a diferença entre o scheduling PCS e SCS. em que base = 60, e uso recente da CPU se refere a um va-
Resposta:
lor indicando a frequência com que um processo usou a
O scheduling PCS é realizado localmente para o proces- CPU desde que as prioridades foram recalculadas pela
so. É a forma como a biblioteca de threads organiza o última vez.
schedule dos threads em LWPs disponíveis. O scheduling Suponha que o uso recente da CPU pelo processo P1
SCS corresponde à situação em que o sistema operacional seja igual a 40, pelo processo P2 seja igual a 18 e pelo pro-
organiza o schedule dos threads de kernel. Em sistemas cesso P3 seja igual a 10. Quais serão as novas prioridades
que utilizam tanto o esquema muitos-para-um quanto o desses três processos quando as prioridades forem recal-
esquema muitos-para-muitos, os dois modelos de sche- culadas? Com base nessas informações, o scheduler tra-
duling são fundamentalme
fundamentalmentente diferentes. Em sistemas dicional do UNIX elevará ou rebaixará a prioridade
que utilizam um-para-um, o PCS e o SCS são a mesma relativa de um processo limitado por CPU?
coisa. Resposta:
6.8 Suponha que um sistema operacional mapeie threads de As prioridades atribuídas aos processos são 80, 69 e 65,
nível de usuário para o kernel usando o modelo muitos- respectivamente. O scheduler diminui a prioridade rela-
para-muitos e que o mapeamento seja feito por meio do tiva de processos limitados por CPU.
7
CAPÍTULO

Deadlocks 
Exercícios Práticos Processo Alocação Max Disponível
7.1 Liste três exemplos de deadlocks que não estejam relacio- ABCD ABCD ABCD
nados com um ambiente de sistema de computação. P0 0012 0012 1520
Resposta: P1 1000 1750
 Dois carros atravessando uma ponte com uma única P2 1354 2356
pista, vindo de direções opostas. P3 0632 0652
P4 0014 0656
 Uma pessoa descendo uma ladeira enquanto outra pes-
soa sobe a ladeira. Responda às perguntas a seguir usando o algoritmo do
 Dois trens viajando em direção um ao outro no mes-  banqueiro:
mo trilho. a. Qual é o conteúdo da matriz Necessidade?
7.2 Suponha que um sistema esteja em um estado inseguro.  b. O sistema está em estado de segurança?
Demonstre ser possível que os processos concluam suas c. Se uma solicitação na forma (0,4,2,0) for feita pelo pro-
execuções sem entrar em estado de deadlock. cesso P1, ela poderá ser atendida imediatamente?
Resposta:
Resposta:
Um estado inseguro não necessariamente pode levar a
um deadlock; ele apenas significa que não podemos ga- a. O valor de Necessidade para os processos P0 a P4
rantir que o deadlock não ocorrerá. Assim, é possível que são, respectivamente, (0, 0, 0, 0), (0, 7, 5, 0), (1, 0, 0,
um sistema em estado inseguro possa ainda permitir que 2), (0, 0, 2, 0) e (0, 6, 4, 2).
todos os processos terminem sem que ocorra um deadlo-  b. O sistema está em estado de segurança? Sim. Com
ck. Considere a situação em que um sistema tenha 12 Disponível sendo igual a (1, 5, 2, 0), tanto P0 como
recursos alocados entre os processos P0, P1 e P2. Os recur- P3 poderia ser executado. Uma vez que o processo
sos são alocados de acordo com a seguinte política: P3 seja executado, liberará seus recursos, o que per-
mitirá que todos os outros processos existentes sejam
executados.
Processo Máx Corrente Necessidade c. A solicitação pode ser atendida imediatamente? Isso
P0 10 5 5 resulta no valor de Disponível sendo (1, 1, 0, 0). Uma
P1 4 2 2 ordem dos processos que podem terminar é P0, P2,
P3, P1 e P4.
P2 9 3 6
7.4 Um método possível para a prevenção de deadlocks é
contar com um recurso individual de mais alta ordem que
Correntemente, existem dois recursos disponíveis. Esse deva ser solicitado antes de qualquer outro recurso. Por
sistema está em estado inseguro porque o processo P1 po- exemplo, se múltiplos threads tentarem acessar os objetos
de terminar liberando, assim, um total de quatro recursos, de sincronização A …E, pode ocorrer um deadlock. (Es-
mas não podemos garantir que os processos P0 e P2 pos- ses objetos de sincronização podem incluir mutexes, se-
sam terminar. Entretanto, é possível que um processo li- máforos, variáveis de condição, e assemelhados). Podemos
 bere recu
recursos
rsos ant
antes
es de sol
solicit
icitar
ar qua
qualque
lquerr out
outro.
ro. Por prevenir a ocorrência do deadlock adicionando um sexto
exemplo, o processo P2 pode liberar um recurso, aumen- objeto F. Sempre que um threead quiser adquirir o lock
tando, assim, o número total de recursos para cinco. Isso de sincronização de qualquer objeto  A … E, antes deve
permite que o processo P0 termine, o que causa a libera- adquirir o lock do objeto F. Essa solução é conhecida co-
ção de um total de nove recursos, permitindo que o pro- mo contenção: os locks dos objetos A … E estão contidos
cesso P2 também termine. dentro do lock do objeto F. Compare esse esquema com
7.3 Considere o seguinte instantâneo de um sistema: o esquema de espera circular da Seção 7.4.4.
11
12 Capítulo 7

Resposta: Resposta:
Essa não é provavelmente uma boa solução porque pro- Um argumento favorável à instalação do algoritmo de im-
duz um escopo muito amplo. É melhor definir uma polí- pedimento de deadlocks no sistema é que poderíamos
tica de trancamento com um escopo o mais limitado garantir a não ocorrência de deadlocks. Além disso, ape-
possível. sar do aumento do tempo de turnaround, todos os 5.000
7.5 Prove que o algoritmo de segurança apresentado na Seção  jobs poderiam ainda ser executados.
executados.
7.5.3 requer uma ordem de m  n2 operações. Um argumento contra a instalação de software de impe-
Resposta: dimento de deadlocks é que deadlocks ocorrem com pou-
A Figura 7.1 fornece código Java que implementa o algorit- ca frequência e custam pouco quando ocorrem.
mo de segurança do algoritmo do banqueiro (a implemen- 7.7 Um sistema pode detectar que algum de seus processos
tação completa do algoritmo do banqueiro está disponível está sofrendo de inanição? Se você responder “sim”, expli-
com o download do código-fonte no site da LTC Editora). que como ele pode fazer isso. Se responder “não”, explique
como o sistema pode lidar com o problema da inanição.
Resposta:
for (int i = 0; i < n; i++) { A inanição é um tópico difícil de definir
definir,, já que pode sig-
// encontra primeiro um thread que possa nificar coisas diferentes para sistemas diferentes. Para os
terminar fins dessa questão, definiremos inanição como a situação
for (int j = 0; j < n; j++) { em que um processo deve esperar além de um período
if (!finish[j]) { de tempo razoável — talvez indefinidamente — antes de
boolean temp = true; receber um recurso solicitado. Um modo de detectar ina-
for (int k = 0; k < m; k++) { nição seria primeiro identificar
identifica r um período de tempo — T
if (need[j][k] > work[k]) — que não seja considerado razoável. Quando um pro-
temp = false; cesso solicitar um recurso, será iniciado um timer. Se o
} tempo transcorrido exceder T , então o processo será con-
siderado em inanição.
if (temp) { // se esse thread pode Uma estratégia para lidar com a inanição seria adotar uma
terminar política em que os recursos fossem atribuídos somente ao
finish[j] = true; processo que esteve esperando por mais tempo. Por exem- ex em-
for (int x = 0; x < m; x++) plo, se o processo Pa esteve esperando pelo recurso X por
work[x] += work[j][x]; mais tempo do que o processo Pb, a solicitação do proces-
} so Pb seria adiada até que a solicitação do processo Pa tenha
} sido atendida.
} Outra estratégia seria menos estrita do que a que acabou
} de ser mencionada. Nesse cenário, um recurso pode ser
concedido a um processo que esperou menos do que ou-
Figura 7.1  Algori tmo de seguranç
segurançaa do a lgorit
lgoritmo
mo do ban-
tro processo, cuidando para que o outro processo não en-
queiro.
tre em inanição. Entretanto, se o outro processo for
considerado em inanição, sua solicitação será atendida
Como pode ser visto, os loops externos aninhados — os primeiro.
dois com n ciclos — fornecem desempenho de n2. Dentro 7.8 Considere a política de alocação
al ocação de recursos a seguir. Soli-
desses loops externos estão dois loops internos sequen- citações e liberações de recursos são permitidas a qual-
ciais com m ciclos. A big-oh desse algoritmo é, então, O(m × quer momento. Se uma solicitação de recursos não pode
n2). ser atendida porque os recursos não estão disponíveis,
7.6 Considere um sistema de computação que executa 5.000 verificamos quaisquer processos que estejam bloqueados
 jobs por mês e não tem esque
esquema
ma de preve
prevenção
nção ou de impe- esperando por recursos. Se um processo bloqueado tem
dimento de deadlocks. Os deadlocks ocorrem aproximada- os recursos desejados, esses recursos são dele retirados e
mente duas vezes por mês, e o operador deve encerrar e passados ao processo solicitante. O vetor de recursos pe-
reexecutar cerca de 10 jobs por deadlock. Cada job custa los quais o processo bloqueado está esperando é aumen-
perto de 2 dólares (em tempo de CPU), e os jobs encerra- tado para incluir os recursos que foram removidos.
dos tendem a ser executados até a metade quando são Por exemplo, considere um sistema com três tipos de
abortados. recursos e o vetor Disponível inicializado com (4,2,2). Se
Um programador de sistemas estimou que um algorit-algorit - o processo P0 solicita (2,2,1), ele os recebe. Se P1 solicita
mo de impedimento de deadlocks (como o algoritmo do (1,0,1), ele os recebe. Em seguida, se P0 solicita (0,0,1), ele
 banqueiro)
 banqueir o) poderia ser instalado
instalado no sistema
sistema com um au- é bloqueado (recurso não disponível). Se P2 solicitar ago-
mento de cerca de 10 por cento no tempo médio de execu- ra (2,0,0), ele recebe o recurso disponível (1,0,0) e um re-
ção por job. Estando a máquina, correntemente, com 30 curso que estava alocado a P0 (já que P0 está bloqueado).
por cento do tempo ocioso, todos os 5.000 jobs por mês po- O vetor  Alocação de P0 diminui para (1,2,1), e seu vetor
deriam continuar em execução, embora o tempo de turna- Necessidade aumenta para (1,0,1).
round aumentasse em média cerca de 20 por cento. a. Pode ocorrer um deadlock? Se você responder “sim”,
a. Quais são os argumentos para a instalação
instalação do algo- dê um exemplo. Se responder “não”, especifique que
ritmo de impedimento de deadlocks? condição necessária não pode ocorrer.
 b. QuaQuais
is são os argu
argument
mentosos contr
contraa a inst
instalaç
alação
ão do  b. Pode ocorrer
ocorrer um bloqueio indefinido? Explique
Explique sua
algoritmo de impedimento de deadlocks? resposta.
Deadlocks 13

Resposta: Alocação[i] segue o que foi definido na Seção 7.5? Expli-


a. O deadlock não pode ocorrer porque existe preemp- que sua resposta.
ção. Resposta:
Sim. O vetor Max representa o número máximo de solicita-
 b. Sim. Um processo
processo não poderá jamais adquirir todos ções que um processo pode fazer. Quando calculamos o
os recursos de que precisa se eles sofrerem preemp- algoritmo de segurança, utilizamos a matriz Necessidade,
ção continuamente por uma série de solicitaçõe
solicitações,
s, tais que representa Max − Alocação. Outra maneira de pensar
como as do processo C. sobre isso é Max = Necessidade + Alocação. De acordo com
7.9 Suponha que você tenha codificado o algoritmo de segu- a questão, a matriz Espera tem um papel semelhante ao da
rança de impedimento de deadlocks e, agora, tenha sido matriz Necessidade; portanto, Max = Espera + Alocação.
7.10 É possível ocorrer um deadlock envolvendo apenas um
solicitado a implementar o algoritmo de detecção de dead- processo com um único thread? Explique sua resposta.
locks. Pode fazer isso simplesmente usando o código do Resposta:
algoritmo de segurança e redefinindo Maxi[i] = Espera[i] Não. Isso deriva diretamente da condição de manter-e-
+ Alocação[i], em que Espera[i] é um vetor que especifi- esperar
ca os recursos pelos quais o processo i está esperando, e
8
CAPÍTULO

Memória Principal 
Exercícios Práticos 8.4 Considere um espaço de endereçamento lógico de 64 pági-
nas com 1024 palavras cada, mapeado para uma memória
8.1 Cite duas diferenças entre endereços lógicos e físicos. física de 32 quadros.
Resposta: a. Quantos bits há no endereço lógico?
Um endereço lógico não se refere a um endereço
en dereço real exis-  b. Quantos bits há no endereço
endereço físico?
tente; ele se refere a um endereço abstrato em um espaço
de endereçamento abstrato. Compare isso com um ende- Resposta:
reço físico que se refira a um endereço físico real em memó- a. Endereço lógico: 16 bits
ria. Um endereço lógico é gerado pela CPU e é traduzido  b. Endereço físico:
físico: 15 bits
para um endereço físico pela unidade de gerenciamento 8.5 Qual é o efeito de permitir que duas entradas em uma ta-
da memória (MMU). Portanto, endereços físicos são ge-  bela de páginas apontem
apontem para o mesmo
mesmo quadro dede pági-
rados pela MMU. na na memória? Explique como esse efeito poderia ser
8.2 Considere um sistema em que um programa possa ser se- usado para diminuir o período de tempo necessário para
parado em duas partes: código e dados. A CPU sabe se copiar um grande montante de memória de um local pa-
deseja uma instrução (busca de instrução) ou dados (bus- ra outro. Que efeito a atualização de algum byte em uma
ca ou armazenamento de dados). Portanto, dois pares de página teria sobre a outra página?
Resposta:
registradores base-limite são fornecidos: um para instru- Ao permitir que duas entradas em uma tabela de páginas
ções e outro para dados. O par de registradores base-li- apontem para o mesmo quadro de página em memória, os
mite de instruções é, automaticamente, somente de usuários poderão compartilhar código e dados. Se o códi-
leitura; logo, os programas podem ser compartilhados go for reentrante, muito espaço de memória poderá ser
entre diferentes usuários. Discuta as vantagens e desvan- salvo por meio do uso compartilhado de programas gran-
tagens desse esquema. des, tais como editores de texto, compiladores e sistemas
Resposta: de bancos de dados. A “cópia” de grandes montantes de
A vantagem principal desse esquema é que ele é um me- memória poderia ser efetivada tendo diferentes tabelas de
canismo efetivo para compartilhamento de código e da- páginas apontando para a mesma locação de memória.
dos. Por exemplo, apenas uma cópia de um editor ou de Entretanto, o compartilhamento de código reentrante
um compilador precisa ser mantida em memória, e esse ou de dados significa que qualquer usuário que tenha
código pode ser compartilhado por todos os processos acesso ao código poderá modificá-lo, e essas modificações
que necessitem acessar o código do editor ou do compi- poderiam se refletir na “cópia” do outro usuário.
lador.. Outra vantagem é a proteção do código contra mo-
lador 8.6 Descreva um mecanismo pelo qual um segmento poderia
dificações erradas. A única desvantagem é que o código pertencer ao espaço de endereçamento de dois processos
e os dados devem ser separados, o que usualmente é ane- diferentes.
xado a umu m código gerado pelo compilador. Resposta:
8.3 Por que os tamanhos de página são sempre potências de Como as tabelas de segmentos são uma coleção de registra-
2? dores base-limite, os segmentos podem ser compartilha-
Resposta: dos quando as entradas na tabela de segmentos de dois
Lembre-se de que a paginação é implementada dividindo-  jobs diferentes apontam para a mesma
mesma locação física. As
se um endereço em uma página e um número de desloca- duas tabelas de segmentos devem ter ponteiros
pont eiros base idên-
mento. É mais eficiente quebrar o endereço em X bits de ticos, e o número do segmento compartilhado deve ser o
página e Y bits de deslocamento, em vez de executar arit- mesmo nos dois processos.
mética sobre o endereço para calcular o número da página 8.7 O compartilhamento de segmentos entre processos sem
e o deslocamento. Como cada posição de bit representa a exigência de que eles tenham o mesmo número de seg-
uma potência de 2, a divisão do endereço em bits resulta mento é possível em um sistema de segmentação vincu-
em um tamanho de página que é uma potência de 2. lado dinamicamente.
14
Memória Principal 15

a. Defina um sistema que permita a vinculação estática duas chaves são iguais ou quando seu valor é zero. Quais
e o compartilhamento de segmentos sem demandar dos esquemas de gerenciamento de memória a seguir po-
que os números de segmentos sejam iguais. deriam ser usados com sucesso com esse hardware?
 b. Descre
Descreva
va um esquem
esquemaa de paginaç
paginação
ão que permita que a. Machine crua
as páginas sejam compartilhadas sem requerer que  b. Sistema monousuário
os números das páginas sejam iguais. c. Multiprogramaçã
Multiprogramaçãoo com um número fixo de pro-
Resposta: cessos
Os dois problemas reduzem-se a um programa capaz de d. Multiprogramação com um número variável de pro-
referenciar tanto seu próprio código como seus dados sem cessos
saber o número do segmento ou da página associado ao
endereço. O MULTICS resolveu esse problema associan- e. Paginação
do quatro registradores a cada processo. Um dos regis- f. Segmentação
tradores tinha o endereço do segmento corrente do Resposta:
programa, outro tinha o endereço base da pilha, outro ti- a. Não é necessário
necessário proteção; posicione a chave
chave do sis-
nha o endereço base dos dados globais, e assim por dian- tema em 0.
te. A ideia é que todas as referências tenham que ser  b. Posic
Posicione
ione a chave do sistem
sistemaa em 0 quand
quandoo em modal
modali-
i-
indiretas, por intermédio de um registrador que mapeie dade de supervisor
supervisor..
para o segmento corrente ou o número da página. Alte-
rando esses registradores, o mesmo código poderá ser c. Os tamanhos das regiões devem ser fixados em incre-
executado por processos diferentes sem a mesma página mentos de 2k bytes; aloque a chave com blocos de
ou os mesmos números de segmento. memória.
8.8 No IBM/370, a proteção à memória é fornecida por inter- d. O mesmo anteri
anterior.
or.
médio do uso de chaves. Uma chave é um valor de 4 bits. e. Os tamanhos dos quadros devem ser em incrementos
Cada bloco de memória de 2 K tem uma chave (a chave de 2k bytes; aloque a chave com páginas.
de armazenamento) associada a ele. A CPU também tem f. Os tamanhos dos segmentos devem ser em incremen-
uma chave (a chave de proteção) associada a ela. Uma tos de 2k bytes; aloque a chave com segmentos.
operação de armazenamento só é permitida quando as
9
CAPÍTULO

Memória Virtual 
Exercícios Práticos  700 – D00
9.1 Sob que circunstâncias ocorrem erros de página? Descre-  0FF – EFF
va as ações executadas pelo sistema operacional quando 9.4 Considere os algoritmos de substituição de páginas a se-
ocorre um erro de página. guir. Classifique
Classifique esses algoritmos em uma escala de cinco
Resposta: pontos, de “ruim” a “perfeito”, de acordo com sua taxa
Um erro de página ocorre quando tem lugar um acesso a de erros de página. Separe os algoritmos afetados pela
uma página que não foi levada à memória.
memóri a. O sistema ope- anomalia de Belady daqueles que não o são.
racional verifica o acesso à memória abortando o progra- a. Substituição LRU
ma se o acesso for inválido. Se o acesso for válido, é
alocado um quadro livre e solicitado I/O para ler a pági-  b. Substituição FIFO
na necessária para
par a o quadro livre. Após o término do I/O, c. Substituição ótima
a tabela de processos e a tabela de páginas são atualiza- d. Substituição da segunda chance
das e a instrução é reiniciada. Resposta:
9.2 Suponha que você tenha uma sequência de referências de
páginas para um processo com m quadros (todos inicial- Sofre da anomalia
mente vazios). A sequência de referências de páginas tem Classificação Algoritmo de Belady
tamanho p; n números de páginas distintas ocorrem nela.
Responda a essas perguntas para qualquer algoritmo de 1 Ótimo Não
substituição de páginas: 2 LRU Não
a. O que é um limite inferior para o número de erros 3 Segunda chance S im
de página? 4 FIFO S im
 b. O que é um limite superior para o número de erros
de página? 9.5 Discuta o suporte de hardware requerido pelo suporte à
Resposta: paginação por demanda.
a. n Resposta:
Para cada operação de acesso à memória, a tabela de pá-
 b.  p ginas precisa ser consultada para verificar se a página
9.3 Considere a tabela de páginas mostrada na Figura 9.30 correspondente é residente ou não, e se o programa tem
para um sistema com endereços virtuais e físicos de 12 privilégios de leitura ou gravação para acessar a página.
 bits e páginas de 256 bytes. Na lista de quadros de pági- Essas verificações têm de ser executadas em hardware.
nas livres temos D, E e F (isto é, D é a cabeça da lista, E é Um TLB poderia servir como cache e melhorar o desem-
o segundo, e F é o último). penho da operação de pesquisa.
Converta os endereços virtuais, a seguir, nos endereços 9.6 Um sistema operacional suporta uma memória virtual
físicos equivalentes em hexadecimais. Todos os números paginada utilizando um processador central com um ci-
usam o formato hexadecimal. (Um travessão para um qua- clo de 1 microssegundo. Tem um custo adicional de 1 mi-
dro de página indica que a página não está na memória.) crossegundo para acessar uma página que não seja a
 9EF página corrente. As páginas têm 1000 palavras, e o dis-
 1111
11 positivo de paginação é um tambor que gira a 3000 rota-
 700 ções por minuto transferindo 1 milhão de palavras por
segundo. As seguintes medidas estatísticas foram obtidas
 0FF do sistema:
Resposta:
 9EF – 0EF
 1% de todas as instruções executadas acessaram uma
página diferente da página corrente.
 111 – 211

16
Memória Virtual 17

 Das instruções que acessaram outra página, 8 0% aces- 9.9 Suponha que você queira utilizar um algoritmo de pagi-
saram uma página que já estava em memória. nação que exija um bit de referência (como a substituição
 Quando uma nova página era necessária, a página subs- da segunda chance ou o modelo do conjunto de trabalho),
tituída tinha sido modificada 50% do tempo. mas o hardware não forneça um. Esquematize como vo-
cê poderia simular um bit de referência, mesmo que esse
Calcule o tempo de instrução efetivo nesse sistema, su-  bit não
não seja fornecido
fornecido pelo hardware; ou explique por que
pondo que o sistema esteja executando apenas um pro- não é possível fazer isso. Se for possível, calcule qual se-
cesso e que o processador fique ocioso durante as ria o custo.
transferências do tambor
tambor.. Resposta:
Resposta: Você pode utilizar o bit válido/inválido suportado em
hardware para simular o bit de referência. Posicione
Posicione ini-
tempo de acesso efetivo  0,99 × (1 s  0,008  (2 s) cialmente o bit como inválido. Na primeira referência, é
 0,002  (10.000 s  1.000 s) gerada uma exceção para o sistema operacional. O siste-
+ 0,001  (10.000 s  1.000 s) ma operacional posicionará um bit de software como 1 e
 (0,99  0,016  22,0  11,0) s reposicionará o bit válido/inválido como válido.
 34,0 s 9.10 Você imaginou um novo algoritmo de substituição de pági-
9.7 Considere o array bidimensional A: nas que você acha que pode ser ótimo. Em alguns casos
int A[] [] = new int [100] [100] ; de teste distorcidos, ocorre a anomalia de Belady
Belady.. O novo
em que A[0] [0]  está na locação 200 em um sistema de algoritmo é ótimo? Explique sua resposta.
memória paginada com páginas de tamanho 200. Um pe- Resposta:
queno processo que manipula a matriz reside na página Não. Um algoritmo ótimo não sofreria da anomalia de
0 (locações 0 a 199). Assim, toda busca de instrução ocor- Belady porque — por definição — um algoritmo ótimo
rerá a partir da página 0. substitui a página que não será utilizada pelo tempo mais
Para três quadros de páginas, quantos erros de página longo. A anomalia de Belady ocorre quando um algorit-
serão gerados pelos seguintes loops de inicialização do mo de substituição de páginas expulsa uma página que
array, utilizando a substituição LRU e supondo
s upondo que o qua- será necessária em futuro imediato. Um algoritmo ótimo
dro de páginas 1 contenha o processo, e os outros dois não teria selecionado essa página.
estejam inicialmente vazios? 9.11 A segmentação é semelhante à paginação, mas utiliza “pá-
“pá -
a. for (int j = 0; j < 100; j++) ginas” de tamanho variável. Defina dois algoritmos de
for (int i = 0; i< 100; i++)
substituição de segmentos baseados nos esquemas de
A[i] [j] = 0;
substituição de páginas FIFO e LRU. Lembre-se de que,
 b. for (int i = 0; i< 100; i++) como os segmentos não são do mesmo tamanho, o seg-
for (int j = 0; j < 100; j++)
mento escolhido para ser substituído pode não ser gran-
A[i] [j] = 0;
de o bastante para deixar locações consecutivas suficientes
Resposta:
para o segmento requerido. Considere estratégias para
a. 5.000 sistemas em que os segmentos não possam ser relocados
e estratégias para sistemas nos quais isso possa ocorrer.
 b. 50 Resposta:
9.8 Considere a seguinte sequência de referências de pági- a.  FIFO. Encontre o primeiro segmento grande o sufi-
nas: ciente para acomodar o segmento que entra. Se a re-
1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6. locação não for possível e nenhum segmento for
suficientemente grande, selecione uma combinação
Quantos erros de página ocorreriam para os algoritmos de segmentos cujas memórias sejam contíguas, que
de substituição a seguir, considerando um, dois, três, qua- sejam “os mais próximos ao primeiro da lista” e que
tro, cinco, seis ou sete quadros? Lembre-se de que todos possam acomodar o novo segmento. Se a relocação
os quadros estão inicialmente vazios, de modo que a pri- for possível, reorganize a memória de modo que os
meira página de cada um implicará um erro de página. primeiros N segmentos suficientemente grandes pa-
 Substituição LRU ra o segmento que entra fiquem contíguos na memó-
 Substituição FIFO ria. Adicione qualquer espaço restante à lista de
espaços livres em ambos os casos.
 Substituição ótima
 b. LRU. Selecione o segmento que não tenha sido uti-
Resposta: lizado pelo período de tempo mais longo e que seja
grande o suficiente, adicionando qualquer espaço
Número de quadros LRU FIFO Ótimo restante à lista de espaços livres. Se nenhum segmen-
to for suficientemente grande, selecione uma combi-
1 20 20 20 nação dos segmentos “mais antigos” que estejam
2 18 18 15 contíguos na memória (se a relocação não estiver dis-
3 15 16 11 ponível) e que sejam suficientemente grandes. Se a
4 10 14 8 relocação estiver disponível, reorganize os N segmen-
tos mais antigos para que fiquem contíguos na me-
5 8 10 7 mória e substitua-os pelo novo segmento.
6 7 10 7 9.12 Considere um sistema de computação paginado por de-
7 7 7 7 manda em que o grau de multiprogramação esteja cor-
18 Capítulo 9

rentemente fixado em quatro. O sistema foi recentemente 9.13 Temos um sistema operacional para uma máquina que
medido para determinar a utilização da CPU e do disco de utiliza registradores base e limite, mas modificamos a má-
paginação. Os resultados são uma das alternativas apre- quina para fornecer uma tabela de páginas. As tabelas de
sentadas a seguir. O que está ocorrendo em cada caso? É páginas podem ser configuradas para simular registra-
possível aumentar o grau de multiprogramação para au- dores base e limite? Como podemos fazer
faze r isso, ou por que
mentar a utilização da CPU? A paginação está ajudando? não podemos fazê-lo?
a. Utilização da CPU, 13%; utilização do disco, 97% Resposta:
 b. Utilização da CPU, 87%; utilização do disco,
disco, 3% A tabela de páginas pode ser organizada para simular re-
gistradores base e limite, desde que a memória seja alo-
c. Utilização da CPU, 13%; utilização do disco, 3% cada em segmentos de tamanho fixo. Dessa forma, a base
Resposta: de um segmento pode dar entrada na tabela de páginas
a. Está ocorrendo atividade improdutiva. e o bit válido/inválido utilizado para indicar aquela par-
 b. A utilização da CPU está suficientemente alta para te do segmento como residente em memória. Haverá al-
deixar as coisas como estão e aumentar o grau de gum problema com fragmentação interna.
multiprogramação.
c. Aumentar o grau de multiprogramação.
Estrutura de
Armazenamento de 10
CAPÍTULO

Massa 
Exercícios Práticos Resposta:
Um sistema pode executar somente à velocidade do seu
10.1 O scheduling de disco, exceto o scheduling FCFS, é útil gargalo mais lento. Discos ou controlador
controladores
es de discos re-
em um ambiente monousuário? Explique sua resposta. presentam, frequentemente, o gargalo nos sistemas mo-
Resposta: dernos, já que seus desempenhos individuais não podem
Em um ambiente monousuário, a fila de I/O usualmente sustentar o da CPU e do bus do sistema. Com o balancea-
está vazia. As solicitações geralmente chegam de um único mento do I/O entre discos e controlador
controladores,
es, nem um dis-
processo para um bloco ou para uma sequência de blocos co individual nem um controlador estarão no controle
consecutivos. Nesses casos, o FCFS é um método econômi- total; portanto, o gargalo será evitado.
co para o scheduling de disco. Mas o LOOK é quase tão fá-
10.5 Quais são as vantagens e desvantagens envolvidas na
cil de programar e oferecerá desempenho muito melhor
quando múltiplos processos estiverem executando I/O releitura de páginas de código a partir do sistema de ar-
concorrente, tal como quando um navegador web recupera quivos versus a utilização do espaço de permuta para ar-
dados em background enquanto o sistema operacional está mazená-las?
Resposta:
paginando e outra aplicação está ativa em foreground.
Se páginas de código forem armazenadas em espaço de
10.2 Explique por que o scheduling SSTF tende a favorecer os permuta, elas poderão ser transferidas mais rapidamen-
cilindros do meio em vez dos cilindros mais internos e te para a memória principal (porque a alocação do espa-
mais externos. ço de permuta é ajustada para obter desempenho mais
Resposta: rápido do que a alocação geral do sistema de arquivos).
O centro do disco é a locação com a menor distância mé- A utilização do espaço de permuta pode requerer tempo
dia para todas as outras trilhas. Assim, o cabeçote do dis- de ativação se as páginas forem nele copiadas na invoca-
co tende a se mover para longe das margens do disco. Eis ção do processo, em vez de apenas serem expulsas para
aqui outra maneira de pensar sobre isso. A locação cor- o espaço de permuta sob demanda. Além disso, deve ser
rente do cabeçote divide os cilindros em dois grupos. Se alocado mais espaço de permuta se ele for utilizado tan-
o cabeçote não estiver no centro do disco e chegar uma to para páginas de código quanto de dados.
nova solicitação, essa nova solicitação mais provavelmen- 10.6 Existe alguma maneira de implementar um armazena-
te estará no grupo que inclui o centro do disco; assim, é mento realmente estável? Explique sua resposta.
mais provável que o cabeçote mover-se-á nessa direção. Resposta:
10.3 Por que a latência rotacional geralmente não é levada em O armazenamento realmente estável nunca perderia da-
consideração no scheduling de disco? Como você modi- dos. A técnica fundamental para o armazenamento está-
ficaria o SSTF,
SSTF, o SCAN e o C-SCAN para incluir a otimi- vel é manter múltiplas cópias dos dados de modo que, se
zação da latência? uma cópia for destruída, alguma outra cópia ainda estará
Resposta: disponível para uso. Mas, em qualquer esquema, podemos
A maioria dos discos não exporta suas informações de po- imaginar um desastre suficientemente grande em que
sição rotacional para o hospedeiro. Mesmo que o fizes- todas as cópias sejam destruídas.
sem, o tempo para que essa informação alcance o 10.7 Às vezes diz-se que a fita é uma mídia de a cesso sequen-
scheduler estaria sujeito a imprecisões, e o tempo consu- cial, enquanto um disco magnético é uma mídia de aces-
mido pelo scheduler é variável; assim, a informação da so aleatório. Na verdade, a adequação de um dispositivo
posição rotacional se tornaria incorreta. Além disso, as de armazenamento ao acesso aleatório depende do tama-
solicitações ao disco são usualmente feitas em termos de nho da transferência. O termo taxa de escoamento da trans-
números de blocos lógicos, e o mapeamento entre blocos  ferência denota a taxa para uma transferência de dados
lógicos e locações físicas é muito complexo. que está em curso, excluindo o efeito da latência de acesso.
10.4 Por que é importante equilibrar o I/O do sistema de ar- Por outro lado, a taxa efetiva de transferência é a relação en-
quivos entre os discos e os controladores de um sistema tre o total de bytes e o total de segundos, incluindo o tem-
em ambiente multitarefa? po de overhead por fatores como o tempo de latência.
19
20 Capítulo 10

Suponha que, em um computador


computador,, o cache de nível 2  b. Utilização
Utiliz ação do disposit
d ispositivo
ivo para 512 B  33,12 KB/
tenha uma latência de acesso de 8 nanossegundos e uma s / 5 MB/s  0,0064  0,64.
taxa de escoamento da transferência de 800 megabytes Para 8 KB  9,4%.
por segundo, a memória principal tenha uma latência de Para 1 MB  93%.
acesso de 60 nanossegundos e uma taxa de escoamento Para 16 MB  99,6%.
da transferência de 80 megabytes por segundo, o disco c. Calcule 0,25 = TET/TDET, para o volume de trans-
magnético tenha uma latência de acesso de 15 milisse- ferência X.
gundos e uma taxa de escoamento da transferência de 5 TDET  5MB; assim, 1,25MB/s  TET.
megabytes por segundo, e um drive de fita tenha uma 1,25MB/s * ((X/5)  0,015)  X.
latência de acesso de 60 segundos e uma taxa de escoa- 0,25X  0,01875  X.
mento da transferência de 2 megabytes por segundo. X  0,025MB.
a. O acesso aleatório faz com com que a taxa efetiva de d. Um disco
disco é um dispositivo de acesso
acesso aleatório para
transferênciaa de um dispositivo diminua porque não
transferênci transferências maiores do que K bytes (em que K >
são transferidos quaisquer dados durante o tempo tamanho do bloco do disco), e é um dispositivo de
de acesso. Para o disco descrito, qual é a taxa efetiva acesso sequencial para transferências menores.
de transferência se um acesso médio for seguido por e. Calcule o volume de transferência mínimo para a
uma transferência de escoamento de (1) 512 bytes, utilização aceitável da memória do cache.
(2) 8 quilobytes, (3) 1 megabyte e (4) 16 megabytes? TDET = 800 MB, TET  200, latência  8 * 109.
 b. O nível de utilização de um dispositivo é a razão en- 200 (XMB/800  8  10−9)  XMB.
tre a taxa efetiva de transferência e a taxa de escoa- 0,25XMB  1600 * 109  XMB.
mento da transferência. Calcule o nível de utilização X  2,24 bytes.
do drive de disco para cada um dos quatro volumes Calcule para a memória:
de transferência fornecidos no item a. TET  80 MB, TTE  20, L  60 * 109.
c. Suponha que um nível de utilização de 25 por cento 20 (XMB/80  60 * 109)  XMB.
(ou maior) seja considerado aceitável. Usando os nú- 0,25XMB  1200 * 109  XMB.
meros de desempenho fornecidos, calcule o menor X  1,68 bytes.
tamanho de transferência de disco que ofereça um Calcule para fita:
nível de utilização aceitável. TDET  2 MB, TET  0,5 L  60s.
0,5 (XMB/2  60)  XMB.
d. Complete a frase a seguir: um disco
disco é um dispositivo 0,25XMB  30  XMB.
de acesso aleatório para transferências maiores do X  40MB.
que _______ bytes e um dispositivo
disp ositivo de acesso sequen- f. Depende de como ela está sendo utilizada. Suponha
cial para transferências menores. que estamos utilizando a fita para restaurar um ba-
e. Calcule os tamanhos mínimos de transferência que ckup. Nessa instância, uma fita atua como um dis-
ofereçam um nível de utilização aceitável para o ca- positivo de acesso sequencial em que estamos lendo
che, a memória e a fita. sequencialmente o conteúdo da fita. Como outro
f. Quando uma fita é um dispositivo de acesso aleató- exemplo, suponha que estamos utilizando a fita pa-
rio e quando é um dispositivo de acesso sequen- ra acessar uma variedade de registros nela armaze-
cial? nados. Nessa instância, o acesso à fita é arbitrário e,
Resposta: portanto, considerado aleatório.
a. Para 512 bytes, a taxa efetiva de transferência (TET) 10.8 Uma organização RAID nível 1 poderia obter um desem-
é calculada da forma a seguir
seguir.. penho melhor para solicitações de leitura do que uma
TET  volume de transferência/tempo de transferên- organização RAID nível 0 (com distribuição de dados sem
cia. redundância)? Em caso afirmativo, como?
Se X é o volume de transferência, então o tempo de Resposta:
transferência será de ((X / TDET (taxa de escoamento Sim, uma organização RAID nível 1 poderia obter um de-
da transferência) ) latência). sempenho melhor para solicitações de leitura. Quando
O tempo de transferência é de 15ms  (512B/5MB uma operação de leitura é executada, um sistema RAID
por segundo)  15,0097ms. nível 1 pode decidir qual das duas cópias do bloco deve
A taxa efetiva de transferência é, portanto, ser acessada para atender a solicitação. Essa opção pode-
512B/15,0097ms  33,12 KB/s. ria ser baseada na locação corrente do cabeçote do disco
TET para 8 KB  0,47 MB/s. e, portanto, resultar em otimizações no desempenho pe-
TET para 1 MB  4,65 MB/s. la seleção de um cabeçote mais próximo dos dados dese-
TET para 16 MB  4,98 MB/s.  jados.
Interface do Sistema 11
CAPÍTULO

de Arquivos 
Exercícios Práticos Resposta:
Uma vantagem de ter o suporte do sistema para diferen-
11.1 Alguns sistemas apagam automaticamente todos os ar- tes estruturas de arquivo é que o suporte vem do sistema;
quivos de usuário quando o usuário se desconecta ou um não são requeridas aplicações individuais para fornecer
 job termin
termina,
a, a menos que o usuário
usuário solici
solicite
te explicita
explicitamente
mente o suporte. Além disso, se o sistema oferecer suporte para
que eles sejam mantidos; outros sistemas mantêm todos diferentes estruturas de arquivo, ele poderá implementar
os arquivos, a não ser que o usuário os apague explicita- o suporte presumivelmente de forma mais eficiente do
mente. Discuta os méritos relativos de cada abordagem. que uma aplicação.
Resposta: A desvantagem de o sistema fornecer suporte para ti-
O apagamento de todos os arquivos não salvos especifi- pos definidos de arquivos é que isso aumenta o tamanho
camente pelo usuário tem a vantagem de minimizar o es- do sistema. Além disso, aplicações que podem requerer
paço de arquivo necessário para cada usuário pelo não diferentes tipos de arquivo, além do que é fornecido pelo
salvamento de arquivos indesejados ou desnecessários. sistema, podem não ser capazes de serem executadas em
O salvamento de todos os arquivos, a menos que sejam tais sistemas.
especificamente apagados, é mais seguro para o usuário Uma estratégia alternativa é o sistema operacional não
no sentido de que não será possível perder arquivos inad- definir suporte para estruturas de arquivos e tratar t odos
vertidamente pelo esquecimento de salvá-los. os arquivos como uma série de bytes. Essa é a abordagem
11.2 Por que alguns sistemas controlam o tipo de um arquivo escolhida pelos sistemas UNIX. A vantagem dessa aborda-
enquanto outros delegam essa função ao usuário, e outros gem é que ela simplifica o suporte do sistema operacional
simplesmente não implementam múltiplos tipos de arqui- a sistemas de arquivos, já que o sistema não precisa mais
vo? Qual sistema é “melhor”? fornecer a estrutura para diferentes tipos de arquivo. Além
Resposta: disso, ela permite que as aplicações definam estruturas
Alguns sistemas permitem diferentes operações de arqui- de arquivos, aliviando assim a situação em que um siste-
vo baseadas no tipo do arquivo (por exemplo, um arquivo ma pode não fornecer uma definição de arquivo requeri-
ascii pode ser lido como uma cadeia, enquanto um arqui- da por uma aplicação específica.
vo de banco de dados pode ser lido por meio de um ín- 11.4 Você poderia simular uma estrutura de diretórios multi-
dice para um bloco). Outros sistemas deixam tal nível usando uma estrutura de diretórios em um único
interpretação dos dados de um arquivo para o processo nível na qual nomes arbitrariamente longos possam ser
e não fornecem ajuda no acesso aos dados. O método que utilizados? Se sua resposta for sim, explique como pode
é “melhor” depende das necessidades dos processos no fazer isso e compare esse esquema com o esquema do di-
sistema e das demandas que os usuários impõem ao sis- retório multinível. Se sua resposta for não, explique o que
tema operacional. Se um sistema executa principalmente impede o sucesso da sua simulação. Como sua resposta
aplicações de bancos de dados, pode ser mais eficiente mudaria se os nomes de arquivos fossem limitados a se-
para o sistema operacional implementar um arquivo do te caracteres?
tipo banco de dados e fornecer operações, em vez de fa- Resposta:
zer cada programa implementar a mesma coisa (possi- Se nomes arbitrariamente longos puderem ser utilizados,
velmente de diferentes maneiras). Para sistemas de uso então será possível simular uma estrutura de diretórios
geral, pode ser melhor implementar somente tipos bási- multinível. Isso pode ser feito, por exemplo, utilizando-
cos de arquivos para manter o tamanho do sistema ope- se o caractere “.” para indicar o fim de um subdiretório.
racional menor e permitir o máximo de liberdade aos Assim, por exemplo, o nome  jim.java . A1
 A1 especifica que
processos no sistema.  A1 é um arquivo no subdiretório  java que, por sua vez,
11.3 De modo semelhante, alguns sistemas suportam muitos está no diretório raiz jim.
tipos de estruturas para os dados de um arquivo enquan- Se os nomes de arquivo forem limitados a sete caracte-
to outros suportam simplesmente uma cadeia de bytes. res, então o esquema acima não poderia ser utilizado e,
Quais são as vantagens e desvantagens de cada aborda- assim, em geral, a resposta é não. A próxima melhor abor-
a bor-
gem? dagem nessa situação seria utilizar um arquivo específico
21
22 Capítulo 11

como tabela de símbolos (diretório) para mapear nomes  b. Você poderia sugerir outro esquema de proteção
proteção que
arbitrariamente longos (tais como jim.java.A1) em nomes possa ser utilizado de modo mais eficaz para esse
arbitrários mais curtos (tais como XX00743), que são, en- propósito do que o esquema fornecido pelo UNIX?
tão, utilizados para acesso real ao arquivo. Resposta:
11.5 Explique o objetivo das operações open() e close() . a. Existem dois métodos para alcançar isso:
Resposta:
O objetivo das operações open() e close()é: i. Criar uma lista de controle
controle de acesso
acesso com os no-
mes de todos os 4.990 usuários.
 A operação open() informa ao sistema que o arquivo ii. Colocar esses
esses 4.990 usuários
usuários em um grupo
grupo e definir
definir
nomeado está para se tornar ativo. o acesso ao grupo de forma conveniente. Esse es-
 A operação close()informa ao sistema que o arqui- quema nem sempre pode ser implementado, já que
vo nomeado não está mais em uso ativo pelo usuário grupos de usuários são restritos pelo sistema.
que emitiu a operação de fechamento.  b. O acesso
aces so universal
uni versal a arquivos
arqui vos aplica-se
ap lica-se a todos os
usuários, a menos que seus nomes apareçam na lista
11.6 Em alguns sistemas, um subdiretório pode ser lido e gra- de controle de acesso com diferentes permissões de
vado por um usuário autorizado, do mesmo modo que acesso. Com esse esquema, você simplesmente colo-
os arquivos comuns. ca os nomes dos 10 usuários remanescentes na lista
a. Descreva os problemas de proteção que podem sur- de controle de acesso, mas sem acessos privilegiados
gir. permitidos.
 b. Sugira um esquema para lidar com cada um desses 11.8 Pesquisadores têm sugerido que, em vez de termos uma
problemas de proteção. lista de acesso associada a cada arquivo (especificando
Resposta: quais usuários podem acessar o arquivo e como), pode-
a. Uma parte da informação mantida em uma entrada ríamos ter uma lista de controle de usuários associada a ca-
de diretório é a locação do arquivo. Se um usuário da usuário (especificando quais arquivos um usuário
puder modificar essa locação, então ele poderá aces- pode acessar e como). Discuta os méritos relativos desses
sar outros arquivos derrotando o esquema de prote- dois esquemas.
ção de acesso. Resposta:

 b. Não permitir que o usuário


us uário grave diretamen
diretamentete no
no  Lista de controle de acesso . Como as informações de con-
subdiretório. Em vez disso, oferecer operações do trole de acesso são concentradas em um único local, é
sistema para fazer isso. mais fácil alterá-las, e isso requer menos espaço.
11.7 Considere um sistema que suporte 5.000 usuários. Supo-  Lista de controle de usuários . Esse recurso impõe menos
nha que você queira permitir acesso a um arquivo a 4.990 overhead ao abrir um arquivo.
desses usuários.
a. Como você especificaria esse
esse esquema
esquema de proteção
no UNIX?
Implementação do 12
CAPÍTULO

Sistema de Arquivos 
Exercícios Práticos Resposta:
Em caso de queda do sistema (falha de memória), a lista de
12.1 Considere um arquivo contendo correntemente 100 blocos. espaços livres não seria perdida, como seria o caso se o ma-
Suponha que o bloco de controle do arquivo (e o bloco de pa de bits tivesse sido armazenado na memória principal.
índices, no caso da alocação indexada) já esteja em memó-
12.4 Considere um sistema que suporte as estratégias
estratég ias de aloca-
ria. Calcule quantas operações de I/O de disco são neces-
sárias para as estratégias de alocação contígua, encadeada ção contígua, encadeada e indexada. Que critérios devem
e indexada (em nível único) se as
a s condições a seguir forem ser levados em conta na decisão de qual estratégia é a me-
mantidas para um bloco. No caso da alocação contígua, lhor para um arquivo em particular?
Resposta:
considere que não exista espaço para crescimento no
início, mas exista espaço no final. Considere também que  Contígua — se o arquivo é usualmente acessado se-
as informações do bloco a ser adicionado estão armaze- quencialmente e é relativamente pequeno.
nadas em memória.  Encadeada — se o arquivo é grande e usualmente aces-
a. O bloco é adicionado no início. sado sequencialmente.
 b. O bloco é adicionado
adicionado no meio.  Indexada — se o arquivo é grande e usualmente aces-
c. O bloco é adicionado no final. sado aleatoriamente.
d. O bloco é removido do início.
12.5 Um problema com a alocação contígua é que o usuário de-
e. O bloco é removido do meio. ve pré-alocar espaço suficiente para cada arquivo. Se o ar-
f. O bloco é removido do final. quivo crescer a ponto de ficar maior do que o espaço a ele
Resposta: alocado, ações especiais devem ser levadas a efeito. Uma
Os resultados são: solução para esse problema é definir uma estrutura de ar-
quivo consistindo em uma área contígua inicial (de um ta-
manho especificado). Se essa área for preenchida, o sistema
Contígua Encadeada Indexada operacional definirá automaticamente uma área exceden-
te que será encadeada na área contígua inicial. Se a área
a. 201 1 1 excedente for preenchida, outra área excedente será aloca-
 b. 101 52 1 da. Compare essa implementação de um arquivo com as
c. 1 3 1 implementações contígua padrão e encadeada padrão.
d. 198 1 0 Resposta:
e. 98 52 0 Esse método requer mais overhead do que a alocação con-
tígua padrão e menos overhead do que a alocação enca-
f. 0 100 0 deada padrão.
12.6 Como os caches ajudam a melhorar o desempenho? Por
12.2 Que problemas poderiam ocorrer se um sistema permitis- que os sistemas não utilizam mais caches ou caches maio-
se que um sistema de arquivos
a rquivos fosse montado simultane- res, se eles são tão úteis?
amente em mais de uma locação? Resposta:
Resposta: Os caches permitem que componentes de velocidades dife-
Existiriam múltiplos caminhos para o mesmo arquivo, o rentes se comuniquem mais eficientemente armazenando,
que poderia confundir os usuários ou encorajar erros (a temporariamente, dados de um dispositivo mais lento em
exclusão de um arquivo com um caminho exclui o arqui- um dispositivo mais rápido (o cache). Os caches são, qua-
vo em todos os outros caminhos). se por definição, mais caros do que o dispositivo para o
12.3 Por que o mapa de bits para alocação de arquivos deve qual eles estão armazenando, e, assim, o aumento do nú-
ser mantido em memória de massa, e não na memória mero ou do tamanho dos caches aumenta o custo do sis-
principal? tema.

23
24 Capítulo 12

12.7 Por que é vantajoso para o usuário que um sistema opera-


ope ra- Resposta:
cional aloque dinamicamente suas tabelas internas? Que O VFS introduz uma camada de ações indiretas na imple-
desvantagens isso traz para o sistema operacional? mentação do sistema de arquivos. De muitas formas, é
Resposta: semelhante às técnicas de programação orientada a obje-
Tabelas dinâmicas permitem maior flexibilidade no cres- tos. As chamadas de sistema podem ser feitas generica-
cimento de uso do sistema — tabelas nunca são excedi- mente (independentemente do tipo do sistema de
das, evitando limites artificiais ao uso. Infelizmente, as arquivos). Cada tipo de sistema de arquivos fornece suas
estruturas e o código do kernel são mais complicad
complicados;
os; chamadas de sistema e estruturas de dados
da dos à camada VFS.
portanto, existe maior potencial para bugs. O uso de um Uma chamada de sistema é traduzida para as funções
recurso pode comprometer mais recursos do sistema (pe- próprias específicas do sistema de arquivos-alvo na ca-
lo crescimento, para acomodar as solicitações) do que com mada VFS. O programa chamador não tem código espe-
as tabelas estáticas. cífico de sistema de arquivos, e as camadas superiores
das estruturas das chamadas de sistema são igualmente
12.8 Explique como a camada VFS permite que um sistema independentes do sistema de arquivos. A tradução na ca-
operacional suporte facilmente múltiplos tipos de siste- mada VFS converte essas chamadas genéricas em opera-
mas de arquivos. ções específicas do sistema de arquivos.
13
CAPÍTULO

Sistemas de I/O 
Exercícios Práticos com inquirição para gerenciar um processador front-end,
tal como um concentrador de terminais?
13.1 Cite três vantagens de alocar funcionalidade
funciona lidade a um contro- Resposta:
lador de dispositivo em vez de alocá-la ao kernel. Cite O I/O com inquirição pode ser mais eficiente do que o
três desvantagens. I/O dirigido por interrupções. Esse é o caso, quando o
Resposta: I/O é frequente e de curta duração. Mesmo que uma úni-
Três vantagens: ca porta serial execute I/O com relativa infrequência, po-
a. Há menos probabilidade de os bugs causarem uma dendo, assim, utilizar interrupções, uma coleção de
queda do sistema operacional. portas seriais, como as de um concentrador de terminais,
 b. O desempenho pode ser aumentado pela utilização pode produzir muitas operações de I/O curtas, e a inter-
de hardware dedicado e algoritmos incluídos no có- rupção de cada uma dessas operações poderia gerar uma
digo fonte. carga pesada sobre o sistema. Um bem cadenciado loop
c. O kernel é simplificado pela movimentação dos al- de inquirições poderia aliviar essa carga sem desperdiçar
goritmos para fora dele. muitos recursos por meio da execução do loop sem ne-
cessidade de I/O.
Três desvantagens:
a. Os bugs são mais difíceis de corrigir — é necessária 13.4 A inquirição para conclusão de um I/O pode desperdiçar
uma nova versão firmware ou um novo hardware. um grande número de ciclos de CPU se o processador rea-
 b. A melhoria dos algoritmos
algoritmos requer do mesmo modo lizar muitos loops de espera em ação antes que o I/O se
uma atualização do hardware, em vez de apenas uma complete. Mas, se o dispositivo de I/O estiver pronto pa-
atualização do kernel ou do driver de dispositivo. ra o serviço, a inquirição poderá ser muito mais eficiente
do que a captura e o despacho de uma interrupção. Des-
c. Algoritmos embutidos podem conflitar com o uso creva uma estratégia híbrida que combine inquirição, sus-
do dispositivo da aplicação, causando degradação pensão e interrupções para o serviço dos dispositivos de
de desempenho. I/O. Para cada uma dessas três estratégias (inquirição
13.2 O exemplo de aperto de mãos da Seção 13.2 utilizou 2 pura, interrupções puras e um híbrido), descreva um am-
 bits: um bit ocupado e um bit de comando pronto. É pos-  biente computacional no qual a estratégia em pauta seja
sível implementar esse aperto de mãos com apenas um mais eficiente do que as outras duas.
 bit? Se for possível, descreva o protocolo.
protocolo. Se não for, ex- Resposta:
plique por que 1 bit é insuficiente. Uma abordagem híbrida pode comutar entre inquirição
Resposta: e interrupções, dependendo do tamanho da espera da
É possível, utilizando o algoritmo a seguir. Vamos
Vamos supor operação de I/O. Por exemplo, poderíamos inquirir e exe-
que simplesmente utilizemos o bit ocupado (ou o bit de cutar o loop N vezes, e, se o dispositivo ainda estiver ocu-
comando pronto; essa resposta é a mesma, de qualquer pado em N + 1, 1 , poderíamos posicionar uma interrupção
maneira). Quando o bit está desligado, o controlador es- e dormir. Essa abordagem evitaria longos ciclos de espe-
tá ocioso. O hospedeiro grava dados de saída e posiciona ra em ação. Esse método seria melhor para tempos de
o bit para indicar que uma operação está pronta (o equi- ocupação muito longos ou muito curtos. O método seria
valente ao posicionamento do bit de comando pronto). ineficiente se o I/O se completar em N + T (em que T é
Quando o controlador tiver terminado, ele desliga o bit um número pequeno de ciclos) por causa do overhead da
ocupado. O hospedeiro inicia, então, a próxima operação. inquirição mais o posicionamento e a captura das inter-
Essa solução requer que tanto o hospedeiro quanto o con- rupções.
trolador tenham acesso de leitura e gravação para o mes- A inquirição pura é melhor com tempos de espera mui-
mo bit, o que pode complicar o sistema de circuitos e to curtos. As interrupções são melhores com longos tem-
aumentar o custo do controlador. pos de espera conhecidos.
13.3 Por que um sistema pode utilizar I/O dirigido por inter- 13.5 Como o DMA aumenta a concorrência no sistema? Como
rupções para gerenciar uma porta serial única e o I/O ele complica o projeto de hardware?
25
26 Capítulo 13

Resposta: se sistema aumentaria o desempenho total do sistema em


O DMA aumenta a concorrência no sistema ao permitir apenas 50%. A duplicação de ambos os aspectos do siste-
que a CPU execute tarefas enquanto o sistema
sist ema DMA trans- ma aumentaria o desempenho em 100%. Geralmente, é
fere dados por meio dos buses do sistema e da memória. importante remover o gargalo corrente no sistema e au-
O projeto do hardware é complicado porque o controla- mentar o desempenho global do sistema, em vez de au-
dor DMA deve ser integrado ao sistema, e o sistema deve mentar cegamente o desempenho dos componentes
permitir que o controlador DMA seja um bus mestre. O individuais do sistema.
roubo de ciclos também pode ser necessário para permi- 13.7 Diferencie um driver do STREAMS de um módulo do
tir que a CPU e o controlador DMA compartilhem o uso STREAMS.
do bus da memória. Resposta:
13.6 Por que é importante aumentar as velocidades do bus do O driver do STREAMS controla um dispositivo físico que
sistema e dos dispositivos, à medida que a velocidade da pode estar envolvido em uma operação do STREAMS. O
CPU aumenta? módulo do STREAMS modifica o fluxo de dados entre a
Resposta: cabeça (a interface do usuário) e o driver.
Considere um sistema que execute 50% de I/O e 50% de
computação. A duplicação do desempenho da CPU nes-
14
CAPÍTULO

Proteção 
Exercícios Práticos Resposta:
O conteúdo da pilha poderia ser comprometido por outro(s)
14.1 Quais são as principais diferenças entre listas de compe- processo(s) que estivesse(m) compartilhando a pilha.
tências e listas de acessos? 14.6 Considere um ambiente computacional em que um único
Resposta:
número seja associado a cada processo e a cada objeto no
Uma lista de acessos é uma lista para cada objeto que con- sistema. Suponha que um processo com o número n seja
siste em domínios, com um conjunto não vazio de direi- autorizado a acessar um objeto com o número m somen-
tos de acesso para o objeto. Uma lista de competências é te no caso de n  m. Que tipo de estrutura de proteção
uma lista de objetos e as operações permitidas sobre es- teremos?
ses objetos para cada domínio. Resposta:
14.2 Um arquivo MCP no Burroughs B7000/B6000 pode ser eti- Estrutura hierárquica.
quetado como dados sensíveis. Quando tal arquivo é apa- 14.7 Considere um ambiente computacional em que é conce-
gado, sua área de armazenamento é sobreposta por alguns dido a um processo o privilégio de acessar um objeto so-
 bits aleatório
aleatórios.
s. Para que propósit
propósitoo tal esquema
esquema seria útil?
útil? mente n vezes. Sugira um esquema para a implementação
Resposta: dessa política.
Isso poderia ser útil como medida de segurança extra, de Resposta:
modo que o conteúdo antigo da memória não possa ser Adicione um contador inteiro à competência.
acessado por outro programa, tanto intencionalmente co-
14.8 Se todos os direitos de acesso de um objeto forem excluí-
mo por acidente. Isso é especialmente útil para qualquer
informação altamente confidencial. dos, o objeto não poderá mais ser acessado. Nesse caso,
o objeto também deveria ser excluído e o espaço que ele
14.3 Em um sistema de proteção em anel, o nível 0 possui o ocupa deveria ser retornado ao sistema. Sugira uma im-
maior nível de acesso aos objetos, e o nível n (em que n > plementação eficiente desse esquema.
0) possui direitos de acesso menores. Os direitos de acesso Resposta:
de um programa em determinado nível na estrutura de Contagens de referências.
anel são considerados um conjunto de competências. Qual
14.9 Por que é difícil proteger um sistema no qual os usuários
é a relação entre as competências de um domínio no nível
 j e de um domínio no nível i para um objeto (para j  i)?
são autorizados a fazer seu próprio I/O?
Resposta:
Resposta:
Em capítulos anteriores, identificamos uma diferença en-
D j é um subconjunto de Di.
tre modalidade de kernel e de usuário em que a modali-
14.4 O sistema RC 4000, entre outros, definiu uma hierarquia dade de kernel é utilizada para realizar operações
de processos (chamada árvore de processos) de modo tal privilegiadas, tais como I/O. Uma razão para que I/O
que todos os descendentes de um processo podem rece- deva ser executado em modalidade de kernel é que o I/O
 ber recurso
recursoss (objetos)
(objetos) e direitos de acesso somente de seus requer acesso ao hardware, e o acesso apropriado ao hard-
ancestrais. Assim, um descendente não poderá jamais fa- ware é necessário para a integridade do sistema. Se per-
zer algo que seus ancestrais não possam fazer. A raiz da mitirmos que os usuários executem o seu próprio I/O,
árvore é o sistema operacional, que pode fazer qualquer não poderemos garantir a integridade do sistema.
coisa. Suponha que o conjunto de direitos de acesso seja 14.10 As listas de competências normalmente são mantidas den-
representado por uma matriz de acesso, A. A(x y  ,y) define
tro do espaço de endereçamento do usuário. Como o siste-
os direitos de acesso do processo x para o objeto y. Se x ma garante que o usuário não pode modificar o conteúdo
for um descendente de z, qual será o relacionamento en- da lista?
tre A(x y
 ,y) e A( z
 z, y
 y) para um objeto arbitrário y? Resposta:
Resposta: Uma lista de competências é considerada um “objeto pro-
 A(x, y
 y) é um subconjunto de A( z , y).
 z y tegido” e é acessada apenas indiretamente pelo usuário.
14.5 Que problemas de proteção podem surgir se uma pilha com- O sistema operacional garante que o usuário não possa
partilhada for utilizada para passagem de parâmetros? acessar a lista de competências diretamente.
27
15
CAPÍTULO

Segurança 
Não existem Exercícios Práticos.

28
16
CAPÍTULO

Máquinas
Máquinas Virtuais 
Vir tuais 
Não existem Exercícios Práticos.

29
17
CAPÍTULO

Sistemass Distr
Sistema Distribuí
ibuídos 
dos 
Exercícios Práticos da comutação por circuitos é que ela requer uma mensa-
gem de ida e volta para posicionar as reservas e também
17.1 Por que seria uma má ideia que os gateways passassem pode superprovisionar recursos, resultando na subutili-
pacotes de disseminação entre redes? Que vantagens isso zação desses recursos. A comutação por circuitos é uma
traria? estratégia viável para aplicações que tenham demandas
Resposta: constantes, sem levar em conta os recursos da rede, e que
Todas as difusões poderiam ser propagadas para todas precisariam dos recursos por longo período de tempo,
as redes, causando muito tráfego na rede. Se o tráfego de amortizando, dessa forma, os overheads iniciais.
difusão for limitado aos dados importantes (e a muito 17.4 Quais são dois grandes problemas que os projetistas de-
pouco destes), então a propagação da difusão dispensaria vem resolver para implementar um sistema de rede
os gateways de terem que executar software especial pa- transparente?
ra esperar por esses dados (tais como informações de rotea- Resposta:
mento da rede) e difundi-los novamente. Um desses problemas é fazer todos os processadores e
17.2 Discuta as vantagens e desvantagens de armazenar em dispositivos de armazenamento parecerem transparentes
cache traduções de nomes para computadores localizados através da rede. Em outras palavras, o sistema distribuí-
em domínios remotos. do deve ter a aparência de um sistema centralizado para
Resposta: os usuários. O sistema de arquivos Andrew
Andrew e o NFS for-
Existe uma vantagem de desempenho no armazenamen- necem esse recurso: o sistema de arquivos distribuído
to em cache das traduções de nomes para computadores aparece para os usuários como um único sistema de ar-
localizados em domínios remotos: a resolução repetida quivos, mas, na realidade, ele pode ser distribuído por
do mesmo nome, a partir de diferentes computadores lo- uma rede.
calizados no domínio local, pode ser executada localmen- Outro problema refere-se à mobilidade dos usuários.
te sem requerer uma operação remota de busca do nome. Queremos permitir que os usuários se conectem ao “siste-
A desvantagem é que poderiam existir inconsistências ma” e não a uma máquina específica (embora, na verda-
nas traduções de nomes quando forem feitas atualizações de, eles possam estar se conectando a uma máquina
no mapeamento
mapeament o de nomes em endereços IP. IP. Esses proble- específica em algum lugar do sistema distribuído).
mas de consistência podem ser resolvidos invalidando as 17.5 A migração de processos dentro de uma rede heterogênea
traduções, o que exigiria que o estado fosse gerenciado é normalmente impossível, dadas as diferenças das arqui-
sem levar em conta quais computadores estariam armaze- teturas e dos sistemas operacionais. Descreva um método
nando em cache determinada tradução e, também, de- para a migração de processos por meio de diferentes ar-
mandaria várias mensagens de invalidação. Também quiteturas executando:
poderiam ser utilizados prazos de arrendamento, por
meio dos quais a entidade armazenada em cache invali- a. O mesmo sistema operacional
daria uma tradução após determinado período de tempo.  b. Sistemas operacionais diferentes
diferentes
A última abordagem requer menos estados e não requer Resposta:
mensagens de invalidação, mas pode sofrer de inconsis- No mesmo sistema operacional, a migração de processos
tências temporárias. é relativamente direta, já que o estado do processo preci-
17.3 Quais são as vantagens e desvantagens
desvantagen s do uso da comuta- sa migrar de um processador para outro. Isso envolve a
ção por circuitos? Para que tipos de aplicações a comutação movimentação do espaço de endereçamento, do estado
por circuitos é uma estratégia viável? dos registradores da CPU, e dos arquivos abertos do sis-
Resposta: tema fonte para o sistema de destino. Entretanto, é im-
A comutação por circuitos garante que os recursos da re- portante que cópias idênticas do sistema operacional
de requeridos para uma transferência sejam reservados estejam em execução nos sistemas diferentes para garan-
antes que a transmissão tenha lugar. Isso garante que os tir a compatibilidade. Se os sistemas operacionais forem
pacotes não seriam abandonados e sua transmissão satis- os mesmos, mas talvez estejam em execução versões di-
faria os requisitos de qualidade de serviço. A desvantagem ferentes nos sistemas separados,
separ ados, então a migração de pro-
30
Sistemas Distribuídos 31

cessos deve estar segura de seguir roteiros de programação sistema. Essas informações podem ser utilizadas para a
que sejam consistentes entre as diferentes versões do sis- seleção do alvo na migração de processos. Outro exemplo
tema operacional. é um programa que determina se um sítiosíti o remoto está em
As applets Java fornecem um bom exemplo de migra- execução e é acessível na rede. Se o programa enviar uma
ção de processos entre sistemas operacionais diferentes. consulta e não obtiver resposta, ele saberá que o sistema
Para ocultar diferenças no sistema subjacente, o processo não pode ser
ser,, correntemente, alcançado.
migrado (isto é, a applet Java) executa em máquina vir- 17.8 Um sistema distribuído temt em dois sítios, A e B. Avalie se o
tual em vez de em um sistema operacional específico. Tu-Tu- sítio A pode distinguir entre os eventos a seguir:
do que é requerido é que a máquina virtual esteja em a. B fica inativo.
execução no sistema para o qual o processo migrar.
migrar.
 b. O link entre A e B fica inativo.
17.6 Para construir um sistema distribuído robusto, você deve
saber quais tipos de falhas podem ocorrer. c. B está extremamente sobrecarregado, e seu tempo de
a. Liste três tipos de falha possíveis em um sistema distri- resposta é 100 vezes mais longo do que o normal.
 buído. Que implicações sua resposta tem na recuperação em sis-
 b. Especifique quais das entradas de sua lista também temas distribuídos?
são aplicáveis a um sistema centralizado. Resposta:
Uma técnica seria que B envie periodicamente uma mensa-
Resposta: gem Eu-estou-ativo para A, indicando que ainda está vivo.
Três falhas comuns em um sistema distribuído incluem: Se A não receber uma mensagem Eu-estou-ativo, pode su-
(1) falha do link de rede, (2) falha do hospedeiro, e (3) fa- por que B — ou o link de rede — caiu. Observe que uma
lha do meio de armazenamento. Tanto (2) quanto (3) são mensagem Eu-estou-ativo não permite que A diferencie
falhas que também poderiam ocorrer em um sistema cen- cada tipo de falha. Uma técnica que permite a A determi-
tralizado, enquanto uma falha do link de rede somente nar melhor se a rede caiu é enviar uma mensagem Você-
pode ocorrer em um sistema distribuído em rede. está-ativo a B utilizando uma rota alternativa. Se receber
17.7 É sempre crucial saber se a mensagem que você enviou uma resposta, ele pode determinar que realmente o link
chegou em seu destino com segurança? Se sua resposta de rede caiu e que B está ativo.
for sim, explique por quê. Se sua resposta for não, forneça Se assumirmos que A sabe que B está ativo e é alcançá-
exemplos apropriados. vel (por meio do mecanismo Eu-estou-ativo) e que A tem
Resposta: algum valor N que indique um tempo de resposta nor-
Não. Muitos programas coletores de estados funcionam mal, A poderia monitorar o tempo de resposta de B e com-
a partir da suposição de que os pacotes não podem ser parar valores a N , permitindo que A determine se B está
recebidos pelo sistema de destino. Esses programas ge- sobrecarregado ou não.
ralmente distribuem um pacote e assumem que pelo me- As implicações dessas duas
du as técnicas são que A poderia
nos alguns outros sistemas em sua rede receberão a escolher outro hospedeiro — digamos C — no sistema,
informação. Por exemplo, um daemon em cada sistema se B estiver caído, for inalcançável ou estiver sobrecarre-
pode distribuir a carga média e o número de usuários do gado.
18
CAPÍTULO

O Sistema Linux 
Exercícios Práticos mente, em que o suporte à mais ampla variedade
variedad e de hard-
wares da maneira mais simples possível é uma
18.1 Módulos do kernel dinamicamente carregáveis oferecem prioridade.
flexibilidade quando drivers são adicionados a um siste- Entretanto, se um kernel está sendo construído para
ma, mas eles também apresentam desvantagens? Sob que uma única máquina cuja configuração é conhecida com
circunstâncias um kernel seria compilado em um único antecedência, então a compilação e o uso de módulos po-
arquivo binário, e quando seria melhor mantê-lo dividi- derão ser simplesmente uma complexidade desnecessá-
do em módulos? Explique sua resposta. ria. Em casos como esse, o uso de módulos poderá bem
Resposta: ser uma questão de gosto.
Existem duas desvantagens principais no uso de módu- 18.2 A criação de múltiplos threads é uma técnica de progra-
los. A primeira é o tamanho: o gerenciamento de módulos
módul os mação comumente utilizada. Descreva três maneiras di-
consome memória não paginável do kernel, e um u m kernel ferentes de implementar threads, e compare esses três
 básico, com vários módulos carregados, consumirá
consumirá mais métodos com o mecanismo clone() do Linux. Quando a
memória do que um kernel equivalente com os drivers utilização de cada mecanismo alternativo pode ser me-
compilados na própria imagem do kernel. Esse pode ser lhor ou pior do que o uso de clones?
um aspecto muito significativo em máquinas com memó- Resposta:
ria física limitada. As implementações de threads podem ser, de modo ge-
A segunda desvantagem é que módulos podem aumen- ral, classificadas em dois grupos: threads baseados no
tar a complexidade do processo de bootstrap do kernel. kernel e threads de modalidade de usuário. Os pacotes
É difícil carregar um conjunto de módulos do disco se o de threads de modalidade de usuário apoiam-se em al-
driver precisar, ele mesmo, acessar, no disco, um módulo gum suporte do kernel — eles podem requerer recursos
a ser carregado. Como resultado, o gerenciamento do de interrupção por timer, por exemplo —, mas o schedu-
 bootstrap do kernel com módulos pode p ode exigir trabalho ling entre os threads não é executado pelo kernel e, sim,
extra por parte do administrador: os módulos requeridos por alguma biblioteca
bibliote ca de código em modalidade de usuá-
para bootstrap precisarão ser colocados em uma imagem rio. Múltiplos threads em tal implementação aparecem
de disco RAM que seja carregada em paralelo com a ima- para o sistema operacional como um único contexto de
gem inicial do kernel quando o sistema é inicializado. execução. Quando um processo multithreads está em e m exe-
Em certos casos, é melhor utilizar um kernel modular; cução, ele decide por si mesmo quais de seus threads de-
em outros casos, é melhor utilizar um kernel com seus vem ser executados, utilizando saltos não locais para
drivers de dispositivos pré-vinculados. Onde for impor- realizar a comutação entre os threads de acordo com suas
tante a minimização do tamanho do kernel, a escolha próprias regras de scheduling preemptivo ou não pre-
dependerá da frequência de uso dos vários drivers de emptivo.
dispositivos. Se eles forem utilizados constantemente, en- Alternativamente, o kernel do sistema operacional po-
tão os módulos serão inadequados. Isso é especialmente de fornecer, ele mesmo, suporte para threads. Nesse caso,
verdadeiro onde os drivers são necessários para o próprio os threads podem ser implementados como processos se-
processo de inicialização. Por outro lado, se alguns dri- parados que compartilham um espaço de endereçamento
vers não forem sempre necessários, então o mecanismo comum, completo ou parcial, ou eles podem ser implemen-
de módulos permitirá que esses drivers sejam carregados tados como contextos de execução separados dentro de um
e descarregados sob demanda, oferecendo potencialmen- único processo. Seja qual for a forma pela qual os threads
te uma economia final da memória física. são organizados, eles aparecem como contextos de execu-
Em casos em que um kernel deve ser construído para ção completamente independentes para a aplicação.
uso em uma ampla variedade de máquinas
máquina s muito diferen- Também são possíveis implementações híbridas, em
tes, então a sua construção com módulos será claramente que um grande número de threads se torna disponível
preferível ao uso de um kernel único com dúzias de dri- para a aplicação, utilizando
util izando um número menor de threads
vers desnecessários consumindo memória. Esse é do kernel. Threads executáveis de usuário são executados
particularmente o caso de kernels distribuídos comercial-
comercial- pelo primeiro thread de kernel disponível.
32
O Sistema Linux 33

No Linux, os threads são implementados dentro do preempção do kernel é preservada. Qualquer processo
kernel por um mecanismo de clone que cria um novo que capture um erro de página, seja em modalidade de
processo dentro do mesmo espaço de endereçamento vir- kernel ou de usuário, corre o risco de ser realocado no
tual do processo-pai. Diferentemente de alguns pacotes schedule enquanto os dados requeridos estão sendo pa-
de threads baseados no kernel, o kernel do Linux não faz ginados do disco para a memória. Como o kernel pode
nenhuma distinção entre threads e processos: um thread se valer do fato de não ser realocado no schedule duran-
é simplesmente um processo que não criou um novo es- te o acesso às suas estruturas de dados principais, os re-
paço de endereçamento virtual quando foi inicializado. quisitos de trancamento para proteger a integridade
A principal vantagem da implementação de threads dessas estruturas de dados são muitíssimo simplificados.
no kernel em vez de em uma biblioteca de modalidade Embora a simplicidade de projeto seja um benefício em
de usuário é que: si mesma, ela também oferece uma importante vantagem
 sistemas com threads no kernel podem tirar vantagem de desempenho em máquinas uniprocessadoras pelo fa-
de múltiplos processadores, se eles estiverem disponí- to de não ser necessário fazer trancamento adicional na
veis; e maioria das estruturas de dados internas.
Existem, porém, muitas desvantagens na falta de
 se um thread bloquear em uma rotina de serviço do memória paginável no kernel. Em primeiro lugar, ela im-
kernel (por exemplo, uma chamada de sistema ou um põe restrições ao montante de memória que o kernel po-
erro de página), outros threads ainda serão capazes de de utilizar. Não é razoável manter estruturas de dados
executar. muito grandes em memória não paginável, já que isso re-
Uma vantagem menor é a capacidade de designar diferen- presenta memória física que absolutamente não pode ser
tes atributos de segurança a cada thread. utilizada por mais ninguém. Isso tem dois impactos: pri-
As implementações em modalidade de usuário não meiro, o kernel deve remover muitas de suas estruturas
apresentam essas vantagens. Como tais implementações de dados internas manualmente, em vez de poder se va-
executam inteiramente dentro de um único contexto de ler de um único mecanismo de memória virtual para man-
execução do kernel, apenas um thread pode estar em exe- ter o uso da memória física sob controle; segundo, isso
cução de cada vez, mesmo se estão disponíveis múltiplas torna inviável implementar determinados recursos que
CPUs. Pela mesma razão, se um thread entra em uma exigem grandes montantes de memória virtual no kernel,
chamada de sistema, nenhum outro thread pode ser exe- tais como o sistema de arquivos /tmp (um sistema de ar-
cutado até que a chamada de sistema se complete. Como quivos rápido baseado em memória virtual encontrado
resultado, um thread, ao fazer uma leitura de disco com em alguns sistemas UNIX).
 bloqueio, suspenderá todos os os threads da aplicação. En- Observe que a complexidade de gerenciamento dos
tretanto, as implementações em modalidade de usuário erros de página enquanto está em execução o código do
têm suas próprias vantagens. A mais óbvia é o desem- kernel não é um problema aqui. O código do kernel do
penho: a invocação do próprio scheduler do kernel para Linux já é capaz de lidar com erros de página: ele precisa
realizar a comutação entre threads envolve a entrada em ser capaz de lidar com chamadas de sistema cujos argu-
um novo domínio de proteção enquanto a CPU comuta mentos referenciam a memória do usuário que pode ser
para a modalidade de kernel, ao passo que a comutação paginada da memória para disco.
entre threads em modalidade de usuário pode ser alcança- 18.4 Discuta três vantagens da vinculação dinâmica (compar-
da simplesmente salvando e restaurando os registradores tilhada) de bibliotecas em comparação com a vinculação
principais da CPU. Os threads em modalidade de usuá- estática. Descreva dois casos em que a vinculação estáti-
rio também podem consumir menos memória do sistema: ca é preferível.
a maior parte dos sistemas UNIX reservará pelo menos Resposta:
uma página completa para uma pilha pil ha do kernel para cada As principais vantagens das bibliotecas compartilhadas
thread do kernel, e essa pilha pode não ser paginável. são a redução do espaço de memória e de disco utilizado
A abordagem híbrida, implementando múltiplos threads por um sistema e a maior facilidade de manutenção.
de usuário em contrapartida a um número menor de Quando bibliotecas compartilhadas estão sendo utili-
threads do kernel, permite alcançar um equilíbrio entre zadas por todos os programas em execução, há somente
essas decisões. Os threads do kernel permitirão que múl- uma instância de cada rotina da biblioteca do sistema em
tiplos threads estejam em chamadas do kernel com blo- disco e, no máximo, uma instância na memória física.
queio de uma vez, e permitirão a execução em múltiplas Quando a biblioteca em questão é utilizada por muitas
CPUs; além disso, a comutação entre threads de modali- aplicações e programas, então as economias de disco e
dade de usuário poderá ocorrer dentro de cada thread do memória podem ser bastante substanciais. Além disso, o
kernel para executar um threading peso leve, sem os tempo de início para a execução de novos programas po-
overheads da presença de muitos threads de kernel. O la- de ser reduzido, pois muitas das funções comuns necessá-
necessá -
do negativo dessa abordagem é a complexidade: o contro- rias ao programa provavelmente já estarão carregadas na
le sobre as decisões complica a interface de usuário da memória física.
 biblioteca
 biblio teca de thread
threads.
s. A facilidade de manutenção também é uma vantagem
18.3 O kernel do Linux não permite a paginação para fora da importante da vinculação dinâmica em relação à estática.
memória do kernel. Que efeito essa restrição tem sobre o Se todos os programas em execução utilizarem uma bi-
projeto do kernel? Quais são duas vantagens e duas des-  blioteca compartilhada
compart ilhada para
p ara acessar
acess ar suas rotinas da bi-
vantagens dessa decisão de projeto?  blioteca do sistema,
sistema, então a melhoria
melhoria dessas rotinas,
rotinas, seja
Resposta: para adicionar nova funcionalidade, seja para corrigir bu-
O principal impacto da não permissão de paginação da gs, poderá ser feita simplesmente pela substituição da
memória do kernel no Linux é que a não possibilidade de  biblioteca compartilhada.
compartilhada. Não há necessidade de recom-
recom-
34 Capítulo 18

pilar ou revincular quaisquer aplicações; qualquer pro- 18.5 Compare o uso de sockets de rede com o uso de memória
grama carregado após a realização da melhoria acessará compartilhada como mecanismo para a comunicação de
automaticamente as novas versões das bibliotecas. dados entre processos em um único computador.
computador. Quais
Existem também outras vantagens. Um programa que são as vantagens de cada método? Quando cada um é
utilize bibliotecas compartilhadas pode ser, com frequên- preferível?
cia, adaptado a finalidades específicas simplesmente subs- Resposta:
tituindo uma ou mais de suas bibliotecas ou mesmo A utilização de sockets de rede em vez de memória com-
adicionando uma nova biblioteca em tempo de execução partilhada para comunicação local tem muitas vantagens.
(se o sistema permitir isso; a maioria dos sistemas UNIX, A principal vantagem é que a interface de programação
incluindo o Linux, permite). Por exemplo, uma biblioteca de sockets representa um rico conjunto de recursos de
de depuração pode ser substituída por uma biblioteca sincronização. Um processo pode determinar facilmente
normal para rastrear um problema em uma aplicação. Bi- quando chegaram novos dados em uma conexão de so-
 bliotecas
 bliot ecas compar
compartilha
tilhadas
das també
tambémm permi
permitem
tem que pro- cket, quantos dados estão presentes e quem os enviou.
gramas binários sejam vinculados a códigos de bibliotecas Os processos podem bloquear, até que cheguem novos
proprietárias e comerciais sem realmente incluir tais có- dados em um socket, ou podem solicitar que seja libera-
digos no arquivo executável final do programa. Isso é do um sinal quando os dados chegarem. Um socket tam-
importante porque, na maioria dos sistemas UNIX, mui-  bém gerencia
gerencia conexões separadas. Um processo
processo com
com um
tas das bibliotecas compartilhadas padrão são proprietá- socket aberto para recepção pode aceitar múltiplas cone-
rias, e questões de licenciamento podem impedir a xões para o socket e será informado quando novos pro-
inclusão daquele código em arquivos executáveis
executá veis a serem cessos tentarem se conectar
conectar,, ou processos antigos liberarem
distribuídos a terceiros. suas conexões.
Em alguns locais, entretanto, a vinculação estática é A memória compartilhada não oferece nanhum desses
apropriada. Um exemplo é em ambientes de recuperação recursos. Não há modo de um processo determinar se
para administradores de sistemas. Se um administrador outro processo liberou dados para a memória com-
de sistema cometer um erro ao instalar novas bibliotecas, partilhada ou alterou dados nela residentes, a não ser in-
ou no caso de o hardware desenvolver problemas, é bem do olhar o conteúdo da memória. É impossível para um
possível que as bibliotecas compartilhadas existentes fi- processo bloquear e solicitar uma ativação quando a me-
quem corrompidas. Como resultado, um conjunto básico mória compartilhada for liberada, e não existe mecanis-
de recursos de recuperação é frequentemente vinculado mo-padrão para outros processos estabelecerem um link
estaticamente, de modo que haja uma oportunidade de de memória compartilhada para um processo existente.
corrigir a falha sem ter que se valer de bibliotecas com- Entretanto, a memória compartilhada tem a vantagem
partilhadas que estejam funcionando corretamente. de ser muito mais rápida do que as comunicações por so-
Existem também vantagens de desempenho que, algu- cket, em muitos casos. Quando são enviados dados sobre
mas vezes, tornam a vinculação estática preferível em ca- um socket, eles normalmente são copiados de memória
sos especiais. Para começar, a vinculação dinâmica a memória múltiplas vezes. As atualizações na memória
aumenta o tempo de início de um programa, já que a vin- compartilhada não requerem cópias dos dados: se um
culação deve ser feita, agora, em tempo de execução e não processo atualizar uma estrutura de dados na memória
em tempo de compilação. A vinculação dinâmica também compartilhada, essa atualização será imediatamente vi-
pode, algumas vezes, aumentar o tamanho máximo do sível por todos os demais processos que estiverem com-
conjunto de trabalho de um programa (o número total de partilhando a memória. O envio e a recepção de dados
páginas físicas de memória requeridas para executar o sobre um socket requerem que seja feita uma chamada
programa). Em uma biblioteca compartilhada, o usuário de serviço de sistema do kernel para iniciar a transferên-
não tem controle sobre o local em que as várias funções cia, mas a comunicação por meio de memória comparti-
residem no arquivo binário da biblioteca. Como a maio- lhada pode ser executada inteiramente em modalidade
ria das funções não preenche, precisamente,
precisamente, uma página de usuário, sem exigir transferência de controle.
ou páginas inteiras da biblioteca, a carga de uma função A comunicação por sockets é normalmente preferida
resultará normalmente na carga de partes das funções quando o gerenciamento da conexão é importante, ou
circunvizinhas também. Com a vinculação estática, abso- quando existe um requisito para sincronizar o emissor e
lutamente nenhuma função que não for referenciad
referenciadaa (di- o receptor. Por exemplo, processos servidores estabelece-
reta ou indiretamente) pela aplicação precisará ser rão usualmente um socket de escuta com o qual os clien-
carregada na memória. tes possam se conectar quando quiserem utilizar o
Outras questões em torno da vinculação estática in- serviço. Uma vez que o socket seja estabelecido, as soli-
cluem a facilidade de distribuição: é mais fácil distribuir citações individuais também serão enviadas com o uso
um arquivo executável com vinculação estática do que do socket, de modo que o servidor possa determinar fa-
com vinculação dinâmica, se o distribuidor não estiver cilmente quando chegar uma nova solicitação e de quem
certo de que o receptor terá as bibliotecas corretas insta- ela provém.
ladas com antecedência. Também podem existir restrições Em alguns casos, entretanto, a memória compartilha-
comerciais contra a redistribuição de alguns binários co- da é preferida. Ela é, com frequência, uma solução melhor
mo bibliotecas compartilhadas. Por exemplo, a licença quando grandes volumes de dados devem ser transferi-
para o ambiente gráfico “Motif” do UNIX permite que dos, ou quando dois processos precisam de acesso alea-
 binários que utilizem
u tilizem o Motif sejam distribuí
distribuídos
dos livre-
li vre- tório a um grande data set comum. Nesse caso, porém,
mente enquanto forem vinculados estaticamente, mas as os processos em comunicação podem precisar ainda de
 bibliotecas compartilhad
compartilhadasas não podem ser utilizadas sem um mecanismo adicional à memória compartilhada para
licença. conseguir a sincronização entre eles. O X Window Sys-
O Sistema Linux 35

tem, um ambiente de display gráfico do UNIX, é um bom Por causa dessa complexidade, o tempo necessário pa-
exemplo disso: a maioria das solicitações de gráficos é ra que uma solicitação de I/O seja reconhecida e a próxi-
enviada sobre sockets, mas a memória compartilhada é ma solicitação seja gerada e recebida pelo disco pode
oferecida como um transporte adicional em casos espe- superar em muito o montante de tempo entre a passagem
ciais em que grandes mapas de bits devem ser exibidos de um setor do disco sob o cabeçote de leitura-gravação
em tela. Nesse caso, será enviada uma solicitação para e a chegada do cabeçalho do próximo setor. Para serem
exibir o mapa de bits sobre o socket, mas o volume de capazes de ler eficientemente múltiplos setores de uma
dados do próprio mapa de bits será transmitido via me- vez, os discos empregarão um cache de leitura-adiante.
mória compartilhada. Enquanto um setor está sendo passado de volta ao com-
18.6 Antigamente, os sistemas UNIX utilizavam otimizações putador hospedeiro, o disco estará ocupado lendo os pró-
do formato de discos baseadas na posição de rotação dos ximos setores antes que uma solicitação os leia. Se as
dados no disco, mas implementações modernas, incluin- solicitações de leitura começarem a chegar em uma or-
do o Linux, simplesmente realizam a otimização para dem que quebre esse canal de leitura-adiante, o desem-
acesso sequencial aos dados. Por que fazem isso? De que penho cairá. Como resultado, o desempenho será
características de hardware o acesso sequencial tira van- substancialmente beneficiado, se o sistema operacional
tagem? Por que a otimização rotacional não é mais tão tentar manter as solicitações de I/O em ordem estrita-
útil? mente sequencial.
Resposta: Uma segunda característica dos discos modernos é que
As características de desempenho do hardware de disco sua geometria pode ser muito complexa. O número de
têm mudado substancialmente nos últimos anos. Em par- setores por cilindro pode variar de acordo com a posição
ticular,, muitas melhorias têm sido introduzidas para otimi-
ticular do cilindro: mais dados podem ser acomodados nas tri-
zar a largura de banda máxima que pode ser obtida em lhas mais longas próximas à margem do disco do que no
um disco. Em um sistema moderno, pode existir um lon- centro do disco. Para que um
u m sistema operacional otimi-
go canal entre o sistema operacional e o cabeçote de lei- ze a posição rotacional dos dados nesses discos, ele teria
tura-gravação do disco. Uma solicitação de I/O de disco que deter o conhecim
conhecimento
ento completo da sua geometria,
tem que passar pelo controlador de disco local do com-  bem como
como das características de
de timing do disco
disco e do seu
putador, sobre o bus para o próprio drive do disco e, então, controlador. Em geral, apenas a lógica interna do disco
internamente para o disco, em que existe provavelmente pode determinar o scheduling ótimo de I/Os, e a geome-
um controlador complexo que pode armazenar em cache tria do disco provavelmente descartará qualquer tentati-
os acessos aos dados e potencialmente otimizar a ordem va de execução de otimizações rotacionais pelo sistema
das solicitações de I/O. operacional.
19
CAPÍTULO

Windows 7 
Exercícios Práticos 19.4 Descreva as três principais camadas de arquitetura do
kernel do Windows 7.
19.1 Que tipo de sistema operacional é o Windows 7? Descre- Resposta:
va duas de suas principais características. a. A camada de abstração do hardware (HAL — Hard-
Resposta: ware Abstraction Layer ) cria a portabilidade do siste-
É um sistema operacional multitarefa preemptivo de ma operacional ocultando diferenças de hardware
32/64 bits que suporta múltiplos usuários. (1) A capaci- das camadas superiores do sistema operacional. De-
dade de reparar automaticamente problemas da aplicação talhes administrativos dos recursos de baixo nível
e do sistema operacional. (2) Melhor conexão em rede e são fornecidos pelas interfaces
int erfaces da HAL. A HAL apre-
experiência com dispositivos (incluindo fotografia digital senta uma interface de máquina virtual que é utili-
e vídeo). zada pelo despachante do kernel, pelo executivo e
19.2 Liste os objetivos de projeto
p rojeto do Windows 7. Descreva dois pelos drivers de dispositivos.
deles com detalhes.  b. A camada do kernel fornece uma base para as fun-
Resposta:
ções executivas e os subsistemas de modalidade de
Os objetivos de projeto incluem: segurança, confiabilidade, usuário. O kernel permanece em memória e nunca
compatibilidade com aplicações Window e POSIX, alto de- sofre preempção. Suas responsabilidades são o sche-
sempenho, extensibilidade, portabilidade e suporte inter- duling de threads, a manipulação de interrupções e
nacional. (1) A confiabilidade foi percebida como um exceções, a sincronização de processadores de baixo
requisito restritivo e incluiu a verificação extensiva dos dri- nível, e a recuperação de falhas de energia.
vers, recursos para a captura de erros de programação em
código de nível de usuário, e um processo rigoroso de cer- c. A camada executiva fornece um conjunto de serviços
tificação de drivers, aplicações e dispositivos de terceiros. utilizados por todos os subsistemas: gerenciador de ob-
(2) O alcance do alto desempenho exigiu o exame de áreas  jetos,
 jetos, geren
gerenciad
ciador
or da mem
memória
ória virt
virtual,
ual, gere
gerencia
nciador
dor de
de
de problemas do passado, tais como o desempenho de I/ processos, recursos de chamadas de procedimentos lo-
O, os gargalos da CPU de servidores e a escalabilidade de cais, gerenciador de I/O, monitor de segurança, geren-
ambientes multithreads e multiprocessadores. ciador de plug-and-play, registro e inicialização.
19.3 Descreva o processo de inicialização de um sistema Win- 19.5 Qual é a função do gerenciador de objetos?
dows 7. Resposta:
Resposta: Os objetos apresentam um conjunto genérico de interfa-
(1) Enquanto o hardware é ligado, a BIOS começa a exe- ces em modalidade de kernel para programas em modalida-
modali da-
cutar a partir da ROM e carrega e executa o carregador de de usuário. Objetos são manipulados pelo gerenciador
gerenciador
de bootstrap do disco. (2) O programa NTLDR é carrega- de objetos da camada executiva. A tarefa do gerenciador de
do a partir do diretório raiz do dispositivo do sistema objetos é supervisionar a alocação e o uso de todos os ob-
identificado e determina qual dispositivo de inicialização  jetos gerenciados.
contém o sistema operacional. (3) O NTLDR carrega a bi- 19.6 Que tipos de serviços o gerenciador de processos oferece?
 blioteca HAL, o kernel e o hive do sistema. O hive do sis- Resposta:
tema indica os drivers de inicialização requeridos e os O gerenciador de processos fornece serviços para a cria-
carrega. (4) A execução do kernel começa pela inicializa- ção, exclusão e utilização de processos, threads e jobs. O
ção do sistema e pela criação de dois processos: o proces- gerenciador de processos também implementa o enfilei-
so do sistema que contém todos os threads de trabalho ramento e a liberação de chamadas de procedimentos as-
internos e o primeiro processo de inicialização em moda- síncronas para os threads.
lidade de usuário, o SMSS. (5) O SMSS, então, inicializa 19.7 O que é uma chamada de procedimento local?
o sistema estabelecendo os arquivos de paginação e car- Resposta:
regando os drivers de dispositivos. (6) O SMSS cria dois A chamada de procedimento local (LPC) é um sistema de
processos:
processo s: o WINLOGON, que traz o restante do sistema, passagem de mensagens. O sistema operacional utiliza a
e o CSRSS (o processo do subsistema Win32). LPC para passar solicitações e resultados entre processos

36
Windows 7 37

cliente e servidor dentro de uma única máquina, em par- ções. Antes que uma estrutura de dados seja alterada, a
ticular entre subsistemas do Wind
Windows
ows 7. transação grava um registro de log contendo informações
19.8 Quais são as responsabilidades do gerenciador de I/O? redo (refaça) e undo (desfaça). Um registro de confirma-
Resposta: ção é gravado no log após a ocorrência da transação. Após
O gerenciador de I/O é responsável pelos sistemas de ar- uma queda, o sistema de arquivos pode ser restaurado a
quivos, drivers de dispositivos
dispositi vos e drivers de rede. O geren- um estado consistente por meio do processamento dos
ciador de I/O controla quais drivers de dispositivos, registros do log, primeiro refazendo as operações para as
drivers de filtro e sistemas de arquivos estão carregados, transações confirmadas e, depois, desfazendo as opera-
e gerencia os buffers para as solicitações de I/O. Além ções para as transações que não foram confirmadas com
disso, toma parte do fornecimento do I/O de arquivos sucesso. Esse esquema não garante que o conteúdo dos
mapeados na memória e controla o gerenciador de caches arquivos de usuário esteja correto após uma recuperação,
para todo o sistema de I/O. mas sim que as estruturas de dados do sistema de arqui-
19.9 Que tipos de conexão de rede o Windows 7 suporta? Co- vos (metadados dos arquivos) não estão danificadas e re-
mo o Windows 7 implementa protocolos de transporte? fletem algum estado consistente que existia antes da
Descreva dois protocolos de conexão de rede. queda.
Resposta: 19.12 Como o Windows
Windows 7 aloca a memória do usuário?
O suporte é fornecido tanto para a conexão em rede clien- Resposta:
te-servidor quanto para a peer-to-peer
peer-to-peer.. Os protocolos de A memória do usuário pode ser alocada de acordo com
transporte são implementados como drivers. (1) O paco- diversos esquemas: memória virtual, arquivos mapeados
te TCP/IP inclui suporte do SNMP, DHCP, WINS e Net- na memória, heaps e armazenamento local de threads.
BIOS. (2) O protocolo de tunneling ponto a ponto é 19.13 Descreva algumas das maneiras pelas quais uma aplica-
fornecido para a comunicação entre módulos de acesso ção pode utilizar memória por meio da API Win32.
remoto, em execução em servidores Windows 7, e outros Resposta:
sistemas clientes conectados pela web. Utilizando esse a. A memória virtual fornece diversas funções que
esquema, redes virtuais privadas (VPNs) multiprotocolos permitem que uma aplicação reserve e libere memó-
são suportadas na web. ria, especificando o endereço virtual ao qual a me-
19.10 Como é organizado o espaço de nomes no NTFS? mória está alocada.
Resposta:  b. Um arquivo pode ser mapeado em memória no es-
O espaço de nomes no NTFS é organizado como uma hie- paço de endereçamento, fornecendo um meio para
rarquia de diretórios em que cada diretório utiliza uma que dois processos compartilhem memória.
estrutura de dados em árvore B+ para armazenar um ín-
dice dos nomes dos arquivos naquele diretório. O índice c. Ao ser inicializado, um processo Win32 é criado com
raiz de um diretório contém o nível de topo da árvore B+. um heap default. Podem ser criados heaps privados
Cada entrada no diretório contém o nome e a referência que fornecem regiões de espaço de endereçamento
de arquivo do arquivo, bem como o marcador de tempo reservadas para as aplicações. São fornecidas funções
de atualização e o tamanho
t amanho do arquivo. de gerenciamento de threads para alocar e controlar
19.11 Como o NTFS manipula estruturas de dados? Como o o acesso dos threads aos heaps privados.
NTFS se recupera de uma queda do sistema? O que é ga- d. Um mecanismo de armazenamento local de threads
rantido após a ocorrência de uma recuperação? fornece um modo para que dados globais e estáticos
Resposta: funcionem apropriadamente em um ambiente mul-
No NTFS, todas as atualizações das estruturas de dados tithread. O armazenamento local de threads aloca
do sistema de arquivos são executadas dentro de transa- memória global por thread.
Sistemas Operacionais 20
CAPÍTULO

Influentes 
Não existem Exercícios Práticos.

38