FSO - Questões

109
MANUAL DO PROFESSOR PARA ACOMPANHAR O LIVRO CONCEITOS DE SISTEMA OPERACIONAL SEXTA EDIÇÃO ABRAHAM SILBERSCHATZ Yale University PETER BAER GALVIN Corporate Technologies GREG GAGNE Westminster College Copyright © 2001 A. Silberschatz, P. Galvin e Greg Gagne

Transcript of FSO - Questões

Page 1: FSO - Questões

MANUAL DO PROFESSORPARA ACOMPANHAR O LIVRO

CONCEITOS

DE SISTEMA

OPERACIONAL

SEXTA EDIÇÃO

ABRAHAM SILBERSCHATZYale University

PETER BAER GALVINCorporate Technologies

GREG GAGNEWestminster College

Copyright © 2001 A. Silberschatz, P. Galvin e Greg Gagne

Page 2: FSO - Questões

Prefácio

Este volume é um manual do instrutor para a Sexta Edição de Conceitos de Sistema Operacional, de AbrahamSilberschatz, Peter Baer Galvin e Greg Gagne. Ele consiste em respostas para os exercícios no texto princi-pal. Em casos nos quais a resposta para uma pergunta envolve um programa longo, o desenvolvimento deum algoritmo ou uma experiência, nenhuma resposta é dada, apenas acrescentamos a frase “Sem respostaproposta”.

Embora tenhamos tentado produzir um manual do instrutor que auxilie a todos os usuários de nosso li-vro o máximo possível, sempre poderá haver melhorias (respostas melhoradas, perguntas adicionais, exem-plos de perguntas para teste, projetos de programação, ordens de apresentação alternativas para o material,referências adicionais e outros). Convidamos vocês, tanto instrutores quanto alunos, a nos ajudarem na me-lhoria desse manual. Se você tiver soluções melhores para os exercícios ou outros itens que sejam úteis parao livro, incentivamos o envio desse material para considerarmos em outras edições. Todas as contribuições,naturalmente, receberão devidamente os créditos de seus colaboradores.

E-mails deverão ser endereçados para [email protected]. A correspondência física poderá ser enviadapara Avi Silberschatz, Department of Computer Science, Yale University 51 Prospect Street, New Haven,CT 06520, USA.

A. S.P. B. G.G. G.

Page 3: FSO - Questões

Sumário

Capítulo 1 Introdução 1

Capítulo 2 Estruturas do computador 5

Capítulo 3 Estruturas do sistema operacional 9

Capítulo 4 Gerência de processos 13

Capítulo 5 Threads 16

Capítulo 6 Escalonamento de CPU 19

Capítulo 7 Sincronismo de processos 24

Capítulo 8 Deadlocks 31

Capítulo 9 Gerenciamento de memória 39

Capítulo 10 Memória virtual 45

Capítulo 11 Interface do sistema de arquivos 53

Capítulo 12 Implementação do sistema de arquivos 57

Capítulo 13 Sistemas de E/S 61

Capítulo 14 Estrutura de armazenamento em massa 65

Capítulo 15 Estruturas de sistemas distribuídos 79

Capítulo 16 Sistemas de arquivos distribuídos 84

Capítulo 17 Coordenação distribuída 86

Capítulo 18 Proteção 89

Capítulo 19 Segurança 92

Capítulo 20 O sistema Linux 94

Capítulo 21 Windows XP 104

Page 4: FSO - Questões

C A P Í T U L O 1

Introdução

O Capítulo 1 apresenta o tópico geral de sistemas operacionais e alguns de seus conceitos importantes (mul-tiprogramação, tempo compartilhado, sistemas distribuídos e assim por diante). A finalidade é mostrar porque os sistemas operacionais são o que são, mostrando como eles são desenvolvidos. Nos sistemas operacio-nais, como em grande parte da ciência de computação, somos conduzidos ao presente pelos caminhos queseguimos no passado, e podemos entender melhor o presente e o futuro compreendendo o passado.

Um trabalho adicional que pode ser considerado é o estudo do(s) sistema(s) específico(s) ao(s) qual(is) osalunos terão acesso em sua instituição. Essa ainda é só uma visão geral, pois as interfaces específicas são con-sideradas no Capítulo 3.

Exercícios1.1 Quais são os três propósitos principais de um sistema operacional?

Resposta:

� Oferecer um ambiente para um usuário de computador executar programas no hardware docomputador de uma forma conveniente e eficiente.

� Alocar os recursos separados do computador de acordo com a necessidade, para solucionar de-terminado problema. O processo de alocação deverá ser o mais justo e eficiente possível.

� Como um programa de controle, ele tem duas funções principais: (1) supervisão da execução dosprogramas do usuário, para impedir erros e uso indevido do computador, e (2) gerenciamento daoperação e controle dos dispositivos de E/S.

1.2 Relacione os quatro passos necessários para executar um programa em uma máquina completamen-te dedicada.

Resposta:a. Reservar tempo de máquina.b. Carregar o programa manualmente para a memória.c. Carregar o endereço inicial e iniciar a execução.d. Monitorar e controlar a execução do programa a partir do console.

Page 5: FSO - Questões

1.3 Qual é a principal vantagem da multiprogramação?

Resposta: A multiprogramação faz uso eficiente da CPU, sobrepondo as demandas por CPU e seusdispositivos de E/S a partir de diversos usuários. Ela tenta aumentar a utilização de CPU sempre ten-do algo para a CPU executar.

1.4 Quais são as principais diferenças entre os sistemas operacionais para mainframes e PCs?

Resposta: Em geral, os sistemas operacionais para sistemas batch (em lote) possuem requisitos maissimples do que para computadores pessoais. Os sistemas batch não precisam se preocupar com a in-teração com um usuário tanto quanto um computador pessoal. Como resultado, um sistema opera-cional para um PC precisa se preocupar com o tempo de resposta para um usuário interativo. Os sis-temas batch não possuem esses requisitos. Um sistema batch puro também pode não precisar lidarcom o compartilhamento de tempo, enquanto um sistema operacional precisa alternar rapidamenteentre diferentes tarefas.

1.5 Em um ambiente de multiprogramação e tempo compartilhado, vários usuários compartilham o sis-tema simultaneamente. Essa situação pode resultar em diversos problemas de segurança.

a. Cite dois desses problemas.b. Podemos garantir o mesmo grau de segurança em uma máquina de tempo compartilhado que te-

mos em uma máquina dedicada? Explique sua resposta.

Resposta:a. Roubo ou cópia de programas ou dados; uso de recursos do sistema (CPU, memória, espaço em

disco, periféricos) sem a contabilidade devida.b. Provavelmente não, pois qualquer esquema de proteção idealizado por humanos inevitavelmente

pode ser quebrado por um humano, e quanto mais complexo for o esquema, mais difícil é ter cer-teza de que sua implementação está correta.

1.6 Defina as propriedades essenciais dos seguintes tipos de sistemas operacionais:

a. Batchb. Interativoc. Tempo compartilhadod. Tempo reale. Redef. SMPg. Distribuídoh. Em clustersi. Portátil

Resposta:a. Batch. As tarefas com necessidades semelhantes são agrupadas e executadas no computador

como um grupo por um operador ou um seqüenciador de tarefas automático. O desempenho éaumentado pela tentativa de manter a CPU e os dispositivos de E/S ocupados o tempo todo atra-vés de buffers, operação off-line, spooling e multiprogramação. O batch é bom para executar ta-refas grandes, que precisam de pouca interação; ele pode ser submetido e apanhado mais tarde.

b. Interativo. Esse sistema é composto de muitas transações curtas, em que os resultados da próxi-ma transação podem ser imprevisíveis. O tempo de resposta precisa ser curto (segundos), pois ousuário submete e espera o resultado.

2 Capítulo 1 Introdução ELSEVIER

Page 6: FSO - Questões

c. Tempo compartilhado. Esses sistemas utilizam o escalonamento de CPU e a multiprogramaçãopara prover o uso interativo econômico de um sistema. A CPU comuta rapidamente de um usuá-rio para outro. Em vez de ter uma tarefa definida por imagens de cartão em spool, cada programaprecisa do seu cartão de controle a partir do terminal, e a saída normalmente é impressa imedia-tamente na tela.

d. Tempo real. Normalmente usado em uma aplicação dedicada, esse sistema lê informações desensores e precisa responder dentro de um período de tempo fixo, para garantir o desempenhocorreto.

e. Rede. Oferece recursos do sistema operacional por uma rede, como compartilhamento de ar-quivos.

f. SMP. Usado em sistemas em que existem várias CPUs, cada uma executando a mesma cópia dosistema operacional. A comunicação ocorre através do barramento do sistema.

g. Distribuído. Esse sistema distribui a computação entre vários processadores físicos. Os processa-dores não compartilham memória ou um relógio. Em vez disso, cada processador possui sua pró-pria memória local. Eles se comunicam entre si através de diversas linhas de comunicação, comoum barramento de alta velocidade ou uma rede local.

h. Em clusters. Um sistema em clusters combina diversos computadores em um único sistema, pararealizar a tarefa computacional distribuída pelo cluster.

i. Portátil. Um pequeno computador que realiza tarefas simples, como calendários, e-mail e nave-gação Web. Os sistemas portáteis diferem dos sistemas desktop tradicionais por terem memória etela menores, e processadores mais lentos.

1.7 Enfatizamos a necessidade de que um sistema operacional faça uso eficaz do hardware de computa-ção. Quando é apropriado que um sistema operacional abandone esse princípio e “desperdice” re-cursos? Por que esse sistema não é realmente desperdiçador?

Resposta: Sistemas monousuários devem maximizar o uso do sistema para o usuário. Uma GUI po-deria “desperdiçar” ciclos de CPU, mas otimiza a interação do usuário com o sistema.

1.8 Sob quais circunstâncias seria melhor para um usuário usar um sistema de tempo compartilhado emvez de um PC ou estação de trabalho monousuário?

Resposta: Quando houver poucos outros usuários, a tarefa for grande e o hardware for rápido, otempo compartilhado faz sentido. O poder total do sistema pode ser utilizado para ajudar no pro-blema do usuário. O problema pode ser solucionado mais rapidamente do que em um computadorpessoal. Outro caso ocorre quando muitos outros usuários precisam de recursos ao mesmo tempo.

Um computador pessoal é melhor quando a tarefa é pequena o suficiente para ser executada de for-ma razoável nele e quando o desempenho é suficiente para executar o programa para a satisfação dousuário.

1.9 Descreva as diferenças entre o multiprocessamento simétrico e assimétrico. Cite três vantagens euma desvantagem dos sistemas multiprocessados.

Resposta: O multiprocessamento simétrico trata todos os processadores como sendo iguais, e a E/Spode ser processada em qualquer CPU. O multiprocessamento assimétrico possui uma CPU mestree as CPUs restantes são escravas. O mestre distribui tarefas entre os escravos, e a E/S normalmente éfeita somente pelo mestre. Os multiprocessadores podem economizar dinheiro, não duplicandofontes de alimentação, gabinetes e periféricos. Eles podem executar programas mais rapidamente epodem ter maior confiabilidade. Eles também são mais complexos em hardware e software do quesistemas monoprocessadores.

Exercícios 3

Page 7: FSO - Questões

1.10 Qual é a principal dificuldade que um programador precisa contornar na escrita de um sistema ope-racional para um ambiente de tempo real?

Resposta: A principal dificuldade é manter o sistema operacional dentro das restrições de tempo fi-xas de um sistema de tempo real. Se o sistema não completar uma tarefa em certo período de tempo,ele pode causar uma quebra do sistema inteiro que está executando. Portanto, ao escrever um siste-ma operacional para um sistema de tempo real, o desenvolvedor precisa estar certo de que esses es-quemas de escalonamento não permitem que o tempo de resposta ultrapasse a restrição de tempo.

1.11 Faça a distinção entre o modelo cliente-servidor e o peer-to-peer dos sistemas distribuídos.

Sem resposta proposta

1.12 Considere as diversas definições do sistema operacional. Considere se o sistema operacional deveráincluir aplicações como navegadores Web e programas de correio. Argumente as posições pró e con-tra, explicando suas respostas.

Resposta: Aplicações como navegadores Web e ferramentas de e-mail estão realizando um papelcada vez mais importante nos sistemas desktop modernos. Para cumprir esse papel, eles precisam serincorporados como parte do sistema operacional. Ao fazer isso, eles podem oferecer melhor desem-penho e melhor integração com o restante do sistema. Além disso, essas aplicações importantes po-dem ter o mesmo estilo do software do sistema operacional.

1.13 Quais são as escolhas inerentes aos computadores portáteis?

Resposta: Os computadores portáteis são muito menores do que os tradicionais PCs desktop. Issoresulta em menos memória, telas menores e capacidades de processamento mais lentas do que umPC desktop padrão. Devido a essas limitações, a maioria dos portáteis atualmente só pode realizartarefas básicas, como calendários, correio eletrônico e processamento de textos simples. Entretanto,devido ao seu tamanho reduzido, eles são facilmente transportáveis e, quando equipados com aces-so sem fio (wireless), podem prover acesso remoto ao correio eletrônico e à World Wide Web.

1.14 Considere um cluster de computadores consistindo em dois nós executando um banco de dados.Descreva duas maneiras como o software do cluster pode gerenciar o acesso aos dados no disco. Dis-cuta os benefícios e as desvantagens de cada um.

Resposta: Considere as duas alternativas a seguir: clusters assimétricos e clusters paralelos. Com osclusters assimétricos, um host executa a aplicação de banco de dados com outro host simplesmentemonitorando-a. Se o servidor falhar, o host que monitora torna-se o servidor ativo. Isso é apropria-do para oferecer redundância. Porém, não utiliza o poder de processamento em potencial dos doishosts. Com os clusters paralelos, a aplicação de banco de dados pode ser executada em paralelo nosdois hosts. A dificuldade na implementação de clusters paralelos é oferecer alguma forma de meca-nismo de lock distribuído para arquivos no disco compartilhado.

4 Capítulo 1 Introdução ELSEVIER

Page 8: FSO - Questões

C A P Í T U L O 2

Estruturas do computador

O Capítulo 2 discute a estrutura geral dos computadores. Pode ser uma boa idéia rever os conceitos básicosda organização da máquina e programação em linguagem assembly. Os alunos deverão estar acostumadoscom os conceitos de memória, CPU, registradores, E/S, interrupções, instruções e o ciclo de execução dainstrução. Como o sistema operacional é a interface entre o hardware e os programas do usuário, um bomconhecimento dos sistemas operacionais exige um conhecimento do hardware e dos programas.

Exercícios

2.1 Prefetching é um método de sobreposição da E/S de uma tarefa com a própria computação dessatarefa. A idéia é simples. Depois que uma operação de leitura terminar e a tarefa estiver para co-meçar a operar sobre os dados, o dispositivo de entrada é instruído a iniciar a próxima leitura ime-diatamente. A CPU e o dispositivo de saída ficam ambos ocupados. Com sorte, quando a tarefa es-tiver pronta para o próximo item de dados, o dispositivo de entrada terá terminado a leitura desseitem de dados. A CPU pode, então, começar a processar os dados que foram lidos, enquanto o dis-positivo de entrada começa a ler os dados seguintes. Uma idéia semelhante pode ser usada para asaída. Nesse caso, a tarefa cria dados que são colocados em um buffer até que um dispositivo de saí-da possa aceitá-los.

Compare o esquema de prefetching com o esquema de spooling, no qual a CPU sobrepõe a entradade uma tarefa com a computação e a saída de outras tarefas.

Resposta: Prefetching é uma atividade baseada no usuário, enquanto o spooling é uma atividade ba-seada no sistema. O spooling é uma forma muito mais eficaz de sobrepor as operações de E/S e CPU.

2.2 Como a distinção entre modo monitor e modo usuário funciona como uma forma rudimentar desistema de proteção (segurança)?

Resposta: Estabelecendo um conjunto de instruções privilegiadas que só possam ser executadasquando estiver no modo monitor, o sistema operacional tem garantia de controle do sistema inteiroo tempo todo.

2.3 Quais são as diferenças entre um trap e uma interrupção? Para que é usada cada função?

Resposta: Uma interrupção é uma mudança de fluxo dentro do sistema, gerada pelo hardware. Umtratador de interrupção é chamado para lidar com a causa da interrupção; o controle, então, é retor-

Page 9: FSO - Questões

nado ao contexto interrompido e instrução. Um trap é uma interrupção gerada pelo software. Umainterrupção pode ser usada para sinalizar o término de uma E/S a fim de evitar a necessidade dopolling de dispositivo. Um trap pode ser usado para chamar rotinas do sistema operacional ou apa-nhar erros aritméticos.

2.4 Para que tipos de operações o DMA é útil? Explique sua resposta.

Resposta: O DMA é útil para transferir grandes quantidades de dados entre a memória e os disposi-tivos. Ele elimina a necessidade de envolver a CPU na transferência, permitindo que a transferênciatermine mais rapidamente e a CPU realize outras tarefas simultaneamente.

2.5 Quais das seguintes instruções devem ser privilegiadas?

a. Definir o valor do temporizador.b. Ler o relógio.c. Apagar a memória.d. Desativar interrupções.e. Passar do modo usuário para o modo monitor.

Resposta: As seguintes instruções devem ser privilegiadas:a. Definir o valor do temporizador.c. Apagar a memória.d. Desativar interrupções.e. Passar do modo usuário para o modo monitor.

2.6 Alguns computadores não oferecem um modo de operação privilegiado no hardware. É possívelconstruir um sistema operacional seguro para esses computadores? Dê argumentos mostrando seisso é ou não possível.

Resposta: Um sistema operacional para uma máquina desse tipo precisaria permanecer no controle(ou modo monitor) o tempo todo. Isso poderia ser realizado por dois métodos:a. Interpretação do software de todos os programas do usuário (como alguns ambientes BASIC,

APL e LISP, por exemplo). O interpretador de software ofereceria, no software, o que o hard-ware não oferece.

b. Exigir que todos os programas sejam escritos em linguagens de alto nível, para que todo o códigoobjeto seja produzido pelo compilador. O compilador geraria (em linha ou por chamadas de fun-ção) as verificações de proteção que o hardware não realiza.1

2.7 Alguns computadores antigos protegiam o sistema operacional colocando-o em uma partição damemória que não poderia ser modificada pela tarefa do usuário ou pelo próprio sistema operacio-nal. Descreva duas dificuldades que você acha que poderiam surgir com esse esquema.

Resposta: Os dados exigidos pelo sistema operacional (senhas, controles de acesso, informaçõescontábeis etc.) teriam de ser armazenados ou passados pela memória desprotegida e, portanto, esta-riam acessíveis a usuários não-autorizados.

2.8 A proteção do sistema operacional é crucial para garantir que o computador opere corretamente. Aprovisão dessa proteção é o motivo para a operação no modo dual, a proteção de memória e o tem-porizador. Porém, para permitir o máximo de flexibilidade, você também deverá colocar o mínimode restrição sobre o usuário.

6 Capítulo 2 Estruturas do computador ELSEVIER

1 Nota do Revisor Técnico: e impedir que o usuário possa instalar um compilador e bibliotecas em sua própria área/conta. Casocontrário esse método não funciona

Page 10: FSO - Questões

A seguir, vemos uma lista de instruções que normalmente estão protegidas. Qual é o conjunto míni-mo de instruções que precisam ser protegidas?a. Passar para o modo usuário.b. Passar para o modo monitor.c. Ler a partir da memória do monitor.d. Escrever na memória do monitor.e. Buscar uma instrução da memória do monitor.f. Ativar a interrupção por temporizador.g. Desativar a interrupção por temporizador.

Resposta: O conjunto mínimo de instruções que precisam ser protegidas é o seguinte:b. Passar para o modo monitor.c. Ler a partir da memória do monitor.d. Escrever na memória do monitor.g. Desativar interrupção de temporizador.

2.9 Indique dois motivos pelos quais os caches são úteis. Que problemas eles resolvem? Que problemaseles causam? Se um cache puder ser tão grande quanto o dispositivo para o qual está dando suporte(por exemplo, um cache tão grande quanto um disco), por que não mantê-lo com esse tamanho e eli-minar o dispositivo?

Resposta: Os caches são úteis quando dois ou mais componentes precisam trocar dados, e os com-ponentes realizam transferências em velocidades diferentes. O caches solucionam o problema detransferência oferecendo um buffer de velocidade intermediária entre os componentes. Se o disposi-tivo rápido encontrar os dados de que precisa no cache, ele não precisa esperar pelo dispositivo maislento. Os dados no cache precisam ser mantidos consistentes com os dados nos componentes. Se umcomponente tiver uma mudança no valor dos dados, e o dado também estiver no cache, o cachetambém precisará ser atualizado. Isso é um problema especialmente em sistemas multiprocessados,em que mais de um processo pode estar acessando um dado. Um componente pode ser eliminadopor um cache de mesmo tamanho, mas somente se: (a) o cache e o componente tiverem capacidadeequivalente para salvar o estado (ou seja, se o componente retiver seus dados quando a eletricidadefor removida, o cache terá de reter os dados também) e (b) o cache for acessível, pois o armazena-mento mais rápido costuma ser mais caro.

2.10 Escrever um sistema operacional que possa operar sem interferência de programas de usuário mali-ciosos ou não depurados exige assistência do hardware. Cite três recursos do hardware para a escritade um sistema operacional e descreva como eles poderiam ser usados em conjunto para proteger osistema operacional.

Resposta:a. Modo monitor/usuáriob. Instruções privilegiadasc. Temporizadord. Proteção de memória

2.11 Algumas CPUs oferecem mais de dois modos de operação. Quais são dois usos possíveis para essesmúltiplos modos?

Resposta: Embora a maioria dos sistemas só faça a distinção entre os modos de usuário e kernel, al-gumas CPUs possuem suporte para múltiplos modos. Os múltiplos modos poderiam ser usados paraoferecer uma política de segurança mais detalhada. Por exemplo, em vez de distinguir entre apenas

Exercícios 7

Page 11: FSO - Questões

o modo usuário e o modo kernel, você poderia distinguir entre diferentes tipos do modo usuário.Talvez os usuários pertencentes ao mesmo grupo pudessem executar o código um do outro. A má-quina entraria em um modo especificado quando um desses usuários estivesse executando código.Quando a máquina estivesse nesse modo, um membro do grupo poderia executar o código perten-cente a qualquer outro no grupo. Outra possibilidade seria oferecer diferentes distinções dentro docódigo do kernel. Por exemplo, um modo específico poderia permitir a execução de drivers de dis-positivo USB. Isso significaria que os dispositivos USB poderiam ser atendidos sem ter de passar parao modo kernel, essencialmente permitindo que os drivers de dispositivo USB executem em ummodo quase usuário/kernel.

2.12 Quais são as principais diferenças entre uma WAN e uma LAN?

Resposta: As diferenças fundamentais são (a) a distância coberta e (b) a taxa de bits. As LANs sãousadas para cobrir pequenas distâncias, como casas, prédios ou um conjunto de prédios, como emum campus universitário. As WANs cobrem distâncias muito maiores, talvez milhares de quilôme-tros. Como as LANs cobrem distâncias muito menores, a taxa em que os dados podem ser transmiti-dos normalmente é muito maior. Uma LAN Ethernet pode atingir taxas de bits de até 1 Gigabit, em-bora a maioria das LANs Ethernet ainda seja de 10 ou 100 megabits. As WANs possuem taxas de da-dos muito menores; como um exemplo, uma conexão T1 transfere dados a 1,544 megabits.

2.13 Que configuração de rede seria mais adequada para os seguintes ambientes?

a. Um pavimento de dormitóriob. Um campus universitárioc. Um estadod. Uma nação

Resposta:a. Um pavimento de dormitório – Uma LAN.b. Um campus universitário – Uma LAN, possivelmente uma WAN para campus muito grandes.c. Um estado – Uma WAN.d. Uma nação – Uma WAN.

8 Capítulo 2 Estruturas do computador ELSEVIER

Page 12: FSO - Questões

C A P Í T U L O 3

Estruturas do sistema operacional

O Capítulo 3 trata das interfaces do sistema operacional que os usuários (ou ao menos os programadores)realmente vêem: chamadas de sistema. O tratamento é um tanto vago, já que mais detalhes exigiriam esco-lher um sistema específico para a discussão. Este capítulo pode ser suplementado exatamente com os deta-lhes do sistema específico que os alunos têm em mãos. O ideal é que eles estudem as chamadas de sistema eescrevam alguns programas colocando-as em prática. Este capítulo também reúne vários conceitos impor-tantes, incluindo projeto em camadas, máquinas virtuais, Java e a máquina virtual Java, projeto e implemen-tação do sistema, geração do sistema e a diferença entre política e mecanismo.

Exercícios3.1 Quais são as cinco principais atividades de um sistema operacional em relação à gerência de processos?

Resposta:

� A criação e a exclusão de processos do sistema e do usuário.

� A suspensão e a retomada de processos.

� A provisão de mecanismos para o sincronismo de processo.

� A provisão de mecanismos para a comunicação entre processos.

� A provisão de mecanismos para o tratamento de deadlock.

3.2 Quais são as três principais atividades de um sistema operacional em relação à gerência de memória?

Resposta:

� Acompanhar quais partes da memória estão atualmente sendo usadas e por quem.

� Decidir quais processos devem ser carregados para a memória quando o espaço na memória setornar disponível.

� Alocar e desalocar o espaço de memória conforme a necessidade.

3.3 Quais são as três principais atividades de um sistema operacional em relação à gerência do armaze-namento secundário?

Resposta:

� Gerência de espaço livre.

� Alocação de armazenamento.

� Escalonamento de disco.

Page 13: FSO - Questões

3.4 Quais são as cinco principais atividades de um sistema operacional em relação à gerência de arquivos?

Resposta:

� A criação e a exclusão de arquivos.

� A criação e a exclusão de diretórios.

� O suporte de primitivas para manipulação de arquivos e diretórios.

� O mapeamento de arquivos no armazenamento secundário.

� O backup de arquivos em meio de armazenamento estável (não volátil).

3.5 Qual é a finalidade do interpretador de comandos? Por que ele normalmente é separado do kernel?

Resposta: Ele lê comandos do usuário ou de um arquivo de comandos e os executa, normalmentetransformando-os em uma ou mais chamadas de sistema. Normalmente ele não faz parte do kernel,pois o interpretador de comandos está sujeito a mudanças.

3.6 Relacione cinco serviços fornecidos por um sistema operacional. Explique como cada um oferececonveniência aos usuários. Em que casos seria impossível que os programas no nível do usuário ofe-recessem esses serviços? Explique.

Resposta:

� Execução de programa. O sistema operacional carrega o conteúdo (ou seções) de um arquivopara a memória e inicia sua execução. Um programa em nível de usuário poderia não ser confiá-vel para alocar devidamente o tempo de CPU.

� Operações de E/S. Discos, fitas, linhas seriais e outros dispositivos precisam ter comunicação emum nível muito baixo. O usuário só precisa especificar o dispositivo e a operação que atuará sobreele, enquanto o sistema converte essa requisição em comandos específicos do dispositivo ou con-trolador. Não se pode confiar que os programas no nível do usuário acessarão apenas os dispositi-vos aos quais devem ter acesso e que somente os acessarão quando não estiverem sendo usados.

� Manipulação do sistema de arquivos. Existem muitos detalhes na criação, exclusão, alocação enomeação de arquivos que os usuários não terão de realizar. Os blocos de espaço no disco sãousados por arquivos e precisam ser rastreados. A exclusão de um arquivo exige a remoção das in-formações do arquivo de nomes e a liberação dos blocos alocados. As proteções também precisamser verificadas para garantir o acesso apropriado ao arquivo. Os programas do usuário não pode-riam garantir a aderência aos métodos de proteção, nem se pode confiar neles para alocar apenasblocos livres e desalocar blocos na exclusão do arquivo.

� Comunicações. A troca de mensagens entre os sistemas requer que as mensagens sejam transfor-madas em pacotes de informação, enviadas ao controlador de rede, transmitidas por um meio decomunicação e remontadas pelo sistema de destino. É preciso que haja ordem nos pacotes e cor-reção de dados. Novamente, os programas do usuário não poderiam coordenar o acesso ao dis-positivo da rede, ou então poderiam receber pacotes destinados a outros processos.

� Detecção de erros. A detecção de erros ocorre nos níveis de hardware e de software. No nível dehardware, todas as transferências de dados precisam ser inspecionadas para garantir que os dadosnão tenham sido adulterados em trânsito. Todos os dados na mídia precisam ser verificados paragarantir que não sejam alterados desde que foram gravados na mídia. No nível de software, a mídiaprecisa ser verificada em busca da consistência dos dados; por exemplo, se a quantidade de blocosde armazenamento alocados e não alocados combina com a quantidade total no dispositivo. Os er-ros são constantemente independentes do processo (por exemplo, a adulteração dos dados em umdisco), de modo que é preciso haver um programa global (o sistema operacional) que trate de todosos tipos de erros. Além disso, processando os erros pelo sistema operacional, os processos não pre-cisam conter código para apanhar e corrigir todos os erros possíveis em um sistema.

10 Capítulo 3 Estruturas do sistema operacional ELSEVIER

Page 14: FSO - Questões

3.7 Qual é a finalidade das chamadas de sistema?

Resposta: As chamadas de sistema permitem que os processos no nível do usuário solicitem serviçosdo sistema operacional.

3.8 Usando chamadas de sistema, escreva um programa em C ou C++ que leia dados de um arquivo eos copie para outro arquivo. Esse programa foi descrito na Seção 3.3.

Resposta: Sem resposta proposta.

3.9 Por que Java oferece a capacidade de chamar, de um programa Java, métodos nativos que são escri-tos, digamos, em C ou C++? Dê um exemplo em que um método nativo é útil.

Resposta: Os programas em Java têm como finalidade ser independentes da E/S da plataforma. Por-tanto, a linguagem não oferece acesso aos recursos mais específicos do sistema, como a leitura de dis-positivos de E/S ou portas. Para realizar uma operação específica de E/S do sistema, você precisa escre-vê-la em uma linguagem que admita tais recursos (como C ou C++). Lembre-se de que um programaJava que chama um método nativo escrito em outra linguagem não terá mais arquitetura neutra.

3.10 Qual é a finalidade dos programas de sistema?

Resposta: Os programas de sistema podem ser considerados como pacotes de chamadas de sistemaúteis. Eles oferecem a funcionalidade básica para os usuários, e por isso os usuários não precisam es-crever seus próprios programas para solucionar problemas comuns.

3.11 Qual é a principal vantagem da técnica em camadas para o projeto do sistema?

Resposta: Como em todos os casos de projeto modular, o projeto de um sistema operacional de umaforma modular possui diversas vantagens. O sistema é mais fácil de depurar e modificar, pois as mu-danças afetam apenas seções limitadas do sistema, em vez de tocar em todas as seções do sistemaoperacional. As informações são mantidas apenas onde são necessárias e são acessíveis apenas den-tro de uma área definida e restrita, de modo que quaisquer bugs que afetam esses dados precisam serlimitados a um módulo ou camada específica.

3.12 Qual é a principal vantagem da técnica de microkernel para o projeto do sistema?

Resposta: Os benefícios normalmente incluem o seguinte: (a) acrescentar um novo serviço não exi-ge modificação do kernel, (b) é mais seguro, à medida que mais operações são feitas no modo usuá-rio do que no modo kernel, e (c) projeto e funcionalidade de kernel mais simples normalmente re-sultam em um sistema operacional mais confiável.

3.13 Qual é a principal vantagem para um projetista de sistema operacional em usar uma arquitetura demáquina virtual? Qual é a principal vantagem para um usuário?

Resposta: O sistema é mais fácil de depurar e os problemas de segurança são fáceis de solucionar. Asmáquinas virtuais também oferecem uma boa plataforma para a pesquisa do sistema operacional,pois muitos sistemas operacionais diferentes podem ser executados em um sistema físico.

3.14 Por que um compilador just-in-time é útil para a execução de programas Java?

Resposta: Java é uma linguagem interpretada. Isso significa que a JVM interpreta as instruções docódigo de bytes uma por vez. Normalmente, a maioria dos ambientes interpretados é mais lenta doque a execução de binários nativos, pois o processo de interpretação exige a conversão de cada ins-trução em um código da máquina nativa. Um compilador just-in-time (JIT) compila o código debytes para um método e gera o código da máquina nativa na primeira vez que o método for encon-trado. Isso significa que o programa Java está basicamente executando como uma aplicação nativa(naturalmente, o processo de conversão do compilador JIT também leva tempo, mas não tanto

Exercícios 11

Page 15: FSO - Questões

quanto a interpretação do código de bytes). Além do mais, o compilador JIT coloca o código compi-lado em cache, de modo que ele possa ser reutilizado da próxima vez que o método for encontrado.Um programa Java executado pelo compilador JIT, ao invés do interpretador tradicional, normal-mente é executado muito mais rapidamente.

3.15 Por que a separação do mecanismo e da política é desejável?

Resposta: Mecanismo e política precisam ser separados para garantir que os sistemas sejam fáceis demodificar. Duas instalações do sistema nunca são iguais, de modo que cada instalação pode quererse ajustar ao sistema operacional para atender suas necessidades. Com a separação entre mecanismoe política, a política pode ser alterada à vontade, enquanto o mecanismo permanece inalterado. Essearranjo ocasiona um sistema mais flexível.

3.16 O sistema operacional experimental Synthesis possui um assembler incorporado dentro do kernel.Para otimizar o desempenho da chamada de sistema, o kernel monta rotinas dentro do seu espaçopara diminuir o caminho que a chamada de sistema precisa percorrer no kernel. Essa técnica é a antí-tese da técnica em camadas, em que o caminho pelo kernel é estendido para facilitar a montagem dosistema operacional. Discuta os prós e os contras da técnica do Synthesis para o projeto do kernel e aotimização do desempenho do sistema.

Resposta: O Synthesis é impressionante devido ao desempenho que ele alcança através da compila-ção on-the-fly. Infelizmente, é difícil depurar problemas dentro do kernel, devido à fluidez do códi-go. Além disso, tal compilação é específica do sistema, tornando o Synthesis difícil de ser portado (épreciso escrever um novo compilador para cada arquitetura).

3.17 Por que alguns sistemas armazenam o sistema operacional em firmware e outros em disco?

Sem resposta proposta

3.18 Como um sistema poderia ser projetado para permitir uma escolha dos sistemas operacionais quedarão boot? O que o programa de boot precisaria fazer?

Sem resposta proposta

12 Capítulo 3 Estruturas do sistema operacional ELSEVIER

Page 16: FSO - Questões

C A P Í T U L O 4

Gerência de processos

Neste capítulo, apresentamos os conceitos de um processo e execução simultânea; esses conceitos são a basedos sistemas operacionais modernos. Um processo é um programa em execução e é a unidade de trabalho deum sistema de tempo compartilhado moderno. Tal sistema consiste em uma coleção de processos: proces-sos do sistema operacional executando código do sistema e processos do usuário executando código dousuário. Todos esses processos podem ser executados potencialmente de forma concorrente, com a CPU(ou CPUs) multiplexando entre eles. Comutando a CPU entre os processos, o sistema operacional pode tor-nar o computador mais produtivo. Também apresentamos a noção de uma thread (processo leve) e comuni-cação entre processos (IPC). As threads são discutidas com mais detalhes no Capítulo 5.

Exercícios4.1 O sistema operacional Palm OS não oferece uma forma de processamento concorrente. Discuta três

complicações importantes que o processamento concorrente acrescenta a um sistema operacional.

Resposta:

� Um método de compartilhamento de tempo precisa ser implementado para permitir que cada umdos diversos processos tenha acesso ao sistema. Esse método envolve a preempção dos processosque não desistem voluntariamente da CPU (usando uma chamada de sistema, por exemplo) e okernel ser reentrante (para que mais de um processo possa estar executando código do kernelconcorrentemente).

� Os processos e recursos do sistema precisam ter proteções e precisam ser protegidos um do outro.Qualquer processo precisa ser limitado na quantidade de memória que pode usar e nas operaçõesque pode realizar sobre os dispositivos, como os discos.

� Deve-se ter o cuidado no kernel de prevenir deadlocks entre processos, de modo que os processosnão estejam aguardando pelos recursos alocados um do outro.

4.2 Descreva as diferenças entre o escalonamento de curto prazo, médio prazo e longo prazo.

Resposta:

� Curto prazo (escalonador de CPU) – seleciona as tarefas na memória cujas tarefas não estejamprontas para execução e aloca a CPU para elas.

Page 17: FSO - Questões

� Médio prazo – usado especialmente com sistemas de tempo compartilhado, como um nível de escalo-namento intermediário. Um esquema de swap é implementado para retirar da memória programasparcialmente executados e reinstanciá-los mais tarde, a fim de continuar a partir de onde pararam.

� Longo prazo (escalonador de tarefa) – determina quais tarefas são trazidas para a memória, paraprocessamento.

A diferença principal está na freqüência de sua execução. O escalonamento de curto prazo precisaselecionar um novo processo com muita freqüência. O de longo prazo é usado muito menos fre-qüentemente, pois trata de colocar tarefas no sistema e pode esperar até que uma tarefa termine, an-tes de admitir outra.

4.3 O processador UltraSPARC da Sun possui vários conjuntos de registradores. Descreva as ações deuma troca de contexto se o novo contexto já estiver carregado em um dos conjuntos de registrado-res. O que mais deverá acontecer se o novo contexto estiver na memória, e não em um conjunto deregistradores, e todos os conjuntos estiverem em uso?

Resposta: O ponteiro do conjunto de registradores atual da CPU é alterado para apontar para o con-junto contendo o novo contexto, o que leva muito pouco tempo. Se o contexto estiver na memória, umdos contextos em um conjunto de registradores precisa ser escolhido e movido para a memória, e onovo contexto precisa ser carregado da memória para o conjunto. Esse processo leva um pouco maisde tempo do que em sistemas com um conjunto de registradores, dependendo de como é seleciona-da uma vítima para substituição.

4.4 Descreva as ações tomadas por um kernel para a troca de contexto entre os processos.

Resposta: Em geral, o sistema operacional precisa salvar o estado do processo correntemente emexecução e restaurar o estado do processo escalonado para ser executado em seguida. Salvar o esta-do de um processo normalmente inclui os valores de todos os registradores da CPU, além da aloca-ção de memória. As trocas de contexto também precisam realizar muitas operações específicas daplataforma, incluindo o esvaziamento de caches de dados e instruções.

4.5 Quais são os benefícios e as desvantagens de cada um dos seguintes? Considere os níveis tanto do sis-tema quanto do programador.

a. Comunicação síncrona e assíncrona.b. Buffer automático e explícito.c. Enviar por cópia e enviar por referência.d. Mensagens de tamanho fixo e de tamanho variável.

Resposta:a. Comunicação síncrona e assíncrona – Um benefício da comunicação síncrona é que ela permite

um encontro entre o emissor e o receptor. Uma desvantagem de um envio com bloqueio é que umponto de encontro pode não ser exigido e a mensagem poderia ser entregue de forma assíncrona,recebida em um ponto de nenhum interesse ao emissor. Como resultado, os sistemas de troca demensagem normalmente oferecem as duas formas de sincronismo.

b. Buffer automático e explícito – O buffer automático oferece uma fila com tamanho indefinido,garantindo assim que o emissor nunca terá de bloquear enquanto espera para copiar uma mensa-gem. Não existem especificações de como o buffer automático será fornecido; um esquema podereservar uma memória suficientemente grande, na qual grande parte da memória é desperdiçada.O buffer explícito especifica o tamanho do buffer. Nessa situação, o emissor pode ser bloqueadoenquanto espera pelo espaço disponível na fila. Porém, há menos probabilidade de que a memó-ria seja desperdiçada com o buffer explícito.

14 Capítulo 4 Gerência de processos ELSEVIER

Page 18: FSO - Questões

c. Enviar por cópia e enviar por referência – Enviar por cópia não permite que o receptor altere oestado do parâmetro; enviar por referência permite isso. Um benefício de enviar por referência éque permite que o programador escreva uma versão distribuída de uma aplicação centralizada. ARMI da Java oferece ambos, porém, a passagem de um parâmetro por referência exige a declara-ção do parâmetro também como um objeto remoto.

d. Mensagens de tamanho fixo e de tamanho variável – As implicações disso estão relacionadas, namaioria da vezes, a aspectos da bufferização; com mensagens de tamanho fixo, um buffer com ta-manho específico pode manter uma quantidade de mensagens conhecida. A quantidade de men-sagens de tamanho variável que podem ser mantidas por esse buffer é desconhecida. Considere aforma como o Windows 2000 trata dessa situação: com mensagens de tamanho fixo (qualquercoisa < 256 bytes), as mensagens são copiadas do espaço de endereços do emissor para o espaçode endereços do processo receptor. Mensagens maiores (ou seja, mensagens de tamanho variá-vel) utilizam memória compartilhada para passar a mensagem.

4.6 Considere o mecanismo de RPC. Descreva as circunstâncias indesejáveis que poderiam surgir se nãohouver imposição da semântica “no máximo uma vez” ou “exatamente uma vez”. Descreva possíve-is usos para um mecanismo que não tenha nenhuma dessas garantias.

Resposta: Sem resposta proposta.

4.7 Novamente considerando o mecanismo de RPC, considere a semântica “exatamente uma vez”. Oalgoritmo para implementar essa semântica é executado corretamente mesmo que a mensagem“ACK” de volta ao cliente for perdida devido a um problema na rede? Descreva a seqüência de men-sagens e se o esquema “exatamente uma vez” ainda é preservado.

Resposta: Sem resposta proposta.

4.8 Modifique o servidor de data, mostrado na Figura 4.18, de modo que ele ofereça números de sortealeatórios em uma linha, em vez da data atual.

Resposta: Sem resposta proposta.

4.9 O algoritmo correto de produtor-consumidor, na Seção 4.4, permite que apenas n – 1 buffers este-jam cheios ao mesmo tempo. Modifique o algoritmo para permitir que todos os buffers sejam utili-zados totalmente.

Resposta: Sem resposta proposta.

4.10 Considere o esquema de comunicação entre processos em que são usadas caixas de correio.

a. Suponha que um processo P queira esperar por duas mensagens, uma da caixa de correio A e umada caixa de correio B. Que seqüência de send e receive ele deverá executar?

b. Que seqüência de send e receive P deverá executar se quiser esperar por uma mensagem da caixade correio A ou da caixa de correio B (ou de ambas)?

c. Uma operação receive realiza uma espera do processo até que a caixa de correio não esteja vazia.Crie um esquema que permita que um processo espere até que uma caixa de correio esteja vazia,ou explique por que tal esquema não pode existir.

Resposta: Sem resposta proposta.

4.11 Escreva um servidor de números de sorte baseado em socket. Seu programa deverá criar um servidorque escuta em uma porta especificada. Quando um cliente recebe uma conexão, o servidor deve res-ponder com um número de sorte escolhido a partir do seu banco de dados de números de sorte.

Resposta: Sem resposta proposta.

Exercícios 15

Page 19: FSO - Questões

C A P Í T U L O 5

Threads

O modelo de processo apresentado no Capítulo 4 assumiu que um processo era um programa em execu-ção com uma única thread de controle. Muitos sistemas operacionais modernos agora provêem recursospara um processo conter várias threads de controle. Esse capítulo apresenta muitos conceitos associadosaos computadores multithreads, explicando como usar Java para criar e manipular threads. Descobrimosque é especialmente útil discutir como uma thread Java é mapeado no modelo de thread do sistema opera-cional host.

Exercícios5.1 Forneça dois exemplos de programação em que o uso de multithreads oferece melhor desempenho

do que uma solução com única thread.

Resposta: (1) Um servidor Web que atende a cada requisição em uma thread separada. (2) Uma apli-cação paralelizada, como uma multiplicação de matriz em que diferentes partes da matriz podem seratuadas em paralelo. (3) Um programa GUI interativo, como um depurador em que uma thread éusada para monitorar a entrada do usuário, outra thread representa a aplicação em execução e umaterceira thread monitora o desempenho.

5.2 Forneça dois exemplos de programação em que o uso de multithreads não oferece melhor desempe-nho do que uma solução com uma única thread.

Resposta: (1) Qualquer tipo de programa seqüencial não é um bom candidato para usar threads. Umexemplo disso é um programa para calcular a devolução de imposto de renda individual. (2) Outroexemplo é um programa de “shell”, como o C-shell ou o Korn shell. Esse tipo de programa precisamonitorar de perto seu próprio espaço de trabalho, como arquivos abertos, variáveis de ambiente ediretório de trabalho atual.

5.3 Cite duas diferenças entre as threads no nível do usuário e threads no nível do kernel. Sob que cir-cunstâncias um tipo é melhor que o outro?

Resposta: (1) As threads no nível do usuário são desconhecidas pelo kernel, enquanto o kernel estáciente das threads do kernel. (2) As threads do usuário são escalonadas pela biblioteca de threads e okernel escalona as threads do kernel. (3) As threads do kernel não precisam estar associadas a umprocesso, enquanto cada thread do usuário pertence a um processo.

Page 20: FSO - Questões

5.4 Descreva as ações tomadas por um kernel para a troca de contexto entre as threads no nível dokernel.

Resposta: A troca de contexto entre as threads do kernel normalmente exige salvar o valor dos re-gistradores da CPU da thread que está saindo e restaurar os registradores da CPU da nova threadque está sendo escalonada.

5.5 Descreva as ações tomadas por uma biblioteca de threads para a troca de contexto entre threads nonível do usuário.

Resposta: A troca de contexto entre as threads do usuário é bem semelhante à troca entre as threadsdo kernel, embora seja dependente da biblioteca de threads e de como ela mapeia as threads dousuário em threads do kernel. Em geral, a troca de contexto entre as threads do usuário envolve pe-gar uma thread do usuário do seu LWP e substituí-la por outra thread. Essa ação normalmente en-volve salvar e restaurar o estado dos registradores.

5.6 Que recursos são usados quando uma thread é criada? Como eles diferem daqueles usados quandoum processo é criado?

Resposta: Como uma thread é menor do que um processo, a criação de thread normalmente utilizamenos recursos do que a criação de um processo. A criação de um processo exige a alocação de umbloco de controle de processo (PCB), uma estrutura de dados um tanto grande. O PCB inclui ummapa de memória, uma lista de arquivos abertos e variáveis de ambiente. A alocação e o gerencia-mento do mapa de memória normalmente é a atividade mais demorada. A criação de uma thread dousuário ou do kernel envolve a alocação de uma estrutura de dados pequena para manter um con-junto de registradores, pilha e prioridade.

5.7 Suponha que um sistema operacional mapeie threads no nível do usuário no kernel usando o mode-lo muitos-para-muitos, no qual o mapeamento é feito através de LWPs. Além disso, o sistema permi-te que os desenvolvedores criem threads de tempo real. É necessário associar uma thread de temporeal a um LWP? Explique.

Resposta: Sim. A temporização é fundamental para aplicações de tempo real. Se uma thread formarcada como tempo real, mas não estiver ligada a um LWP, a thread pode ter de esperar para serconectada a um LWP antes de sua execução. Considere se uma thread de tempo real está execu-tando (está conectado a um LWP) e depois bloqueie (ou seja, precisa realizar E/S, foi preemptadopor uma thread de tempo real de maior prioridade, está esperando por um lock de exclusão mútuaetc.). Enquanto a thread de tempo real está bloqueada, o LWP ao qual foi conectado foi atribuídoa outra thread. Quando a thread de tempo real tiver sido escalonada para executar novamente,primeiro terá de esperar para ser conectada a um LWP. Vinculando um LWP a uma thread de tem-po real, você está garantindo que a thread poderá ser executada com um mínimo de atraso depoisde escalonada.

5.8 Um programa Pthreads que realiza a função de somatório foi mostrado na Seção 5.4. Reescreva esseprograma em Java.

Resposta: Sem resposta proposta.

5.9 Escreva um programa Java ou Pthreads multithreaded, que gere a seqüência de Fibonacci. Esse pro-grama deverá atuar da seguinte maneira: o usuário executará o programa e informará na linha decomandos a quantidade de números de Fibonacci que o programa terá de gerar. O programa, então,criará uma thread separada, que gerará os números da seqüência de Fibonacci.

Resposta: Sem resposta proposta.

Exercícios 17

Page 21: FSO - Questões

5.10 Escreva um programa Java ou Pthreads multithreaded, que gere números primos. Esse programa de-verá atuar da seguinte maneira: o usuário executará o programa e informará um número na linha decomandos. O programa, então, criará uma thread separada, que gerará todos os números primosmenores ou iguais ao número que o usuário digitou.

Resposta: Sem resposta proposta.

5.11 Escreva um programa em Java ou Pthreads multithreaded, que realize a multiplicação de matriz.Especificamente, use duas matrizes, A e B, onde A é uma matriz com M linhas e K colunas, e a matrizB contém K linhas e N colunas. A matriz produto de A e B é C, onde C contém M linhas e N colunas.A entrada na matriz C para a linha i coluna j (Ci,j) é a soma dos produtos dos elementos para a linha ina matriz A e coluna j na matriz B. Ou seja,

C A Bi j i nn

K

n j, , ,� ��

�1

Por exemplo, se A fosse uma matriz 3 por 2 e B fosse uma matriz 2 por 3, o elemento C3,1 seria asoma de A3,1 × B1,1 e A3,2 × B2,1. Calcule cada elemento Ci,j em uma thread separada. Isso envolveráa criação de M × N threads.

Resposta: Sem resposta proposta.

5.12 Modifique o servidor de data baseado em socket, do Capítulo 4, de modo que o servidor atenda arequisição de cada cliente em uma thread separada.

Resposta: Sem resposta proposta.

18 Capítulo 5 Threads ELSEVIER

Page 22: FSO - Questões

C A P Í T U L O 6

Escalonamento de CPU

O escalonamento de CPU é a base dos sistemas operacionais multiprogramados. Comutando a CPU entre osprocessos, o sistema operacional pode tornar o computador mais produtivo. Neste capítulo, introduzimosos conceitos básicos de escalonamento e discutimos bastante sobre o escalonamento de CPU. Os alunos jádeverão estar familiarizados com os algoritmos de escalonamento FCFS, SJF, Round-Robin, Prioridade eoutros. Essa é sua primeira exposição à idéia de alocação e escalonamento de recursos, de modo que é im-portante que eles entendam como isso é feito. Gráficos de Gantt, simulações e testes são formas valiosas deincutir as idéias. Mostre como as idéias são usadas em outras situações (como esperar em uma fila do cor-reio, o compartilhamento de tempo de um garçom entre os clientes, até mesmo as aulas sendo um escalo-namento Round-Robin intercalado de professores).

Um projeto simples é escrever vários escalonadores de CPU diferentes e comparar seu desempenho porsimulação. A fonte dos bursts de CPU e E/S podem ser gerados por geradores de números aleatórios ou poruma fita de rastreamento. O professor pode criar a fita de rastreamento com antecedência, para oferecer osmesmos dados para todos os alunos. O arquivo que usei foi um conjunto de tarefas, cada uma sendo um nú-mero variável de bursts alternados de CPU e E/S. Na primeira linha de uma tarefa estava a palavra JOB e onúmero da tarefa. Uma seqüência alterada de n linhas de CPU e n linhas de E/S vinha em seguida, cada umaespecificando um tempo de burst. A tarefa era terminada por uma linha END com o número de tarefa nova-mente. Compare o tempo para processar um conjunto de tarefas usando o escalonamento FCFS, MenorTempo de Burst e escalonamento Round-Robin. O Round-Robin é mais difícil, pois exige a colocação de re-quisições não terminadas de volta à fila de prontos (ready queue).

Exercícios6.1 Um algoritmo de escalonamento de CPU determina a ordem para a execução de seus processos esca-

lonados. Dados n processos a serem escalonados em um processador, quantos escalonamentos pos-síveis existem? Dê uma fórmula em termos de n.

Resposta: n! (n fatorial = n × n – 1 × n – 2 × ... × 2 × 1)

6.2 Defina a diferença entre escalonamento preemptivo e não-preemptivo. Indique por que o escalona-mento não-preemptivo estrito provavelmente não será usado em um centro de computação.

Resposta: O escalonamento preemptivo permite que um processo seja interrompido no meio de suaexecução, afastando a CPU e alocando-a a outro processo. O escalonamento não-preemptivo garanteque um processo abandonará o controle da CPU somente quando terminar com seu burst de CPU atual.

Page 23: FSO - Questões

6.3 Considere o seguinte conjunto de processos, com o tamanho do tempo de burst de CPU dado emmilissegundos:

Processo Tempo de burst Prioridade

P1 10 3

P2 1 1

P3 2 3

P4 1 4

P5 5 2

Considere que os processos chegaram na ordem P1, P2, P3, P4, P5, todos no momento 0.

a. Desenhe quatro gráficos de Gantt que ilustrem a execução desses processos usando FCFS, SJF,uma prioridade não-preemptiva (um número de prioridade menor significa uma prioridade maisalta) e o escalonamento RR (quantum = 1).

b. Qual é o turnaround de cada processo para cada um dos algoritmos de escalonamento no item a?c. Qual é o tempo de espera de cada processo para cada um dos algoritmos de escalonamento no

item a?d. Qual dos escalonamentos no item a resulta no menor tempo de espera médio (em relação a todos

os processos)?

Resposta:a. Os quatro gráficos de Gantt são

1 2 3 4 5 FEFS

1 2 3 4 5 1 3 5 1 5 1 5 1 5 1 RR

2 4 3 5 1 SJF

2 5 1 3 4 Prioridade

b. Turnaround

FCFS RR SJF Prioridade

P1 10 19 19 16

P2 11 2 1 1

P3 13 7 4 18

P4 14 4 2 19

P5 19 14 9 6

20 Capítulo 6 Escalonamento de CPU ELSEVIER

Page 24: FSO - Questões

c. Tempo de espera (turnaround menos tempo de burst)

FCFS RR SJF Prioridade

P1 0 9 9 6

P2 10 1 0 0

P3 11 5 2 16

P4 13 3 1 18

P5 14 9 4 1

d. Shortest Job First

6.4 Suponha que os seguintes processos cheguem para execução nos momentos indicados. Cada proces-so será executado pela quantidade de tempo indicada. Ao responder as perguntas, use o escalona-mento não-preemptivo, e baseie todas as decisões nas informações que você tem no momento emque a decisão deve ser tomada.

Processo Tempo de chegada Tempo de burst

P1 0,0 8

P2 0,4 4

P3 1,0 1

a. Qual é o turnaround médio para esses processos com o algoritmo de escalonamento FCFS?b. Qual é o turnaround médio para esses processos com o algoritmo de escalonamento SJF?c. O algoritmo SJF deveria melhorar o desempenho, mas observe que escolhemos executar o pro-

cesso P1 no momento 0 porque não sabíamos que dois outros processos mais curtos chegariamem breve. Calcule qual será o turnaround médio se a CPU ficar ociosa para a primeira 1 unidade edepois o escalonamento SJF for utilizado. Lembre-se de que os processos P1 e P2 estão aguardan-do durante esse tempo ocioso, de modo que seu tempo de espera poderá aumentar. Esse algorit-mo poderia ser conhecido como escalonamento por conhecimento do futuro.

Resposta:a. 10,53b. 9,53c. 6,86

Lembre-se de que o turnaround é o tempo de término menos o tempo de chegada, de modo quevocê precisa subtrair os tempos de chegada para calcular os turnarounds. FCFS é 11 se você se es-quecer de subtrair o tempo de chegada.

6.5 Considere uma variante do algoritmo de escalonamento RR, em que as entradas na fila de prontossão ponteiros para os PCBs.

a. Qual seria o efeito de colocar dois ponteiros para o mesmo processo na fila de prontos?b. Quais seriam as vantagens e desvantagens mais importantes desse esquema?c. Como você modificaria o algoritmo RR básico para conseguir o mesmo efeito sem os ponteiros

duplicados?

Resposta:a. Esse processo terá aumentado sua prioridade, pois ao obter tempo com mais freqüência ele está

recebendo tratamento preferencial.

Exercícios 21

Page 25: FSO - Questões

b. A vantagem é que tarefas mais importantes poderiam receber mais tempo, em outras palavras,maior prioridade no tratamento. A conseqüência, naturalmente, é que tarefas menores sofrerãomais.

c. Distribui uma quantidade de tempo maior para os processos que merecem maior prioridade. Emoutras palavras, tenha dois ou mais quantums possíveis no esquema Round-Robin.

6.6 Que vantagem existe em ter diferentes tamanhos de quantum de tempo em diferentes níveis de umsistema de enfileiramento multinível?

Resposta: Os processos que precisam de atendimento mais freqüente, por exemplo, processos inte-rativos como os editores, podem estar em uma fila com um quantum de tempo pequeno. Os proces-sos sem necessidade de atendimento mais freqüente podem estar em uma fila com um quantummaior, exigindo menos trocas de contexto para completar o processamento, criando um uso maiseficiente do computador.

6.7 Considere o seguinte algoritmo de escalonamento por prioridade preemptiva, baseado em priorida-des alteradas dinamicamente. Números de prioridade maiores implicam em prioridade mais alta.Quando um processo está esperando pela CPU (na fila de prontos, mas não em execução), sua prio-ridade muda a uma taxa �; quando está executando, sua prioridade muda a uma taxa �. Todos osprocessos recebem uma prioridade 0 quando entram na fila de prontos. Os parâmetros � e � podemser definidos para dar muitos algoritmos de escalonamento diferentes.

a. Qual é o algoritmo que resulta de �> � > 0?b. Qual é o algoritmo que resulta de � < �< 0?

Resposta:a. FCFSb. LIFO

6.8 Muitos algoritmos de escalonamento de CPU são parametrizados. Por exemplo, o algoritmo RR re-quer um parâmetro para indicar a fatia de tempo. As filas multinível com feedback exigem parâme-tros para definir o número de filas, os algoritmos de escalonamento para cada fila, os critérios usa-dos para mover processos entre filas, e assim por diante.

Esses algoritmos são, na realidade, conjuntos de algoritmos (por exemplo, o conjunto de algoritmosRR para todas as fatias de tempo, e assim por diante). Um conjunto de algoritmos pode incluir outro(por exemplo, o algoritmo FCFS é o algoritmo RR com um quantum de tempo infinito). Que rela-ção (se houver alguma) permanece entre os seguintes pares de conjuntos de algoritmos?a. Prioridade e SJFb. Filas multinível com feedback e FCFSc. Prioridade e FCFSd. RR e SJF

Resposta:a. A tarefa mais curta tem a prioridade mais alta.b. O menor nível de MLFQ é FCFS.c. FCFS oferece prioridade mais alta para a tarefa que existe há mais tempo.d. Nenhuma.

6.9 Suponha que um algoritmo de escalonamento (no nível de escalonamento de CPU de curto prazo) fa-vorece os processos que têm usado o menor tempo do processador no passado recente. Por que essealgoritmo favorece programas I/O-Bound e não causa starvation permanente nos programasCPU-Bound?

22 Capítulo 6 Escalonamento de CPU ELSEVIER

Page 26: FSO - Questões

Resposta: Ele favorecerá os programas I/O-Bound por causa da requisição de burst de CPU relativa-mente curta por parte deles; os programas CPU-Bound não sofrerão starvation porque os progra-mas I/O-Bound abrirão mão da CPU com relativa freqüência para realizar sua E/S.

6.10 Explique as diferenças no grau ao qual os algoritmos de escalonamento a seguir são discriminadosem favor de processos curtos:

a. FCFSb. RRc. Multilevel feedback queues

Resposta:a. FCFS – discrimina tarefas curtas, pois quaisquer tarefas curtas que chegam após tarefas longas te-

rão um tempo de espera mais longo.b. RR – trata todas as tarefas igualmente (dando-lhes bursts iguais de tempo de CPU), de modo que

as tarefas curtas poderão sair do sistema mais rapidamente, pois terminarão primeiro.c. Multilevel feedback queues – funcionam de modo semelhante ao algoritmo RR – elas discrimi-

nam em favor de tarefas curtas.

6.11 Explique a distinção entre o escalonamento PCX e SCS.

Resposta: Sem resposta proposta.

6.12 Considere que um sistema operacional associe threads no nível do usuário ao kernel usando o mo-delo muitos-para-muitos, no qual o mapeamento é feito através do uso de LWPs. Além disso, o siste-ma permite que os desenvolvedores de programas criem threads de tempo real. É necessário vincu-lar uma thread de tempo real a um LWP?

Resposta: Sem resposta proposta.

6.13 Usando o algoritmo de escalonamento do Windows XP, qual é a prioridade numérica de umathread para os cenários a seguir?

a. Uma thread na REALTIME_PRIORITY_CLASS com uma prioridade relativa HIGHEST.

Resposta: Sem resposta propostab. Uma thread na NORMAL_PRIORITY_CLASS com uma prioridade relativa NORMAL.

Resposta: Sem resposta propostac. Uma thread na HIGH_PRIORITY_CLASS com uma prioridade relativa ABOVE_NORMAL.

Resposta: Sem resposta proposta.

6.14 Considere o algoritmo de escalonamento no sistema operacional Solaris para as threads de tempocompartilhado:

a. Qual é o quantum de tempo (em milissegundos) para uma thread com prioridade 10? E com prio-ridade 55?

Resposta: Sem resposta proposta.b. Considere que uma thread com prioridade 35 tenha usado seu quantum de tempo inteiro sem

bloqueio. Que nova prioridade o escalonador atribuirá a essa thread?

Resposta: Sem resposta proposta.c. Considere que uma thread com prioridade 35 é bloqueada para E/S antes que seu quantum de

tempo tenha se esgotado. Que nova prioridade o escalonador atribuirá a essa thread?

Resposta: Sem resposta proposta.

Escalonamento de CPU 23

Page 27: FSO - Questões

C A P Í T U L O 7

Sincronismo de processos

O Capítulo 7 trata do tópico de sincronismo de processo entre processos executando concorrentemente.Geralmente é difícil para os alunos lidarem com a concorrência de forma correta, e por isso tentamos apre-sentá-la juntamente com os problemas clássicos de coordenação de processos: exclusão mútua, bounded-buffer, leitores/escritores e assim por diante. Um entendimento desses problemas e suas soluções faz parteda atual teoria e do desenvolvimento de sistemas operacionais.

Primeiro, usamos semáforos e monitores para apresentar as técnicas de sincronismo. Em seguida, o sin-cronismo em Java é apresentado para demonstrar adicionalmente uma técnica de sincronismo baseada emlinguagem.

Exercícios7.1 Qual é o significado do termo espera ocupada? Que outros tipos de espera existem em um sistema

operacional? A espera ocupada pode ser completamente evitada? Explique sua resposta.

Resposta: A espera ocupada ocorre quando um processo está realizando um loop enquanto espera aocorrência de um evento externo. Ela é chamada espera ocupada porque o processo normalmenteestá em um loop tipo while(true);. Existem outros exemplos de espera ocupada em um sistema ope-racional: esperar até que a E/S esteja disponível, esperar até que um semáforo seja liberado etc. Sim,a espera ocupada pode ser evitada por meio de uma primitiva de sincronismo, como um mutex, se-máforo ou variável de condição.

7.2 Explique por que os spinlocks não são apropriados em sistemas monoprocessados, embora possamser adequados em sistemas multiprocessados.

Resposta: Em sistemas monoprocessados, os spinlocks são um desperdício de recursos do processa-dor, pois um processo exige o uso da única CPU enquanto espera por um evento externo. Na verda-de, o processo que está realizando o spinlock pode estar usando a CPU exigida por outro processopara realizar o evento externo, pelo qual o primeiro processo está aguardando. Em sistemas multi-processados, isso pode não acontecer, pois o segundo processo pode ser executado em outra CPU.Com freqüência, os spinlocks são usados em sistemas multiprocessados se o processo só utilizar ospinlock por um curto período de tempo. Ou seja, pode ser mais rápido para um processo ficar noloop de espera por um curto período de tempo do que bloquear o processo e depois desbloqueá-loquando o evento que ele está esperando tiver sido completado.

Page 28: FSO - Questões

7.3 Prove que, no algoritmo da padaria (Seção 7.2), a propriedade a seguir é verdadeira: se Pi está emsua seção crítica e Pk (k � i) já tiver escolhido seu number[k]� 0, então (number[i], i) < (number[k], k).

Resposta: Sem resposta proposta.

7.4 A primeira solução de software correta conhecida do problema da seção crítica para dois processosfoi desenvolvida por Dekker. Dois processos, P0 e P1, compartilham as seguintes variáveis:

boolean flag[2]; /* inicialmente falsa */int turn;

A estrutura do processo Pi (i == 0 ou 1), com Pj (i == 1 ou 0) sendo o outro processo, aparece na Fi-gura 7.27.

do {

flag[i] = true;while (flag[j]) {

if (turn == j) {flag[i] = false;while (turn == j);flag[i] = true;

}}

seção crítica

turn = j;flag[i] = false;

seção restante

} while (1);

F I G U R A 7 . 2 7 A estrutura do processo Pi no algoritmo de Dekker.

Prove que o algoritmo satisfaz a todos os três requisitos para o problema da seção crítica.

Resposta: Esse algoritmo satisfaz as três condições da exclusão mútua: (1) A exclusão mútua é ga-rantida por meio do uso das variáveis flag e turn. Se os dois processos definirem seu flag como true,somente um terá sucesso, a saber, o processo da vez. O processo aguardando só pode entrar em suaseção crítica quando o outro processo atualizar o valor de turn. (2) O progresso é fornecido, nova-mente, por meio das variáveis flag e turn. Esse algoritmo não oferece alternação estrita. Em vez dis-so, se um processo quiser acessar sua seção crítica, ele poderá definir sua variável flag como true eentrar em sua seção crítica. Ele apenas define turn como o valor do outro processo ao sair de sua se-ção crítica. Se esse processo quiser entrar em sua seção crítica novamente – antes do outro processo– ele repetirá o processo de entrada de sua seção crítica e definirá turn como o outro processo na saí-da. (3) A espera limitada é preservada por meio do uso da variável TTturn. Considere que os dois pro-cessos queiram entrar em suas respectivas seções críticas. Ambos definem seu valor de flag comotrue; porém, somente a thread da vez poderá prosseguir, e a outra espera. Se a espera limitada nãofosse preservada, seria possível que o processo aguardando esperasse indefinidamente enquanto oprimeiro processo entrasse – e saísse – repetidamente em sua seção crítica. Porém, o algoritmo deDekker faz com que um processo defina o valor de turn para o outro processo, garantindo assim queo outro processo entre em sua seção crítica em seguida.

Exercícios 25

Page 29: FSO - Questões

7.5 A primeira solução de software correta conhecida do problema da seção crítica para n processoscom um limite inferior na espera de n – 1 vezes foi representado por Eisenberg e McGuire. Os pro-cessos compartilham as seguintes variáveis:

enum pstate {idle, want in, in_cs};pstate flag[n];int turn;

Todos os elementos de flag são inicialmente idle; o valor inicial de turn é irrelevante (entre 0 e n-1).A estrutura do processo Pi aparece na Figura 7.28.

do {while(1) {

flag[i] = want_in;j = turn;while (j != i) {if (flag[j] != idle)

j = turn;else

j = (j+1) % n;}flag[i] = in_cs;j = 0;while ((j < n) && (j == i || flag[j] != in_cs))

j++;if ((j >= n) && (turn == i || flag[turn] == idle)) break;

}turn = i;

seção crítica

j = (turn+1) % n;while (flag[j] == idle)

j = (j+1) % n;turn = j;flag[i] = idle;

seção restante

} while (1);

F I G U R A 7 . 2 8 A estrutura do processo Pi no algoritmo de Eisenberg e McGuire.

Prove que o algoritmo satisfaz a todos os três requisitos para o problema da seção crítica.

Resposta: Sem resposta proposta.

7.6 Na Seção 7.3, mencionamos que a desativação de interrupções constantemente pode afetar o reló-gio do sistema. Explique por que isso acontece e como tais efeitos podem ser minimizados.

Resposta: O relógio do sistema é atualizado a cada interrupção de relógio. Se as interrupções fossemdesativadas – particularmente, por um longo período –, é possível que o relógio do sistema facilmenteperdesse a hora correta. O relógio do sistema também é usado para fins de escalonamento. Porexemplo, o quantum de tempo para um processo é expresso como uma quantidade de batidas do re-lógio. A cada interrupção do relógio, o escalonador determina se o quantum de tempo para o pro-

26 Capítulo 7 Sincronismo de processos ELSEVIER

Page 30: FSO - Questões

cesso atualmente em execução expirou. Se as interrupções de relógio fossem desativadas, o escalo-nador poderia não atribuir quantums de tempo com precisão. Esse efeito pode ser aliviado desati-vando-se as interrupções de relógio apenas por períodos muito curtos.

7.7 Mostre que, se as operações wait e signal não forem executadas de forma atômica, então a exclusãomútua poderá ser violada.

Resposta: Sem resposta proposta.

7.8 O Problema do Barbeiro Dormindo. Uma barbearia consiste em uma sala de espera com n cadeiras eum salão de barbeiro com uma cadeira. Se não houver clientes para serem atendidos, o barbeiro vaidormir. Se um cliente entrar na barbearia e todas as cadeiras estiverem ocupadas, então o cliente vaiembora. Se o barbeiro estiver ocupado, mas houver cadeiras disponíveis, então o cliente senta emuma das cadeiras vagas. Se o barbeiro estiver dormindo, o cliente acorda o barbeiro. Escreva umprograma para coordenar o barbeiro e os clientes.

Resposta: Sem resposta proposta.

7.9 O Problema dos Fumantes. Considere um sistema com três processos fumantes e um processo agen-te. Cada fumante continuamente enrola um cigarro e depois o fuma. Mas, para enrolar e fumar umcigarro, o fumante precisa de três ingredientes: tabaco, papel e fósforos. Um dos processos fumantestem papel, outro tem tabaco e o terceiro tem fósforos. O agente possui um estoque infinito de todosos três materiais. O agente coloca dois dos ingredientes na mesa. O fumante que possui o ingredien-te restante, então, enrola e fuma um cigarro, sinalizando para o agente quando terminar. O agente,então, coloca outros dois dos três ingredientes, e o ciclo se repete. Escreva um programa para sin-cronizar o agente e os fumantes.

Resposta: Sem resposta proposta.

7.10 Demonstre que monitores, regiões críticas condicionais e semáforos são todos equivalentes, ao pon-to de os mesmos tipos de problemas de sincronismos poderem ser implementados com eles.

Resposta: Sem resposta proposta.

7.11 Escreva um monitor de bounded-buffer em que os buffers (porções) estejam embutidos dentro dopróprio monitor.

Resposta: Sem resposta proposta.

7.12 A exclusão mútua estrita dentro de um monitor torna o monitor de bounded-buffer do Exercício7.11 adequado principalmente para pequenas porções.

a. Explique por que essa afirmação é verdadeira.b. Crie um novo esquema adequado para porções maiores.

Resposta: Sem resposta proposta.

7.13 Suponha que a instrução signal possa aparecer apenas como a última instrução em um procedimen-to de monitor. Sugira como a implementação descrita na Seção 7.7 pode ser simplificada.

Resposta: Sem resposta proposta.

7.14 Considere um sistema consistindo nos processos P1, P2, ..., Pn, cada um com um número de priorida-de exclusivo. Escreva um monitor que aloque três impressoras idênticas para esses processos, usan-do os números de prioridade para decidir a ordem de alocação.

Resposta: Sem resposta proposta.

Exercícios 27

Page 31: FSO - Questões

7.15 Um arquivo deve ser compartilhado entre diferentes processos, cada um com um número exclusivo.O arquivo pode ser acessado simultaneamente por vários processos, sujeito à seguinte restrição: asoma de todos os números exclusivos associados a todos os processos atualmente acessando o arqui-vo precisa ser menor que n. Escreva um monitor para coordenar o acesso ao arquivo.

Resposta: Sem resposta proposta.

7.16 Suponha que substituamos as operações wait e signal dos monitores por uma única construçãoawait(B), onde B é uma expressão Booleana geral que faz com que o processo que a executa espereaté que B se torne true.

a. Escreva um monitor usando esse esquema para implementar o problema de leitores-escritores.b. Explique por que, em geral, essa construção não pode ser implementada de forma eficiente.c. Que restrições precisam ser colocadas na instrução await para que ela possa ser implementada de

forma eficiente? (Sugestão: restrinja a generalidade de B; consulte Kessels [1977].)

Resposta: Sem resposta proposta.

7.17 Escreva um monitor que implemente um relógio despertador que permite que um programa cha-mando espere por um número especificado de unidades de tempo (ticks). Você pode considerar aexistência de um relógio real de hardware, que chama um procedimento tick no seu monitor em in-tervalos regulares.

Resposta: Sem resposta proposta.

7.18 Por que o Solaris 2 implementa vários mecanismos de lock? Sob que circunstâncias ele usa spinlocks,semáforos, mutexes adaptativos, variáveis condicionais e locks leitores-escritores? Por que ele usatal mecanismo? Qual é a finalidade dos molinetes?

Resposta: O Solaris 2 oferece diferentes mecanismos de locks, dependendo das necessidades do de-senvolvedor da aplicação. Os spinlocks são úteis para sistemas multiprocessados, nos quais umathread pode ser executada em um loop ocupado (por um curto período de tempo) ao invés de incor-rer o custo adicional de ser colocado em uma fila para dormir. Os mutexes são úteis para efetuar olock de recursos. O Solaris 2 utiliza mutexes adaptativos, significando que o mutex é implementadocom um spinlock em máquinas multiprocessadas. Os semáforos e as variáveis de condição são ferra-mentas mais apropriadas para o sincronismo quando um recurso tiver de ser mantido por um longoperíodo de tempo, pois os spinlocks são ineficazes por uma longa duração. Locks de leitores-es-critores são úteis quando tanto leitores quanto escritores precisam acessar um recurso, mas os leito-res são mais ativos e o desempenho pode ser aumentado quando não se usa locks de acesso exclusi-vo. O Solaris 2 utiliza turnstiles para ordenar a lista de threads esperando para adquirir um mutexadaptativo ou um lock de leitor-escritor.

7.19 Por que o Solaris 2 e o Windows 2000 utilizam spinlocks como um mecanismo de sincronismo ape-nas em sistemas multiprocessados e não em sistemas monoprocessados?Resposta: Consultar a pergunta 2.

7.20 Explique as diferenças, em termos de custo, entre os três tipos de armazenamento: volátil, não-vo-látil e estável.

Resposta: O armazenamento volátil refere-se à memória principal e de cache, e é mais rápido. Po-rém, o armazenamento volátil não pode sobreviver a falhas do sistema ou desligamento do sistema.O armazenamento não-volátil sobrevive a falhas do sistema e sistemas desligados. Os discos e as fitassão exemplos de armazenamento não-volátil. Recentemente, apareceram dispositivos USB usandomemória somente de leitura programáveis e apagáveis (EPROM) oferecendo armazenamento nãovolátil. O armazenamento estável refere-se ao armazenamento que tecnicamente nunca pode serperdido, pois existem cópias de backup redundantes dos dados (normalmente em disco).

28 Capítulo 7 Sincronismo de processos ELSEVIER

Page 32: FSO - Questões

7.21 Explique a finalidade do mecanismo de ponto de verificação (checkpoint). Com que freqüência ospontos de verificação devem ser realizados? Como a freqüência dos pontos de verificação afeta:

� O desempenho do sistema quando não ocorrem falhas?

� O tempo gasto para a recuperação de uma falha do sistema?

� O tempo gasto para a recuperação de uma falha do disco?

Resposta: Um registro de log de ponto de verificação indica que um registro de log e seus dados modi-ficados foram escritos no armazenamento estável e que a transação não precisa ser refeita no caso deuma falha do sistema. Obviamente, quanto mais freqüentes forem os pontos de verificação, menoresas probabilidades de realização de atualizações redundantes durante o processo de recuperação.

� O desempenho do sistema quando não ocorrem falhas – Se nenhuma falha ocorrer, o sistema de-verá incorrer o custo de realizar pontos de verificação que são essencialmente desnecessários.Nessa situação, a realização de pontos de verificação com menos freqüência levará a um desem-penho melhor do sistema.

� O tempo gasto para a recuperação de uma falha do sistema – A existência de um registro de pontode verificação significa que uma operação não terá de ser refeita durante a recuperação do siste-ma. Nessa situação, quanto maior a freqüência de realização dos pontos de verificação, mais rápi-do será o tempo de recuperação de uma falha do sistema.

� O tempo gasto para a recuperação de uma falha do disco – A existência de um registro de pontode verificação significa que uma operação não terá de ser refeita durante a recuperação do siste-ma. Nessa situação, quanto maior a freqüência de realização dos pontos de verificação, mais rápi-do será o tempo de recuperação de uma falha do disco.

7.22 Explique o conceito de atomicidade da transação.

Resposta: Uma transação é uma série de operações de leitura e escrita sobre algum dado, acompa-nhada de uma operação de commit. Se a série de operações em uma transação não puder ser com-pletada, a transação deverá ser cancelada e as operações que ocorreram deverão ser revertidas (roll-back). É importante que a série de operações em uma transação apareça como uma operação atômi-ca, para garantir a integridade dos dados sendo atualizados. Caso contrário, os dados poderiam sercomprometidos se as operações de duas (ou mais) transações diferentes fossem misturadas.

7.23 Mostre que o protocolo de lock em duas fases garante a serialização de conflitos.

Resposta: Um roteiro refere-se à seqüência de execução das operações para uma ou mais transações.Um roteiro serial é a situação em que cada transação de um roteiro é realizada de forma atômica. Seum roteiro consiste em duas transações diferentes, em que operações consecutivas de diferentestransações acessam os mesmos dados e pelo menos uma das operações é uma escrita, então temos oque é conhecido como um conflito. Se um roteiro puder ser transformado em um roteiro serial poruma série de trocas nas operações não em conflito, dizemos que tal roteiro possui serialização deconflitos.

O protocolo de lock em duas fases garante a serialização de conflitos porque os locks exclusivos(que são usados para operações de escrita) precisam ser obtidos serialmente, sem liberar quaisquerlocks durante a fase de aquisição (crescimento). Outras transações que desejam adquirir os mesmoslocks precisam esperar que a primeira transação comece a liberar locks. Exigindo que todos os locksdevam primeiro ser adquiridos antes de liberarem quaisquer outros, estamos nos assegurando deque os conflitos em potencial serão evitados.

7.24 Mostre que alguns roteiros são possíveis sob o protocolo de lock em duas fases, mas não são possí-veis sob o protocolo de estampa de tempo, e vice-versa.

Exercícios 29

Page 33: FSO - Questões

Resposta: Um roteiro que é permitido no protocolo de lock em duas fases, mas não no protocolo deestampa de tempo, é:

Etapa T0 T1 Comentários de precedência

1 lock-S(A)

2 read(A)

3 lock-X(B)

4 write(B)

5 unlock(B)

6 lock-S(B)

7 read(B) T1 � T0

8 unlock(A)

9 unlock(B)

Esse roteiro não é permitido no protocolo de estampa de tempo porque, na etapa 7, a estampa-W deB é 1.

Um roteiro que é permitido no protocolo de estampa de tempo, mas não no protocolo de lock emduas fases, é:

etapa T0 T1 T2

1 write(A)

2 write(A)

3 write(A)

4 write(B)

5 write(B)

Esse roteiro não pode ter instruções de lock acrescentadas para torná-lo válido sob o protocolo delock em duas fases, pois T1 precisa efetuar o unlock (A) entre as etapas 2 e 3, e precisa efetuar o lock(B) entre as etapas 4 e 5.

30 Capítulo 7 Sincronismo de processos ELSEVIER

Page 34: FSO - Questões

C A P Í T U L O 8

Deadlocks

Deadlock é um problema que só pode surgir em um sistema com vários processos assíncronos ativos. É im-portante que os alunos aprendam as três técnicas básicas para prevenir, evitar e detectar deadlocks (emboraos termos prevenir e evitar sejam fáceis de confundir).

Pode ser útil enunciar um problema de deadlock em termos humanos e perguntar por que os sistemas hu-manos nunca causam deadlock. Os alunos conseguem transferir esse conhecimento dos sistemas humanospara os computadores?

Os projetos podem envolver simulação: crie uma lista de tarefas consistindo em requisições e liberaçõesde recursos (tipo único ou tipos múltiplos). Peça aos alunos para alocarem os recursos a fim de evitar o de-adlock. Isso basicamente envolve a programação do algoritmo do banqueiro.

A pesquisa de Coffman, Elphick e Shoshani [1971] é uma boa leitura suplementar, mas você também deveconsiderar pedir aos alunos que releiam os artigos de Havender [1968], Habermann [1969] e Holt [1971a].Os dois últimos foram publicados na CACM e, portanto, deverão estar disponíveis com facilidade.1

Exercícios8.1 Liste três exemplos de deadlocks que não estão relacionados a um ambiente de computacional.

Resposta:

� Dois carros atravessando uma ponte de mão única vindos de direções opostas.

� Uma pessoa descendo uma escada de mão enquanto outra pessoa está subindo pela escada de mão.

� Dois trens seguindo um em direção ao outro no mesmo trilho.

8.2 É possível ter um deadlock envolvendo apenas um processo de com uma única thread? Explique suaresposta.

Resposta: Não. Isso segue diretamente da condição de manter e esperar.

8.3 As pessoas têm dito que o spooling apropriado eliminaria os deadlocks. Certamente, isso elimina a dis-puta por leitoras de cartões, plotadoras, impressoras e assim por diante. É possível até mesmo colocarfitas em spool (chamado de staging), deixando apenas os recursos de tempo de CPU, memória e espa-ço em disco. É possível haver deadlock envolvendo esses recursos? Se for possível, como esse deadlock

1 Nota do Revisor Técnico: Essa informação não é muito adequada no Brasil. É possível que eles estejam disponíveis pelo siste-ma da CAPES ou via COMUT.

Page 35: FSO - Questões

ocorreria? Se não for possível, por que não ocorre? Que esquema de deadlock pareceria melhor paraeliminar esses deadlocks (se for possível) ou que condição é violada (se não for possível)?

Resposta: Sem resposta proposta.

8.4 Considere o deadlock de trânsito representando na Figura 8.11.

a. Mostre que as quatro condições necessárias para o deadlock são mantidas de fato neste exemplo.b. Indique uma regra simples para evitar deadlocks nesse sistema.

Resposta:a. As quatro condições necessárias para um deadlock são (1) exclusão mútua; (2) manter e esperar;

(3) não-preempção; e (4) espera circular. A condição de exclusão mútua existe porque somenteum carro pode ocupar um espaço na rua. Manter e esperar ocorre quando um carro mantém seulugar na rua enquanto espera para avançar na rua. Um carro não pode ser removido (ou seja, pre-emptado) de sua posição na rua. Por fim, há realmente uma espera circular porque cada carroestá esperando que um carro subseqüente avance. A condição de espera circular também é facil-mente observada no do desenho.

b. Uma regra simples que evitaria esse deadlock de tráfego é que um carro não pode avançar paraum cruzamento, se estiver vazio, a menos que possam sair imediatamente da interseção, ou seja,nenhum carro pode parar em um cruzamento.

8.5 Suponha que um sistema esteja em um estado inseguro. Mostre que é possível ao processo comple-tar sua execução sem entrar em um estado de deadlock.

Resposta: Um estado inseguro não necessariamente leva ao deadlock, ele apenas indica que não po-demos garantir que o deadlock não ocorrerá. Porém, é possível que um sistema em um estado inse-guro ainda possa permitir que todos os processos terminem sem que ocorra o deadlock. Considere asituação em que um sistema possui 12 recursos alocados entre os processos P0, P1 e P2. Os recursossão alocados de acordo com a seguinte política:

Máximo Atual Necessário

P0 10 5 5

P1 4 2 2

P2 9 3 6

Atualmente, existem dois recursos disponíveis. Esse sistema está em um estado inseguro porque oprocesso P1 poderia completar, liberando assim um total de quatro recursos. Mas não podemos ga-rantir que os processos P0 e P2 podem completar. Porém, é possível que um processo possa liberar re-cursos antes de requisitar algum outro. Por exemplo, o processo P2 poderia liberar um recurso, au-mentando assim o número total de recursos para cinco. Isso faz com que o processo P0 conclua, oque liberaria um total de nove recursos, permitindo assim que o processo P2 também conclua.

8.6 Uma solução possível para prevenir os deadlocks é ter um único recurso de ordem mais alta quedeva ser requisitado antes de qualquer outro recurso. Por exemplo, se várias threads tentarem aces-sar os locks para cinco objetos Java A...E, o deadlock é possível. Podemos prevenir o deadlock acres-centando um sexto objeto F. Sempre que uma thread quiser obter o lock para qualquer objeto A...E,ela primeiro terá de obter o lock para o objeto F. Essa solução é conhecida como contenção: os locksdos objetos A...E estão contidos dentro do lock do objeto F. Compare esse esquema com o esquemade espera circular da Seção 8.4.4.

Resposta: Sem resposta proposta.

32 Capítulo 8 Deadlocks ELSEVIER

Page 36: FSO - Questões

8.7 Em um computador real, nem os recursos disponíveis, nem as demandas dos processos por recursos,são consistentes por longos períodos (meses). Recursos falham ou são substituídos, novos processosvem e vão, novos processos são adquiridos e adicionados ao sistema. Se o deadlock é controladopelo algoritmo do banqueiro, quais das seguintes alterações podem ser feitas de forma segura (semintroduzir a possibilidade de deadlock), e sob quais circuntâncias?

a. Aumentar Available (novos recursos adicionados)b. Diminuir Available (recursos permanentemente removidos do sistema)c. Aumentar Max para um processo (o processo necessita de mais recursos do que os alocados, ele

pode querer mais)d. Diminuir Max de um processo (o processo decide que não precisa de tantos recursos)e. Aumentar o número de processosf. Diminuir o número de processos

Resposta:a. Aumentar Available (novos recursos adicionados) – Esta modificação pode ser feita de forma se-

gura, sem causar nenhum problema.b. Diminuir Available (recursos permanentemente removidos do sistema) – Esta modificação pode

causar algum impacto no sistema e introduzir a possibilidade de deadlock, uma vez que a estabili-dade assumida do sistema pressupôs a existência de uma certa quantidade de recursos disponíve-is.

c. Aumentar Max para um processo (o processo necessita mais recursos do que os alocados, elepode querer mais) – Esta modificação pode causar algum impacto no sistema e introduzir a possi-bilidade de deadlock.

d. Diminuir Max de um processo (o processo decide que não necessita de tantos recursos) – Estamodificação pode ser feita de forma segura, sem causar nenhum problema.

e. Aumentar o número de processos – Esta modificação pode ser efetuada assumindo que os recursosserão alocados a novos processos, de tal forma que o sistema não entre em um estado inseguro.

f. Diminuir o número de processos – Esta modificação pode ser feita de forma segura, sem causarnenhum problema.

for (int i = 0; i < n; i++) {// primeiro encontra um fluxo que possa terminarfor (int j = 0; j < n; j++) {if (!finish[j]) {boolean temp = true;for (int k = 0; k < m; k++) {if (need[j][k] > work[k])temp = false;

}

if (temp) { // se esse fluxo pode terminarfinish[j] = true;for (int x = 0; x < m; x++)work[x] += work[j][x];

}}

}}

F I G U R A 8 . 1 Algoritmo de segurança do algoritmo do banqueiro.

Exercícios 33

Page 37: FSO - Questões

8.8 Prove que o algoritmo de segurança apresentado na Seção 8.5.3 exige uma ordem de m × n2 operações.

Resposta: A Figura 8.1 oferece o código Java que implementa o algoritmo de segurança no algorit-mo do banqueiro (a implementação completa do algoritmo do banqueiro está disponível por down-load do código-fonte).

Como podemos ver, os loops externos aninhados – ambos repetindo n vezes – oferecem o desempe-nho n2. Dentro desses loops externos existem dois loops seqüenciais internos, que se repetem m ve-zes. A grande ordem desse algoritmo é, portanto, O(m × n2).

8.9 Considere um sistema consistindo em quatro recursos do mesmo tipo, que são compartilhados portrês processos, cada um precisando no máximo de dois recursos. Mostre que o sistema está livre dedeadlock.

Resposta: Suponha que o sistema esteja em deadlock. Isso implica que cada processo está mantendoum recurso e está esperando por mais um. Como existem três processos e quatro recursos, um pro-cesso precisa ser capaz de obter dois recursos. Esse processo não exige mais recursos e, portanto, re-tornará seus recursos quando terminar.

8.10 Considere um sistema consistindo em m recursos do mesmo tipo sendo compartilhados por n pro-cessos. Os recursos podem ser requisitados e liberados pelos processos somente um de cada vez.Mostre que o sistema está livre de deadlock se as duas condições a seguir forem mantidas:

a. A necessidade máxima de cada processo está entre 1 e m recursos.

b. A soma de todas as necessidades máximas é menor que m + n.

Resposta: Usando a terminologia da Seção 7.6.2, temos:a. M

i

n

�� 1áximoi < m + n

b. Máximoi � 1 para todo iProva: Necessárioi = Máximoi – AlocaçãoiSe existir um estado de deadlock, então:

c. Ai

n

�� 1locaçãoi = m

Use a. para obter: � Necessárioi + � Alocaçãoi = � Máximoi < m + n

Use c. para obter: � Necessárioi + m < m + n

Reescrito para obter: Ni

n

�� 1ecessárioi < n

Isso implica que existe um processo Pi tal que Necessárioi = 0. Como Máximoi � 1, segue-se que Pi

tem pelo menos um recurso que pode ser liberado. Logo, o sistema não pode estar em um estadode deadlock.

8.11 Considere um computador que execute 5.000 tarefas por mês sem qualquer esquema para preven-ção ou para evitar deadlock. Os deadlocks ocorrem cerca de duas vezes por mês e o operador precisaterminar e reexecutar cerca de 10 tarefas por deadlock. Cada tarefa custa cerca de $2 (em tempo deCPU), e as tarefas terminadas costumam estar prontas pela metade quando são canceladas.

Um programador de sistemas estimou que um algoritmo para evitar deadlock (como o algoritmo dobanqueiro) poderia ser instalado no sistema com um aumento no tempo de execução médio por ta-refa de cerca de 10%. Como a máquina atualmente possui um tempo ocioso de 30%, todas as 5.000tarefas por mês ainda poderiam ser executadas, embora o turnaround aumentasse em cerca de 20%na média.a. Quais são os argumentos a favor da instalação do algoritmo para evitar deadlock?

34 Capítulo 8 Deadlocks ELSEVIER

Page 38: FSO - Questões

b. Quais são os argumentos contra a instalação do algoritmo para evitar deadlock?

Resposta: Um argumento para instalar uma forma de evitar deadlock no sistema é que poderíamos ga-rantir que o deadlock nunca ocorreria. Além disso, apesar do aumento do tempo de retorno, todas as5.000 tarefas ainda poderiam ser executadas.

Um argumento contra a instalação do software para evitar deadlocks é que eles ocorrem com poucafreqüência e custam muito pouco quando ocorrem.

8.12 Podemos obter o algoritmo do banqueiro para um único tipo de recurso a partir do algoritmo do ban-queiro geral, simplesmente reduzindo o dimensionamento dos diversos arrays por 1. Mostre, pormeio de um exemplo, que o esquema do banqueiro para múltiplos tipos de recursos não pode ser im-plementado pela aplicação individual do esquema de único tipo de recurso para cada tipo de recurso.

Resposta: Considere um sistema com os recursos A, B e C e os processos P0, P1, P2, P3 e P4 com os se-guintes valores de Alocação:

Alocação

A B C

P0 0 1 0

P1 3 0 2

P2 3 0 2

P3 2 1 1

P4 0 0 2

E o valor a seguir de Necessário:

Necessário

A B C

P0 7 4 3

P1 0 2 0

P2 6 0 0

P3 0 1 1

P4 4 3 1

Se o valor de Disponível for (2 3 0), podemos ver que uma requisição do processo P0 para (0 2 0) nãopode ser satisfeita, pois isso reduz Disponível para (2 1 0) e nenhum processo poderia ser terminadocom segurança.

Porém, se tivéssemos de tratar os três recursos como três tipos de único recurso do algoritmo dobanqueiro, obteríamos o seguinte:

Para o recurso A (que temos dois disponíveis),

Alocado Necessário

P0 0 7

P1 3 0

P2 3 6

P3 2 0

P4 0 4

Exercícios 35

Page 39: FSO - Questões

Os processos poderiam terminar com segurança na ordem de P1, P3, P4, P2, P0.

Para o recurso B (que agora temos um disponível, pois dois foram considerados atribuídos ao processo P0),

Alocado Necessário

P0 3 2

P1 0 2

P2 0 0

P3 1 1

P4 0 3

Os processos poderiam terminar com segurança na ordem de P2, P3, P1, P0, P4.

E, finalmente, para o recurso C (que temos 0 disponível),

Alocado Necessário

P0 0 3

P1 2 0

P2 2 0

P3 1 1

P4 2 1

Os processos poderiam terminar com segurança na ordem de P1, P2, P0, P3, P4.

Como podemos ver, se usarmos o algoritmo do banqueiro para múltiplos tipos de recursos, a requi-sição para os recursos (0 2 0) do processo P0 é negada porque deixa o sistema em um estado insegu-ro. Porém, se considerarmos o algoritmo do banqueiro para os três recursos separados, em que usa-mos um único tipo de recurso, a requisição é concedida. Portanto, se tivermos múltiplos tipos de re-cursos, precisamos usar o algoritmo do banqueiro para múltiplos tipos de recursos.

8.13 Um sistema pode detectar que algum de seus processos está sofrendo starvation? Se você responder“sim”, explique como isso pode ser feito. Se responder “não”, explique como o sistema pode lidarcom o problema de starvation.

Resposta: A starvation é um tópico difícil de se definir, pois pode significar que diferentes coisaspara diferentes sistemas. Para os propósitos desta pergunta, definiremos starvation como a situaçãoem que um processo precisa esperar além de um período razoável – talvez indefinidamente – antesde receber um recurso requisitado. Uma maneira de detectar starvation seria primeiro identificarum período de tempo – T – que seja considerado excessivo. Quando um processo requisita um re-curso, um temporizador é iniciado. Se o tempo gasto ultrapassar T, então tal processo é consideradocomo em starvation.

Uma estratégia para lidar com starvation seria adotar uma política na qual os recursos são atribuídosapenas ao processo que esteve esperando por mais tempo. Por exemplo, se o processo Pa esteve es-perando por mais tempo pelo recurso X do que o processo Pb, a requisição do processo Pb seria adia-da até que a requisição do processo Pa tivesse sido satisfeita.

Outra estratégia seria menos estrita do que a que acabamos de mencionar. Nesse cenário, um recur-so poderia ser concedido a um processo que tenha esperado menos do que outro processo, desdeque o outro não esteja sendo adiado. Porém, se outro processo for considerado em starvation, suarequisição seria satisfeita primeiro.

36 Capítulo 8 Deadlocks ELSEVIER

Page 40: FSO - Questões

8.14 Considere o seguinte instantâneo de um sistema:

Alocação Máximo Disponível

A B C D A B C D A B C D

P0 0 0 1 2 0 0 1 2 1 5 2 0

P1 1 0 0 0 1 7 5 0

P2 1 3 5 4 2 3 5 6

P3 0 6 3 2 0 6 5 2

P4 0 0 1 4 0 6 5 6

Responda as seguintes perguntas usando o algoritmo do banqueiro:a. Qual é o conteúdo da matriz Necessário?b. O sistema está em um estado seguro?c. Se uma requisição do processo P1 chegar para (0,4,2,0), a requisição poderá ser concedida ime-

diatamente?

Resposta:a. Qual é o conteúdo da matriz Necessário? Os valores de Necessário para os processos de P0 a P4,

respectivamente, são (0, 0, 0, 0), (0, 7, 5, 0), (1, 0, 0, 2), (0, 0, 2, 0) e (0, 6, 4, 2).b. O sistema está em um estado seguro? Sim. Com Disponível sendo igual a (1, 5, 2, 0), o processo

P0 ou P3 poderia ser executado. Quando o processo P3 é executado, ele libera seus recursos, o quepermite que todos os outros processos existentes sejam executados.

c. Se uma requisição do processo P1 chegar para (0,4,2,0), a requisição poderá ser concedida imedia-tamente? Sim, poderá. Isso resulta no valor de Disponível sendo (1, 1, 0, 0). Uma ordenação dosprocessos que podem terminar é P0, P2, P3, P1 e P4.

8.15 Considere a seguinte política de alocação de recursos. As requisições e as liberações de recursos sãopermitidas a qualquer momento. Se uma requisição de recursos não puder ser satisfeita porque osrecursos não estão disponíveis, então verificamos quaisquer processos que estão bloqueados, espe-rando por recursos. Se eles tiverem os recursos desejados, então esses recursos são retirados deles edados ao processo requisitante. O vetor de recursos que um processo esperando precisa é aumenta-do para incluir os recursos que foram retirados.

Por exemplo, considere um sistema com três tipos de recurso e o vetor Disponível inicializado como(4,2,2). Se o processo P0 pedir (2,2,1), ele os receberá. Se P1 pedir (1,0,1), ele os receberá. Depois, seP0 pedir (0,0,1), ele será bloqueado (recurso não disponível). Se P2 agora pedir (2,0,0), ele receberáo único disponível (1,0,0) junto com um que estava alocado para P0 (pois P0 está bloqueado). O ve-tor Alocação de P0 diminui para (1,2,1), e seu vetor Necessário cresce para (1,0,1).a. Pode ocorrer um deadlock? Se puder, dê um exemplo. Se não, que condição necessária não pode

ocorrer?b. Pode ocorrer o bloqueio indefinido (starvation)?

Resposta:a. O deadlock não pode ocorrer porque existe preempção.b. Sim. Um processo pode nunca adquirir todos os recursos de que precisa se eles forem continua-

mente preemptados por uma série de requisições, como aquelas do processo C.

8.16 Suponha que você tenha codificado o algoritmo de segurança para evitar deadlock e agora tenhasido requisitado para implementar o algoritmo de detecção de deadlock. É possível fazer isso sim-

Exercícios 37

Page 41: FSO - Questões

plesmente usando o código do algoritmo de segurança e redefinindo Máximoi = Esperandoi + Alo-caçãoi, onde Esperandoi é um vetor especificando os recursos pelos quais o processo i está esperandoe Alocaçãoi é conforme definido na Seção 8.5? Explique sua resposta.

Resposta: Sim. O vetor Máximo representa a requisição máxima que um processo pode fazer. Ao calcu-lar o algoritmo de segurança, usamos a matriz Necessário, que representa Máximo – Alocação. Outramaneira de pensar nisso é Máximo = Necessário + Alocação. De acordo com a pergunta, a matriz Espe-rando possui um papel semelhante à matriz Necessário; portanto, Máximo = Esperando + Alocação.

8.17 Escreva um programa em Java que ilustre o deadlock por meio de métodos synchronized chamandooutros métodos synchronized.

8.18 Escreva um programa em Java que ilustre o deadlock por meio de threads separadas tentando reali-zar operações sobre semáforos diferentes.

8.19 Escreva um programa em Java multithreaded que implemente o algoritmo do banqueiro, discutidona Seção 8.5.3. Crie n threads que requisitam e liberam recursos do banco. O banqueiro só concede-rá a requisição se deixar o sistema em um estado seguro. Garanta que o acesso aos dados comparti-lhados seja seguro para a thread, empregando o sincronismo de threads em Java, conforme discuti-mos na Seção 7.8.

8.20 Um túnel de estrada de ferro com um único conjunto de trilhos conecta duas cidades. A estrada deferro pode obter um deadlock se um trem indo para o norte e um trem indo para o sul entrarem notúnel ao mesmo tempo (os trens não podem recuar). Escreva um programa em Java que previna odeadlock, usando semáforos ou sincronismo Java. Inicialmente, não se preocupe com starvation (asituação em que os trens indo para o norte impedem que os trens indo para o sul usem o túnel, ou vi-ce-versa), e não se preocupe com os trens deixando de parar e colidindo um com o outro.

8.21 Modifique sua solução para o Exercício 8.20 de modo que fique livre de starvation.

38 Capítulo 8 Deadlocks ELSEVIER

Page 42: FSO - Questões

C A P Í T U L O 9

Gerenciamento de memória

Embora muitos sistemas sejam paginados por demanda (discutido no Capítulo 10), ainda existem muitosque não são e, em muitos casos, estratégias de gerenciamento de memória mais simples podem ser melhores,especialmente para pequenos sistemas dedicados. Queremos que o aluno aprenda sobre todas elas: monitorresidente, swapping, partições, paginação e segmentação.

Exercícios9.1 Cite duas diferenças entre endereços físicos e lógicos.

Resposta: Um endereço lógico não se refere a um endereço existente real, mas se refere a um ende-reço abstrato em um espaço de endereço lógico. Compare isso com um endereço físico que se referea um endereço físico real na memória. Um endereço lógico é gerado pela CPU e traduzido para umendereço físico pela unidade de gerenciamento de memória (MMU). Portanto, os endereços físicossão gerados pela MMU.

9.2 Explique a diferença entre fragmentação interna e externa.

Resposta: A fragmentação interna é a área em uma região ou em uma página que não é usada pela ta-refa ocupando essa região ou página. Esse espaço está indisponível para uso pelo sistema até que essatarefa tenha terminado e a página ou região seja liberada.

9.3 Descreva os seguintes algoritmos de alocação:

a. First fitb. Best fitc. Worst fit

Resposta:a. Best fit: pesquisa a lista de memória disponível e aloca o primeiro bloco que seja grande o suficiente.b. Best fit: pesquisa a lista inteira de memória disponível e aloca o menor bloco que seja grande o su-

ficiente.c. Worst fite: pesquisa a lista inteira de memória disponível e aloca o maior bloco. (A justificativa

para esse esquema é que o bloco restante produzido seria maior e potencialmente mais útil doque aquele produzido pela técnica best fit.)

Page 43: FSO - Questões

9.4 Quando um processo é retirado da memória, ele perde sua capacidade de usar a CPU (pelo menospor um tempo). Descreva outra situação na qual um processo perde sua capacidade de usar a CPU,mas em que o processo não é retirado da memória.

Resposta: Quando ocorre uma interrupção.

9.5 Dadas cinco partições de memória de 100KB, 500KB, 200KB, 300KB e 600KB (na ordem), comocada um dos algoritmos de First fit, Best Fit e Worst Fit incluiria processos de 212KB, 417KB,112KB e 426KB (na ordem)? Que algoritmo faz o uso mais eficiente da memória?

Resposta:First fit:a. 212KB é colocado na partição de 500KBb. 417KB é colocado na partição de 600KBc. 112KB é colocado na partição de 288KB (nova partição de 288KB = 500KB – 212KB)d. 426KB precisa esperar

Best fit:a. 212KB é colocado na partição de 300KBb. 417KB é colocado na partição de 500KBc. 112KB é colocado na partição de 200KBd. 426KB é colocado na partição de 600KB

Worst fit:a. 212KB é colocado na partição de 600KBb. 417KB é colocado na partição de 500KBc. 112KB é colocado na partição de 388KBd. 426KB precisa esperar

Nesse exemplo, o Best fit é a melhor opção.

9.6 Considere um sistema em que um programa pode ser separado em duas partes: código e dados. ACPU sabe onde deseja ter uma instrução (busca de instrução) ou dados (busca ou armazenamento dedados). Portanto, dois pares de registrador de base-limite são fornecidos: um para instruções e umpara dados. O par de registradores de base-limite de instrução é definido automaticamente como so-mente leitura, de modo que os programas possam ser compartilhados entre diferentes usuários. Dis-cuta as vantagens e desvantagens desse esquema.

Resposta: A principal vantagem desse esquema é que ele é um mecanismo eficaz para o compartilha-mento de código e dados. Por exemplo, somente uma cópia de um editor ou de um compilador pre-cisa ser mantida na memória, e esse código pode ser compartilhado por todos os processos que pre-cisam de acesso ao editor ou código do compilador. Outra vantagem é a proteção do código contra amodificação errônea. A única desvantagem é que o código e os dados precisam ser separados, o quenormalmente é juntado em um código gerado pelo compilador.

9.7 Por que os tamanhos de página sempre são potências de 2?

Resposta: Lembre-se de que a paginação é implementada dividindo-se um endereço em um númerode página e deslocamento. É mais eficiente desmembrar o endereço em X bits de página e Y bits dedeslocamento, em vez de realizar a aritmética sobre o endereço para calcular o número de página edeslocamento. Como cada posição de bit representa uma potência de 2, a divisão de um endereçoentre os bits resulta em um tamanho de página que é uma potência de 2.

40 Capítulo 9 Gerenciamento de memória ELSEVIER

Page 44: FSO - Questões

9.8 Considere o espaço de endereços lógicos de oito páginas com 1.024 palavras cada, mapeadas emuma memória física de 32 quadros.

a. Quantos bits existem no endereço lógico?b. Quantos bits existem no endereço físico?

Resposta:a. Endereço lógico: 13 bits.b. Endereço físico: 15 bits.

9.9 Em um sistema com paginação, um processo não pode acessar a memória que ele não possui. Porquê? Como o sistema operacional poderia permitir o acesso a outra memória? Por que deveria ounão?

Resposta: Um endereço em um sistema de paginação é um número de página lógico e um desloca-mento. A página física é encontrada com a pesquisa de uma tabela com base no número de página ló-gico, para produzir um número de página físico. Como o sistema operacional controla o conteúdodessa tabela, ele pode limitar um processo a acessar apenas as páginas físicas alocadas ao processo.Não existe um meio de um processo se referir a uma página que não possui, pois a página não estarána tabela de página. Para permitir tal acesso, um sistema operacional simplesmente precisa permitirque as entradas para a memória que não a do processo, sejam incluídas na tabela de página do pro-cesso. Isso é útil quando dois ou mais processos precisam trocar dados – eles simplesmente lêem e es-crevem nos mesmos endereços físicos (que podem estar em endereços lógicos variáveis). Isso gerauma comunicação entre processos muito eficiente.

9.10 Considere um sistema de paginação com a tabela de página armazenada na memória.

a. Se uma referência de memória leva 200 nanossegundos, quanto tempo leva uma referência à me-mória paginada?

b. Se acrescentarmos TLBs, e 75% de todas as referências à tabela de página forem encontradas nasTLBs, qual é o tempo efetivo de referência à memória? (Considere que a localização de uma en-trada de página nas TLBs leve tempo zero, se a entrada existir.)

Resposta:a. 400 nanossegundos; 200 nanossegundos para acessar a tabela de página e 200 nanossegundos

para acessar a palavra na memória.b. Tempo de acesso efetivo = 0,75 × (200 nanossegundos) + 0,25 × (400 nanossegundos) = 250

nanossegundos.

9.11 Qual é o efeito de permitir que duas entradas em uma tabela de página apontem para o mesmo qua-dro de página na memória? Explique como você poderia usar esse efeito para diminuir a quantidadede tempo necessária para copiar uma grande quantidade de memória de um lugar para outro. Comoa atualização de algum byte em uma página afetaria a outra página?

Resposta: Permitindo que duas entradas em uma tabela de página apontem para o mesmo frame depágina na memória, os usuários podem compartilhar código e dados. Se o código for reentrante,pode ser economizado muito espaço na memória através do uso compartilhado de grandes progra-mas, como editores de texto, compiladores e sistemas de banco de dados. A “cópia” de grandesquantidades de memória poderia ser efetuada por meio de diferentes tabelas de página apontandopara o mesmo local da memória.

Porém, o compartilhamento de código não reentrante ou dados significa que qualquer usuáriotendo acesso ao código poderá modificá-lo, e essas modificações seriam refletidas na “cópia” do ou-tro usuário.

Exercícios 41

Page 45: FSO - Questões

9.12 Por que a segmentação e a paginação às vezes são combinadas em um único esquema?

Resposta: A segmentação e a paginação normalmente são combinadas a fim de melhorar ambas. A pagi-nação segmentada é útil quando a tabela de página se torna muito grande. Uma grande seção contíguada tabela de página que não é usada pode ser encolhida para uma única entrada da tabela de segmento,com um endereço de tabela de página igual a zero. A segmentação paginada trata do caso em que exis-tem segmentos muito longos, que exigem muito tempo para alocação. Paginando os segmentos, reduzi-mos a memória desperdiçada devido à fragmentação externa, além de simplificar a alocação.

9.13 Descreva um mecanismo pelo qual um segmento poderia pertencer ao espaço de endereço de doisprocessos diferentes.

Resposta: Como as tabelas de segmento são uma coleção de registradores de limite de base, os seg-mentos podem ser compartilhados quando as entradas na tabela de segmento de duas tarefas dife-rentes apontarem para o mesmo local físico. As duas tabelas de segmento precisam ter ponteiros debase idênticos, e o número do segmento compartilhado precisa ser o mesmo nos dois processos.

9.14 Explique por que o compartilhamento de um módulo reentrante é mais fácil quando a segmentaçãoé usada, do que quando a paginação pura é usada.

Resposta: Como a segmentação é baseada em uma divisão lógica da memória, e não física, os seg-mentos de qualquer tamanho podem ser compartilhados com apenas uma entrada nas tabelas desegmento de cada usuário. Com a paginação, é preciso haver uma entrada comum nas tabelas de pá-gina para cada página que é compartilhada.

9.15 Compartilhar segmentos entre os processos sem exigir o mesmo número de segmento é possível emum sistema de segmentação vinculado dinamicamente.

a. Defina um sistema que permita o vínculo estático e o compartilhamento de segmentos, sem exigirque os números de segmento sejam iguais.

b. Descreva um esquema de paginação permitindo que as páginas sejam compartilhadas, sem exigirque os números de página sejam iguais.

Resposta: Esses dois problemas se reduzem a um programa sendo capaz de referenciar seu própriocódigo e seus dados sem conhecer o número de segmento ou página associado ao endereço. OMULTICS solucionou esse problema associando quatro registradores a cada processo. Um registra-dor tinha o endereço do segmento de programa atual, outro tinha um endereço de base para a pilha,outro tinha um endereço de base para os dados globais, e assim por diante. A idéia é que todas as re-ferências têm de ser indiretas, através de um registrador que é mapeado para o segmento ou númerode página atual. Alterando esses registradores, o mesmo código pode ser executado para diferentesprocessos sem a mesma página ou números de segmento.

9.16 Considere a seguinte tabela de segmentos:

Segmento Base Tamanho

0 219 600

1 2300 14

2 90 100

3 1327 580

4 1952 96

42 Capítulo 9 Gerenciamento de memória ELSEVIER

Page 46: FSO - Questões

Quais são os endereços físicos para os endereços lógicos a seguir?

a. 0,430b. 1,10c. 2,500d. 3,400e. 4,112

Resposta:a. 219 + 430 = 649b. 2.300 + 10 = 2.310c. Referência ilegal, intercepta para o sistema operacionalc. 1.327 + 400 = 1.727e. Referência ilegal, intercepta para o sistema operacional

9.17 Considere o esquema de tradução de endereço da Intel mostrado na Figura 9.21.

a. Descreva todas as etapas realizadas pelo Intel 80386 na tradução de um endereço lógico para um en-dereço físico.

b. Quais são as vantagens para o sistema operacional do hardware que oferece uma tradução de memó-ria tão complicada?

c. Existem desvantagens nesse sistema de tradução de endereço? Se houver, quais são elas? Se não, porque isso não é usado por todos os fabricantes?

Resposta:a. O seletor é um índice para a tabela de descritor de segmento. O resultado do descritor de segmen-

to mais o deslocamento original é usado para produzir um endereço linear com um diretório, pá-gina e deslocamento. O diretório é um índice para um diretório de página. A entrada do diretóriode página seleciona a tabela de página, e o campo de página é um índice para a tabela de página. Aentrada da tabela de página, mais o deslocamento, é o endereço físico.

b. Esse mecanismo de tradução de página oferece a flexibilidade para permitir que a maioria dos sis-temas operacionais implemente seu esquema de memória no hardware, em vez de ter de imple-mentar algumas partes no hardware e outras no software. Como isso pode ser feito no hardware,é mais eficiente (e o kernel é mais simples).

c. A tradução de endereço pode levar mais tempo devido às várias pesquisas de tabela que ela podechamar. Os caches ajudam, mas ainda haverá perdas de cache.

9.18 No IBM/370, a proteção de memória é fornecida através do uso de chaves. Uma chave é uma quanti-dade de 4 bits. Cada bloco de memória de 2KB possui uma chave associada (a chave de armazena-mento). A CPU também possui uma chave associada (a chave de proteção). Uma operação de arma-zenamento só é permitida se as duas chaves forem iguais ou se uma delas for zero. Qual dos seguin-tes esquemas de gerência de memória poderia ser usado com sucesso com esse hardware?

a. Máquina brutab. Sistema monousuárioc. Multiprogramação com um número fixo de processosd. Multiprogramação com um número variável de processose. Paginaçãof. Segmentação

Exercícios 43

Page 47: FSO - Questões

Resposta:a. Proteção desnecessária, define chave do sistema como 0.b. Define chave do sistema como 0 quando estiver no modo supervisor.c. Tamanhos de região precisam ser fixados em incrementos de 2Kbytes, aloca chave com blocos de

memória.d. O mesmo que o anterior.e. Tamanhos de frame precisam ser em incrementos de 2Kbytes, aloca chave com páginas.f. Tamanhos de segmento precisam ser em incrementos de 2Kbytes, aloca chave com segmentos.

44 Capítulo 9 Gerenciamento de memória ELSEVIER

Page 48: FSO - Questões

C A P Í T U L O 1 0

Memória virtual

A memória virtual pode ser um assunto muito interessante, pois tem muitos aspectos diferentes: falhas de pá-gina, gerência do armazenamento de apoio, substituição de página, alocação de quadro, thrashing, tamanhode página. Os objetivos deste capítulo são explicar esses conceitos e mostrar como funciona a paginação.

Uma simulação provavelmente é o modo mais fácil de permitir que alunos programem vários algoritmosde substituição de página e vejam como eles realmente funcionam. Se uma tela gráfica interativa puder serusada para exibir a simulação conforme ela funciona, os alunos poderão entender melhor o funcionamentoda paginação. Também apresentamos um exercício que pede ao aluno para desenvolver um programa Javaque implementa os algoritmos de substituição de página FIFO e LRU.

Exercícios10.1 Sob que circunstâncias ocorrem falhas de página? Descreva as ações tomadas pelo sistema operacio-

nal quando ocorre uma falha de página.

Resposta: Uma falha de página ocorre quando acontece um acesso a uma página que não foi trazidapara a memória principal. O sistema operacional verifica o acesso à memória, abortando o progra-ma se o acesso for inválido. Se for válido, um quadro livre é localizado e a E/S é requisitada para ler apágina necessária para o quadro livre. Ao terminar a E/S, a tabela de processos e a tabela de páginasão atualizadas e a instrução é reiniciada.

10.2 Considere que você tem uma string de referências de página para um processo com m frames (inicial-mente, todos vazios). A string de referência de página possui tamanho p; n números de página distin-tos ocorrem nela. Responda a estas perguntas para quaisquer algoritmos de substituição de página:

a. Qual é um limite inferior para o número de falhas de página?b. Qual é um limite superior para o número de falhas de página?

Resposta:a. nb. p

10.3 Um certo computador fornece aos seus usuários um espaço de memória virtual de 232 bytes. O com-putador possui 218 bytes de memória física. A memória virtual é implementada pela paginação, e otamanho de página é de 4.096 bytes. Um processo do usuário gera o endereço virtual 11123456.Explique como o sistema estabelece a locação física correspondente. Faça a distinção entre as opera-ções de software e de hardware.

Page 49: FSO - Questões

Resposta: O endereço virtual em formato binário é

0001 0001 0001 0010 0011 0100 0101 0110

Como o tamanho da página é 212, o tamanho da tabela de página é 220. Portanto, os 12 bits de baixaordem “0100 0101 0110” são usados como deslocamento na página, enquanto os 20 bits restantes“0001 0001 0001 0010 0011” são usados como deslocamento na tabela de página.

10.4 Quais das seguintes técnicas de programação e estruturas são “boas” para um ambiente paginadopor demanda? Quais são “ruins”? Explique suas respostas.

a. Pilhab. Tabela de símbolos com hashc. Pesquisa seqüenciald. Pesquisa bináriae. Código purof. Operações de vetorg. Indireção

Resposta:a. Pilha – boa.b. Tabela de símbolos com hash – não é boa.c. Pesquisa seqüencial – boa.d. Pesquisa binária – não é boa.e. Código puro – boa.f. Operações de vetor – boa.g. Indireção – não é boa.

10.5 Suponha que tenhamos uma memória paginada por demanda. A tabela de página é mantida em re-gistradores. São necessários 8 milissegundos para atender a uma falha de página se um quadro vazioestiver disponível ou se a página substituída não estiver modificada, e 20 milissegundos se a páginasubstituída estiver modificada. O tempo de acesso à memória é de 100 nanossegundos.

Suponha que a página a ser trocada seja modificada 70% do tempo. Qual é a taxa de falha de páginaaceitável para um tempo de acesso eficaz de mais de 200 manossegundos?

Resposta:

0,2 µsec = (1 – P) × 0,1 µsec + (0,3P) × 8 millisec + (0,7P) × 20 millisec0.1 = –0,1P + 2.400 P + 14.000 P0.1 ~ 16.400 PP ~ 0,000006

10.6 Considere os seguintes algoritmos de substituição de página. Classifique esses algoritmos em umaescala de cinco pontos, de “ruim” a “perfeito”, de acordo com sua taxa de falha de página. Separe osalgoritmos que sofrem da anomalia de Belady daqueles que não sofrem.

a. Substituição LRUb. Substituição FIFOc. Substituição ideald. Substituição pela segunda chance

46 Capítulo 10 Memória virtual ELSEVIER

Page 50: FSO - Questões

Resposta:

Ordem Algoritmo Sobre da anomalia de Belady

1 Ideal não

2 LRU não

3 Segunda chance sim

4 FIFO sim

10.7 Quando a memória virtual é implementada em um sistema de computação, isso gera certos custos ecertos benefícios. Relacione esses custos e benefícios. É possível que os custos ultrapassem os benefí-cios? Explique que medidas você pode tomar para garantir que esse desequilíbrio não aconteça.

Resposta: Os custos são hardware adicional e tempo de acesso mais lento. Os benefícios são boa uti-lização da memória e maior espaço de endereço lógico do que o espaço de endereço físico.

10.8 Um sistema operacional oferece suporte a uma memória virtual paginada usando um processadorcentral com um tempo de ciclo de 1 microssegundo. É necessário mais 1 microssegundo para acessaruma página além da atual. As páginas possuem 1.000 palavras, e o dispositivo de paginação é umtambor que gira a 3.000 rotações por minuto e transfere um milhão de palavras por segundo. As me-dições estatísticas a seguir foram obtidas a partir do sistema:

� Um por cento de todas as instruções executadas acessaram uma página diferente da página atual.

� Das instruções que acessaram outra página, 80% acessaram uma página já na memória.

� Quando uma nova página foi exigida, a página substituída foi modificada 50% do tempo.

Calcule o tempo de instrução efetivo nesse sistema, supondo que o sistema esteja executando apenasum processo e que o processador está ocioso durante as transferências do tambor.

Resposta:

tempo de acesso efetivo = 0,99 × (1 µsec + 0,008 × (2 µsec)+ 0,002 × (10.000 µsec + 1.000 µsec)+ 0,001 × (10.000 µsec + 1.000 µsec)

= (0,99 + 0,016 + 22,0 + 11,0) µsec= 34,0 µsec

10.9 Considere um sistema de paginação por demanda com as seguintes utilizações medidas no tempo:

Utilização de CPU 20%Disco de paginação 97,7%Outros dispositivos de E/S 5%

Para cada um dos seguintes, diga se a utilização de CPU melhorará (ou se isso é provável). Expliquesua resposta.a. Instalar uma CPU mais rápida.b. Instalar um disco de paginação maior.c. Aumentar o grau de multiprogramação.d. Diminuir o grau de multiprogramação.e. Instalar mais memória principal.f. Instalar um disco rígido mais rápido ou múltiplos controladores com múltiplos discos rígidos.g. Acrescentar a pré-paginação aos algoritmos de busca de página.h. Aumentar o tamanho da página.

Exercícios 47

Page 51: FSO - Questões

Resposta: O sistema obviamente está gastando a maior parte do seu tempo paginando, indicando asobrealocação de memória. Se o nível de multiprogramação for reduzido, processos residentes cau-sariam falha de página com menos freqüência e a utilização da CPU melhoraria. Outra maneira demelhorar o desempenho seria obter mais memória física ou um tambor de paginação mais rápido.a. Instalar uma CPU mais rápida – Não.b. Instalar um disco de paginação maior – Não.c. Aumentar o grau de multiprogramação – Não.d. Diminuir o grau de multiprogramação – Sim.e. Instalar mais memória principal – Provavelmente melhora a utilização de CPU porque mais pági-

nas podem permanecer residentes e não exigir paginação de ou para os discos.f. Instalar um disco rígido mais rápido ou múltiplos controladores com múltiplos discos rígidos –

Também é uma melhoria, pois à medida que o gargalo do disco é removido pela resposta mais rá-pida e maior throughput para os discos, a CPU receberá mais dados mais rapidamente.

g. Acrescentar a pré-paginação aos algoritmos de busca de página – Novamente, a CPU receberámais dados mais rapidamente, de modo que será mais utilizada. Isso só acontece se a ação de pa-ginação for favorável à pré-paginação (ou seja, se o acesso for seqüencial).

h. Aumentar o tamanho da página – Aumentar o tamanho da página resultará em menos falhas depágina se os dados estiverem sendo acessados seqüencialmente. Se o acesso aos dados for mais oumenos aleatório, pode haver mais ação de paginação, pois menos páginas podem ser mantidas namemória e mais dados são transferidos por falha de página. Assim, essa mudança tanto pode di-minuir a utilização quanto aumentá-la.

10.10 Considere o array bidimensional A:

int A[ ][ ] = new int[100][100];

onde A[0][0] é armazenado no local 200 de um sistema de memória paginada, com páginas de tama-nho 200. Um pequeno processo reside na página 0 (locais 0 a 199) para manipular a matriz A; assim,cada busca de instrução será a partir da página 0.

Para três quadros de página, indique quantas falhas de página são geradas pelos loops de inicializa-ção de array a seguir. Use a substituição LRU e considere que o quadro de página 1 tem o processonele e os outros dois estão inicialmente vazios:

a. for (int j = 0; j < 100; j++)for (int i = 0; i < 100; i++)A[i][j] = 0;

b. for (int i = 0; i < 100; i++)for (int j = 0; j < 100; j++)A[i][j] = 0;

Resposta:a. 50b. 5.000

10.11 Considere a seguinte string de referência de página:

1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6

Quantas falhas de página ocorreriam para os seguintes algoritmos de substituição, considerandoum, dois, três, quatro, cinco, seis ou sete quadros? Lembre-se de que todos os quadros estão inicial-mente vazios, de modo que todas as suas primeiras páginas exclusivas custarão uma falha cada.

48 Capítulo 10 Memória virtual ELSEVIER

Page 52: FSO - Questões

� Substituição LRU

� Substituição FIFO

� Substituição ideal

Resposta:

Número de frames LRU FIFO Ideal

1 20 20 20

2 18 18 15

3 15 16 11

4 10 14 8

5 8 10 7

6 7 10 7

7 7 7 7

10.12 Suponha que você queira usar um algoritmo de paginação que exija um bit de referência (como o al-goritmo da segunda chance ou o modelo do conjunto de trabalho), mas o hardware não oferece um.Esboce como você poderia simular um bit de referência e calcule o custo para fazer isso.

Resposta: Você pode usar o bit válido/inválido no hardware para simular o bit de referência. Inicial-mente, defina o bit como inválido. Na primeira referência, é gerada um trap para o sistema operacio-nal. O sistema operacional definirá o bit de software como 1 e reiniciará o bit de válido/inválidocomo válido.

10.13 Você idealizou um novo algoritmo de substituição de página que acredita poder ser ideal. Em algunscasos de teste esporádicos, ocorre a anomalia de Belady. O novo algoritmo é ideal? Explique sua res-posta.

Resposta: Não. Um algoritmo ideal não sofrerá da anomalia de Belady porque, por definição, um al-goritmo ideal substitui a página que não será usada por mais tempo. A anomalia de Belady ocorrequando um algoritmo de substituição de página despeja uma página que será necessária no futuroimediato. Um algoritmo ideal não teria selecionado tal página.

10.14 Suponha que sua política de substituição (em um sistema paginado) seja examinar cada página regu-larmente e descartar aquela que não tiver sido usada desde o último exame. O que você ganharia e oque perderia usando essa política em vez da substituição LRU ou da segunda chance?

Resposta: Tal algoritmo poderia ser implementado com o uso de um bit de referência. Após cadaexame, o bit é definido como 0; se a página for referenciada, o bit é definido com 1. O algoritmo,então, selecionaria uma página qualquer para substituição a partir do conjunto de páginas não usa-das desde o último exame.

A vantagem desse algoritmo é sua simplicidade – nada além de um bit de referência precisa ser man-tido. A desvantagem desse algoritmo é que ele ignora a localidade, usando apenas um pequeno pe-ríodo de tempo para determinar se despejará uma página ou não. Por exemplo, uma página pode fa-zer parte do conjunto de trabalho de um processo, mas pode ser despejada porque não foi referen-ciada desde o último exame (ou seja, nem todas as páginas no conjunto de trabalho podem ser refe-renciadas entre os exames).

10.15 A segmentação é semelhante à paginação, mas usa “páginas” de tamanho variável. Defina dois algo-ritmos de substituição baseados nos esquemas de substituição de página FIFO e LRU. Lembre-se de

Exercícios 49

Page 53: FSO - Questões

que, como os segmentos não são do mesmo tamanho, o segmento escolhido para ser substituídopode não ser grande o bastante para deixar locações consecutivas suficientes para o segmento neces-sário. Considere estratégias para sistemas em que os segmentos não podem ser relocados e estraté-gias para sistemas em que eles podem.

Resposta:

� FIFO. Encontre o primeiro segmento grande o suficiente para acomodar o segmento que chega.Se a relocação não for possível e nenhum segmento for grande o bastante, selecione uma combi-nação de segmentos cujas memórias são contíguas, que são “mais próximas do primeiro da lista”e que podem acomodar o novo segmento. Se a relocação for possível, reorganize a memória demodo que os primeiros N segmentos, grandes o suficiente para o segmento que chega, sejam con-tíguos na memória. Acrescente qualquer espaço restante à lista de espaço livre nos dois casos.

� LRU. Selecione o segmento que não foi usado pelo maior período de tempo e que seja grande osuficiente, acrescentando qualquer espaço restante à lista de espaço livre. Se nenhum segmentofor grande o suficiente, selecione uma combinação dos segmentos “mais antigos” que estejamcontíguos na memória (se a relocação não estiver disponível) e que sejam grandes o suficiente. Sea relocação estiver disponível, reorganize os N segmentos mais antigos para serem contíguos namemória e substitua-os pelo novo segmento.

10.16 Um algoritmo de substituição de página deveria minimizar a quantidade de falhas de página. Pode-mos conseguir essa redução distribuindo uniformemente as páginas muito usadas por toda a memó-ria, em vez de deixar que elas disputem uma pequena quantidade de frames de página. Podemos as-sociar a cada quadro de página um contador do número de páginas associadas a esse quadro. De-pois, para substituir uma página, podemos procurar o quadro de página com o menor contador.

a. Defina um algoritmo de substituição de página usando essa idéia básica. Especificamente, resolvaestes problemas:i. Qual é o valor inicial dos contadores?ii. Quando os contadores são aumentados?iii. Quando os contadores são diminuídos?iv. Como é selecionada a página a ser substituída?

b. Quantas falhas de página ocorrem no seu algoritmo para a seguinte string de referência, com qua-tro quadros de página?

1, 2, 3, 4, 5, 3, 4, 1, 6, 7, 8, 7, 8, 9, 7, 8, 9, 5, 4, 5, 4, 2

c. Qual é a quantidade mínima de falhas de página para uma estratégia de substituição de páginaideal, para a seqüência de referência na parte b, com quatro quadros de página?

Resposta:a. Defina um algoritmo de substituição de página resolvendo os problemas de:

i. Valor inicial dos contadores – 0.ii. Os contadores são aumentados – sempre que uma nova página é associada a esse quadro.iii. Quando os contadores são diminuídos – sempre que uma das páginas associadas a esse qua-

dro não é mais exigida.iv. Como é selecionada a página a ser substituída – encontre um quadro com o menor contador.

Use FIFO para desempatar.b. 14 falhas de página.c. 11 falhas de página.

50 Capítulo 10 Memória virtual ELSEVIER

Page 54: FSO - Questões

10.17 Considere um sistema de paginação por demanda, com um disco de paginação que possui um tempomédio de acesso e transferência de 20 milissegundos. Os endereços são traduzidos através de umatabela de página na memória principal, com um tempo de acesso de 1 microssegundo por acesso àmemória. Assim, cada referência à memória no decorrer da tabela de página exige dois acessos. Paramelhorar esse tempo, acrescentamos uma memória associativa, que reduz o tempo de acesso a umareferência à memória, se a entrada da tabela de página estiver na memória associativa.

Considere que 80% dos acessos estão na memória associativa e que, do restante, 10% (ou 2% do to-tal) causam falhas de página. Qual é o tempo efetivo de acesso à memória?

Resposta:

tempo efetivo de acesso = (0,8) × (1 µsec)+ (0,1) × (2 µsec) + (0,1) × (5002 µsec)

= 501,2 µsec= 0,5 milissegundos

10.18 Considere um computador paginado por demanda, no qual o grau de multiprogramação atualmen-te está fixado em quatro. O sistema foi medido recentemente para determinar a utilização da CPU edo disco de paginação. Os resultados correspondem a uma das alternativas a seguir. Para cada caso,o que está acontecendo? Você pode aumentar o grau de multiprogramação para aumentar a utiliza-ção de CPU? A paginação está ajudando a melhorar o desempenho?

a. Utilização de CPU, 13%; utilização de disco, 97%b. Utilização de CPU, 87%; utilização de disco, 3%c. Utilização de CPU, 13%; utilização de disco, 3%

Resposta:a. Está ocorrendo o thrashing.b. A utilização de CPU é suficientemente alta para deixar as coisas como estão, um grau maior de

multiprogramação.c. Aumente o grau de multiprogramação.

10.19 Temos um sistema operacional para uma máquina que usa registradores de base e limite, mas modi-ficamos a máquina para oferecer uma tabela de página. Podemos configurar as tabelas de páginapara que simulem os registradores de base e limite? Como podemos fazer isso ou por que não pode-mos fazer isso?

Resposta: A tabela de página pode ser configurada para simular os registradores de base e limite des-de que a memória seja alocada em segmentos de tamanho fixo. Desse modo, a base de um segmentopode ser entrada na tabela de página e o bit de válido/inválido usado para indicar essa parte do seg-mento como residente na memória. Haverá algum problema com a fragmentação interna.

10.20 Qual é a causa do thrashing? Como o sistema detecta o thrashing? Ao detectar o thrashing, o que osistema pode fazer para eliminar esse problema?

Resposta: O thrashing é causado pela falta de alocação do número mínimo de páginas exigidas porum processo, forçando-o a gerar falha de página continuamente. O sistema pode detectar othrashing avaliando o nível de utilização de CPU comparado com o nível de multiprogramação. Elepode ser eliminado reduzindo-se o nível de multiprogramação.

10.21 Escreva um programa que implemente os algoritmos de substituição de página FIFO e LRU apresen-tados neste capítulo. Primeiro, gere uma seqüência de referência de página aleatória, na qual os nú-meros de página variam de 0 a 9. Aplique a seqüência de referência de página aleatória a cada algo-

Exercícios 51

Page 55: FSO - Questões

ritmo e registre a quantidade de falhas de página incorridas por cada algoritmo. Implemente os algo-ritmos de substituição de modo que a quantidade de quadros de página possa variar de 1 a 7. Supo-nha que a paginação por demanda seja utilizada.

Resposta: Sem resposta proposta.

52 Capítulo 10 Memória virtual ELSEVIER

Page 56: FSO - Questões

C A P Í T U L O 1 1

Interface do sistema de arquivos

Os arquivos são os objetos mais óbvios que os sistemas operacionais manipulam. Tudo é normalmente ar-mazenado em arquivos: programas, dados, saída etc. O aluno deverá aprender o que é um arquivo para osistema operacional e quais são os problemas (provendo convenções de nomes para permitir que os arqui-vos sejam encontrados pelos programas do usuário, proteção).

Dois problemas podem surgir com este capítulo. Primeiro, a terminologia do livro pode ser diferente doseu sistema. Isso pode ser utilizado para esclarecer a questão de que os conceitos são importantes e os ter-mos precisam ser claramente definidos quando você chegar a um novo sistema. Segundo, pode ser difícilmotivar alunos a estudarem estruturas de diretório que não sejam iguais às do sistema que estão utilizando.Isso pode ser melhor contornado se os alunos tiverem dois sistemas muito diferentes para considerar, comoum sistema monousuário para um microcomputador e um sistema de tempo compartilhado de grande porteda universidade.

Os projetos podem incluir um relatório sobre os detalhes do sistema de arquivos do sistema local. Tam-bém é possível incluir a escrita de programas para implementar um sistema de arquivos simples em memória(aloque um bloco de memória grande que seja usado para simular um disco) ou em cima de um sistema dearquivos existente. Em muitos casos, o estudo de um sistema de arquivos é um projeto interessante por si só.

Exercícios11.1 Considere um sistema de arquivos no qual um arquivo pode ser excluído e seu espaço em disco reto-

mado enquanto os links para esse arquivo ainda existem. Que problemas poderão ocorrer se umnovo arquivo for criado na mesma área de armazenamento ou com o mesmo nome de caminho ab-soluto? Como esses problemas podem ser evitados?

Resposta: Seja F1 o arquivo antigo e F2 o novo. Um usuário que deseja acessar F1 através de um linkexistente na realidade acessará F2. Observe que a proteção de acesso para o arquivo F1 é usada emvez daquela associada a F2.

Esse problema pode ser evitado garantindo-se que todos os links para um arquivo excluído tambémsejam excluídos. Isso pode ser feito de várias maneiras:

a. Mantenha uma lista de todos os links para um arquivo, removendo cada um deles quando o arquivofor excluído.

b. Retenha os links, removendo-os quando for feita uma tentativa de acessar um arquivo excluído.

Page 57: FSO - Questões

c. Mantenha uma lista de referência (ou contador), excluindo o arquivo somente depois que todos oslinks ou referências a esse arquivo tiverem sido excluídos.

11.2 Alguns sistemas excluem automaticamente todos os arquivos do usuário quando um usuário se des-conecta ou quando uma tarefa termina, a menos que o usuário solicite explicitamente que eles sejammantidos; outros sistemas mantêm todos os arquivos, a menos que o usuário os exclua explicita-mente. Discuta os méritos relativos de cada uma dessas abordagens.

Resposta: Excluir todos os arquivos que não foram salvos especificamente pelo usuário tem a vanta-gem de minimizar o espaço em arquivo necessário para cada usuário, não salvando arquivos indese-jados ou desnecessários. Salvar todos os arquivos, a menos que sejam especificamente excluídos, émais seguro para o usuário, porque não é possível perder arquivos inadvertidamente, esquecendo-sede salvá-los.

11.3 Por que alguns sistemas registram o tipo de um arquivo, enquanto outros deixam isso para o usuárioou simplesmente não implementam múltiplos tipos de arquivo? Qual é o “melhor” sistema?

Resposta: Alguns sistemas permitem diferentes operações sobre o arquivo com base no tipo do ar-quivo (por exemplo, um arquivo ascii pode ser lido como um stream, enquanto um arquivo de ban-co de dados pode ser lido por um índice para um bloco). Outros sistemas deixam tal interpretaçãodos dados de um arquivo para o processo e não oferecem ajuda no acesso aos dados. O “melhor”método depende das necessidades dos processos no sistema e das demandas que os usuários fazemsobre o sistema operacional. Se um sistema executar principalmente aplicações de banco de dados,pode ser mais eficiente para o sistema operacional implementar um arquivo tipo banco de dados eoferecer operações apropriadas, em vez de fazer com que cada programa as implemente (possivel-mente, de diferentes maneiras). Para sistemas de uso geral, pode ser melhor implementar apenas ostipos de arquivo básicos, para manter o tamanho do sistema operacional menor e permitir o máxi-mo de liberdade aos processos no sistema.

11.4 De modo semelhante, alguns sistemas admitem muitos tipos de estruturas para os dados de um ar-quivo, enquanto outros simplesmente admitem um fluxo de bytes. Quais são as vantagens e desvan-tagens de cada abordagem?

Resposta: Uma desvantagem de fazer com que o sistema admita diferentes estruturas de arquivos re-side no fato de que o suporte é fornecido pelo sistema operacional; as aplicações não precisam pro-ver o suporte. Além disso, se o sistema operacional oferece o suporte para diferentes estruturas dearquivo, ele pode implementar o suporte de forma eficiente, presumivelmente mais eficiente do queuma aplicação.

A desvantagem de fazer com que o sistema forneça o suporte para tipos de arquivos definidos é queisso aumenta o tamanho do sistema. Além disso, as aplicações que podem exigir diferentes tipos dearquivo além do que é fornecido pelo sistema podem não ser capazes de executar em tais sistemas.

Uma estratégia alternativa é que o sistema operacional não defina suporte para as estruturas de ar-quivo e, em vez disso, trate todos os arquivos como uma série de bytes. Essa é a técnica utilizada pe-los sistemas UNIX. A vantagem dessa técnica é que ela simplifica o suporte do sistema operacionalpara os sistemas de arquivo, uma vez que o sistema operacional não precisa mais fornecer a estruturapara diferentes tipos de arquivos. Além do mais, isso permite que as aplicações definam estruturasde arquivo, aliviando assim a situação em que um sistema operacional pode não oferecer uma defini-ção de arquivo exigida para uma aplicação específica.

11.5 Quais são as vantagens e as desvantagens de registrar o nome do programa criador com os atributosdo arquivo (como acontece no sistema operacional do Macintosh)?

54 Capítulo 11 Interface do sistema de arquivos ELSEVIER

Page 58: FSO - Questões

Resposta: Registrando o nome do programa criador, o sistema operacional é capaz de implementarrecursos (como chamada automática do programa quando o arquivo for acessado) com base nessainformação. Porém, isso gera um custo adicional para o sistema operacional e exige espaço no des-critor do arquivo.

11.6 Você pode simular uma estrutura de diretórios multinível com uma estrutura de diretórios de úniconível, em que nomes arbitrariamente longos podem ser utilizados? Se a sua resposta for sim, expli-que como fazer isso e compare esse esquema com o esquema de diretórios multinível. Se a sua res-posta for não, explique o que impede o sucesso da sua simulação. Qual seria a sua resposta se os no-mes de arquivo fossem limitados a sete caracteres?

Resposta: Se nomes arbitrariamente longos podem ser usados, então é possível simular uma estrutu-ra de diretórios multinível. Isso pode ser feito, por exemplo, usando-se o caractere “.” para indicar ofinal de um subdiretório. Assim, por exemplo, o nome jim.java.F1 especifica que F1 é um arquivono subdiretório java, que, por sua vez, está no diretório raiz jim.

Se os nomes de arquivo fossem limitados a sete caracteres, então esse esquema não poderia ser utili-zado e, portanto, em geral, a resposta é não. A segunda melhor técnica nessa situação seria usar umarquivo específico como uma tabela de símbolos (diretório) para mapear nomes arbitrariamentelongos (como jim.java.F1) para nomes arbitrariamente mais curtos (como XX00743), que são entãoutilizados para o acesso real ao arquivo.

11.7 Explique a finalidade das operações open e close.

Resposta:

� A operação open informa ao sistema que o arquivo indicado está para se tornar ativo.

� A operação close informa ao sistema que o arquivo indicado não está mais em uso ativo pelo usuá-rio que emitiu a operação close.

11.8 Alguns sistemas abrem automaticamente um arquivo quando ele é referenciado pela primeira vez e fe-cham o arquivo quando a tarefa termina. Discuta as vantagens e desvantagens desse esquema em com-paração com o mais tradicional, no qual o usuário precisa abrir e fechar o arquivo explicitamente.

Resposta: A abertura e fechamento automático de arquivos alivia o usuário da chamada dessas fun-ções e, por isso, é mais conveniente para o usuário; porém, isso exige mais custo adicional do que ocaso em que são exigidos abertura e fechamento explícitos.

11.9 Dê um exemplo de uma aplicação em que os dados em um arquivo devem ser acessados na seguinteordem:

a. Seqüencialmenteb. Aleatoriamente

Resposta:a. Imprimir o conteúdo do arquivo.b. Imprimir o conteúdo do registro i. Esse registro pode ser encontrado por meio das técnicas de

hashing ou índice.

11.10 Alguns sistemas oferecem compartilhamento de arquivos mantendo uma única cópia de uma arqui-vo; outros sistemas mantêm várias cópias, uma para cada um dos usuários compartilhando o arqui-vo. Discuta os méritos relativos de cada abordagem.

Resposta: Com uma única cópia, várias atualizações concorrentes a um arquivo podem resultar nousuário obtendo informações incorretas, e o arquivo sendo deixado em um estado incorreto. Commúltiplas cópias, existe desperdício de armazenamento e as diversas cópias podem não estar coeren-tes entre si.

Exercícios 55

Page 59: FSO - Questões

11.11 Em alguns sistemas, um subdiretório pode ser lido e escrito por um usuário autorizado, assim comoos arquivos normais.

a. Descreva os problemas de proteção que poderiam surgir.b. Proponha um esquema para lidar com cada um desses problemas de proteção.

Resposta:a. Uma das informações mantidas em uma entrada de diretório é a localização do arquivo. Se um

usuário pudesse modificar essa localização, então ele poderia acessar outros arquivos, anulando oesquema de proteção de acesso.

b. Não permita que o usuário escreva diretamente no subdiretório. Em vez disso, forneça operaçõesdo sistema para fazer isso.

11.12 Considere um sistema que admita 5.000 usuários. Suponha que você queira permitir que 4.990 des-ses usuários possam acessar um arquivo.

a. Como você especificaria esse esquema de protocolo em UNIX?b. Você poderia sugerir um esquema de proteção que fosse mais eficiente para essa finalidade do

que o esquema fornecido pelo UNIX?

Resposta:a. Existem dois métodos para conseguir isso:

i. Crie uma lista de controle de acesso com os nomes de todos os 4.990 usuários.ii. Coloque esses 4.990 usuários em um grupo e defina o acesso ao grupo devidamente. Esse es-

quema nem sempre poderá ser implementado, pois os grupos de usuários são restritos pelo sis-tema.

b. As informações de acesso universal se aplicam a todos os usuários, a menos que seu nome apareçana lista de controle de acesso com permissão de acesso diferente. Com esse esquema, você sim-plesmente coloca os nomes dos dez usuários restantes na lista de controle de acesso, mas sem pri-vilégios de acesso permitidos.

11.13 Os pesquisadores têm sugerido que, em vez de ter uma lista de controle de acesso associada a cadaarquivo (especificando quais usuários podem acessar o arquivo, e como), devemos ter uma lista decontrole de usuário associada a cada usuário (especificando quais arquivos um usuário pode acessar,e como). Discuta os méritos relativos desses dois esquemas.

Resposta:

� Lista de controle de arquivo. Como a informação de controle de acesso está concentrada em umúnico local, é mais fácil mudar as informações de controle de acesso, e isso exige menos espaço.

� Lista de controle do usuário. Isso exige menos custo adicional quando um arquivo é aberto.

56 Capítulo 11 Interface do sistema de arquivos ELSEVIER

Page 60: FSO - Questões

C A P Í T U L O 1 2

Implementação do sistemade arquivos

Neste capítulo, discutimos os diversos métodos para o armazenamento de informações no armazenamentosecundário. Os aspectos fundamentais são: diretório de dispositivo, gerenciamento de espaço livre e aloca-ção de espaço em um disco.

Exercícios12.1 Considere um arquivo atualmente consistindo em 100 blocos. Imagine que o FCB (e o bloco de índi-

ce, no caso da alocação indexada) já esteja na memória. Calcule quantas operações de E/S de discosão necessárias para as estratégias de alocação contígua, interligada e indexada (único nível), se, paraum bloco, as condições a seguir forem mantidas. No caso da alocação contígua, considere que nãoexiste espaço para crescimento no início, mas sim no final. Suponha que as informações de bloco aserem acrescentadas estejam armazenadas na memória.

a. O bloco é acrescentado no início.b. O bloco é acrescentado no meio.c. O bloco é acrescentado no final.d. O bloco é removido do início.e. O bloco é removido do meio.f. O bloco é removido do final.

Resposta:

Contígua Interligada Indexada

a. 201 1 1

b. 101 52 1

c. 1 3 1

d. 198 1 0

e. 98 52 0

f. 0 100 0

Page 61: FSO - Questões

12.2 Considere um sistema no qual o espaço livre é mantido em uma lista de espaço livre.

a. Suponha que o ponteiro para a lista de espaço livre seja perdido. O sistema pode reconstruir a lis-ta de espaço livre? Explique sua resposta.

b. Sugira um esquema para garantir que o ponteiro nunca é perdido como resultado de falha na me-mória.

Resposta:a. Para reconstruir a lista de espaço livre, seria necessário realizar a “garbage collection” (coleta de

lixo). Isso ocasiona a busca da estrutura de diretório inteira para determinar quais páginas já es-tão alocadas às tarefas. Essas páginas desalocadas restantes seriam reinterligadas como a lista deespaço livre.

b. O ponteiro da lista de espaço livre poderia ser armazenado no disco, talvez em vários lugares.

12.3 Que problemas poderiam ocorrer se um sistema permitisse que um sistema de arquivos fosse monta-do simultaneamente em mais de um local?

Resposta: Haveria múltiplos caminhos para o mesmo arquivo, o que confundiria os usuários ou motiva-ria erros (a exclusão de um arquivo com um caminho exclui o arquivo em todos os outros caminhos).

12.4 Por que o mapa de bits para alocação de arquivo precisa ser mantido no armazenamento de massa,em vez da memória principal?

Resposta: No caso de falha do sistema (falha de memória), a lista de espaço livre não seria perdida,como aconteceria se o mapa de bits tivesse sido armazenado na memória principal.

12.5 Considere um sistema que admita as estratégias de alocação contígua, interligada e indexada. Que cri-térios devem ser usados na decisão de qual estratégia é melhor utilizada para determinado arquivo?

Resposta:

� Contígua – se o arquivo normalmente é acessado seqüencialmente, se o arquivo é relativamentepequeno.

� Interligada – se o arquivo é grande e normalmente acessado seqüencialmente.

� Indexada – se o arquivo é grande e normalmente acessado aleatoriamente.

12.6 Considere um sistema de arquivos em um disco que tenha tamanhos de bloco lógico e físico de 512bytes. Considere que as informações sobre cada arquivo já estejam na memória. Para cada uma dastrês estratégias de alocação (contígua, interligada e indexada), responda a estas perguntas:

a. Como é realizado o mapeamento de endereço físico para lógico nesse sistema? (Para a alocaçãoindexada, considere que um arquivo já tenha menos de 512 blocos de extensão.)

b. Se estivermos atualmente no bloco lógico 10 (o último bloco acessado foi o bloco 10) e quiser-mos acessar o bloco lógico 4, quantos blocos físicos do disco precisam ser lidos?

Resposta: Considere Z o endereço inicial do arquivo (número do bloco).a. Contígua. Divida o endereço lógico por 512 com X e Y sendo o quociente e o resto resultantes,

respectivamente.i. Some X a Z para obter o número do bloco físico. Y é o deslocamento dentro desse bloco.ii. 1

b. Interligada. Divida o endereço lógico por 511 com X e Y sendo o quociente e o resto resultantes,respectivamente.i. Pesquise a lista interligada (apanhando X + 1 blocos). Y + 1 é o deslocamento dentro do últi-

mo bloco físico.ii. 4

58 Capítulo 12 Implementação do sistema de arquivos ELSEVIER

Page 62: FSO - Questões

c. Indexada. Divida o endereço lógico por 512 com X e Y sendo o quociente e o resto resultantes,respectivamente.i. Apanhe o bloco de índice para a memória. O endereço do bloco físico está contido no bloco de

índice no local X. Y é o deslocamento dentro do bloco físico desejado.ii. 2

12.7 Um problema com a alocação contígua é que o usuário precisa pré-alocar espaço suficiente paracada arquivo. Se o arquivo crescer e se tornar maior do que o espaço alocado para ele, ações espe-ciais precisarão ser tomadas. Uma solução é definir uma estrutura de arquivo que consista em umaárea inicial contígua (de um tamanho especificado). Se essa área for preenchida, o sistema operacio-nal definirá automaticamente uma área de estouro vinculada à área contígua inicial. Se a área de es-touro estiver preenchida, outra área de estouro será alocada. Compare essa implementação de umarquivo com as implementações contígua e interligada padrão.

Resposta: Esse método exige mais custo adicional do que a alocação contígua padrão. Ele exige me-nos custo adicional do que a alocação interligada padrão.

12.8 A fragmentação em um dispositivo de armazenamento poderia ser eliminada pela nova compacta-ção das informações. Os dispositivos de disco típicos não possuem registros de relocação ou de base(como os que são usados quando a memória deve ser compactada) e, por isso, como podemos relo-car os arquivos? Indique três razões pelas quais a nova compactação e a relocação de arquivos nor-malmente são evitadas.

Resposta: A relocação de arquivos no armazenamento secundário envolve um custo adicional consi-derável – os blocos de dados teriam de ser lidos para a memória principal e escritos de volta aos seusnovos locais iniciais. Além do mais, os registros de relocação só se aplicam a arquivos seqüenciais, emuitos arquivos de disco não são seqüenciais. Por esse mesmo motivo, muitos arquivos novos não exi-girão espaço em disco contíguo; até mesmo os arquivos seqüenciais podem receber blocos não contí-guos se as ligações entre os blocos logicamente seqüenciais forem mantidos pelo sistema de disco.

12.9 Como os caches ajudam a melhorar o desempenho? Por que os sistemas não usam mais caches ou ca-ches maiores, se eles são tão úteis?

Resposta: O cache permite que componentes de velocidades diferentes se comuniquem de formamais eficiente, armazenando dados do dispositivo mais lento, temporariamente, em um dispositivomais veloz (o cache). Os caches são, quase por definição, mais dispendiosos do que o dispositivo aosquais estão servindo, de modo que o aumento da quantidade ou do tamanho de caches aumentaria ocusto do sistema.

12.10 Em que situações o uso da memória como um disco de RAM seria mais útil do que seu uso como umcache de disco?

Resposta: Nos casos em que o usuário (ou sistema) sabe exatamente quais dados serão necessários.Os caches são baseados em algoritmo, enquanto um disco de RAM é direcionado para o usuário.

12.11 Por que é vantajoso para o usuário que um sistema operacional aloque dinamicamente suas tabelasinternas? Quais são as penalidades para o sistema operacional por fazer isso?

Resposta: As tabelas dinâmicas permitem mais flexibilidade no crescimento do uso do sistema – astabelas nunca são excedidas, evitando limites de uso artificiais. Infelizmente, as estruturas do kernele o código são mais complicados, de modo que o potencial para bugs é maior. O uso de um recursopode tomar mais recursos do sistema (aumentando para acomodar as requisições) do que com tabe-las estáticas.

Exercícios 59

Page 63: FSO - Questões

12.12 Explique por que o logging de metadados garante a recuperação de um sistema de arquivos após afalha de um sistema de arquivos.

Resposta: Para que um sistema de arquivos possa ser recuperado após uma falha, ele precisa estar coe-rente ou ser capaz de se tornar coerente. Portanto, temos de provar que o logging das atualizações demetadados mantém o sistema de arquivos em um estado coerente ou capaz de se tornar coerente. Paraque um sistema de arquivos se torne incoerente, os metadados precisam ser escritos de forma incom-pleta ou na ordem errada nas estruturas de dados do sistema de arquivos. Com o logging de metada-dos, as escritas são feitas a um log seqüencial. A transação completa é escrita lá antes de ser movidapara as estruturas do sistema de arquivos. Se o sistema falhar durante as atualizações de dados do siste-ma de arquivos, as atualizações podem ser completadas com base nas informações do log. Assim, ologging garante que as mudanças no sistema de arquivos sejam completamente realizadas (antes ouapós uma falha). A ordem das mudanças é garantida como sendo correta devido às escritas seqüenciaisno log. Se for realizada uma alteração incompleta no log, ela é descartada, sem que sejam feitas mu-danças nas estruturas do sistema de arquivos. Portanto, as estruturas são coerentes ou podem se tornartrivialmente coerentes por meio da reprodução do logging de metadados.

12.13 Explique como a camada do VFS permite que um sistema operacional aceite facilmente vários tiposde sistemas de arquivos.

Resposta: O VFS introduz uma camada de indireção na implementação do sistema de arquivos. Demuitas maneiras, isso é semelhante às técnicas de programação orientada a objeto. As chamadas desistema podem ser feitas de forma genérica (independente do tipo do sistema de arquivos). Cadatipo de sistema de arquivos oferece suas chamadas de função e estruturas de dados à camada do VFS.Uma chamada de sistema é traduzida para as funções específicas apropriadas para o sistema de ar-quivos alvo na camada do VFS. O programa de chamada não possui código específico do sistema dearquivos, e os níveis superiores das estruturas de chamada de sistema, da mesma forma, são indepen-dentes do sistema de arquivos. A tradução na camada do VFS transforma essas chamadas genéricasem operações específicas do sistema de arquivos.

12.14 Considere o seguinte esquema de backup:

� Dia 1: Copiar para um meio de backup todos os arquivos do disco.

� Dia 2: Copiar para outro meio todos os arquivos alterados desde o dia 1.

� Dia 3: Copiar para outro meio todos os arquivos alterados desde o dia 1.

Isso é diferente da agenda dada na Seção 12.7.2, quando todos os backups subseqüentes copiam to-dos os arquivos modificados desde o primeiro backup completo. Quais são os benefícios desse siste-ma em relação ao da Seção 12.7.2? Quais são as desvantagens? As operações de restauração se tor-nam mais fáceis ou mais difíceis? Explique sua resposta.

Resposta: As restaurações são mais fáceis porque você pode ir até a última fita de backup, em vez dafita inteira. Nenhuma fita intermediária precisa ser lida. Mais fita é usada à medida que mais arqui-vos são alterados.

60 Capítulo 12 Implementação do sistema de arquivos ELSEVIER

Page 64: FSO - Questões

C A P Í T U L O 1 3

Sistemas de E/S

O papel do sistema operacional na E/S do computador é gerenciar e controlar as operações e os dispositivosde E/S. Embora apareçam tópicos relacionados em outros capítulos, neste, reunimos as partes para termosuma visão completa. Neste capítulo, descrevemos a Estrutura da E/S, Dispositivo, Drivers de Dispositivo,Caching e E/S de Terminal.

Exercícios13.1 Cite três vantagens de colocar a funcionalidade em um controlador de dispositivo, em vez do kernel.

Cite três desvantagens.

Resposta: Três vantagens:

� Os bugs são menos propensos a causar uma falha do sistema operacional.

� O desempenho pode ser melhorado com a utilização de hardware dedicado e algoritmos codifi-cados rigidamente.

� O kernel é simplificado pela retirada de algoritmos.

Três desvantagens:

� Os bugs são mais difíceis de se consertar – uma nova versão de firmware ou novo hardware é ne-cessária.

� A melhoria de algoritmos provavelmente exige uma atualização do hardware, em vez de apenasuma atualização do kernel ou do driver de dispositivo.

� Algoritmos embutidos poderiam entrar em conflito com o uso do dispositivo pela aplicação, cau-sando um desempenho inferior.

13.2 Considere os seguintes cenários de E/S em um PC monousuário.

a. Um mouse usado com uma interface gráfica do usuário.b. Uma unidade de fita em um sistema operacional multitarefa (considere que nenhuma pré-alo-

cação de dispositivo está disponível).c. Uma unidade de disco contendo arquivos do usuário.d. Uma placa gráfica com conexão direta do barramento, acessível através da E/S mapeada na me-

mória.

Page 65: FSO - Questões

Para cada um desses cenários de E/S, você projetaria o sistema operacional para usar buffers, spoo-ling, caches ou uma combinação destes? Você usaria E/S por polling ou E/S controlada por interrup-ção? Dê os motivos das suas escolhas.

Resposta:a. Um mouse usado com uma interface gráfica do usuário – O buffering pode ser necessário para re-

gistrar o movimento do mouse durante os momentos em que estão ocorrendo operações demaior prioridade. O spooling e o caching são impróprios. A E/S controlada por interrupção émais apropriada.

b. Uma unidade de fita em um sistema operacional multitarefa (considere que nenhuma pré-aloca-ção de dispositivo está disponível) – O buffering pode ser necessário para gerenciar a diferença dethroughput entre a unidade de fita e a origem ou o destino da E/S. O caching pode ser usado paramanter cópias de dados que residem na fita, para um acesso mais rápido. O spooling poderia serusado para colocar dados no dispositivo quando vários usuários desejam ler dele ou escrevernele. A E/S controlada por interrupção provavelmente permitirá o melhor desempenho.

c. Uma unidade de disco contendo arquivos do usuário – O buffering pode ser usado para manterdados enquanto estão em trânsito, do espaço do usuário para o disco, e vice-versa. O cachingpode ser usado para manter dados residentes no disco para melhorar o desempenho. O spoolingnão é necessário porque os discos são dispositivos de acesso compartilhado. A E/S controlada porinterrupção é melhor para dispositivos como discos que transferem dados em baixas velocidades.

d. Uma placa gráfica com conexão direta do barramento, acessível através da E/S mapeada na me-mória – O buffering pode ser necessário para controlar o acesso múltiplo e por desempenho (obuffering duplo pode ser usado para manter a próxima imagem da tela enquanto exige a atual). Ocaching e o spooling não são necessários devido às naturezas de acesso veloz e compartilhado dodispositivo. O spolling e as interrupções são úteis apenas para entrada e para detecção de términode E/S, nenhum deles necessário para um dispositivo mapeado na memória.

13.3 O exemplo de handshaking na Seção 13.2 usou 2 bits: um bit ocupado e um bit comando pronto. Épossível implementar esse handshaking com apenas 1 bit? Se for, descreva o protocolo. Se não, ex-plique por que 1 bit é insuficiente.

Resposta: É possível, usando o algoritmo a seguir. Vamos supor que simplesmente usemos o bit ocu-pado (ou o bit de pronto de comando, essa resposta é a mesma). Quando o bit está desativado, ocontrolador está ocioso. O host escreve os dados e define o bit para sinalizar que uma operação estápronta (o equivalente a definir o bit de pronto de comando). Quando o controlador terminar, eleapagará o bit ocupado. O host, então, inicia a próxima operação.

Essa solução exige que o host e o controlador tenham acesso de leitura e escrita ao mesmo bit, o quepode complicar os circuitos e aumentar o custo do controlador.

13.4 Descreva três circunstâncias sob as quais a E/S bloqueante seria utilizada. Descreva três circunstân-cias sob as quais a E/S não bloqueante seria usada. Por que não implementar simplesmente a E/S nãobloqueante e ter processos em espera ocupada (busy-wait) até que seu dispositivo esteja pronto?

Resposta: Geralmente, o bloqueio de E/S é apropriado quando o processo só estiver esperando porum evento específico. Alguns exemplos incluem um disco, fita ou teclado lido por uma aplicação. AE/S não-bloqueante é útil quando a E/S pode vir de mais de uma origem e a ordem da chegada da E/Snão é predeterminada. Alguns exemplos incluem daemons de rede escutando mais de um socket derede, gerenciadores de janelas que aceitam movimento do mouse e entrada do teclado, e programasde gerenciamento de E/S, como um comando copy que copia dados entre dispositivos de E/S. No úl-timo caso, o programa poderia otimizar seu desempenho colocando a entrada e a saída em buffer eusando a E/S não-bloqueante para manter os dois dispositivos totalmente ocupados.

62 Capítulo 13 Sistemas de E/S ELSEVIER

Page 66: FSO - Questões

A E/S não-bloqueante é mais complicada para programadores, devido ao encontro assíncrono que énecessário quando ocorre uma E/S. Além disso, a espera ocupada é menos eficiente do que a E/Scontrolada por interrupção, de modo que o desempenho geral do sistema diminuiria.

13.5 Por que um sistema poderia usar E/S controlada por interrupção para gerenciar uma única portaserial, mas E/S por polling para gerenciar um processador front-end, como um concentrador determinais?

Resposta: O polling pode ser mais eficiente do que a E/S controlada por interrupção. Esse é o casoquando a E/S é freqüente e de curta duração. Embora uma única porta serial realize E/S de forma re-lativamente pouco freqüente e deva usar interrupções, uma coleção de portas seriais como essas emum concentrador de terminal pode produzir muitas operações de E/S curtas, e a interrupção paracada uma poderia criar uma carga pesada sobre o sistema. Um loop de polling bem temporizado po-deria aliviar essa carga sem desperdiçar muitos recursos através do looping sem a necessidade de E/S.

13.6 O polling para o término da E/S pode desperdiçar uma grande quantidade de ciclos de CPU se o pro-cessador passar por um loop de espera ocupada muitas vezes antes que a E/S termine. Mas se o dis-positivo de E/S estiver pronto para atender, a consulta pode ser muito mais eficiente do que apanhare despachar uma interrupção. Descreva uma estratégia híbrida, que combine o polling, a espera dor-mindo e as interrupções para o atendimento ao dispositivo de E/S. Para cada uma dessas três estraté-gias (polling puro, interrupções puras, híbrida), descreva um ambiente de computação em que essaestratégia é mais eficiente do que as outras duas.

Resposta: Uma técnica híbrida poderia alternar entre polling e interrupções, dependendo do tama-nho da espera da operação de E/S. Por exemplo, poderíamos usar o polling e repetir N vezes, e, se odispositivo ainda estiver ocupado em N+1, poderíamos definir uma interrupção e dormir. Essa téc-nica evitaria longos ciclos de espera ocupada. Esse método seria melhor para tempos ocupados mui-to longos ou muito curtos. Ela seria ineficaz se a E/S terminar em N+T (onde T é um pequeno nú-mero de ciclos), devido ao custo adicional do polling mais a configuração e a captura de interrup-ções. O polling puro é melhor com tempos de espera muito curtos. As interrupções são melhorescom longos tempos de espera conhecidos.

13.7 O UNIX coordena as atividades dos componentes de E/S do kernel manipulando as estruturas dedados compartilhadas no kernel, enquanto o Windows NT utiliza a troca de mensagens orientada aobjeto entre os componentes de E/S do kernel. Discuta três prós e três contras de cada técnica.

Resposta: Três prós do método do UNIX:

� Muito eficiente, pouco custo adicional e pouca quantidade de movimento de dados.

� Implementação rápida – nenhuma coordenação necessária com outros componentes do kernel.

� Simples, de modo que há menos chances de perda de dados.

Três contras:

� Sem proteção dos dados e efeitos colaterais possíveis com as mudanças, de modo que é mais difí-cil de depurar.

� Difícil de implementar novos métodos de E/S: novas estruturas de dados necessárias, em vez deapenas novos objetos.

� Complicado subsistema de E/S do kernel, cheio de estruturas de dados, rotinas de acesso e meca-nismos de bloqueio.

13.8 Como o DMA aumenta a concorrência no sistema? Como ele complica o projeto do hardware?

Resposta: O DMA aumenta a concorrência do sistema permitindo que a CPU realize tarefas en-quanto o sistema de DMA transfere dados por meio dos barramentos do sistema e de memória. O

Exercícios 63

Page 67: FSO - Questões

projeto do hardware é complicado porque o controlador de DMA precisa ser integrado ao sistema,e o sistema precisa permitir que o controlador de DMA seja um controlador do barramento. O rou-bo de ciclos também pode ser necessário para permitir que a CPU e o controlador de dados compar-tilhem o uso do barramento de memória.

13.9 Escreva (em pseudocódigo) uma implementação dos relógios virtuais, incluindo o enfileiramento eo gerenciamento das requisições de temporizador para o kernel e as aplicações. Considere que ohardware oferece três canais de temporizador.

Resposta: Cada canal executaria o seguinte algoritmo:

/** definições de dados **/// uma lista de interrupções armazenadas pela ordem do mais antigo primeiroList interruptList

// a lista que associa uma requisição a uma entrada em interruptListList requestList

// um temporizador baseado em interrupçãoTimer timer

while (true) {/** Apanha o próximo horário mais antigo na lista **/timer.setTime = interruptList.next( );

/** Uma interrupção ocorrerá no momento timer.setTime **/

/** agora espera pela interrupção do temporizadorou seja, pela expiração do temporizador **/

notify( requestList.next( ) );}

13.10 Por que é importante aumentar o barramento do sistema e as velocidades dos dispositivos à medidaque a velocidade da CPU aumenta?

Resposta: Considere um sistema que trabalha 50% com E/S e 50% com cálculo. Dobrar o desempe-nho da CPU nesse sistema aumentaria o desempenho total do sistema em apenas 50%. Dobrar osdois aspectos do sistema aumentaria o desempenho em 100%. Em geral, é importante remover ogargalo atual do sistema e aumentar o desempenho geral do sistema, em vez de aumentar cegamenteo desempenho dos componentes individuais do sistema.

13.11 Faça a distinção entre um driver STREAMS e um módulo STREAMS.

Resposta: O driver STREAMS controla um dispositivo físico que poderia estar envolvido em umaoperação de STREAMS. O módulo STREAMS modifica o fluxo de dados entre a ponta (a interfacecom o usuário) e o driver.

64 Capítulo 13 Sistemas de E/S ELSEVIER

Page 68: FSO - Questões

C A P Í T U L O 1 4

Estrutura de armazenamento emmassa

Neste capítulo, descrevemos as estruturas de dados internas e os algoritmos usados pelo sistema operacionalpara implementar essa interface. Também discutimos o mais baixo nível do sistema de arquivos na estruturade armazenamento secundário. Primeiro, descrevemos os algoritmos de escalonamento da cabeça de disco.Em seguida, discutimos a formatação e o gerenciamento de disco dos blocos boot, blocos danificados e es-paço de swap. Terminamos com a cobertura da confiabilidade do disco e armazenamento estável.

A implementação básica do escalonamento de disco deverá ser bastante clara: requisições, filas, atendi-mento, de modo que a nova consideração principal são os algoritmos reais: FCFS, SSTF, SCAN, C-SCAN,LOOK, C-LOOK. A simulação pode ser a melhor maneira de envolver o aluno com os algoritmos; o Exercí-cio 14.7 oferece uma pergunta favorável a um estudo de uma pequena simulação, porém em aberto.

O artigo de Worthington e outros [1994] provê uma boa apresentação dos algoritmos de escalonamentode disco e sua avaliação. Desconfie dos resultados dos artigos sobre escalonamento de disco da década de1970, como Teory e Pinkerton [1972], pois geralmente consideram que a função do tempo de busca é li-near, em vez de uma raiz quadrada. O artigo de Lynch [1972b] mostra a importância de manter o contextogeral do sistema em mente quando se escolhe o agendamento de algoritmos. Infelizmente, isso é muito difí-cil de encontrar.

O Capítulo 2 apresentou o conceito de armazenamento primário, secundário e terciário. Neste capítulo,discutimos o armazenamento terciário com mais detalhes. Primeiro, descrevemos os tipos de dispositivos dearmazenamento usados para o armazenamento terciário. Em seguida, discutimos as questões que surgemquando um sistema operacional utiliza o armazenamento terciário. Finalmente, consideramos alguns aspec-tos de desempenho dos sistemas de armazenamento terciário.

Exercícios14.1 Nenhuma das disciplinas de escalonamento de disco, exceto FCFS, é verdadeiramente justa (pode

ocorrer starvation).

a. Explique por que essa afirmação é verdadeira.b. Descreva um meio de modificar algoritmos como SCAN para garantir a imparcialidade.c. Explique por que a imparcialidade é um objetivo importante em um sistema de tempo comparti-

lhado.

Page 69: FSO - Questões

d. Indique três ou mais exemplos de circunstâncias em que é importante que o sistema operacionalseja injusto no atendimento das requisições de E/S.

Resposta:a. Novas requisições para a trilha sobre a qual a cabeça do disco atualmente reside, teoricamente

podem chegar tão rapidamente quanto essas requisições estão sendo atendidas.b. Todas as requisições mais antigas do que alguma idade predeterminada poderiam ser “forçadas”

para o topo da fila, e um bit associado a cada uma poderia ser definido para indicar que nenhumarequisição nova poderia ser movida para além dessas requisições. Para SSTF, o restante da fila te-ria de ser reorganizado com relação à última dessas requisições “antigas”.

c. Para impedir tempos de resposta excessivamente longos.d. A paginação e o swap devem ter prioridade em relação às requisições do usuário. Isso pode ser

desejável para outro tipo de E/S iniciada pelo kernel, como a escrita dos metadados do sistema dearquivo, para ter precedência sobre a E/S do usuário. Se o kernel admitir prioridades de processoem tempo real, as requisições de E/S desses processos deverão ser favorecidas.

14.2 Suponha que determinada unidade de disco tenha 5.000 cilindros, numerados de 0 a 4999. A unida-de atualmente está atendendo a uma requisição no cilindro 143, e a requisição anterior foi no cilin-dro 125. A fila de requisições pendentes, na ordem FIFO, é

86, 1470, 913, 1774, 948, 1509, 1022, 1750, 130

Começando na posição atual da cabeça, qual é a distância total (em cilindros) que o braço do discose move para satisfazer a todas as requisições pendentes para cada um dos seguintes algoritmos deescalonamento de disco?

a. FCFSb. SSTFc. SCANd. LOOKe. C-SCANf. C-LOOK

Resposta:a. O escalonamento FCFS é 143, 86, 1470, 913, 1774, 948, 1509, 1022, 1750, 130. A distância de

busca total é 7081.b. O escalonamento SSTF é 143, 130, 86, 913, 948, 1022, 1470, 1509, 1750, 1774. A distância de

busca total é 1745.c. O escalonamento SCAN é 143, 913, 948, 1022, 1470, 1509, 1750, 1774, 4999, 130, 86. A dis-

tância de busca total é 9769.d. O escalonamento LOOK é 143, 913, 948, 1022, 1470, 1509, 1750, 1774, 130, 86. A distância

de busca total é 3319.e. O escalonamento C-SCAN é 143, 913, 948, 1022, 1470, 1509, 1750, 1774, 4999, 86, 130. A

distância de busca total é 9813.f. O escalonamento C-LOOK é 143, 913, 948, 1022, 1470, 1509, 1750, 1774, 86, 130. A distân-

cia de busca total é 3363.

14.3 A física elementar afirma que, quando um objeto está sujeito a uma aceleração constante a, a relaçãoentre a distância d e o tempo t é dada por d = 1

2at2. Suponha que, durante uma busca, o disco no

Exercício 14.2 acelere o braço do disco em uma razão constante para a primeira metade da busca, edepois desacelere o braço do disco na mesma razão para a segunda metade da busca. Suponha que o

66 Capítulo 14 Estrutura de armazenamento em massa ELSEVIER

Page 70: FSO - Questões

disco possa realizar uma busca para um cilindro adjacente em 1 milissegundo, e uma busca completapor todos os 5.000 cilindros em 18 milissegundos.

a. A distância de uma busca é o número de cilindros que a cabeça move. Explique por que o tempode busca é proporcional à raiz quadrada da distância da busca.

b. Escreva uma equação para o tempo de busca como uma função da distância da busca. Essa equa-ção deverá estar na forma t = x + y L, onde t é o tempo em milissegundos e L é a distância debusca em cilindros.

c. Calcule o tempo de busca total para cada um dos escalonamentos do Exercício 14.2. Determinequal escalonamento é o mais rápido (tem o menor tempo de busca total).

d. O percentual de aumento de velocidade é o tempo economizado dividido pelo tempo original.Qual é o percentual de aumento de velocidade do escalonamento mais rápido em relação aoFCFS?

Resposta:a. Resolvendo d = 1

2at2 para t, temos t = ( )2d a .

b. Calcule as equações simultâneas t = x + y L resultantes de (t = 1, L = 1) e (t = 18, L = 4999)para obter t = 0,7561 + 0,2439 L.

c. Os tempos de busca totais são: FCFS 65,20; SSTF 31,52; SCAN 62,02; LOOK 40,29; C-SCAN62,10; (e C-LOOK 40,42). Assim, SSTF é o mais rápido aqui.

d. (65,20 – 31,52)/65,20 = 0,52 O aumento percentual do SSTF em relação ao FCFS é de 52%,com relação ao tempo de busca. Se incluirmos o custo adicional da latência rotacional e transfe-rência de dados, a agilização percentual será menor.

14.4 Suponha que o disco no Exercício 14.3 gire a 7.200 RPM.

a. Qual é a latência de rotação média dessa unidade de disco?b. Que distância de busca pode ser coberta no tempo que você encontrou para o item a?

Resposta:a. 7200 rpm oferece 120 rotações por segundo. Assim, uma rotação inteira leva 8,33 ms, e a latên-

cia rotacional média (meia rotação) leva 4,167 ms.b. Calculando t = 0,7561 + 0,2439 L para t = 4,167, temos que L = 195,58, de modo que po-

demos fazer a busca de mais de 195 trilhas (cerca de 4% do disco) durante a latência rotacionalmédia.

14.5 A aceleração na busca, descrita no Exercício 14.3, é típica das unidades de disco rígido. Ao contrá-rio, os disquetes (e muitos discos rígidos fabricados antes de meados da década de 1980) normal-mente buscam em uma velocidade fixa. Suponha que o disco no Exercício 14.3 tenha uma buscacom velocidade constante, em vez de uma busca com aceleração constante, de modo que o tempo debusca seja na forma t = x + yL, onde t é o tempo em milissegundos e L é a distância da busca. Supo-nha que o tempo para buscar um cilindro adjacente seja de 1 milissegundo, como antes, e seja 0,5milissegundos para cada cilindro adicional.

a. Escreva uma equação para esse tempo de busca como uma função da distância da busca.b. Usando a função de tempo de busca do item a, calcule o tempo de busca total para cada um dos

escalonamentos do Exercício 14.2. Sua resposta é igual à do Exercício 14.3(c)? Explique por queela é igual ou por que é diferente.

c. Qual é o percentual de aumento de velocidade do escalonamento mais rápido em relação aoFCFS neste caso?

Resposta:a. t = 0,95 + 0,05L

Exercícios 67

Page 71: FSO - Questões

b. FCFS 362,60; SSTF 95,80; SCAN 497,95; LOOK 174,50; C-SCAN 500,15; (e C-LOOK176,70). SSTF ainda é o vencedor, e LOOK chega em segundo lugar.

c. (362,60-95,80)/362,60 = 0,74 – O aumento percentual de SSTF em relação a FCFS é 74%, comrelação ao tempo de busca. Se incluirmos o custo adicional da latência rotacional e da transferên-cia de dados, o aumento percentual será menor.

14.6 Escreva um programa Java para escalonamento de disco usando os algoritmos de escalonamento dedisco SCAN e C-SCAN.

Resposta: Sem resposta proposta.

14.7 Compare o desempenho do escalonamento C-SCAN e SCAN, assumindo uma distribuição unifor-me de requisições. Considere o tempo de resposta médio (o tempo entre a chegada de uma requisi-ção e o término do atendimento dessa requisição), a variação no tempo de resposta e a largura debanda efetiva. Como o desempenho depende dos tamanhos relativos do tempo de busca e latênciade rotação?

Resposta: Não existe um argumento analítico simples para responder a primeira parte dessa per-gunta. Essa seria uma boa experiência de simulação para os alunos. A resposta pode ser encontradana Figura 2 de Worthington e outros [1994] (Worthington e outros estudaram o algoritmo LOOK,mas resultados semelhantes são obtidos para SCAN). A Figura 2 em Worthington e outros mostraque C-LOOK tem o tempo de resposta médio apenas alguns pontos percentuais a mais que LOOK,mas que C-LOOK possui uma variância significativamente menor no tempo de resposta para cargasde trabalho média e pesada. A razão intuitiva para a diferença na variância é que LOOK (e SCAN)costumam favorecer requisições próximas aos cilindros do meio, enquanto as versões C não pos-suem esse desequilíbrio. A razão intuitiva para o tempo de resposta mais lento de C-LOOK é a busca“circular” de uma ponta do disco para a requisição mais distante na outra ponta. Essa busca não sa-tisfaz as requisições. Ela só causa uma pequena diminuição no desempenho, porque a dependênciade raiz quadrada do tempo de busca sobre a distância implica que uma busca longa não é terrivel-mente dispendiosa em comparação com buscas de extensão moderada.

Para a segunda parte da pergunta, observamos que esses algoritmos não se programam para melho-rar a latência rotacional; portanto, quando os tempos de busca diminuírem em relação à latência ro-tacional, as diferenças de desempenho entre os algoritmos diminuirão.

14.8 O escalonamento de disco, fora o escalonamento FCFS, é útil em um ambiente monousuário? Expli-que sua resposta.

Resposta: Em um ambiente monousuário, a fila de E/S normalmente está vazia. As requisições geral-mente chegam de um único processo para o bloco ou para uma seqüência de blocos consecutivos.Nesses casos, FCFS é um método econômico de escalonamento de disco. Mas LOOK é quase tão fá-cil de programar e forncecerá um desempenho muito melhor quando vários processos estão reali-zando E/S simultânea, como quando um browser Web apanha dados em segundo plano enquanto osistema operacional está paginando e outra aplicação está ativa em primeiro plano.

14.9 Explique por que o escalonamento SSTF costuma favorecer os cilindros do meio em relação aos ci-lindros mais internos e mais externos.

Resposta: O centro do disco é o local que possui a menor distância média para todas as outras tri-lhas. Assim, a cabeça do disco costuma se mover para fora das bordas do disco. Aqui está outra ma-neira de pensar nisso. O local atual da cabeça divide os cilindros em dois grupos. Se a cabeça não es-tiver no centro do disco e chegar uma nova requisição, a nova requisição provavelmente estará nogrupo que inclui o centro do disco; assim, a cabeça provavelmente se moverá nessa direção.

68 Capítulo 14 Estrutura de armazenamento em massa ELSEVIER

Page 72: FSO - Questões

14.10 As requisições normalmente não são distribuídas uniformemente. Por exemplo, pode-se esperar queum cilindro contendo o sistema de arquivos FAT ou inodes seja acessado mais freqüentemente doque um cilindro que contém apenas arquivos. Suponha que você saiba que 50% das requisições se-jam para um número pequeno e fixo de cilindros.

a. Algum dos algoritmos de escalonamento discutidos neste capítulo seria particularmente bompara este caso? Explique sua resposta.

b. Proponha um algoritmo de escalonamento de disco que ofereça desempenho ainda melhor, ti-rando proveito desse “ponto quente” no disco.

c. Os sistemas de arquivos normalmente encontram blocos de dados por meio de uma tabela de in-direção, como FAT no DOS e inodes no UNIX. Descreva uma ou mais maneiras de tirar proveitodessa indireção para melhorar o desempenho do disco.

Resposta:a. SSTF teria a maior vantagem da situação. FCFS poderia causar movimento desnecessário da ca-

beça de disco se as referências aos cilindros com “alta demanda” fossem intercaladas com refe-rências a cilindros mais distantes.

b. Aqui estão algumas idéias. Coloque os dados quentes próximos ao meio do disco. Modifique oSSTF para evitar starvation. Acrescente a política de que, se o disco se tornar ocioso por mais doque, digamos, 50 ms, o sistema operacional gere uma busca antecipada para a região quente, poisa próxima requisição provavelmente será para lá.

c. Coloque os metadados em cache na memória principal e localize os dados e metadados de um ar-quivo nas proximidades físicas no disco. (O UNIX realiza esse último objetivo alocando dados emetadados em regiões chamadas grupos de cilindros.)

14.11 Por que a latência de rotação normalmente não é considerada no escalonamento de disco? Comovocê modificaria SSTF, SCAN e C-SCAN para incluir a otimização da latência?

Resposta: A maioria dos discos não exporta suas informações de posição rotacional para o host. Mes-mo que o fizessem, o tempo para essa informação chegar ao escalonador estaria sujeito a imprecisão eo tempo consumido pelo escalonador é variável, de modo que a informação de posição rotacional es-taria incorreta. Além do mais, as requisições de disco normalmente são dadas em termos de númerosde bloco lógicos, e o mapeamento entre os blocos lógicos e os locais físicos é muito complexo.

14.12 Como o uso de um disco de RAM afetaria sua seleção de um algoritmo de escalonamento de disco?Que fatores você precisaria considerar? As mesmas considerações se aplicam ao escalonamento dedisco rígido, dado que o sistema de arquivos armazena blocos usados recentemente em um cache debuffer na memória principal?

Resposta: O escalonamento de disco tenta reduzir o tempo adicional de posicionamento da cabeçade disco. Como um disco de RAM possui tempos de acesso uniformes, o escalonamento é pratica-mente desnecessário. A comparação entre disco de RAM e o cache de disco da memória principalnão possui implicações para o escalonamento de disco rígido, porque só escalonamos as faltas de ca-che do buffer, e não as requisições que encontram seus dados na memória principal.

14.13 Por que é importante equilibrar a E/S do sistema de arquivos entre os discos e os controladores deum sistema em um ambiente de multitarefa?

Resposta: Um sistema só pode trabalhar na velocidade do seu gargalo mais lento. Os discos ou oscontroladores de disco constantemente são o gargalo nos sistemas modernos, pois seu desempenhoindividual não pode acompanhar o desempenho da CPU e do barramento do sistema. Balanceandoa E/S entre discos e controladores, nem um disco individual, nem um controlador é sobrecarregado,de modo que o gargalo é evitado.

Exercícios 69

Page 73: FSO - Questões

14.14 Quais são as escolhas envolvidas na releitura de páginas de código do sistema de arquivos, em vez deusar a área de swap para armazená-las?

Resposta: Se as páginas de código forem armazenadas na área de swap, elas podem ser transferidasmais rapidamente para a memória principal (pois a alocação da área de swap é ajustada para desem-penho mais rápido do que alocação geral do sistema de arquivos). O uso da área de swap pode con-sumir tempo na inicialização se as páginas foram copiadas para lá na chamada do processo, em vezde serem paginadas para a área de swap por demanda. Além disso, mais espaço de swap deverá seralocado se ele for usado para páginas de código e de dados.

14.15 Existe algum meio de implementar o armazenamento verdadeiramente estável? Explique sua resposta.

Resposta: O armazenamento verdadeiramente estável nunca perde dados. A técnica fundamentalpara o armazenamento estável é manter várias cópias dos dados, de modo que, se uma cópia for des-truída, alguma outra cópia ainda esteja disponível para uso. Mas, para qualquer esquema, podemosimaginar um desastre grande o suficiente, que destruirá todas as cópias.

14.16 A confiabilidade de uma unidade de disco rígido normalmente é descrita em termos de uma quanti-dade chamada tempo médio entre falhas (MTBF – mean time between failure). Embora essa quanti-dade seja chamada de “tempo”, o MTBF na realidade é medido em horas de unidade por falha.

a. Se um sistema contém 1.000 unidades de disco, cada uma das quais com um MTBF de 750.000horas, qual dos seguintes descreve a freqüência com que uma falha de unidade ocorrerá nesseconjunto de discos: uma vez por milênio, uma vez por século, uma vez por década, uma vez porano, uma vez por mês, uma vez por semana, uma vez por dia, uma vez por hora, uma vez por mi-nuto ou uma vez por segundo?

b. As estatísticas de mortalidade indicam que, na média, um morador dos Estados Unidos tem cercade 1:1.000 chance de morrer entre 20 e 21 anos. Deduza as horas de MTBF para 20 anos de ida-de. Converta esse valor de horas para anos. O que esse MTBF lhe diz a respeito do tempo de vidaesperado de alguém com 20 anos?

c. O fabricante garante um MTBF de 1 milhão de horas para determinado modelo de unidade dedisco. O que você pode concluir sobre o número de anos pelos quais uma dessas unidades estásob garantia?

Resposta:a. 750.000 unidades-hora por falha dividido por 1.000 unidades resulta em 750 horas por falha –

cerca de 31 dias ou uma vez por mês.b. Os homens-hora por falha são 8.760 (horas em um ano) dividido por 0,001 falha, resultando em

um valor de 8.760.000 “horas” para o MTBF. 8.760.000 horas é igual a 1.000 anos. Isso não nosdiz nada sobre o tempo de vida esperado de uma pessoa com 20 anos de idade.

c. O MTBF não diz nada sobre o tempo de vida esperado. As unidades de disco rígido geralmentesão projetadas para terem um tempo de vida de 5 anos. Se tal unidade verdadeiramente tiver umMTBF de um milhão de horas, é muito pouco provável que a unidade falhe durante seu tempo devida esperado.

14.17 O termo fast wide SCSI-II indica um barramento SCSI que opera em uma velocidade de dados de 20MB por segundo quando move um pacote de bytes entre o host e um dispositivo. Suponha que umaunidade de disco fast wide SCSI-II gire a 7.200 RPM, tenha um tamanho de setor de 512 bytes emantenha 160 setores por trilha.

a. Estime a taxa de transferência sustentada dessa unidade em megabytes por segundo.b. Suponha que a unidade tenha 7.000 cilindros, 20 trilhas por cilindro, um tempo de troca de ca-

beça (de uma placa para outra) de 0,5 milissegundo, e um tempo de busca do cilindro adjacente

70 Capítulo 14 Estrutura de armazenamento em massa ELSEVIER

Page 74: FSO - Questões

de 2 milissegundos. Use essa informação adicional para oferecer uma estimativa precisa da taxade transferência sustentada para uma grande transferência.

c. Suponha que o tempo de busca médio para a unidade seja de 8 milissegundos. Estime as E/Ss porsegundo e a taxa de transferência efetiva para uma carga de trabalho de acesso aleatório que leiasetores individuais espalhados pelo disco.

d. Calcule as E/Ss por segundo de acesso aleatório e a taxa de transferência para tamanhos de E/S de4KB, 8KB e 64KB.

e. Se várias requisições estiverem na fila, um algoritmo de escalonamento como SCAN deverá sercapaz de reduzir a distância de busca média. Suponha que uma carga de trabalho de acesso aleató-rio esteja lendo páginas de 8 KB, o tamanho médio da fila é de 10 e o algoritmo de escalonamentoreduz o tempo de busca médio para 3 milissegundos. Calcule as E/Ss por segundo e a taxa detransferência efetiva da unidade.

Resposta:a. O disco gira 120 vezes por segundo, e cada giro transfere uma trilha de 80KB. Assim, a taxa de

transferência sustentada pode ser aproximada para 9.600KB/s.b. Suponha que 100 cilindros seja uma transferência muito grande. A taxa de transferência são os

bytes totais divididos pelo tempo total. Bytes: 100 cil * 20 tr/cil * 80KB/tr, ou seja, 160.000KB.Tempo: tempo de rotação + tempo de troca de trilha + tempo de troca de cilindro. O tempo derotação é 2.00 trs / 120 trs por s, ou seja, 16,667 s. O tempo de troca de trilha é 19 trocas por cil *100 cil * 0,5 ms, ou seja, 950 ms. O tempo de troca de cilindro é 99 * 2 ms, ou seja, 198 ms.Assim, o tempo total é de 16,667 + 0,950 + 0,198, ou seja, 17, 815 s. (Estamos ignorando qual-quer busca inicial e latência rotacional, o que poderia acrescentar cerca de 12 ms ao escalona-mento, ou seja, 0,1%.) Assim, a taxa de transferência é de 8921,2KB/s. O custo adicional da trocade trilha e cilindro é de cerca de 6,5%.

c. O tempo por transferência é de 8 ms para busca + 4,167 ms de latência rotacional média +0,052 ms (calculados de 1 / (120 trilhas por segundo * 160 setores por trilha)) para passar um se-tor pela cabeça do disco durante a leitura. Calculamos as transferências por segundo como1/(0,012219), ou seja, 81,8. Como cada transferência é de 0,5KB, a taxa de transferência é de40,9KB/s.

d. Ignoramos as travessias de trilha e cilindro para simplificar. Para leituras de tamanho de 4 KB, 8KB e 64 KB, as E/Ss correspondentes por segundo são calculadas a partir da busca, latência rotaci-onal e tempo de transferência rotacional, como no item anterior, resultando (respectivamente)em 1/(0,0126), 1/(0,013) e 1/(0,019). Assim, obtemos 79,4, 76,9 e 52,6 transferências por segun-do, respectivamente. As taxas de transferência são obtidas a partir de 4, 8 e 64 vezes essas taxas deE/S, resultando em 318KB/s, 615KB/s e 3366KB/s, respectivamente.

e. Por 1/(3+4,167+0,83), obtemos 125 E/S por segundo. Por 8KB por E/S, obtemos 1000KB/s.

14.18 Mais de uma unidade de disco pode estar conectada a um barramento SCSI. Particularmente, umbarramento fast wide SCSI-II (Exercício 14.17) pode estar conectado a no máximo 15 unidades dedisco. Lembre-se de que esse barramento tem uma largura de banda de 20 MB por segundo. A qual-quer momento, somente um pacote pode ser transferido no barramento entre o cache interno de al-gum disco e o host. Contudo, um disco pode estar movendo seu braço de disco enquanto algum ou-tro disco está transferindo um pacote no barramento. Além disso, um disco pode estar transferindodados entre suas placas magnéticas e seu cache interno enquanto algum outro disco está transferin-do um pacote no barramento. Considerando as taxas de transferência que você calculou para as di-versas cargas de trabalho no Exercício 14.17, discuta quantos discos podem ser usados efetivamentepor um barramento fast wide SCSI-II.

Exercícios 71

Page 75: FSO - Questões

Resposta: Para E/S aleatórias de 8KB em um disco pouco carregado, em que o tempo de acesso alea-tório é calculado como sendo cerca de 13 ms (veja o Exercício 14.17), a taxa de transferência efetivaé de cerca de 615 MB/s. Nesse caso, 15 discos teriam uma taxa de transferência agregada de menosde 10 MB/s, o que não deverá saturar o barramento. Para leituras aleatórias de 64 KB em um discopouco carregado, a taxa de transferência é de cerca de 3,4 MB/s, de modo que 5 ou menos unidadesde disco saturariam o barramento. Para 8KB de leituras com uma fila grande o suficiente para redu-zir a busca média para 3 ms, a taxa de transferência é de cerca de 1 MB/s, de modo que a largura debanda do barramento poderá ser adequada para acomodar 15 discos.

14.19 O remapeamento de blocos defeituosos por reserva de setor ou por deslizamento de setor poderiainfluenciar o desempenho. Suponha que a unidade no Exercício 14.17 tenha um total de 100 seto-res defeituosos em locais aleatórios, e que cada setor defeituoso seja mapeado para um local reserva,localizado em uma trilha diferente, mas dentro do mesmo cilindro. Calcule a quantidade de E/Ss porsegundo e a taxa de transferência efetiva para a carga de trabalho de acesso aleatório consistindo em8 KB leituras, com um tamanho de fila de 1 (ou seja, a escolha do algoritmo de escalonamento não éum fator). Qual é o efeito de um setor defeituoso sobre o desempenho?

Resposta: Como o disco contém 22.400.000 setores, a probabilidade de requisitar um dos 100 setoresremapeados é muito pequena. Um exemplo de um evento do pior caso é quando tentamos ler, diga-mos, uma página de 8 KB, mas um setor do meio está com defeito e foi remapeado para o pior localpossível em outra trilha nesse cilindro. Nesse caso, o tempo para a recuperação poderia ser de 8 mspara buscar, mais duas trocas de trilha e duas latências de rotação completas. É provável que um con-trolador moderno leia todos os bons setores requisitados a partir da trilha original antes de passar paraa trilha sobressalente, a fim de apanhar o setor remapeado, e isso ocasionaria apenas uma troca de tri-lha e latência de rotação. Assim, o tempo seria 8 ms de busca + 4,17 ms de latência de rotação média+ 0,05 ms de troca de trilha + 8,3 ms de latência de rotação + 0,83 ms de tempo de leitura (8 KB são16 setores, 1/10 de uma rotação de trilha). Assim, o tempo para atender a essa requisição seria 21,8ms, gerando uma taxa de E/S de 45,9 requisições por segundo e uma largura de banda efetiva de 367KB/s. Para uma aplicação com tempo severamente limitado, isso poderia importar, mas o impacto ge-ral na média ponderada de 100 setores remapeados e 22,4 milhões de setores bons é nulo.

14.20 Discuta as vantagens e desvantagens relativas da reserva de setor e do deslizamento de setor.

Resposta: A reserva de setor pode causar uma troca de trilha extra e latência de rotação, fazendocom que uma requisição infeliz exija mais 8 ms de tempo. O deslizamento de setor possui menos im-pacto durante a leitura futura, mas, no momento do remapeamento de setores, isso pode exigir a lei-tura e escrita de uma trilha inteira de dados para deslizar os setores após o ponto defeituoso.

14.21 O sistema operacional geralmente trata os discos removíveis como sistemas de arquivos comparti-lhados, mas atribui uma unidade de fita apenas a uma aplicação de cada vez. Indique três motivosque poderiam explicar essa diferença no tratamento de discos e fitas. Descreva os recursos adicio-nais que um sistema operacional precisaria para dar suporte ao acesso compartilhado do sistema dearquivos a um jukebox de fita. As aplicações compartilhando o jukebox de fita precisam de quais-quer propriedades especiais, ou elas poderiam usar os arquivos como se estivessem residentes emdisco? Explique sua resposta.

Resposta:a. Os discos possuem tempos de acesso aleatório rápidos, de modo que oferecem bom desempenho

para fluxos de acesso intercalados. Ao contrário disso, as fitas geram muito tempo de posiciona-mento. Conseqüentemente, se dois usuários tentarem compartilhar uma unidade de fita para lei-tura, a unidade gastará a maior parte do seu tempo trocando fitas e posicionando para os dados

72 Capítulo 14 Estrutura de armazenamento em massa ELSEVIER

Page 76: FSO - Questões

desejados, e relativamente pouco tempo realizando transferências de dados. Esse problema dedesempenho é semelhante ao thrashing de um sistema de memória virtual que possui memória fí-sica insuficiente.

b. Os cartuchos de fita são removíveis. O proprietário dos dados podem querer armazenar o cartu-cho fora da instalação (longe do computador) para manter uma cópia dos dados segura contraum incêndio no local do computador.

c. Os cartuchos de fita normalmente são usados para enviar grandes volumes de dados de um produ-tor dos dados para o consumidor. Esse cartucho de fita é reservado para essa transferência de dadosem particular e não pode ser usado para o espaço de armazenamento compartilhado de uso geral.

Para dar suporte ao acesso compartilhado ao sistema de arquivos para um jukebox de fita, o sistemaoperacional precisaria realizar as tarefas normais do sistema de arquivos, incluindo:

� Gerenciar o espaço de nomes do sistema de arquivos por toda a coleção de fitas.

� Realizar a alocação de espaço.

� Escalonar as operações de E/S.

As aplicações que acessam o sistema de arquivos residente na fita precisariam ser tolerantes quanto agrandes atrasos. Para melhorar o desempenho, seria desejável que as aplicações fossem capazes dedivulgar uma grande quantidade de operações de E/S, de modo que os algoritmos de escalonamentode fita poderiam gerar escalonamentos eficientes.

14.22 Em um jukebox de disco, qual seria o efeito se a quantidade de arquivos abertos fosse maior que aquantidade de unidades no jukebox?

Resposta: Dois efeitos ruins poderiam resultar. Uma possibilidade é a starvation das aplicações queemitem as E/Ss bloqueantes para fitas que não estão montadas nas unidades. Outra possibilidade é othrashing, pois o jukebox é ordenado a trocar de fitas após cada operação de E/S.

14.23 Quais seriam os efeitos sobre o custo e o desempenho se o armazenamento em fita tivesse a mesmadensidade de área do armazenamento em disco?

Resposta: Para conseguir a mesma densidade de área de um disco magnético, a densidade de área deuma fita precisaria melhorar em duas ordens de grandeza. Isso tornaria o armazenamento de fitamuito mais barato do que o armazenamento de disco. A capacidade de armazenamento de uma fitaaumentaria para mais de 1 terabyte, o que permitiria que uma única fita substituísse um jukebox defitas na tecnologia de hoje, reduzindo o custo ainda mais. A densidade de área não possui significadodireto sobre a taxa de transferência de dados, mas a capacidade maior por fita poderia reduzir o cus-to adicional da troca de fita.

14.24 Se os discos rígidos magnéticos por fim tiverem o mesmo custo por gigabyte que as fitas, as fitas setornarão obsoletas, ou elas ainda serão necessárias? Explique sua resposta.

Resposta: As fitas são facilmente removíveis, de modo que são úteis para backups fora do local, paraa transferência em massa de dados (enviando cartuchos). Via de regra, um disco rígido magnéticonão é um meio removível.

14.25 Você pode usar estimativas simples para comparar o custo e o desempenho de um sistema de arma-zenamento de terabytes feito inteiramente de discos, com um que incorpora o armazenamento ter-ciário. Suponha que os discos magnéticos mantenham 10 GB cada um, custem US$ 1.000, transfi-ram 5 MB por segundo e tenham uma latência de acesso média de 15 milissegundos. Suponha queuma biblioteca de fita custe US$ 10 por gigabyte, transfira 10 MB por segundo e tenha uma latênciade acesso média de 20 segundos. Calcule o custo total, a taxa de dados máxima total e o tempo de es-pera médio para um sistema de disco puro. Se você fizer quaisquer suposições sobre a carga de traba-

Exercícios 73

Page 77: FSO - Questões

lho, descreva-as e justifique-as. Agora, suponha que 5% dos dados sejam usados freqüentemente, demodo que tenham de residir no disco, mas os outros 95% sejam arquivados na biblioteca de fita. Su-ponha ainda que o sistema de disco trate de 95% das requisições e que a biblioteca trate dos outros5%. Quais são o custo total, a taxa de dados total máxima e o tempo de espera médio para esse siste-ma de armazenamento hierárquico?

Resposta: Primeiro, vamos considerar o sistema de disco puro. Um terabyte são 1.024GB. Para sercorreto, precisamos de 103 discos em 10GB cada. Mas como essa pergunta trata de aproximações,simplificaremos a aritmética arredondando os números. O sistema de disco puro terá 100 unidades.O custo das unidades de disco seria US$100.000, mais cerca de 20% para cabos, fontes de alimenta-ção e gabinetes, ou seja, algo em torno de US$120.000. A taxa de dados agregados seria 100 ×5MB/s, ou 500MB/s. O tempo de espera médio depende da carga de trabalho. Suponha que as re-quisições sejam para transferências de 8KB de tamanho, e suponha que as requisições sejam distri-buídas aleatoriamente pelas unidades de disco. Se o sistema for pouco carregado, uma requisição tí-pica chegará em um disco ocioso, de modo que o tempo de resposta será de 15ms de tempo de aces-so mais cerca de 2 ms de tempo de transferência. Se o sistema for muito carregado, o atraso aumen-tará, aproximadamente em proporção à extensão da fila.

Agora, vamos considerar o sistema de armazenamento hierárquico. O espaço de disco total exigidoé de 5% de 1TB, que é de 50GB. Conseqüentemente, precisamos de 5 discos, de modo que o custodo armazenamento de disco é de US$5.000 (mais 20%, ou seja, US$6.000). O custo da biblioteca defitas de 950GB é de US$9.500. Assim, o custo de armazenamento total é de US$15.500. A taxa dedados total máxima depende da quantidade de unidades na biblioteca de fitas. Vamos supor queexista apenas 1 unidade. Então a taxa de dados agregada é de 6 × 10MB/s, ou seja, 60MB/s. Para umsistema pouco carregado, 95% das requisições serão satisfeitas pelos discos com um atraso de cercade 17ms. Os outros 5% das requisições serão satisfeitos pela biblioteca de fitas, com um atraso depouco mais de 20 segundos. Assim, o atraso médio será de (95 × 0,017 + 5 × 20)/100, ou cerca de1 segundo. Mesmo com uma fila de requisições vazia na biblioteca de fita, a latência da unidade defita é responsável por quase toda a latência de resposta do sistema, pois 1/20 da carga de trabalho éenviado para um dispositivo que possui uma latência de 20 segundos. Se o sistema for mais intensa-mente carregado, o atraso médio aumentará em proporção ao tamanho da fila de requisições aguar-dando pelo atendimento da unidade de fita.

O sistema hierárquico é muito mais barato. Para 95% das requisições que são atendidas pelos discos, odesempenho é tão bom quanto um sistema de disco puro. Mas a taxa de dados máxima do sistema hie-rárquico é muito pior do que para o sistema de disco puro, assim como o tempo de resposta médio.

14.26 Às vezes, diz-se que a fita é um meio de acesso seqüencial, enquanto o disco magnético é um meio deacesso aleatório. Na verdade, a adequação de um dispositivo de armazenamento para acesso aleató-rio depende da taxa de transferência. O termo taxa de transferência streaming indica a taxa de dadospara uma transferência em andamento, excluindo o efeito da latência de acesso. Ao contrário, a taxade transferência efetiva é a razão de bytes totais por segundos totais, incluindo o tempo de overhead,como a latência de acesso.

Suponha que, em um computador, o cache nível 2 tenha uma latência de acesso de 8 nanossegundose uma taxa de transferência streaming de 800MB por segundo, a memória principal tenha uma la-tência de acesso de 60 nanossegundos e uma taxa de transferência streaming de 80MB por segundo,o disco magnético tenha uma latência de acesso de 15 milissegundos e uma taxa de transferênciastreaming de 5MB por segundo, e uma unidade de fita tenha uma latência de acesso de 60 segundose uma taxa de transferência streaming de 2MB por segundo.

74 Capítulo 14 Estrutura de armazenamento em massa ELSEVIER

Page 78: FSO - Questões

a. O acesso aleatório faz com que a taxa de transferência efetiva de um dispositivo diminua, pois ne-nhum dado é transferido durante o tempo de acesso. Para o disco descrito, qual é a taxa de trans-ferência efetiva se uma transferência streaming de 512 bytes, 8KB, 1MB e 16MB segue um acessomédio?

b. A utilização de um dispositivo é a razão da taxa de transferência efetiva pela taxa de transferênciastreaming. Calcule a utilização da unidade de disco para o acesso aleatório que realiza transferên-cias em cada um dos quatro tamanhos dados no item a.

c. Suponha que uma utilização de 25% (ou maior) seja considerada aceitável. Usando os valores dedesempenho citados, calcule o menor tamanho de transferência para disco que ofereça utilizaçãoaceitável.

d. Complete a sentença a seguir: Um disco é um dispositivo de acesso aleatório para transferênciasmaiores do que _____ bytes, e é um dispositivo de acesso seqüencial para transferências menores.

e. Calcule os tamanhos de transferência mínimos que oferecem utilização aceitável para cache, me-mória e fita.

f. Quando uma fita é um dispositivo de acesso aleatório, e quando ela é um dispositivo de acesso se-qüencial?

Resposta:a. Para 512 bytes, a taxa de transferência efetiva é calculada da seguinte maneira:

ETR = tamanho da transferência / tempo da transferência.Se X é o tamanho da transferência, então o tempo da transferência é ((X / STR) + latência).Tempo de transferência é 15ms + (512B / 5MB por segundo) = 15,0097ms.A taxa de transferência efetiva, portanto, é 512B / 15,0097ms = 33,12 KB/s.ETR para 8KB = 0,47MB/s.ETR para 1MB = 4,65MB/s.ETR para 16MB = 4,98MB/s.

b. Utilização do dispositivo para 512B = 33,12 KB/s / 5MB/s = 0,0064 = 0,64Para 8KB = 9,4%.Para 1MB = 93%.Para 16MB = 99,6%.

c. Calcule 0,25 = ETR / STR, solucionando para o tamanho de transferência X.STR = 5MB, de modo que 1,25MB/S = ETR.1,25MB/S * ((X / 5) + 0,015) = X.0,25X + 0,01875 = X.X = 0,025MB.

d. Um disco é um dispositivo de acesso aleatório para transferências maiores do que k bytes (ondeK > tamanho do bloco de disco), e é um dispositivo de acesso seqüencial para transferênciasmenores.

e. Calcule o tamanho de transferência mínimo para a utilização aceitável da memória do cache.STR = 800MB, ETR = 200, latência = 8 * 10–9.200 ( XMB / 800 + 8 X 10–9) = XMB.0,25XMB + 1600 * 10–9 = XMB.X = 2,24 bytes.Calcule para a memória:STR = 80MB, ETR = 20, L = 60 * 10–9.20 ( XMB / 80 + 60 * 10–9) = XMB.0,25XMB + 1.200 * 10–9 = XMB.X = 1,68 bytes.

Exercícios 75

Page 79: FSO - Questões

Calcule para a fita:STR = 2MB, ETR = 0,5, L = 60s.0,5 ( XMB / 2 + 60) = XMB.0,25XMB + 30 = XMB.X = 40MB.

f. Isso depende de como ela está sendo usada. Considere que estamos usando a fita para restaurarum backup. Nesse caso, a fita atua como um dispositivo de acesso seqüencial, em que estamoslendo seqüencialmente o conteúdo da fita. Como outro exemplo, considere que estejamos usan-do a fita para acessar uma série de registros armazenados na fita. Nesse caso, o acesso à fita é arbi-trário e, portanto, considerado acesso aleatório.

14.27 Imagine que uma unidade de armazenamento holográfico tenha sido inventada. Suponha que a uni-dade holográfica custa US$10.000 e tenha um tempo de acesso médio de 40 milissegundos. Supo-nha que ela utilize um cartucho de US$100 do tamanho de um CD. Esse cartucho mantém 40.000imagens, e cada imagem é uma figura em preto-e-branco quadrada com resolução de 6.000 x 6.000pixels (cada pixel armazena 1 bit). Suponha que a unidade possa ler ou escrever uma figura em 1 mi-lissegundo. Responda as perguntas a seguir.

a. Cite alguns bons usos para esse dispositivo.b. Como esse dispositivo afetaria o desempenho de E/S de um sistema de computação?c. Que outros tipos de dispositivos de armazenamento, se houver algum, se tornariam obsoletos

como resultado da invenção desse dispositivo?

Resposta: Primeiro, calcule o desempenho do dispositivo. 6.000 × 6.000 bits por milissegundo =4.394KB por milissegundo = 4.291MB/s(!). Logicamente, isso é muito maior do que a tecnologiaatual do disco rígido, pois os melhores discos rígidos de produção conseguem menos de 40 MB/s. Asrespostas a seguir consideram que o dispositivo não pode armazenar dados em trechos menores doque 4MB.a. Esse dispositivo encontraria uma grande demanda no armazenamento de imagens, arquivos de

áudio e outros meios digitais.b. Supondo que a velocidade de interconexão com esse dispositivo seria igual à sua capacidade de

throughput (ou seja, os outros componentes do sistema poderiam mantê-lo alimentado), a cargadigital em grande escala e o desempenho do armazenamento seriam bastante melhorados. O tem-po de manipulação do objeto digital permaneceria o mesmo, naturalmente. O resultado seria umdesempenho geral muito melhor.

c. Atualmente, os objetos desse tamanho são armazenados em meios ópticos, mídia de fita e mídiade disco. Presume-se que a demanda para estes diminuiria à medida que o armazenamento holo-gráfico se tornasse disponível. Provavelmente existem usos para todos esses meios, mesmo napresença do armazenamento holográfico, de modo que é pouco provável que algo se tornasse ob-soleto. Os discos rígidos ainda seriam usados a partir do acesso aleatório a itens menores (comoarquivos do usuário). As fitas ainda seriam usadas para armazenamento fora da instalação, arqui-vamento e recuperação de desastres, e os discos óticos (CD-RW, por exemplo) para intercâmbiofácil com outros computadores, e armazenamento em massa com baixo custo.Dependendo do tamanho do dispositivo holográfico e seus requisitos de energia, ele também se-ria usado na troca de memória de estado sólido para câmeras digitais, players de MP3 e computa-dores de mão.

14.28 Suponha que um cartucho de disco óptico de 5,25 polegadas de um lado tenha uma densidade de su-perfície de 1 gigabit por polegada quadrada. Suponha que uma fita magnética tenha uma densidade desuperfície de 20 megabits por polegada quadrada, e tenha 1/2 polegada de largura por 5.500 metros

76 Capítulo 14 Estrutura de armazenamento em massa ELSEVIER

Page 80: FSO - Questões

de extensão. Calcule uma estimativa das capacidades de armazenamento desses dois tipos de cartucho.Suponha que exista uma fita óptica que tenha o mesmo tamanho físico da fita, mas a mesma densidadede armazenamento do disco óptico. Que volume de dados poderia ser mantido pela fita óptica? Qualseria um preço de mercado razoável para a fita óptica se a fita magnética custa US$25?

Resposta: A área de um disco de 5,25 polegadas é de aproximadamente 19,625 polegadas quadradas. Seconsiderarmos que o diâmetro do eixo central é de 1,5 polegadas, o eixo ocupa uma área de aproxima-damente 1,77 polegadas quadradas, deixando 17,86 polegadas quadradas para o armazenamento de da-dos. Portanto, estimamos que a capacidade de armazenamento do disco óptico seja de 2,2 gigabytes.

A superfície de uma fita é de 10.800 polegadas quadradas, de modo que sua capacidade de armaze-namento é de aproximadamente 26 gigabytes.

Se as 10.800 polegadas quadradas de fita tivessem uma densidade de armazenamento de 1 gigabit porpolegada quadrada, a capacidade da fita seria de aproximadamente 1.350 gigabytes, ou 1,3 terabytes.Se cobrarmos o mesmo preço por gigabyte para a fita óptica que é cobrado para a fita magnética, ocartucho de fita óptica custará cerca de 50 vezes mais do que a fita magnética, ou seja, US$1.250.

14.29 Suponha que concordemos que 1KB seja 1.024 bytes, 1MB seja 1.0242 bytes e 1GB seja 1.0243

bytes. Essa progressão continua por terabytes, petabytes e exabytes (1.0246). Vários projetos cientí-ficos propostos recentemente planejam ser capazes de registrar e armazenar alguns exabytes de da-dos durante a próxima década. Para responder as perguntas a seguir, você precisará fazer algumassuposições razoáveis; cite as suposições necessárias.

a. Quantas unidades de disco seriam exigidas para manter 4 exabytes de dados?b. Quantas fitas magnéticas seriam exigidas para manter 4 exabytes de dados?c. Quantas fitas ópticas seriam exigidas para manter 4 exabytes de dados (Exercício 14.28)?d. Quantos cartuchos de armazenamento holográfico seriam exigidos para manter 4 exabytes de

dados (Exercício 14.27)?e. Quantos metros cúbicos de espaço de armazenamento seriam necessários para cada opção?

Resposta:a. Suponha que uma unidade de disco mantenha 10GB. Então, 100 discos manteriam 1TB,

100.000 discos manteriam 1PB, e 100.000.000 de discos manteriam 1EB. Para armazenar 4EB,seriam necessários aproximadamente 400 milhões de discos. Se uma fita magnética mantém40GB, somente 100 milhões de fitas seriam necessárias. Se uma fita óptica mantém 50 vezes maisdados do que uma fita magnética, 2 milhões de fitas ópticas seriam suficientes. Se um cartuchoholográfico pode manter 180GB, cerca de 22,2 milhões de cartuchos seriam necessários.

b. Uma unidade de disco de 3,5” possui cerca de 1” de altura, 4” de largura e 6” de profundidade.Em centímetros, isso significa 2,5 cm × 10 cm × 15 cm, ou 375 centímetros cúbicos. Bastantecompactados, os 400 milhões de discos ocupariam 150 mil metros cúbicos.

c. Um cartucho de fita de 1/2” tem aproximadamente 2,5 cm de altura e 11,25 cm de lados. O volu-me é de aproximadamente 316 cm cúbicos. Para 100 milhões de fitas magnéticas bastante com-pactadas, o volume é de aproximadamente 31.600 metros cúbicos. Para 2 milhões de fitas ópti-cas, o volume é de 662 metros cúbicos aproximadamente.

d. Um CD-ROM possui 12 cm de diâmetro e cerca de 0,16 cm de espessura. Se consideramos queum disco holostore é armazenado em um slot de biblioteca com 12,7 cm de lados e 0,14 cm de es-pessura, calculamos o volume de 22,2 milhões de discos como sendo aproximadamente 1.130metros cúbicos.

14.30 Discuta como um sistema operacional poderia manter uma lista de espaço livre para um sistema de ar-quivos residente em fita. Suponha que a tecnologia de fita seja apenas de acréscimo, e que ela utilize amarca de EOT e os comandos locate, space e read position conforme descrevemos na Seção 14.8.2.1.

Exercícios 77

Page 81: FSO - Questões

Resposta: Como essa tecnologia de fita é apenas para acréscimo, todo o espaço livre está no final dafita. O local desse espaço livre não precisa ser armazenado, pois o comando space pode ser usadopara posicionar até a marca de EOT (fim de fita). A quantidade de espaço livre disponível após amarca de EOT pode ser representada por um único número. Pode ser desejável manter um segundonúmero para representar a quantidade de espaço ocupada por arquivos que foram excluídos logica-mente (mas seu espaço não foi reclamado, pois a fita é apenas para acréscimo), de modo que pode-mos decidir quando seria oportuno copiar os arquivos não excluídos para uma nova fita, a fim de re-clamar a fita antiga para reutilização. Podemos armazenar os números de espaço livre e excluído nodisco para facilitar o acesso. Outra cópia desses números pode ser armazenada no final da fita comoo último bloco de dados. Podemos gravar sobre esse último bloco de dados quando alocarmos novoarmazenamento na fita.

78 Capítulo 14 Estrutura de armazenamento em massa ELSEVIER

Page 82: FSO - Questões

C A P Í T U L O 1 5

Estruturas de sistemas distribuídos

Um sistema distribuído é uma coleção de processadores que não compartilham a memória ou um clock. Emvez disso, cada processador possui sua própria memória local. Os processadores se comunicam entre si atra-vés de diversas redes de comunicações, como barramentos de alta velocidade ou linhas telefônicas. Neste ca-pítulo, discutimos a estrutura geral dos sistemas distribuídos e as redes que os interconectam. Comparamosas principais diferenças no projeto de sistema operacional entre esses tipos de sistemas e os sistemas centrali-zados, aos quais nos referimos anteriormente. As discussões detalhadas aparecem nos Capítulos 16 e 17.

Exercícios15.1 Compare as diversas topologias de rede em termos de confiabilidade.

Resposta: Uma rede totalmente conectada provê a topologia mais confiável porque, se alguns dosenlaces forem perdidos, é provável que exista outro caminho para rotear a mensagem. Uma redeparcialmente conectada sofre com o problema de que, se um enlace específico for perdido, outro ca-minho para rotear uma mensagem pode não existir. Das topologias parcialmente conectadas, exis-tem diversos níveis de confiabilidade. Em uma topologia estruturada em árvore, se qualquer um dosenlaces for perdido, não haverá garantias de que as mensagens podem ser roteadas. Uma topologiade anel exige que dois enlaces falhem para que essa situação ocorra. Se um enlace falhar em umarede de estrela, o nó conectado a esse enlace se tornará desconectado do restante da rede. Porém, seo nó central falhar, a rede inteira ficará inutilizada.

15.2 A maioria das WANs emprega apenas uma topologia parcialmente conectada. Por que isso acontece?

Resposta: Uma rede totalmente conectada exige um enlace entre cada nó na rede. Para uma WAN,isso pode ser custoso, pois os enlaces de comunicação entre os hosts fisicamente distantes podem sermuito dispendiosos.

15.3 Quais são as principais diferenças entre WAN e LAN?

Resposta: As diferenças fundamentais são: (a) distância coberta e (b) a taxa de bits. As LANs são uti-lizadas para cobrir pequenas distâncias, tais como residenciais, prédios ou um grupo de prédio comoem um campus acadêmico. As WANs cobrem distâncias muito maiores, até centenas de quilôme-tros. Uma vez que as LANs cobrem pequenas distâncias, a taxa em que os dados podem ser transmi-tidos é, tipicamente, muito alta. Uma LAN Ethernet pode atingir taxas de até 1gigabit, embora amaioria das LANs Ethernet continuem na faixa de 10 ou 100 megabits. As WANs têm taxas muito

Page 83: FSO - Questões

mais baixas, ou mais lentas, como por exemplo a conexão do tipo T1, cuja taxa de transferências dedados é de 1.544 megabits.

15.4 Que configuração de rede seria mais adequada para os seguintes ambientes?

a. Um andar de dormitóriosb. Um campus universitárioc. Um estadod. Um país

Resposta:a. Um andar de dormitórios – Uma LANb. Um campus universitário – Uma LAN ou uma WAN para campus muito grandesc. Um estado – Uma WANd. Um país – Uma WAN

15.5 Embora o modelo ISO de rede especifique sete camadas de funcionalidade, a maioria dos computa-dores utiliza menos camadas para implementar uma rede. Por que eles usam menos camadas? Queproblemas poderiam ser causados pelo uso de menos camadas?

Resposta: Um certo protocolo da camada de rede pode alcançar a mesma funcionalidade do ISO em me-nos camadas, usando uma camada para implementar a funcionalidade fornecida em duas (ou possivel-mente mais) camadas no modelo ISO. Outros modelos podem decidir que não é preciso que haja certascamadas no modelo ISO. Por exemplo, as camadas de apresentação e sessão estão ausentes no protocoloTCP/IP. Outro motivo pode ser que certas camadas especificadas no modelo ISO não se aplicam a umacerta implementação. Vamos usar o TCP/IP novamente como um exemplo em que nenhum enlace dedados ou camada física é especificado pelo modelo. O pensamento por trás do TCP/IP é que a funciona-lidade por trás do enlace de dados e camadas físicas não é pertinente ao TCP/IP – ela simplesmente con-sidera que alguma conexão de rede é fornecida – seja Ethernet, sem fio, passagem de fichas etc.

Um problema em potencial com a implementação de menos camadas é que certa funcionalidadepode não ser fornecida por recursos especificados nas camadas omitidas.

15.6 Explique por que a duplicação da velocidade dos sistemas em um segmento Ethernet pode resultarem menor desempenho na rede. Que mudanças poderiam aliviar o problema?

Resposta: Sistemas mais rápidos podem ser capazes de enviar mais pacotes em uma quantidade detempo mais curta. A rede, então, teria mais pacotes atravessando, resultando em mais colisões e,portanto, menos througput relativo ao número de pacotes sendo enviados. Mais redes podem serusadas, com menos sistemas por rede, para reduzir a quantidade de colisões.

15.7 Sob que circunstâncias uma rede de passagem de fichas é mais eficiente do que uma rede Ethernet?

Resposta: Uma rede token ring é muito eficiente sob alta carga sustentada, pois nenhuma colisãopode ocorrer e cada slot pode ser usado para transportar uma mensagem, oferecendo alta vazão.Uma rede token ring é menos eficiente quando a carga é baixa (o processamento dos tokens pode le-var mais tempo do que o acesso pelo barramento, de modo que qualquer pacote pode levar maistempo para atingir seu destino), ou esporádica.

15.8 Por que seria uma má idéia para os gateways passarem pacotes de broadcast entre as redes? Quais se-riam as vantagens de fazer isso?

Resposta: Todos os broadcasts seriam propagados para todas as redes, causando muito tráfego narede. Se o tráfego de broadcast fosse limitado a dados importantes (e muito pouco dele), então apropagação por broadcast evitaria que os gateways tivessem de executar um código especial paraobservar esses dados (como informações de roteamento de rede) e retransmiti-los.

80 Capítulo 15 Estruturas de sistemas distribuídos ELSEVIER

Page 84: FSO - Questões

15.9 Quais são as vantagens de usar dispositivos de hardware dedicados para roteadores e gateways? Quaissão as desvantagens de usar esses dispositivos em comparação com o uso de computadores de uso geral?

Resposta: As vantagens são que dispositivos de hardware dedicados para roteadores e gateways sãomuito rápidos, pois toda a sua lógica é fornecida no hardware (firmware). O uso de um computadorde uso geral para um roteador ou gateway significa que a funcionalidade de roteamento é fornecidano software – que não é tão rápido quanto fornecer a funcionalidade diretamente no hardware.

Uma desvantagem é que os roteadores ou gateways, como dispositivos dedicados, podem ser maisdispendiosos do que o uso de componentes de prateleira, que compreendem um computador pes-soal moderno.

15.10 De que maneiras o uso de um servidor de nomes é melhor do que o uso de tabelas de host estáticas?Que problemas ou complicações estão associados aos servidores de nome? Que métodos você pode-ria usar para descrever a quantidade de tráfego que os servidores de nome geram para satisfazer asrequisições de tradução?

Resposta: Servidores de nomes exigem seu próprio protocolo, de modo que aumentam a complexi-dade do sistema. Além disso, se um servidor de nomes estiver parado, a informação do host pode setornar indisponível. Os servidores de nomes de backup são exigidos para evitar esse problema. Oscaches podem ser usados para armazenar informações de host freqüentemente requisitadas, demodo a reduzir o tráfego da rede.

15.11 O protocolo HTTP original utiliza TCP/IP como protocolo de rede subjacente. Para cada página,gráfico ou applet, uma sessão TCP separada foi construída, usada e desfeita. Devido ao custo adicio-nal de montar e destruir conexões TCP/IP, problemas de desempenho sobrevieram com esse méto-do de implementação. Seria uma boa alternativa usar UDP em vez de TCP? Que outras mudançasvocê poderia fazer para melhorar o desempenho do HTTP?

Resposta: Apesar da natureza sem conexão do UDP, essa não é uma alternativa séria ao TCP paraHTTP. O problema com UDP é que ele não é confiável, os documentos entregues pela Web preci-sam ser entregues de forma confiável. (Isso é fácil de ilustrar – um único pacote faltando de umaimagem baixada da Web torna a imagem ilegível.)

Uma possibilidade é modificar como as conexões TCP são usadas. Em vez de configurar – e des-membrar – uma conexão TCP para cada recurso da Web, permita conexões persistentes, em queuma única conexão TCP permanece aberta e é usada para entregar vários recursos Web.

15.12 Qual é a utilidade de um protocolo de tradução de endereços? Por que é melhor usar esse protocolodo que fazer com que cada host leia cada pacote para determinar o destino desse pacote? Uma redede passagem de tokens precisa de tal protocolo? Explique sua resposta.

Resposta: Um protocolo ARP traduz endereços de uso geral em números de interface de hardware,de modo que a interface possa saber quais pacotes são para ela. O software não precisa estar envolvi-do. Isso é mais eficiente do que passar cada pacote para as camadas mais altas. Sim, uma rede de pas-sagem de tokens precisa de tal protocolo, pelo mesmo motivo.

15.13 Quais são as vantagens e as desvantagens de tornar a rede de computador transparente ao usuário?

Resposta: A vantagem é que todos os arquivos são acessados da mesma maneira. A desvantagem éque o sistema operacional se torna mais complexo.

15.14 Quais são dois problemas formidáveis que os projetistas precisam resolver para implementar um sis-tema transparente para a rede?

Resposta: Um desses problemas é fazer com que todos os processadores e dispositivos de armazena-mento pareçam ser transparentes pela rede. Em outras palavras, o sistema distribuído deverá apare-

Exercícios 81

Page 85: FSO - Questões

cer como um sistema centralizado para os usuários. O sistema de arquivos Andrew e o NFS ofere-cem esse mecanismo porque o sistema de arquivos distribuído aparece ao usuário como se fosse umúnico sistema de arquivos, mas, na realidade, pode estar distribuído por uma rede.

Outra questão trata da mobilidade dos usuários. Queremos permitir que os usuários se conectem ao“sistema”, em vez de uma máquina específica (embora, na realidade, eles possam estar se conectan-do a uma máquina específica em um sistema distribuído).

15.15 A migração de processos dentro de uma rede heterogênea normalmente é impossível, dadas as dife-renças nas arquiteturas e sistemas operacionais. Descreva um método para processar a migração pe-las diferentes arquiteturas executando:

a. O mesmo sistema operacionalb. Diferentes sistemas operacionais

Resposta: Para o mesmo sistema operacional, a migração de processos é relativamente direta, en-quanto o estado do processo precisa migrar de um processador para outro. Isso envolve mover o es-paço de endereços, o estado dos registradores de CPU e os arquivos abertos do sistema de origempara o destino. Contudo, é importante que as cópias idênticas do sistema operacional estejam exe-cutando nos diferentes sistemas, para garantir a compatibilidade. Se o sistema operacional for omesmo, mas talvez executando diferentes versões em sistemas separados, então os processos de mi-gração precisam estar certos de seguir as diretrizes de programação que são coerentes entre as dife-rentes versões do sistema operacional.

Applets Java oferecem um bom exemplo de migração de processos entre diferentes sistemas opera-cionais. Para ocultar as diferenças no sistema básico, o processo migrado (ou seja, um applet Java) éexecutado em uma máquina virtual, em vez de um sistema operacional específico. É necessário que amáquina virtual esteja executando no sistema para o qual o processo migra.

15.16 Para montar um sistema distribuído robusto, você precisa saber que tipos de falhas podem ocorrer.

a. Relacione três tipos possíveis de falha em um sistema distribuído.b. Especifique quais das entradas na sua lista também se aplicam a um sistema centralizado.

Resposta: Três falhas comuns em um sistema distribuído incluem: (1) falha do enlace de rede, (2) fa-lha do host, (3) falha do meio de armazenamento. Tanto (2) quanto (3) são falhas que também pode-riam ocorrer em um sistema centralizado, enquanto uma falha no enlace de rede só poderia ocorrerem um sistema distribuído em rede.

15.17 Sempre é crucial saber que a mensagem que você enviou chegou em seu destino com segurança? Sesua resposta for sim, explique por quê. Se sua resposta for não, dê exemplos apropriados.

Resposta: Não. Muitos programas de coleta de status trabalham com a suposição de que os pacotes nãopodem ser recebidos pelo sistema de destino. Esses programas geralmente enviam por broadcast um pa-cote e consideram que pelo menos alguns outros sistemas em sua rede receberão as informações. Porexemplo, um daemon em cada sistema poderia transmitir a média de carga dos sistemas e o número deusuários. Essa informação poderia ser usada para a seleção de alvo na migração do processo. Outroexemplo é um programa que determina se um site remoto está funcionando e se é acessível pela rede. Seele enviar uma consulta e não obter resposta, saberá que o sistema atualmente não pode ser alcançado.

15.18 Apresente um algoritmo para reconstruir um anel lógico depois que um processo no anel falhar.

Resposta: Sistemas normalmente distribuídos empregam um processo coordenado, que realiza fun-ções necessárias pelos outros processos no sistema. Isso incluiria a imposição da exclusão mútua e –nesse caso de um anel – a substituição de uma ficha perdida.

82 Capítulo 15 Estruturas de sistemas distribuídos ELSEVIER

Page 86: FSO - Questões

Um esquema semelhante ao algoritmo de anel apresentado na Seção 17.6.2 pode ser utilizado. O al-goritmo é o seguinte:

Um algoritmo de anel considera que os enlaces são unidirecionais e que os processos enviam suasmensagens ao vizinho à sua direita. A estrutura de dados principal usada pelo algoritmo é a lista deativos, uma lista que contém os números de prioridade de todos os processos ativos no sistemaquando o algoritmo termina; cada processo mantém sua própria lista de ativos.a. Se o processo Pi detectar uma falha do coordenador, ele criará uma nova lista de ativos que é ini-

cialmente vazia. Depois, ele envia uma mensagem elect(i) ao seu vizinho da direita, e acrescenta onúmero i à sua lista de ativos.

b. Se Pi receber uma mensagem elect(j) do processo à esquerda, ele precisa responder utilizandouma destas três formas:i. Se essa for a primeira mensagem elect que ele viu ou enviou, Pi criará uma nova lista de ativos

com os números i e j. Depois, ele envia a mensagem elect(i), seguida pela mensagem elect(j).ii. Se i � j, ou seja, a mensagem recebida não tiver o número de Pi, então Pi acrescenta j à sua lista

de ativos e encaminha a mensagem ao seu vizinho da direita.iii.Se i = j, ou seja, Pi recebe a mensagem elect(i), então a lista de ativos para Pi agora contém os

números de todos os processos ativos no sistema. O processo Pi agora pode determinar omaior número na lista de ativos para identificar o novo processo coordenador.

15.19 Considere um sistema distribuído com duas instalações, A e B. Considere se a instalação A pode dis-tinguir entre os seguintes:

a. B está parado.b. O enlace entre A e B está interrompido.c. B está extremamente sobrecarregado e seu tempo de resposta é 100 vezes maior do que o normal.

Que implicações sua resposta terá para a recuperação nos sistemas distribuídos?

Resposta: Uma técnica seria que B periodicamente enviasse uma mensagem estou ativo para A, indi-cando que ainda está vivo. Se A não receber uma mensagem estou ativo, ele poderá considerar que B– ou o enlace da rede – está parado. Observe que uma mensagem estou ativo não permite que A dis-tinga entre cada tipo de falha. Uma técnica que permite que A determine melhor se a rede está para-da é enviar uma mensagem você está ativo? para B usando uma rota alternativa. Se ele receber umaresposta, poderá determinar que, na realidade, o enlace da rede está partido, e que B está ativo. Seconsideramos que A sabe que B está ativo e pode ser alcançado (por meio do mecanismo estou ativo)e que A possui algum valor N que indica um tempo de resposta normal, A poderia monitorar o tem-po de resposta de B e comparar os valores com N, permitindo que A determine se B está sobrecarre-gado ou não.

As implicações dessas duas técnicas são que A poderia escolher outro host – digamos, C – no sistema,se B estiver parado, inatingível ou sobrecarregado.

Exercícios 83

Page 87: FSO - Questões

C A P Í T U L O 1 6

Sistemas de arquivos distribuídos

O Capítulo 16 examina a pesquisa e o desenvolvimento atuais em sistemas de arquivos distribuídos (DFS). Afinalidade de um DFS é dar suporte ao mesmo tipo de compartilhamento quando os arquivos estão disper-sos fisicamente entre as várias instalações de um sistema distribuído.

Discutimos as diversas maneiras como um sistema de arquivo distribuído pode ser projetado e implemen-tado. Primeiro, discutimos os conceitos comuns em que se baseiam os sistemas de arquivos distribuídos. De-pois, ilustramos nossos conceitos examinando o AFS – o sistema de arquivos distribuídos Andrew. Explo-rando esse sistema de exemplo, esperamos oferecer um senso de consideração envolvido no projeto de umsistema operacional, e também indicar as áreas da pesquisa atuais sobre sistemas operacionais: redes e siste-mas operacionais distribuídos.

Exercícios16.1 Quais são os benefícios de um DFS quando comparado com um sistema de arquivos em um sistema

centralizado?

Resposta: Um DFS permite o mesmo tipo de compartilhamento disponível em um sistema centrali-zado, mas o compartilhamento pode ocorrer em sistemas separados física e logicamente. Os usuá-rios do mundo inteiro podem compartilhar dados como se estivessem no mesmo prédio, permitindoum ambiente de computação muito mais flexível do que estaria disponível de outra forma.

16.2 Qual dos DFSs de exemplo discutidos neste capítulo trataria de uma aplicação de banco de dadosgrande e com múltiplos clientes da forma mais eficiente? Explique sua resposta.

Resposta: O sistema de arquivo Andrew pode tratar de um banco de dados grande e multiclientes,pois a escalabilidade é um de seus recursos marcantes. O Andrew também é projetado para tratar deaté 5.000 estações de trabalho cliente. Um banco de dados também precisa ser executado em umambiente seguro, e o Andrew utiliza o mecanismo de segurança Kerberos para a criptografia.

16.3 Sob quais circunstâncias um cliente preferiria um DFS transparente ao local? Sob quais ele prefeririaum DFS independente de local? Discuta os motivos para essas preferências.

Resposta: O DFS transparente ao local é bom o suficiente em sistemas em que os arquivos não sãoreplicados. O DFS independente de local é necessário quando qualquer replicação é feita.

16.4 Que aspectos de um sistema distribuído você selecionaria para um sistema executando em uma redetotalmente confiável?

Page 88: FSO - Questões

Resposta: Como o sistema é totalmente confiável, uma técnica stateful faria mais sentido. A recupera-ção de erro raramente seria necessária, permitindo o uso dos recursos de um sistema stateful . Se a redefor muito veloz e também confiável, o caching poderá ser feito no servidor. Em uma rede mais lenta, ocaching no servidor e no cliente agilizará o desempenho, assim como a independência do local do ar-quivo e a migração. Além disso, o serviço baseado em RPC não é necessário na ausência de falhas, poisuma parte fundamental de seu projeto é a recuperação durante os erros da rede. Os sistemas de circui-to virtual são mais simples e mais apropriados para sistemas sem falhas de comunicações.

16.5 Compare as técnicas de caching de blocos de disco localmente, em um sistema cliente, e remotamen-te, em um servidor.

Resposta: O caching no local pode reduzir substancialmente o tráfego da rede, pois o cache localpossivelmente pode tratar de uma quantidade significativa de acessos remotos. Isso pode reduzir aquantidade de tráfego de rede e amenizar a carga no servidor. Porém, para manter a consistência, asatualizações locais nos blocos de disco precisam ser atualizadas no servidor usando uma política wri-te-through ou delayed-write. Uma estratégia também precisa ser fornecida para permitir que o clientedetermine se seus dados em cache estão velhos e precisam ser atualizados.

O caching local obviamente é mais complicado do que fazer com que um cliente requisite todos osdados do servidor. Mas, se os padrões de acesso indicarem altas escritas nos dados, os mecanismospara tratar de dados incoerentes podem aumentar o tráfego da rede e a carga do servidor.

16.6 Quais são os benefícios de mapear objetos na memória virtual, como faz o Apollo Domain? Quaissão os prejuízos?

Resposta: O mapeamento de objetos na memória virtual facilita bastante o compartilhamento dedados entre os processos. Em vez de abrir um arquivo, efetuar o lock de acesso a ele e ler e escreverseções por meio de chamadas ao sistema de E/S, os objetos mapeados na memória são acessíveiscomo memória “normal”, com leituras e escritas para locais independentes dos ponteiros de disco.O lock também é muito mais fácil, pois um local de memória compartilhado pode ser usado comouma variável de lock para acesso por semáforo. Infelizmente, o mapeamento de memória aumenta acomplexidade do sistema operacional, especialmente em um sistema distribuído.

16.7 Descreva algumas das diferenças fundamentais entre o AFS e o NFS (consulte o Capítulo 12).

Resposta: Algumas das diferenças características são:

� O AFS possui um rico conjunto de recursos, enquanto o NFS é organizado em torno de um proje-to muito mais simples.

� O NFS permite que uma estação de trabalho atue como um cliente, um servidor ou ambos. O AFSdistingue entre clientes e servidores, e identifica servidores dedicados.

� O NFS é sem estado, significando que um servidor não mantém o estado durante as atualizações docliente de um arquivo. O AFS possui estado entre o período em que um cliente abre um arquivo,atualiza e fecha o arquivo. (O NFS nem sequer permite a abertura e o fechamento de arquivos.)

� O caching é um recurso fundamental do AFS, permitindo o caching no cliente com coerência decache. De fato, é um princípio arquitetônico por trás do AFS permitir que os clientes coloquem osarquivos em cache. A consistência é fornecida pelos servidores quando os arquivos em cache sãofechados. O servidor, então, invalida as cópias em cache existentes em outros clientes. O cachingtambém é permitido no NFS, mas, devido à sua natureza stateless, os dados modificados precisamser submetidos ao servidor antes que os resultados sejam recebidos de volta pelo cliente.

� O AFS oferece semântica de sessão, enquanto o NFS admite a semântica de consistência de arqui-vo do UNIX.

Exercícios 85

Page 89: FSO - Questões

C A P Í T U L O 1 7

Coordenação distribuída

O Capítulo 17 examina diversos mecanismos para o sincronismo e a comunicação entre processos, além demétodos para lidar com o problema de deadlock em um ambiente distribuído. Além disso, como um sistemadistribuído pode sofrer de diversas falhas que não são encontradas em um sistema centralizado, também dis-cutimos aqui a questão da falha em um sistema distribuído.

Exercícios17.1 Discuta as vantagens e desvantagens dos dois métodos que apresentamos para gerar estampas de

tempo globalmente exclusivas.

Resposta: As estampas de tempo globalmente exclusivas podem ser geradas por meio de uma técni-ca centralizada ou distribuída. A técnica centralizada utiliza um único local para gerar as estampasde tempo. Uma desvantagem dessa técnica é que, se essa instalação falhar, as estampas de tempo nãopodem mais ser produzidas.

A geração de estampas de tempo usando a técnica distribuída oferece um mecanismo mais segurocontra falhas, mas deve-se ter o cuidado de garantir que os relógios lógicos em cada local estejamsincronizados.

17.2 Sua empresa está montando uma rede de computadores, e você foi solicitado a escrever um algorit-mo para conseguir a exclusão mútua distribuída. Que esquema você usaria? Explique sua escolha.

Resposta: As opções são uma técnica (1) centralizada, (2) totalmente distribuída ou (3) de passagemde tokens. Rejeitamos a técnica centralizada porque o coordenador centralizado se torna um garga-lo. Também rejeitamos a técnica de passagem de token por sua dificuldade no restabelecimento doanel no caso de falha.

Escolhemos a técnica totalmente distribuída pelas seguintes razões:

� A exclusão mútua é obtida.

� A impossibilidade de deadlock é garantida.

� A impossibilidade de starvation é garantida, pois a entrada na seção crítica é escalonada de acor-do com a ordenação da estampa de tempo.

� A quantidade de mensagens por entrada da seção crítica é 2 × (n – 1). Esse número é a quantidademínima de mensagens exigida por entrada de seção crítica quando os processos atuam de formaindependente e concorrente.

Page 90: FSO - Questões

17.3 Por que a detecção de deadlock é muito mais dispendiosa em um ambiente distribuído do que emum ambiente centralizado?

Resposta: A dificuldade é que cada instalação precisa manter seu próprio grafo de espera local. Po-rém, a ausência de um ciclo em um grafo local não garante ausência de deadlock. Em vez disso, sópodemos garantir que o sistema não está em deadlock se a união de todos os grafos de espera locaisfor acíclica.

17.4 Sua empresa está montando uma rede de computadores, e você foi solicitado a desenvolver um es-quema para lidar com o problema de deadlock.

a. Você usaria um esquema de detecção de deadlock ou um esquema de prevenção de deadlock?b. Se você tivesse de usar um esquema de prevenção de deadlock, qual usaria? Explique sua escolha.c. Se você tivesse de usar um esquema de detecção de deadlock, qual usaria? Explique sua escolha.

Resposta:a. Você usaria um esquema de detecção de deadlock ou um esquema de prevenção de deadlock?

Escolheríamos a prevenção de deadlock porque é sistematicamente mais fácil prevenir deadlocksdo que detectá-los depois que tiverem ocorrido.

b. Se você tivesse de usar um esquema de prevenção de deadlock, qual usaria? Explique sua escolha.Um esquema simples de ordenação de recursos seria utilizado, impedindo os deadlocks por exigirque os processos adquiram recursos em ordem.

c. Se você tivesse de usar um esquema de detecção de deadlock, qual usaria? Explique sua escolha.Se tivéssemos de usar um algoritmo de detecção de deadlock, escolheríamos uma técnica total-mente distribuída, pois a técnica centralizada provê um único ponto de falha.

17.5 Considere o seguinte algoritmo de detecção de deadlock hierárquico, em que o grafo de espera (wait-for) global está distribuído por uma série de controladores diferentes, que são organizados em umaárvore. Cada controlador não-folha mantém um grafo de espera que contém informações relevantesdos grafos dos controladores na subárvore abaixo dele. Em particular, considere SA, SB e SC os con-troladores, de modo que SC é o ancestral comum mais baixo de SA e SB (SC precisa ser exclusivo, poisestamos lidando com uma árvore). Suponha que o nó Ti apareça no grafo de espera local dos contro-ladores SA e SB. Então, Ti também precisa aparecer no grafo de espera local de:

� Controlador SC.

� Cada controlador no caminho de SC para SA.

� Cada controlador no caminho de SC para SB.

Além disso, se Ti e Tj aparecem no grafo de espera do controlador SD e existe um caminho de Ti paraTj no grafo de espera de um dos filhos de SD, então uma aresta Ti � Tj precisa estar no grafo de espe-ra de SD.

Mostre que, se houver um ciclo em qualquer um dos grafos de espera, então o sistema está em dead-lock.

Resposta: Uma prova disso pode ser encontrada no artigo Distributed deadlock detection algorithm(algoritmo de detecção de deadlock distribuído), que foi publicado na ACM Transactions on Data-base Systems, Volume 7 , Edição 2 (junho de 1982), páginas: 187-208.

17.6 Derive um algoritmo de eleição para anéis bidirecionais que seja mais eficiente do que aquele apre-sentado neste capítulo. Quantas mensagens são necessárias para n processos?

Resposta: Sem resposta proposta.

Exercícios 87

Page 91: FSO - Questões

17.7 Considere uma falha que ocorre durante o 2PC para uma transação. Para cada falha possível, expli-que como o 2PC garante a atomicidade da transação, apesar da falha.

Resposta: As falhas possíveis incluem (1) falha de um site participante, (2) falha do coordenador e(3) falha da rede. Consideramos cada técnica da seguinte maneira:

� Falha de um site participante – Quando um site participante se recupera de uma falha, ele precisaexaminar seu log para determinar o destino daquelas transações que estavam no meio da execu-ção quando a falha ocorreu. O sistema, então, dependendo do tipo de entrada de log quando a fa-lha ocorreu, atuará devidamente.

� Falha do coordenador – Se o coordenador falhar no meio da execução do protocolo de confirma-ção para a transação T, então os sites participantes precisam decidir sobre o destino de T. Os sitesparticipantes, então, determinarão confirmar ou cancelar T, ou esperar pela recuperação do coor-denador que falhou.

� Falha da rede – Quando um enlace falha, todas as mensagens no processo de serem roteadas peloenlace não chegam em seu destino intactas. Do ponto de vista dos sites conectados por esse enla-ce, os outros sites parecem ter falhado. Assim, qualquer uma das técnicas discutidas anteriormen-te se aplica.

88 Capítulo 17 Coordenação distribuída ELSEVIER

Page 92: FSO - Questões

C A P Í T U L O 1 8

Proteção

Os diversos processos em um sistema operacional precisam ser protegidos contra as atividades uns dos ou-tros. Para essa finalidade, existem diversos mecanismos que podem ser usados para garantir que os arquivos,os segmentos de memória, a CPU e outros recursos só possam ser operados pelos processos que obtiveram adevida autorização do sistema operacional.

Neste capítulo, examinamos o problema de proteção com muitos detalhes, e desenvolvemos um modelounificado para implementar a proteção.

É importante que o aluno aprenda os conceitos da matriz de acesso, listas de acesso e capacidades. As ca-pacidades foram usadas em vários sistemas modernos e podem ser unidas com tipos de dados abstratos. Oartigo de Lampson [1971] é a referência clássica sobre proteção.

Exercícios18.1 Quais são as principais diferenças entre listas de capacidade e listas de acesso?

Resposta: Uma lista de acesso é uma lista para cada objeto, consistindo nos domínios com um con-junto não-vazio de direitos de acesso para esse objeto. Uma lista de capacidades é uma lista de obje-tos e as operações permitidas sobre esses objetos para cada domínio.

18.2 Um arquivo MCP do Burroughs B7000/B6000 pode ser rotulado como dados sensíveis. Quandoesse arquivo é excluído, sua área de armazenamento é modificada para alguns bits aleatórios. Paraque finalidade esse esquema seria útil?

Resposta: Isso seria útil como uma medida de segurança extra, para que o antigo conteúdo da me-mória não possa ser acessado, seja intencionalmente ou por acidente, por outro programa. Isso é útilespecialmente para qualquer informação altamente confidencial.

18.3 Em um sistema de proteção com estrutura de anel, o nível 0 possui o maior acesso aos objetos e o ní-vel n (maior que 0) possui menos direitos de acesso. Os direitos de acesso de um programa em umnível específico na estrutura de anel são considerados como um conjunto de capacidades. Qual é orelacionamento entre as capacidades de um domínio no nível j e um domínio no nível i para um ob-jeto (considerando j > i)?

Resposta: Dj é um subconjunto de Di.

Page 93: FSO - Questões

18.4 Considere um computador em que “jogos de computador” podem ser jogados por alunos apenasentre as 22 horas e as 6 horas, pelos membros da faculdade entre 17 horas e 8 horas, e pelo pessoaldo centro de computação em todos os horários. Sugira um esquema para implementar essa políticade forma eficiente.

Resposta: Configure uma estrutura de proteção dinâmica, que mude o conjunto de recursos dispo-níveis com relação ao tempo alocado para as três categorias de usuários. Com a mudança do tempo,também muda o domínio de usuários elegíveis para jogar os jogos de computador. Quando chegar omomento em que a elegibilidade de um usuário terminar, um processo de revogação precisa ocor-rer. A revogação poderia ser imediata, seletiva (pois o pessoal de computador poderia acessá-la aqualquer hora), total e temporária (pois os direitos de acesso serão dados mais tarde no mesmo dia).

18.5 O sistema RC 4000 (e outros sistemas) definiu uma árvore de processos de modo que todos os des-cendentes de um processo recebam recursos (ou objetos) e direitos de acesso apenas por seus ances-trais. Assim, um descendente nunca poderá ter a capacidade de fazer algo que seus ancestrais nãopodem fazer. A raiz da árvore é o sistema operacional, que tem a capacidade de fazer alguma coisa.Suponha que o conjunto de direitos de acesso seja representado por uma matriz de acesso, A. A(x,y)define os direitos de acesso do processo x para o objeto y. Se x é um descendente de z, qual é o relaci-onamento entre A(x,y) e A(z,y) para um objeto y qualquer?

Resposta: A(x,y) é um subconjunto de A(z,y).

18.6 Que recursos do hardware são necessários em um computador para a manipulação de capacidadeeficiente? Estes podem ser usados para a proteção da memória?

Resposta: Uma falha de hardware permite que um objeto de capacidade seja identificado como umacapacidade do objeto acessível. Normalmente, vários bits são necessários para distinguir entre dife-rentes tipos de objetos de capacidade. Por exemplo, 4 bits poderiam ser usados para identificar ex-clusivamente 24 ou 16 tipos diferentes de objetos de capacidade.

Estes não poderiam ser usados para a proteção de memória de rotina, pois oferece pouco mais para aproteção além de um valor binário indicando se eles são um objeto de capacidade ou não. A prote-ção da memória exige suporte total dos recursos de memória virtual discutidos no Capítulo 10.

18.7 Considere um ambiente de computação em que um número exclusivo é associado a cada processo ecada objeto no sistema. Suponha que permitamos que um processo com número n acesse um objetocom número m somente se n > m. Que tipo de estrutura de proteção teremos?

Resposta: Estrutura hierárquica.

18.8 Que problemas de proteção podem surgir se uma pilha compartilhada for usada para passagem deparâmetros?

Resposta: O conteúdo da pilha poderia ser comprometido por outro(s) processo(s) compartilhandoa pilha.

18.9 Considere um ambiente de computação em que um processo recebe o privilégio de acessar um obje-to apenas n vezes. Sugira um esquema para implementar essa política.

Resposta: Acrescente um contador inteiro com a capacidade.

18.10 Se todos os direitos de acesso a um objeto forem excluídos, o objeto não pode mais ser acessado.Neste ponto, o objeto também deve ser excluído, e o espaço que ele ocupa deve ser retornado ao sis-tema. Sugira uma implementação eficiente desse esquema.

Resposta: Contagens de referência.

90 Capítulo 18 Proteção ELSEVIER

Page 94: FSO - Questões

18.11 Qual é o princípio precisa-saber? Por que é importante que um sistema de proteção esteja em con-formidade com esse princípio?

Resposta: Um processo pode acessar a qualquer momento aqueles recursos que ele foi autorizado aacessar e que são exigidos atualmente para completar sua tarefa. Isso é importante porque limita aquantidade de danos que um processo com falha pode causar a um sistema.

18.12 Por que é difícil proteger um sistema em que os usuários têm permissão para realizar sua própria E/S?

Resposta: Dos capítulos anteriores, identificamos uma distinção entre o modo do kernel e o modousuário, em que o modo do kernel é usado para executar operações privilegiadas, como E/S. Ummotivo pelo qual a E/S precisa ser realizada no modo do kernel é que a E/S exige o acesso ao hardwa-re, e o acesso apropriado ao hardware é necessário para a integridade do sistema. Se permitirmosque os usuários realizem sua própria E/S, não poderemos garantir a integridade do sistema.

18.13 As listas de capacidades normalmente são mantidas dentro do espaço de endereços do usuário.Como o sistema garante que o usuário não poderá modificar o conteúdo da lista?

Resposta: Uma lista de capacidades é considerada um “objeto protegido” e acessada apenas indire-tamente pelo usuário. O sistema operacional garante que o usuário não poderá acessar a lista de ca-pacidades indiretamente.

18.14 Descreva como o modelo de proteção Java seria sacrificado se um programa Java tivesse permissãopara alterar diretamente as anotações do seu frame de pilha.

Resposta: Quando uma thread Java emite uma requisição de acesso em um bloco doPrivileged( ), oframe de pilha da thread que chama é anotado de acordo com o domínio de proteção da thread.Uma thread com um frame de pilha anotado pode fazer chamadas de método subseqüentes, que exi-gem certos privilégios. Assim, a anotação serve para marcar uma thread que chama como sendo pri-vilegiado. Permitindo que um programa Java altere diretamente as anotações de um frame de pilha,um programa potencialmente poderia realizar uma operação para a qual ele não tem as permissõesnecessárias, violando, assim, o modelo de segurança da Java.

Exercícios 91

Page 95: FSO - Questões

C A P Í T U L O 1 9

Segurança

As informações armazenadas no sistema (dados e código), bem como os recursos físicos do computador,precisam ser protegidos contra acesso não-autorizado, destruição ou alteração maliciosa, e introdução aci-dental de incoerência. Neste capítulo, examinamos as maneiras como as informações podem ser mal utiliza-das ou se tornar intencionalmente incoerentes. Depois, precisamos de mecanismos para nos proteger contraessa ocorrência.

Exercícios19.1 Uma senha pode se tornar conhecida de outros usuários de diversas maneiras. Existe algum método

simples para detectar que tal evento aconteceu? Explique sua resposta.

Resposta: Sempre que um usuário efetua o login, o sistema mostra a última vez em que o usuário es-teve conectado no sistema.

19.2 A lista de todas as senhas é mantida dentro do sistema operacional. Assim, se um usuário conseguirler essa lista, a proteção da senha não será mais fornecida. Sugira um esquema que evite esse proble-ma. (Sugestão: use representações internas e externas diferentes.)

Resposta: Criptografe as senhas internamente de modo que só possam ser acessadas em formato co-dificado. A única pessoa com acesso ou conhecimento da decodificação deverá ser o operador dosistema.

19.3 Um acréscimo experimental ao UNIX permite ao usuário conectar um programa watchdog (cão deguarda) a um arquivo. O watchdog é chamado sempre que um programa requisita acesso ao arqui-vo. O watchdog, então, concede ou nega o acesso ao arquivo. Discuta dois prós e dois contras douso de watchdogs como medida de segurança.

Resposta: O programa watchdog torna-se o mecanismo de segurança principal para o acesso aoarquivo. Por causa disso, localizamos seus principais benefícios e problemas. Um benefício dessatécnica é que você tem um mecanismo centralizado para controlar o acesso a um arquivo – o pro-grama watchdog. Garantindo que o programa watchdog possui técnicas de segurança suficientes,você tem certeza de ter acesso seguro ao arquivo. Porém, esse também é o principal ponto negati-vo dessa técnica – o programa watchdog se torna o gargalo. Se ele não for implementado correta-mente (ou seja, se tiver um furo de segurança), não haverá outros mecanismos de backup para aproteção do arquivo.

Page 96: FSO - Questões

19.4 O programa COPS do UNIX varre determinado sistema em busca de possíveis furos de segurança, ealerta o usuário quanto a possíveis problemas. Cite dois riscos em potencial do uso de tal sistemapara a segurança. Como esses problemas podem ser limitados ou eliminados?

Resposta: O próprio programa COPS poderia ser modificado por um intruso, para desativar algunsde seus recursos ou até mesmo tirar proveito de seus recursos para criar novas falhas de segurança.Mesmo que o COPS não seja invadido, é possível que um intruso obtenha uma cópia do COPS, estu-de-a e localize brechas de segurança que o COPS não detecta. Depois, esse intruso poderia espreitarsistemas em que o gerenciamento depende do COPS para sua segurança (pensando que está forne-cendo segurança), quando tudo o que o COPS está oferecendo é a complacência no gerenciamento.O COPS poderia ser armazenado em um meio ou sistema de arquivo somente leitura, a fim de evitarsua modificação. Ele só poderia ser fornecido a gerentes de sistemas confiáveis, para impedir quecaia nas mãos erradas. Porém, nenhuma destas é uma solução à prova de bala.

19.5 Discuta um meio pelo qual os gerentes de sistemas conectados à Internet poderiam ter projetadoseus sistemas para limitar ou eliminar os danos feitos por um verme (worm). Quais são as desvanta-gens de fazer a mudança que você sugere?

Resposta: “Firewalls” podem ser erguidos entre os sistemas e a Internet. Esses sistemas filtram o pa-cote que se move de um lado deles para o outro, garantindo que somente pacotes válidos de usuáriosautorizados possuam acesso permitido aos sistemas protegidos. Esses firewalls normalmente tornamo uso dos sistemas menos conveniente (e as conexões de rede menos eficientes).

19.6 Argumente contra ou a favor da sentença judicial dada contra Robert Morris, Jr., por sua criação eexecução do verme (worm) da Internet.

Resposta: Um debate contra a sentença é que ela foi simplesmente excessiva. Além do mais, muitosagora têm comentado que esse verme na realidade tornou as pessoas mais conscientes das vulnerabi-lidades na Internet pública. Um argumento para a sentença é que esse verme custou aos usuários daInternet tempo e dinheiro significativos e – considerando sua aparente intenção – a sentença foiapropriada.

Encorajamos os professores a usarem um caso como este – e muitos casos contemporâneos seme-lhantes – como tópico para debate em sala de aula.

19.7 Faça uma lista de seis aspectos de segurança para o computador de um banco. Para cada item na sualista, informe se esse problema está relacionado à segurança física, humana ou do sistema operacional.

Resposta: Em um local protegido, bem guardado: física, humana.Rede à prova de violação: física, humana, sistema operacional.Acesso por modem eliminado ou limitado: física, humana.Transferências de dados não-autorizadas impedidas ou logadas: humana, sistema operacionalMeio de backup protegido e guardado: física, humana.Programadores e pessoal de entrada de dados confiáveis: humana.

19.8 Quais são duas vantagens de criptografar dados armazenados no computador?

Resposta: Os dados criptografados são protegidos pelas facilidades de proteção do sistema opera-cional, bem como por uma senha que é necessária para criptografá-los. Duas chaves são melhores doque uma quando se trata de segurança.

Exercícios 93

Page 97: FSO - Questões

C A P Í T U L O 2 0

O sistema Linux

Linux é um sistema UNIX-like que obteve popularidade nos anos recentes. Neste capítulo, examinamos ahistória e o desenvolvimento do Linux, e abordamos as interfaces de programador e usuário que o Linuxapresenta, as quais devem muito à tradição do UNIX. Também discutimos os métodos internos pelos quaiso Linux implementa essas interfaces. Porém, como o Linux tem sido projetado para ser executado no máxi-mo de aplicações padrão do UNIX possível, ele tem muito em comum com as implementações UNIX exis-tentes. Não duplicamos a descrição básica do UNIX dada no capítulo anterior.

O Linux é um sistema operacional em rápida evolução. Este capítulo descreve especificamente o kerneldo Linux 2.0, lançado em junho de 1996.

Exercícios20.1 O Linux pode ser executado em diversas plataformas de hardware. Que medidas os desenvolvedo-

res do Linux precisam tomar para garantir que o sistema seja portável para diferentes processadorese arquiteturas de gerência de memória, e também para reduzir a quantidade de código do kernel es-pecífica da arquitetura?

Resposta: A organização do código dependente de arquitetura e independente de arquitetura nokernel do Linux é projetada para satisfazer dois objetivos de projeto: manter o máximo de códigopossível comum entre as arquiteturas e oferecer um modo limpo de definir propriedades e códigoespecíficos da arquitetura. A solução, naturalmente, precisa ser consistente com os propósitos domi-nantes da facilidade de manutenção e desempenho do código.

Existem diferentes níveis de dependência de arquitetura no kernel, e diferentes técnicas são apro-priadas em cada caso para obedecer aos requisitos de projeto. Esses níveis incluem:

� Tamanho e término de palavra da CPU – Essas são questões que afetam a portabilidade de todo osoftware escrito em C, mas especialmente para um sistema operacional, em que o tamanho e o ali-nhamento dos dados precisam ser arrumados cuidadosamente.

� Arquitetura de processo da CPU – O Linux conta com muitas formas de suporte de hardwarepara seu gerenciamento de processo e de memória. Diferentes processadores possuem seus pró-prios mecanismos para mudança entre domínios de proteção (por exemplo, entrar no modo dekernel a partir do modo usuário), reescalonamento de processos, gerenciamento de memória vir-tual e tratamento de interrupções que chegam.

Page 98: FSO - Questões

O código de fonte do kernel do Linux é organizado de modo a permitir que o máximo possível dokernel seja independente dos detalhes desses recursos específicos da arquitetura. Para essa finalida-de, o kernel mantém não uma, mas duas hierarquias de subdiretório separadas para cada arquiteturade hardware. Uma contém o código que é apropriado apenas para essa arquitetura, incluindo umafuncionalidade como a interface da chamada de sistema e o código de gerenciamento de interrupçãode baixo nível.

A segunda árvore de diretórios específica da arquitetura contém arquivos de cabeçalho C, que sãodescritivos da arquitetura. Esses arquivos de cabeçalho contêm definições de tipo e macros projeta-das para esconder as diferenças entre as arquiteturas. Elas oferecem tipos padrão para obter palavrasde determinado tamanho; constantes de macro definindo coisas como tamanho de palavra da arqui-tetura ou tamanho de página; e macros de função para realizar tarefas comuns, como converter umapalavra para determinada ordem de bytes ou realizar manipulações padrão em uma entrada da tabe-la de página.

Dadas essas duas árvores de subdiretório específicas da arquitetura, uma grande parte do kernel doLinux pode se tornar portável entre as arquiteturas. É preciso prestar atenção aos detalhes: quandoum inteiro de 32 bits é exigido, o programador precisa utilizar o tipo explícito __int32, em vez deassumir que um int possui determinado tamanho, por exemplo. Porém, desde que sejam usados ar-quivos de cabeçalho específicos da arquitetura, então a maior parte da manipulação da tabela deprocesso e página pode ser realizada por meio de código comum entre as arquiteturas. O código quedefinitivamente não pode ser compartilhado é mantido seguramente separado do código principaldo kernel.

20.2 Módulos do kernel carregáveis dinamicamente oferecem flexibilidade quando os drivers são acres-centados a um sistema. Eles também possuem desvantagens? Sob que circunstâncias um kernel seriacompilado em um único arquivo binário? Quando seria melhor mantê-lo dividido em módulos?Explique suas respostas.

Resposta: Existem duas desvantagens principais com o uso de módulos. A primeira é o tamanho: ogerenciamento de módulo consome memória do kernel não paginável, e um kernel básico com umaquantidade de módulos carregados consumirá mais memória do que um kernel equivalente com osdrivers compilados para a própria imagem do kernel. Essa pode ser uma questão muito significativanas máquinas com memória física limitada.

A segunda desvantagem é que os módulos podem aumentar a complexidade do processo de boots-trap do kernel. É difícil carregar um conjunto de módulos do disco se o driver precisar acessar essedisco como um módulo que precisa ser carreado. Como resultado, o gerenciamento de bootstrap dokernel com módulos pode exigir um trabalho extra da parte do administrador: os módulos exigidospara bootstrap precisam ser colocados na imagem do disco em RAM (RAMdisk) que é carregadajunto com a imagem inicial do kernel quando o sistema for inicializado.

Em certos casos, é melhor usar um kernel modular, e em outros casos é melhor usar um kernel comseus drivers de dispositivo previamente vinculados. Onde a minimização do tamanho do kernel forimportante, a escolha dependerá da freqüência com que os diversos drivers de dispositivo são utili-zados. Se eles estiverem em uso constante, então os módulos são inadequados. Isso é verdade espe-cialmente quando os drivers são necessários para o próprio processo de boot. Por outro lado, se al-guns drivers nem sempre são necessários, então o mecanismo do módulo permite que esses driverssejam carregados e descarregados por demanda, potencialmente oferecendo uma rede de segurançana memória física.

Onde um kernel tiver de ser montado, o que pode ser útil em uma grande variedade de máquinasmuito diferentes, então sua montagem com módulos é claramente preferível ao uso de um único

Exercícios 95

Page 99: FSO - Questões

kernel com dezenas de drivers desnecessários consumindo memória. Isso acontece particularmentepara kernels comercialmente distribuídos, em que o suporte à maior variedade de hardware da ma-neira mais simples possível é uma prioridade.

Porém, se um kernel estiver sendo montado para uma única máquina cuja configuração é conhecidacom antecedência, então a compilação e o uso de módulos pode simplesmente ser uma complexida-de desnecessária. Em casos como este, o uso de módulo pode muito bem ser uma questão de gosto.

20.3 O uso de multithreads é uma técnica de programação muito utilizada. Descreva três maneiras comoas threads poderiam ser implementadas. Explique como essas maneiras se comparam com o meca-nismo de clone do Linux. Quando cada mecanismo alternativo poderia ser melhor ou pior do que ouso de clones?

Resposta: As implementações de threads podem ser classificadas, de modo geral, em dois grupos:threads baseadas em kernel e threads do modo usuário. Os pacotes de thread do modo usuário con-tam com algum suporte do kernel – eles podem exigir facilidades de interrupção de temporizador,por exemplo –, mas o escalonamento entre as threads não é realizado pelo kernel, mas por algumabiblioteca do código no modo usuário. Multithreads nessa implementação aparecem ao sistemaoperacional como um único contexto de execução. Quando o processo dotado de multithreads estáexecutando, ele decide por si mesmo qual de suas threads irá executar, usando saltos não-locais paraalternar entre as threads de acordo com suas próprias regras de escalonamento preemptivo ounão-preemptivo.

Como alternativa, o kernel do sistema operacional pode oferecer suporte para threads por si só.Nesse caso, as threads podem ser implementadas como processos separados, que por acaso compar-tilham um espaço de endereços comum, completa ou parcialmente, ou então podem ser implemen-tadas como contextos de execução diferentes dentro de um único processo. Não importa como asthreads são organizadas, para a aplicação, elas aparecem como contextos de execução completa-mente independentes.

As implementações híbridas também são possíveis, em que uma grande quantidade de threads setorna disponível para a aplicação usando um número menor de threads do kernel. As threads deusuário executáveis são executadas pela primeira thread do kernel disponível.

No Linux, as threads são implementadas dentro do kernel por um mecanismo de clone que cria umnovo processo dentro do mesmo espaço de endereços virtual do processo-pai. Ao contrário dealguns pacotes de threads baseados no kernel, o kernel do Linux não faz qualquer distinção entrethreads e processos: uma thread é simplesmente um processo que não criou um novo espaço de en-dereços virtual quando foi inicializado.

As vantagens principais da implementação de threads no kernel em vez de uma biblioteca no modousuário são que:

� Os sistemas com threads no kernel podem tirar proveito de múltiplos processadores, se estiveremdisponíveis.

� Se uma thread for bloqueada em uma rotina de serviço do kernel (por exemplo, uma chamada desistema ou falha de página), outras threads ainda podem ser executadas.

Uma vantagem menor é a capacidade de atribuir diferentes atributos de segurança a cada thread.

As implementações do modo usuário não possuem essas vantagens. Como tais implementações sãoexecutadas inteiramente dentro de um único contexto de execução do kernel, somente uma threadpode estar executando a cada momento, mesmo que existam várias CPUs. Pelo mesmo motivo, seuma thread entrar em uma chamada de sistema, nenhuma outra thread poderá executar até que achamada de sistema termine. Como resultado, uma thread realizando uma leitura de disco com blo-

96 Capítulo 20 O sistema Linux ELSEVIER

Page 100: FSO - Questões

queio atrasará cada thread na aplicação. Porém, as implementações no modo usuário possuem suaspróprias vantagens. A mais óbvia é o desempenho: a chamada do próprio escalonador do kernelpara alternar entre as threads envolve a entrada em um domínio de proteção, à medida que a CPUpassa para o modo do kernel, enquanto a troca entre threads no modo usuário pode ser conseguidasimplesmente salvando e restaurando os registradores principais da CPU. As threads do modo usuá-rio também podem consumir menos memória do sistema: a maioria dos sistemas UNIX reservarápelo menos uma página inteira para uma pilha do kernel para cada thread do kernel, e essa pilhapode não ser paginável.

A técnica híbrida, implementando várias threads do usuário por um número menor de threads dokernel, permite que seja alcançado um equilíbrio entre essas opções. As threads do kernel permitirãoque várias threads estejam nas chamadas do kernel com bloqueio ao mesmo tempo e permitirão aexecução em várias CPUs, e a troca de threads no modo usuário pode ocorrer dentro de cada threaddo kernel, a fim de realizar o encadeamento leve sem o custo adicional de ter muitas threads do ker-nel. A desvantagem dessa técnica é a complexidade: dar o controle sobre a escolha complica a inter-face de usuário da biblioteca de threads.

20.4 Que custos extras ocorrem pela criação e escalonamento de um processo, em comparação com ocusto de uma thread clonada?

Resposta: No Linux, a criação de uma thread envolve apenas a criação de algumas estruturas de da-dos muito simples para descrever a nova thread. É preciso reservar espaço para o contexto de execu-ção da nova thread, seus registradores salvos, sua página de pilha do kernel e informações dinâmi-cas, como seu perfil de segurança e o estado do sinal, mas nenhum novo espaço de endereço virtual écriado.

A criação desse novo espaço de endereço virtual é a parte mais dispendiosa da criação de um novoprocesso. A tabela de página do processo-pai precisa ser copiada por inteiro, com cada página sendoexaminada de modo que a semântica copy-on-write possa ser alcançada e as contagens de referênciapara as páginas físicas possam ser atualizadas. A memória virtual do processo-pai também é afetadapela criação do processo: quaisquer páginas de leitura/escrita privadas possuídas pelo pai precisamser marcadas como somente leitura, para que o copy-on-write possa acontecer (o copy-on-writeconta com uma falha de página sendo gerada quando ocorre uma escrita na página).

O escalonamento de threads e processos também difere com relação a isso. O algoritmo de decisão érealizado quando se decide qual processo executar em seguida é o mesmo, mesmo se o processo fortotalmente independente ou apenas uma thread, mas a ação de troca de contexto para um processoseparado é muito mais dispendiosa do que a troca para uma thread. Um processo exige que os regis-tradores de controle de memória virtual da CPU sejam atualizados para que apontem para as novastabelas de página do espaço de endereços virtual.

Nos dois casos – criação de um processo ou troca de contexto entre os processos -, as operações ex-tras de memória virtual possuem um custo significativo. Em muitas CPUs, a mudança das tabelas depágina ou a troca entre as tabelas de página não é barata: todos, ou parte dos Translation Look-asideBuffers (TLBs) de endereço virtual na CPU, precisam ser eliminados quando as tabelas de página sãoalteradas. Esses custos não são contraídos na criação ou escalonamento entre threads.

20.5 O escalonador do Linux implementa o escalonamento de tempo real flexível. Que recursos necessá-rios para certas tarefas de programação de tempo real estão faltando? Como eles poderiam ser acres-centados ao kernel?

Resposta: O escalonamento de tempo real “flexível” do Linux oferece garantias de ordenação refe-rentes às prioridades dos processos executáveis: os processos de tempo real sempre receberão uma

Exercícios 97

Page 101: FSO - Questões

prioridade maior pelo escalonador do que os processos normais de tempo compartilhado, e o pro-cesso de tempo real nunca será interrompido por outro processo com uma prioridade de tempo realinferior.

Porém, o kernel do Linux não admite a funcionalidade de tempo real “rígida”. Ou seja, quando umprocesso está executando uma rotina de serviço do kernel, essa rotina sempre executará até termi-nar, a menos que o controle retorne ao escalonador, explícita ou implicitamente (esperando por al-gum evento assíncrono). Não existe suporte para escalonamento preemptivo de processos no mododo kernel. Como resultado, qualquer chamada de sistema do kernel que é executada por uma quan-tidade de tempo significativa sem reescalonamento bloqueará a execução de quaisquer processos detempo real.

Muitas aplicações de tempo real exigem tal escalonamento de tempo real rígido. Em particular, elasnormalmente exigem tempos de resposta do pior caso garantido para eventos externos. Para conse-guir essas garantias, e para dar aos processos de tempo real do modo usuário uma prioridade verda-deira mais alta do que os processos de menor prioridade no modo do kernel, é necessário encontrarum meio de evitar ter de esperar até que as chamadas de baixa prioridade do kernel terminem antesde escalonar um processo de tempo real. Por exemplo, se um driver de dispositivo gera uma inter-rupção que acorda um processo de tempo real de alta prioridade, então o kernel precisa ser capaz deescalonar esse processo assim que for possível, mesmo que algum outro processo já esteja executan-do no modo de kernel.

Tal reescalonamento preemptivo das rotinas do modo do kernel tem um custo. Se o kernel não pu-der contar com a não-preempção para garantir as atualizações atômicas das estruturas de dadoscompartilhadas, então as leituras ou atualizações dessas estruturas terão de ser protegidas pelos ou-tros mecanismos de lock mais detalhados. Esse bloqueio detalhado de recursos do kernel é o princi-pal requisito para a provisão de garantias de escalonamento estritas.

Muitos recursos do kernel poderiam ser acrescentados para dar suporte à programação de temporeal. O escalonamento baseado em prazo poderia ser obtido fazendo modificações no escalonador.A priorização de operações de E/S poderia ser implementada na camada de requisição de E/S do dis-positivo de bloco.

20.6 O kernel do Linux não permite a paginação para fora da memória do kernel. Que efeito tem essarestrição sobre o projeto do kernel? Quais são duas vantagens e duas desvantagens dessa decisão deprojeto?

Resposta: O impacto principal de desativar a paginação da memória do kernel no Linux é que a nãopossibilidade de preempção do kernel é preservada. Qualquer processo tomando uma falha de pági-na, seja no modo do kernel ou no modo usuário, corre o risco de ser reescalonado enquanto os da-dos exigidos são paginados do disco. Como o kernel pode confiar que não será reescalonado duran-te o acesso às suas principais estruturas de dados, os requisitos de lock para proteger a integridadedessas estruturas de dados são bastante simplificados. Embora a simplicidade de projeto seja um be-nefício por si só, ela também oferece uma vantagem de desempenho importante sobre máquinas deúnico processador, devido ao fato de que não é necessário realizar um lock adicional sobre a maioriadas estruturas de dados internas.

Porém, existem diversas desvantagens na falta de memória de kernel paginável. Em primeiro lugar,isso impõe restrições sobre a quantidade de memória que o kernel pode utilizar. É pouco razoávelmanter estruturas de dados muito grandes na memória não-paginável, pois isso representa a memó-ria física que absolutamente não pode ser usada para nada mais. Isso possui dois impactos: primeiro,o kernel precisa podar muitas de suas estruturas de dados internas manualmente, em vez de ser ca-paz de contar com um único mecanismo de memória virtual, para manter o uso da memória física

98 Capítulo 20 O sistema Linux ELSEVIER

Page 102: FSO - Questões

sob controle. Segundo, fica inviável implementar certos recursos que exigem grandes quantidadesde memória virtual no kernel, como o sistema de arquivos /tmp (um sistema de arquivos baseado namemória virtual rápida, encontrado em alguns sistemas UNIX).

Observe que a complexidade do gerenciamento de falhas de página enquanto se executa o códigodo kernel não é um problema aqui. O código do kernel do Linux já é capaz de lidar com falhas de pá-gina: ele precisa ser capaz de lidar com chamadas de sistema cujos argumentos referenciam a memó-ria do usuário que pode ser paginada para o disco.

20.7 No Linux, as bibliotecas compartilhadas realizam muitas operações centrais ao sistema operacional.Qual é a vantagem de manter essa funcionalidade a partir do kernel? Existem desvantagens? Expli-que sua resposta.

Resposta: Existem diversos motivos para manter a funcionalidade nas bibliotecas compartilhadas,em vez do próprio kernel. Entre elas estão:

� Confiabilidade. A programação no modo do kernel possui um risco inerentemente maior do quea programação no modo usuário. Se o kernel for codificado corretamente, de modo que a prote-ção entre os processos seja imposta, então uma ocorrência de um bug em uma biblioteca no modousuário provavelmente afetará apenas o processo atualmente em execução, enquanto um bug se-melhante no kernel poderia fatalmente derrubar o sistema operacional inteiro.

� Desempenho. Manter o máximo de funcionalidade possível nas bibliotecas compartilhadas domodo usuário ajuda no desempenho de duas maneiras. Em primeiro lugar, isso reduz o consumode memória física: a memória do kernel é não-paginável, de modo que cada função do kernel épermanentemente residente na memória física, mas uma função de biblioteca pode ser paginada apartir do disco por demanda e não precisa estar fisicamente presente o tempo todo. Embora afunção de biblioteca possa estar residente em muitos processos ao mesmo tempo, o compartilha-mento de página pelo sistema de memória virtual significa que, no máximo uma vez, ela só serácarregada na memória física.

Em segundo lugar, chamar uma função em uma biblioteca carregada é uma operação muito rá-pida, mas chamar uma função do kernel através de uma chamada de serviço de sistema do kernelé algo muito mais dispendioso. Entrar no kernel envolve mudar o domínio de proteção da CPU e,estando no kernel, a exatidão de todos os argumentos fornecidos pelo processo precisa ser verifi-cada muito cuidadosamente: o kernel não pode se dar ao luxo de fazer quaisquer suposições so-bre a validade dos argumentos passados a ele, enquanto uma função de biblioteca poderia fazerisso razoavelmente. Esses dois fatores tornam a chamada de uma função do kernel muito maislenta do que a chamada da mesma função em uma biblioteca.

� Maneabilidade. Muitas bibliotecas compartilhadas diferentes podem ser carregadas por umaaplicação. Se uma nova funcionalidade for exigida em um sistema em execução, as bibliotecascompartilhadas para oferecer essa funcionalidade podem ser instaladas sem interromper quais-quer processos já em execução. De maneira semalhente, as bibliotecas compartilhadas existentesgeralmente podem ser atualizadas sem exigir qualquer tempo de paralisação do sistema. Os usuá-rios sem privilégios podem criar bibliotecas compartilhadas para serem executadas por seus pró-prios programas. Todos esses atributos tornam as bibliotecas compartilhadas geralmente mais fá-ceis de gerenciar do que o código do kernel.

Porém, existem algumas desvantagens em se ter código em uma biblioteca compartilhada. Existemexemplos óbvios de código que são completamente inadequados para implementação em uma biblio-teca, incluindo a funcionalidade de baixo nível, como drivers de dispositivos ou sistemas de arqui-vos. Em geral, os serviços compartilhados em torno do sistema inteiro são melhor implementadosno kernel se forem críticos ao desempenho, pois a alternativa – executar o serviço compartilhado

Exercícios 99

Page 103: FSO - Questões

em um processo separado e comunicar-se com ele através da comunicação entre processos – exigeduas trocas de contexto para cada serviço requisitado por um processo. Em alguns casos, pode serapropriado realizar o protótipo de um serviço no modo usuário, mas implementar a versão finalcomo uma rotina do kernel.

A segurança também é importante. Uma biblioteca compartilhada executa com os privilégios doprocesso que chama a biblioteca. Ela não pode acessar diretamente quaisquer recursos inacessíveisao processo que chama, e o processo de chamada possui acesso total a todas as estruturas de dadosmantidas pela biblioteca compartilhada. Se o serviço sendo fornecido exigir quaisquer privilégiosfora daqueles de um processo normal, ou se os dados gerenciados pela biblioteca precisarem ser pro-tegidos contra processos normais do usuário, então as bibliotecas são impróprias e um processo ser-vidor separado (se o desempenho permitir) ou uma implementação de kernel é exigida.

20.8 Cite três vantagens do vínculo dinâmico (ou compartilhado) das bibliotecas em comparação com ovínculo estático. Quais são os dois casos em que o vínculo estático é preferível?

Resposta: As vantagens principais das bibliotecas compartilhadas são que elas reduzem o espaço dememória e disco utilizado por um sistema, e melhoram a facilidade de manutenção.

Quando as bibliotecas compartilhadas estão sendo usadas por todos os programas em execução, hásomente uma instância de cada rotina de biblioteca do sistema em disco, e no máximo uma instânciana memória física. Quando a biblioteca em questão é aquela usada por muitas aplicações e progra-mas, então as economias de disco e memória podem ser substanciais. Além disso, o tempo de inicia-lização para a execução de novos programas pode ser reduzido, pois muitas das funções comuns ne-cessárias por esse programa provavelmente já estarão carregadas na memória física.

A facilidade de manutenção também é uma vantagem importante da ligação dinâmica em relação à es-tática. Se todos os programas em execução utilizarem uma biblioteca compartilhada para acessar suasrotinas de biblioteca do sistema, então a atualização dessas rotinas, seja para acrescentar nova funcio-nalidade ou para consertar bugs, pode ser feita simplesmente pela substituição dessa biblioteca com-partilhada. Não é preciso recompilar ou revincular quaisquer aplicações; quaisquer programas carre-gados após o término da atualização apanharão automaticamente as novas versões das bibliotecas.

Também existem outras vantagens. Um programa que usa bibliotecas compartilhadas normalmentepode ser adaptado para propósitos específicos pela simples troca de uma ou mais de suas bibliotecas,ou mesmo (se o sistema e a maioria dos UNIXs, incluindo o Linux, permitem) pela inclusão de umabiblioteca em tempo de execução. Por exemplo, uma biblioteca de depuração pode substituir umanormal para rastrear um problema em uma aplicação. As bibliotecas compartilhadas também permi-tem que binários do programa sejam vinculados contra código de biblioteca comercial, patenteado,sem realmente incluir qualquer parte desse código no arquivo executável final do programa. Isso éimportante porque, na maioria dos sistemas UNIX, muitas das bibliotecas compartilhadas padrãosão patenteadas, e as questões de licenciamento podem impedir a inclusão desse código nos arquivosexecutáveis para serem distribuídos a terceiros.

Porém, em alguns lugares, o vínculo estático é apropriado. Um exemplo é em ambientes de resgatepara administradores do sistema. Se um administrador de sistema cometer um erro enquanto instalaquaisquer novas bibliotecas, ou se problemas de hardware são desenvolvidos, é bem possível que as bi-bliotecas compartilhadas existentes se tornem danificadas. Como resultado, normalmente um conjun-to básico de utilitários de resgate é vinculado estaticamente, de modo que haja uma oportunidade paracorrigir a falha sem ter de contar com bibliotecas compartilhadas funcionando corretamente.

Há também vantagens de desempenho que às vezes tornam o vínculo estático preferível em casos es-peciais. Para iniciar, o vínculo dinâmico aumenta o tempo de partida para um programa, pois o vín-culo agora precisa ser feito em tempo de execução, e não em tempo de compilação. O vínculo dinâ-

100 Capítulo 20 O sistema Linux ELSEVIER

Page 104: FSO - Questões

mico também pode, às vezes, aumentar o tamanho do conjunto de trabalho máximo de um progra-ma (o número total de páginas físicas da memória exigidas para executar o programa). Em uma bi-blioteca compartilhada, o usuário não possui controle sobre onde residem as diversas funções no ar-quivo binário da biblioteca. Como a maioria das funções não preenche exatamente uma página in-teira ou páginas da biblioteca, o carregamento de uma função normalmente resulta também na cargade partes das funções ao redor. Com o vínculo estático, absolutamente nenhuma função que não forreferenciada (direta ou indiretamente) pela aplicação precisará ser carregada para a memória.

Outras questões em torno do vínculo estático incluem facilidade de distribuição: é mais fácil distri-buir um arquivo executável com vínculo estático do que com vínculo dinâmico, se o distribuidornão tiver certeza se o destinatário terá as bibliotecas corretas instaladas com antecedência. Tambémpode haver restrições comerciais contra a redistribuição de alguns binários como bibliotecas com-partilhadas. Por exemplo, a licença para o ambiente gráfico “Motif” do UNIX permite que os biná-rios usando o Motif sejam distribuídos livremente, desde que sejam vinculados estaticamente, masas bibliotecas compartilhadas não podem ser usadas sem uma licença.

20.9 Compare o uso dos sockets de rede com o uso da memória compartilhada como um mecanismo paraa comunicação de dados entre os processos em um único computador. Cite duas das vantagens decada método. Quando cada um poderia ser preferível?

Resposta: O uso de sockets de rede em vez de memória compartilhada para a comunicação localpossui uma série de vantagens. A vantagem principal é que a interface de programação de socketpossui um conjunto rico de recursos de sincronismo. Um processo pode facilmente determinarquando novos dados chegaram em uma conexão de socket, quantos dados estão presentes e quem osenviou. Os processos podem ser bloqueados até que novos dados cheguem em um socket, ou podemrequisitar que um sinal seja entregue quando os dados chegarem. Um socket também gerencia cone-xões separadas. Um processo com um socket aberto para receber pode aceitar várias conexões paraesse socket, e será informado quando novos processos tentarem se conectar ou quando processosantigos perderem suas conexões.

A memória compartilhada não oferece esses recursos. Não há como um processo determinar se ou-tro processo entregou ou alterou dados na memória compartilhada, a não ser examinando o conteú-do dessa memória. É impossível que um processo bloqueie e requisite um wakeup quando a memó-ria compartilhada é entregue, e não existe um mecanismo padrão para outros processos estabelece-rem uma ligação entre a memória compartilhada e um processo existente.

Porém, a memória compartilhada tem a vantagem de ser muito mais rápida do que as comunicaçõescom socket em muitos casos. Quando os dados são enviados por um socket, normalmente eles sãocopiados da memória para a memória várias vezes. As atualizações na memória compartilhada nãoexigem cópias de dados: se um processo atualizar uma estrutura de dados na memória compartilha-da, essa atualização será imediatamente visível a todos os outros processos que compartilham essamemória. O envio ou o recebimento de dados por um socket exige que uma chamada de serviço dosistema do kernel seja feita para iniciar a transferência, mas a comunicação da memória comparti-lhada pode ser realizada inteiramente no modo usuário, sem a necessidade de qualquer transferên-cia de controle.

A comunicação por socket normalmente é preferida quando o gerenciamento de conexão for im-portante ou quando houver um requisito para sincronizar o emissor e o receptor. Por exemplo, osprocessos servidor normalmente estabelecerão um socket de escuta ao qual os clientes podem se co-nectar quando quiserem utilizar esse serviço. Quando o socket for estabelecido, requisições indivi-duais também são enviadas por meio do socket, de modo que o servidor possa facilmente determi-nar quando chega uma nova requisição e de quem ela chegou.

Exercícios 101

Page 105: FSO - Questões

Porém, em alguns casos, a memória compartilhada é preferida. A memória compartilhada normal-mente é uma solução melhor quando grandes quantidades de dados devem ser transferidas ou quan-do dois processos precisam de acesso aleatório a um grande conjunto de dados comum. Contudo,nesse caso, o processo que está se comunicando ainda pode precisar de um mecanismo extra, alémda memória compartilhada, para conseguir o sincronismo entre eles. O X Window System, um am-biente de exibição gráfica para o UNIX, é um bom exemplo disso: a maioria das requisições gráficasé enviada por sockets, mas a memória compartilhada normalmente é oferecida como um transporteadicional em casos especiais, nos quais grandes mapas de bits devem ser exibidos na tela. Nesse caso,uma requisição para exibir o mapa de bits ainda será enviada pelo socket, mas os dados principais dopróprio mapa de bits serão enviados por meio da memória compartilhada.

20.10 Os sistemas UNIX costumavam usar otimizações de layout de disco com base na posição de rotaçãodos dados no disco, mas as implementações modernas, incluindo Linux, simplesmente otimizampor acesso seqüencial aos dados. Por que elas fazem isso? De que características de hardware o aces-so seqüencial tira proveito? Por que a otimização rotacional não é mais tão útil?

Resposta: As características de desempenho do hardware de disco mudaram substancialmente nosúltimos anos. Em particular, muitas melhorias foram introduzidas para aumentar a largura de bandamáxima que pode ser alcançada em um disco. Em um sistema moderno, pode haver uma longa cana-lização entre o sistema operacional e a cabeça de leitura e escrita do disco. Uma requisição de E/S dedisco precisa passar pelo controlador de disco local do computador, sobre a lógica de barramento epela própria unidade de disco, e depois internamente até o disco, onde provavelmente haverá umcontrolador complexo que pode manter os acessos aos dados em cache e potencialmente otimizar aordem das requisições de E/S.

Devido a essa complexidade, o tempo gasto para uma requisição de E/S ser confirmada e a próximarequisição ser gerada e recebida pelo disco pode ultrapassar a quantidade de tempo entre um setorde disco, passando sob a cabeça de leitura e escrita, e o próximo cabeçalho de setor chegando. Paraler de forma eficiente vários setores ao mesmo tempo, os discos empregarão um cache de leitura an-tecipada. Enquanto um setor está sendo passado para o computador host, o disco estará ocupadolendo os próximos setores, em antecipação a uma requisição de leitura. Se as requisições de leituracomeçarem a chegar em uma ordem que interrompa essa canalização de leitura antecipada, o de-sempenho cairá. Como resultado, o desempenho se beneficia substancialmente se o sistema operaci-onal tentar manter as requisições de E/S em uma ordem estritamente seqüencial.

Um segundo recurso dos discos modernos é que sua geometria pode ser muito complexa. A quanti-dade de setores por cilindro pode variar de acordo com a posição do cilindro: mais dados podem serespremidos em trilhas maiores, mais próximas da borda do disco, do que no centro do disco. Paraum sistema operacional otimizar a posição rotacional dos dados em tais discos, ele precisaria ter co-nhecimento completo dessa geometria, bem como as características de temporização do disco e seucontrolador. Em geral, somente a lógica interna do disco pode determinar o escalonamento ideal deE/Ss, e a geometria do disco provavelmente derrotará qualquer tentativa pelo sistema operacionalde realizar otimizações rotacionais.

20.11 O código-fonte do Linux está disponível ampla e gratuitamente pela Internet ou por vendedores deCD-ROM. Quais são três implicações dessa disponibilidade para a segurança do sistema Linux?

Resposta: A disponibilidade aberta do código-fonte de um sistema operacional possui impactos po-sitivos e negativos sobre a segurança, e provavelmente é um erro dizer que essa é uma coisa definiti-vamente boa ou ruim.

O código-fonte do Linux é aberto ao escrutínio pelos bons e pelos maus. A seu favor, isso resultouno código sendo inspecionado por uma grande quantidade de pessoas que estão preocupadas com a

102 Capítulo 20 O sistema Linux ELSEVIER

Page 106: FSO - Questões

segurança e que eliminaram quaisquer vulnerabilidades encontradas. No outro lado está o argumen-to da “segurança pela obscuridade”, que afirma que as tarefas dos atacantes são mais fáceis se eles ti-verem acesso ao código-fonte do sistema que estão tentando penetrar. Negando aos atacantes infor-mações sobre um sistema, a esperança é que seja mais difícil para esses atacantes encontrar e explo-rar quaisquer pontos fracos na segurança que possam estar presentes.

Em outras palavras, o código-fonte aberto implica tanto que os pontos fracos na segurança possamser encontrados e reparados mais rapidamente pela comunidade Linux, aumentando a segurança dosistema, e que os atacantes possam encontrar mais facilmente quaisquer pontos fracos que permane-çam no Linux.

Entretanto, existem outras implicações para a disponibilidade do código-fonte. Uma delas é que, seum ponto fraco no Linux for encontrado e explorado, então um reparo para esse problema pode sercriado e distribuído muito rapidamente. (Normalmente, os problemas de segurança no Linux costu-mam ter reparos disponíveis ao público dentro de 24 horas a partir da sua descoberta.) Outra é que, sea segurança for importante para usuários específicos, então é possível que esses usuários revejam o có-digo-fonte para se satisfazerem com seu nível de segurança ou para fazerem quaisquer mudanças quedesejarem, a fim de incluir novas medidas de segurança.

Exercícios 103

Page 107: FSO - Questões

C A P Í T U L O 2 1

Windows XP

O sistema operacional Microsoft Windows XP é um sistema operacional de multitarefa preemptiva de32/64 bits para AMD K6/K7, Intel IA32/IA64 e processadores mais recentes. O sucessor do WindowsNT/2000, Windows XP também pretende substituir o sistema operacional Windows 95/98. Os principaisobjetivos para o sistema são segurança, confiabilidade, facilidade de uso, compatibilidade com aplicaçãoWindows e POSIX, alto desempenho, extensibilidade, portabilidade e suporte internacional. Este capítulodiscute os principais objetivos para o Windows XP, a arquitetura em camadas do sistema, que o torna fácilde usar, o sistema de arquivos, redes e a interface de programação. O Windows XP serve como um excelen-te estudo de caso como um sistema operacional de exemplo.

Exercícios21.1 Que tipo de sistema operacional é o Windows XP? Descreva dois dos seus principais recursos.

Resposta: Sem resposta proposta.

21.2 Liste os objetivos de projeto do Windows XP. Descreva dois com detalhes.

Resposta: Sem resposta proposta.

21.3 Descreva o processo de boot de um sistema Windows XP.

Resposta: Sem resposta proposta.

21.4 Descreva as três principais camadas da arquitetura do Windows XP.

Resposta: Sem resposta proposta.

21.5 Qual é a tarefa do gerenciador de objetos?

Resposta: Sem resposta proposta.

21.6 O que é um descritor, e como um processo obtém um descritor?

Resposta: Sem resposta proposta.

21.7 Descreva o esquema de gerenciamento do gerenciador de memória virtual. Como o gerenciadorVM melhora o desempenho?

Resposta: Sem resposta proposta.

Page 108: FSO - Questões

21.8 Que tipos de serviços o gerenciador de processos oferece? O que é uma chamada de procedimentolocal?

Resposta: Sem resposta proposta.

21.9 Quais são as responsabilidades do gerenciador de E/S?

Resposta: Sem resposta proposta.

21.10 O que gerencia o cache no Windows XP? Como o cache é gerenciado?

Resposta: Sem resposta proposta.

21.11 O Windows XP oferece processos no modo usuário para permitir que o sistema operacional executeprogramas desenvolvidos para outros sistemas operacionais? Descreva dois desses subsistemas.

Resposta: Sem resposta proposta.

21.12 Que tipos de rede o Windows XP admite? Como o Windows XP implementa os protocolos detransporte? Descreva dois protocolos de rede.

Resposta: Sem resposta proposta.

21.13 Como o espaço de nomes do NTFS é organizado? Descreva.

Resposta: Sem resposta proposta.

21.14 Como o NTFS cuida das estruturas de dados? Como o NTFS se recupera de uma falha do sistema?O que é garantido após a ocorrência de uma recuperação?

Resposta: Sem resposta proposta.

21.15 O que é um processo e como ele é gerenciado no Windows XP?

Resposta: Sem resposta proposta.

21.16 Como o Windows XP aloca memória do usuário?

Resposta: Sem resposta proposta.

21.17 Descreva algumas das maneiras como uma aplicação pode usar a memória por meio da API Win32.

Resposta: Sem resposta proposta.

Exercícios 105

Page 109: FSO - Questões