Вы находитесь на странице: 1из 28

Universidade Estadual de Campinas

Faculdade de Engenharia Eletrica e de Computaca~o

Indice
1 Introduc~ao 1
1.1 O que e um Sistema Operacional? : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1
Sistemas Operacionais 1.2
1.3
1.4
Hist oria dos Sistemas Operacionais
Denic~oes
Exemplos
: : : : : : : : : : : : : : : : : : : : : : : : : : : : :

: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :

: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
2
4
5
Notas de aula 2 Processos 8
2.1 Conceitos B asicos : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 8
EA877 | Mini e Microcomputadores: Software 2.2 Concorr^encia : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 8
2.3 Comunicac~ao Interprocessos : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 11
2.4 Escalonamento de Processos : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 11
2.5 Processos em Unix : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 13
2.6 Processos em MS-DOS : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 13
3 Ger^encia de Memoria 16
3.1 Ger^encia Sem Permuta : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 16
3.2 Ger^encia com Permuta : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 17
3.3 Mem oria Virtual : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 21
3.4 Algoritmos de Troca de P agina : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 24
Texto-base: Introduc~ao a Sistemas Operacionais 3.5 Ger^encia de Mem oria no UNIX : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 26
3.6 Ger^encia de Mem oria em MS-DOS : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 28
de E. Cardozo, M. Magalh~aes e L. F. Faina, 1992
4 Sistema de Arquivos 30
adaptado para EA877 por Ivan L. M. Ricarte 4.1 Interface do Sistema de Arquivos : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 30
4.2 Projeto do Sistema de Arquivos : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 31
Departamento de Engenharia de Computaca~ o e Automaca~o Industrial 4.3 O Sistema de Arquivos do Unix : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 35
4.4 Sistemas de Arquivos do MS-DOS : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 37
5 Entrada e Sa da 39
5.1 Princ pios do Hardware : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 39
5.2 Princ pios do Software : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 41
5.3 Discos : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 44
5.4 E/S no Unix : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 47
5.5 E/S em MS-DOS : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 49

1996

i
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Cardozo, Magalh~aes, Faina & Ricarte

Captulo 1
Introduc~ao
Programas computacionais (ou software ) constituem o elo entre o aparato eletr^onico (ou hardware )
e o ser humano. Tal elo se faz necess ario dada a discrep^ancia entre o tipo de informac~ao manipulada
pelo homem e pela m aquina. A m aquina opera com cadeias de c odigos bin arios enquanto o homem
opera com estruturas mais abstratas como conjuntos, arquivos, algoritmos, etc.
Programas computacionais podem ser grosseiramente divididos em dois tipos:
 programas do sistema, que manipulam a operac~ao do computador
 programas aplicativos, que resolvem problemas para o usu ario.
O mais importante dos programas do sistema e o sistema operacional, que controla todos os recursos
do computador e proporciona a base de sustentac~ao para a execuca~o de programas aplicativos.

1.1 O que e um Sistema Operacional?


A maioria de usu arios de computador t^em alguma experi^encia com sistemas operacionais, mas e
dif cil denir precisamente o que e um sistema operacional. Parte do problema decorre do fato do
sistema operacional realizar duas funco~es b asicas e, dependendo do ponto de vista abordado, uma das
func~oes e mais destacada do que a outra. Estas func~oes s~ao descritas a seguir.

1.1.1 O Sistema Operacional como uma Maquina Virtual


A arquitetura (conjunto de instruco~es, organizac~ao de mem oria, E/S e estrutura de barramento)
da maioria dos computadores a n vel de linguagem de m aquina e primitiva e dif cil de programar,
especicamente para operaco~es de entrada e sa da. E prefer vel para um programador trabalhar com
abstrac~oes de mais alto n vel onde detalhes de implementac~ao das abstrac~oes n~ao s~ao vis veis. No caso de
discos, por exemplo, uma abstrac~ao t pica e que estes armazenam uma coleca~o de arquivos identicados
por nomes simb olicos.
O programa que esconde os detalhes de implementac~ao das abstrac~oes e o sistema operacional. A
abstrac~ao apresentada ao usu ario pelo sistema operacional e simples e mais f acil de usar que o hardware
original.
Nesta vis~ao, a func~ao do sistema operacional e apresentada ao usu ario como uma maquina estendida
ou maquina virtual que e mais f acil de programar que o hardware que a suporta.
ii c 1996 DCA/FEEC/UNICAMP 1
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Introduc~ao Historia dos Sistemas Operacionais 1.2]

1.1.2 O Sistema Operacional como um Gerenciador de Recursos 1.2.3 A Terceira Gerac~ao (1965-1980): Circuitos Integrados e Multipro-
Um computador moderno e composto de v arios subsistemas tais como processadores, mem orias, gramac~ao
discos, terminais, tas magn eticas, interfaces de rede, impressoras, e outros dispositivos de E/S. Sob No in cio dos anos 60, a maioria dos fabricantes de computadores tinha duas linhas distintas e in-
este ponto de vista, o sistema operacional tem a func~ao de gerenciar de forma adequada estes recursos de compat veis de produtos. De um lado, havia os computadores cient cos que eram usados para c alculos
modo que as tarefas impostas pelos usu arios sejam atendidas da forma mais r apida e con avel poss vel. num ericos na ci^encia e engenharia. Do outro, haviam os computadores comerciais que executavam tare-
Um exemplo t pico e o compartilhamento da unidade central de processamento (CPU) entre as fas como ordenac~ao de dados e impress~ao de relat orios, sendo utilizados principalmente por instituic~oes
v arias tarefas (programas) em sistemas multiprogramados. O sistema operacional e o respons avel pela nanceiras.
distribuic~ao de forma otimizada da CPU entre as tarefas em execuc~ao. A IBM tentou resolver este problema introduzindo a s erie System/360. Esta s erie consistia de
m aquinas com mesma arquitetura2 e conjunto de instruc~oes. Desta maneira, programas escritos para
uma m aquina da s erie executavam em todas as demais. A s erie 360 foi projetada para atender tanto
1.2 Historia dos Sistemas Operacionais aplicac~oes cient cas quanto comerciais.
N~ao foi poss vel para a IBM escrever um sistema operacional que atendesse a todos os conitos de
Os sistemas operacionais t^em evolu do com o passar dos anos. Nas pr oximas sec~oes vamos apresentar requisitos dos usu arios. O resultado foi um sistema operacional (OS/360) enorme e complexo comparado
de forma sucinta este desenvolvimento. com o FMS.
A despeito do tamanho e problemas, o OS/360 atendia relativamente bem as necessidades dos
usu arios. Ele tamb em popularizou muitas t ecnicas ausentes nos sistemas operacionais de 2a gerac~ao,
1.2.1 A Primeira Gerac~ao (1945-1955): Valvulas e Plugs como por exemplo a multiprogramac~ao. Outra caracter stica apresentada foi a capacidade de ler jobs
Ap os muitos esforcos mal sucedidos de se construir computadores digitais antes da 2a guerra mundial, dos cart~oes perfurados para os discos, assim que o programador os entregasse. Dessa maneira, assim
em torno da metade da d ecada de 1940 alguns sucessos foram obtidos na construca~o de m aquinas de que um job terminasse, o computador iniciava a execuc~ao do seguinte, que j a f^ora lido e armazenado
c alculo empregando-se v alvulas e rel es. Estas m aquinas eram enormes, ocupando salas com racks que em disco. Esta t ecnica foi chamada spool (simultaneous peripherical operation on line), sendo tamb em
abrigavam dezenas de milhares de v alvulas (e consumiam quantidades imensas de energia). utilizada para a sa da de dados.
Naquela epoca, um pequeno grupo de pessoas projetava, construia, programava, operava e dava O tempo de espera dos resultados dos programas reduziu-se drasticamente com a 3a gerac~ao de
manutenc~ao em cada m aquina. Toda programac~ao era feita absolutamente em linguagem de m aquina, sistemas. O desejo por respostas r apidas abriu caminho para o time-sharing, uma variac~ao da multi-
muitas vezes interligando plugs para controlar func~oes b asicas da m aquina. Linguagens de programac~ao programac~ao onde cada usu ario tem um terminal on-line e todos compartilham uma u nica CPU.
eram desconhecidas, assim como sistemas operacionais. Por volta de 1950 foram introduzidos os cart~oes Ap os o sucesso do primeiro sistema operacional com capacidade de time-sharing (o CTSS) desen-
perfurados aumentando a facilidade de programaca~o. volvido no MIT3, um cons orcio envolvendo o MIT, a GE e o Laborat orio Bell foi formado com o intuito
de desenvolver um projeto ambicioso para a epoca: um sistema operacional que suportasse centenas de
usu arios on-line. O MULTICS (MULTiplexed Information and Computing Service) introduziu muitas
1.2.2 A Segunda Gerac~ao (1955-1965): Transistores e Processamento em id eias inovadoras, mas sua implementac~ao mostrou-se impratic avel para a d ecada de sessenta. O projeto
Batch MULTICS inuenciou os pesquisadores da Bell que viriam a desenvolver o UNIX uma d ecada depois.
A introduc~ao do transistor mudou radicalmente o quadro. Computadores tornaram-se con aveis 1.2.4 A Quarta Gerac~ao (1980-): Computadores Pessoais e
e difundidos (com a fabricac~ao em s erie), sendo empregados em atividades m ultiplas. Pela primeira
vez, houve uma separaca~o clara entre projetistas, construtores, operadores, programadores e pessoal de Estac~oes de Trabalho
manutenc~ao. Entretanto, dado seu custo ainda elevado, somente corporaco~es e universidades de porte Com o desenvolvimento de circuitos LSI, chips contendo milhares de transistores em um cent metro
detinham recursos e infraestrutura para empregar os computadores desta gerac~ao. quadrado de sil cio, surgiu a era dos computadores pessoais e estac~oes de trabalho. Em termos de arqui-
Estas m aquinas eram acondicionadas em salas especiais com pessoal especializado para sua operac~ao. tetura, estes n~ao diferem dos minicomputadores da classe do PDP-11, exceto no quesito mais importante:
Para rodar um job (programa), o programador produzia um conjunto de cart~oes perfurados (um cart~ao preco. Enquanto os minicomputadores atendiam companhias e universidades, os computadores pessoais
por comando do programa), e o entregava ao operador que dava entrada do programa no computador. e estac~oes de trabalho passaram a atender usu arios individualmente.
Quando o computador completava o trabalho, o operador devolvia os cart~oes com a impress~ao dos O aumento do potencial destas m aquinas criou um vast ssimo mercado de software a elas dirigido.
resultados ao programador. Como requisito b asico, estes produtos (tanto aplicativos quanto o pr oprio sistema operacional) necessita-
A maioria dos computadores de 2a gerac~ao foram utilizados para c alculos cient cos e de engenharia. vam ser \amig aveis", visando usu arios sem conhecimento aprofundado de computadores e sem intenc~ao
Estes sistemas eram largamente programados em FORTRAN e ASSEMBLY. Sistemas operacionais de estudar muito para utiliz a-los. Esta foi certamente a maior mudanca em relac~ao ao OS/360 que
t picos1 eram o FMS (Fortran Monitor Systems) e o IBSYS (IBM's Operating Systems).
2 Por sinal, o termo arquitetura de computador foi introduzido pelos projetistas deste sistema.
1 Que eram capazes de gerenciar apenas um job por vez. 3 Massachussets Institute of Technology.

2 c 1996 DCA/FEEC/UNICAMP 3
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Introduc~ao Exemplos 1.4]

era t~ao obscuro que diversos livros foram escritos sobre ele. Dois sistemas operacionais dominaram o ao suporte de m ultiplos processos concorrentes, permite que instruc~oes e dados de dois ou mais processos
mercado: MS-DOS para os computadores pessoais e UNIX para as estaco~es de trabalho. disjuntos estejam residentes na mem oria principal simultaneamente.
O pr oximo desenvolvimento no campo dos sistemas operacionais surgiu com a tecnologia de redes
de computadores: os sistemas operacionais de rede e distribu dos. Multiprocessamento Embora a maioria dos computadores disponha de uma u nica CPU que exe-
Sistemas operacionais de rede diferem dos sistemas operacionais para um simples processador no cuta instruc~oes uma a uma, certos projetos mais avancados incrementaram a velocidade efetiva de
tocante a capacidade de manipular recursos distribu dos pelos processadores da rede. Por exemplo, um computac~ao permitindo que v arias instruc~oes fossem executadas ao mesmo tempo. Um computador
arquivo pode ser acessado por um usu ario num processador, mesmo que sicamente o arquivo se encontre com m ultiplos processadores que compartilhem uma mem oria principal comum e chamado um multi-
em outro processador. Sistemas operacionais de rede prov^eem ao usu ario uma interface transparente processador. O sistema que suporta tal congurac~ao e um sistema que suporta o multiprocessamento.
de acesso a recursos compartilhados (aplicativos, arquivos, impressoras, etc), sejam estes recursos locais
ou remotos.
Sistemas operacionais distribu dos s~ao muito mais complexos. Estes sistemas permitem que os Interpretador de Comandos (Shell) O interpretador de comando e um processo que perfaz a
processadores cooperem em servicos intr nsecos de sistemas operacionais tais como escalonamento de interface do usu ario com o sistema operacional. Este processo l^e o teclado a espera de comandos,
tarefas e paginac~ao. Por exemplo, num sistema operacional distribu do uma tarefa pode \migrar" interpreta-os e passa seus par^ametros ao sistema operacional. Servicos como login e logout, manipulaca~o
durante sua execuc~ao de um computador sobrecarregado para outro que apresente carga mais leve. de arquivos, e execuc~ao de programas s~ao solicitados atrav es do interpretador de comandos.
Contr ario aos sistemas operacionais de rede que s~ao largamente dispon veis comercialmente, sistemas
operacionais distribu dos t^em sua utilizac~ao ainda restrita. Chamadas de Sistema (System Calls) Assim como o interpretador de comandos e a interface
entre usu ario e sistema operacional, as chamadas do sistema constituem a interface entre programas
aplicativos e o sistema operacional. As chamadas do sistema s~ao func~oes que podem ser ligadas com os
1.3 Denic~oes aplicativos provendo servicos como leitura do rel ogio interno, operac~oes de entrada/sa da e comunicac~ao
inter-processos.
Nesta seca~o, alguns termos b asicos relativos a sistemas operacionais s~ao denidos. Nos cap tulos
seguintes, os conceitos associados ser~ao aprofundados. Arquivos Uma das func~oes associadas a sistemas operacionais e esconder os detalhes de hardware do
usu ario. O conceito de arquivos oferece um n vel de abstrac~ao que adequado para manipular grupos
Processos Um processo (as vezes chamado de tarefa ou de processo sequencial) e basicamente um de dados armazenados em discos e perif ericos de entrada e sa da (I/O). Al em de suportar func~oes para
programa em execuc~ao. Ele e uma entidade ativa que compete por recursos oferecidos pelo sistema transferir dados entre discos (ou perif ericos) e a aplicac~ao, o sistema operacional pode tamb em suportar
(acesso a discos, perif ericos, e principalmente CPU) e interage com outros processos. Um processo pode func~oes para organizar os dados do disco em diretorios e para controlar o acesso a estes dados.
assumir de tr^es estados, que s~ao: executando (usando a CPU para executar as instruco~es do programa),
bloqueado (aguardando outros recursos | al em da CPU | n~ao dispon veis no momento), ou ativo
(aguardando apenas CPU para executar). Codigo Reentrante Um c odigo de um programa e dito ser reentrante quando um segundo processo
pode iniciar a execuc~ao deste c odigo mesmo que o c odigo esteja sendo executado por um outro processo.
Sistemas Multitarefas e Multiusuarios Um sistema operacional multitarefa se distingue pela sua
habilidade de suportar a execuc~ao concorrente de processos sobre um processador u nico, sem necessa-
riamente prover forma elaborada de gerenciamento de recursos (CPU, mem oria, etc). Sistemas opera-
1.4 Exemplos
cionais multiusu arios permitem acessos simult^aneos ao computador atrav es de dois ou mais terminais No restante desta apostila, os conceitos que ser~ao apresentados | ger^encia de processos e de
de entrada. Embora frequentemente associada com multiprogramac~ao, multitarefa n~ao implica necessa- mem oria, manipulac~ao de arquivos e de dispositivos de entrada e sa da | ser~ao ilustrados sob a optica
riamente em uma operac~ao multiusu ario. Operac~ao multiprocessos sem suporte de multiusu arios pode de dois sistemas operacionais de ampla utilizac~ao, MS-DOS e Unix. Estes dois sistemas s~ao brevemente
ser encontrado em sistemas operacionais de alguns computadores pessoais avancados e em sistemas de introduzidos a seguir.
tempo-real.
Multiprogramac~ao Multiprogramaca~o e um conceito mais geral que multitarefa e denota um sistema 1.4.1 Unix
operacional que prov^e gerenciamento da totalidade de recursos tais como CPU, mem oria, sistema de O j a citado projeto MULTICS (Sec~ao 1.2.3) n~ao obteve sucesso por ser ambicioso demais. Um
arquivos, em adic~ao ao suporte da execuc~ao concorrente dos processos. Quando um sistema operacional dos pesquisadores deste projeto, Ken Thompson (Bell Labs) decidiu escrever uma vers~ao simplicada
permite apenas a monoprogramac~ao, a execuc~ao de programas passa por diversas fases, alternando deste sistema em uma m aquina j a sem uso (um minicomputador PDP-7). Esta vers~ao do sistema foi
momentos em que o processo se encontra executando ou bloqueado. Atrav es do uso da multiprogramac~ao batizada de UNICS (Uniplexed Information and Computing Service), uma brincadeira com relac~ao ao
e poss vel reduzir os per odos de inatividade da CPU e consequentemente aumentar a eci^encia do uso \multiplexed" de MULTICS. Posteriormente, este sistema simplicado viria a alcancar grande sucesso
do sistema como um todo. O termo multiprogramac~ao denota um sistema operacional o qual em adic~ao sob o nome de Unix.
4 c 1996 DCA/FEEC/UNICAMP 5
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Introduc~ao Exemplos 1.4]

Ap os a vers~ao inicial, desenvolvida por esforco pessoal de Thompson, outras pessoas passaram a hardware ou software para este sistema. Desta forma, ela selecionou como plataforma de hardware
colaborar com o projeto e o sistema foi transportado para outras m aquinas da fam lia PDP-11. Como o o processador 8088 da Intel, com arquitetura interna de 16 bits mas trabalhando em um barramento
esforco de transportar o c odigo desenvolvido em assembly era muito grande, o grupo decidiu desenvolver externo de dados de 8 bits. Apesar de que j a existia na epoca o processador 8086, com barramento
tamb em uma linguagem de alto-n vel para reescrever o sistema. A primeira linguagem desenvolvida foi externo de 16 bits, os perif ericos para o 8088 eram muito mais baratos, o que determinou a escolha
B posteriormente, o sistema foi reescrito na linguagem que sucedeu B, a linguagem C. Pelo trabalho nal. Anal de contas, este era apenas um computador pessoal, que seria utilizado apenas para jogos.
em Unix, Thompson and Dennis Ritchie receberam posteiormente o pr^emio ACM Turing. Unix logo Pelo mesmo racioc nio, a IBM procurou uma pequena empresa de Seattle, a Microsoft, para licenciar
alcancou sucesso entre os usu arios de PDP-11, que eram na epoca principalmente universidades. Com uma vers~ao de um interpretador BASIC para o seu computador pessoal. O propriet ario da empresa,
o desenvolvimento de um compilador C port atil (por Steve Johnson, de Bell Labs), Unix pode ser Bill Gates, havia desenvolvido um interpretador BASIC para o primeiro computador pessoal, o Altair.
transportado facilmente para outros sistemas computacionais. Aproveitando a ocasi~ao, a IBM manifestou interesse em um sistema operacional. Na epoca, a Microsoft
Em meados da d ecada de 1980, a AT&T (companhia que controlava Bell Labs) passou a comercializar vendia o sistema Unix sob licenca da AT&T, mas este sistema seria muito grande para os recursos
sua vers~ao \ocial" de Unix. Em contraposic~ao a esta vers~ao, h a o sistema Unix desenvolvido (a partir oferecidos pela m aquina (64 KBytes de mem oria, sem disco r gido). A recomendac~ao foi adotar o sistema
da vers~ao para o PDP-11) na Universidade da Calif ornia em Berkeley, usualmente conhecido como Unix CP/M-86, da Digital Research, a empresa que havia produzido o ent~ao popular sistema operacional
BSD (Berkeley Software Distribution). V arias empresas que passaram a distribuir suas vers~oes de Unix CP/M para processadores de 8 bits. No entanto, o cronograma para o CP/M-86 estava atrasado, e a
para seus sistemas utilizaram como base o Unix BSD, tais como a Sun e a DEC. As diferencas entre IBM n~ao queria esperar. Voltando a Gates, pediu-lhe que produzisse um sistema operacional para 16
estas duas vers~oes de Unix levaram ao desenvolvimento de um padr~ao para uniformizar as interfaces de bits. Gates ent~ao comprou o software 86-DOS da empresa Seattle Computer Products (que o utilizava
acesso aos servicos do sistema. Esta interface e conhecida como POSIX (Portable Operating System, para testar as placas de mem oria que produzia) e contratou o autor do programa, Tim Patterson, para
Unix), e dene nomes e formatos padronizados para servicos comuns do sistema operacional, tais como fazer uma adaptac~ao r apida. Desta forma, nasceu MS-DOS, embarcado em IBM-PCs a partir de 1981.
open, read e fork. Uma aplicac~ao que utilize os servicos do sistema operacional denidos pelo padr~ao Provavelmente, se a IBM ou a Microsoft pudessem imaginar o n vel de sucesso que esta combinac~ao
POSIX pode ser transportada para qualquer sistema tipo Unix sem problemas. iria obter, mais cuidado teria sido dado ao desenvolvimento do sistema. O motivo do sucesso deste
Entretanto, a quest~ao da uniformidade dos diferentes sistemas Unix ainda n~ao foi completamente sistema foi o fato de ter sido adotada uma arquitetura aberta, onde os componentes estavam dispon veis
respondida. H a ainda hoje distinc~ao entre sistemas produzidos pela Open Software Foundation (OSF, em qualquer loja de eletr^onica e os diagramas esquem aticos e c odigo b asico podiam ser encontrados
um cons orcio de empresas de computac~ao do porte da IBM, HP e DEC) e pela Unix International (UI, no livro que descrevia o sistema. Desta forma, diversos fabricantes passaram a desenvolver modelos
outro cons orcio liderado pela AT&T), al em de empresas que utilizam suas pr oprias variac~oes, como o \compat veis" com o IBM-PC, e MS-DOS era o sistema operacional de todos eles.
AIX da IBM. mesmo assim, Unix e um dos sistemas operacionais de maior aceitac~ao na comunidade Entre as caracter sticas do IBM-PC que tiveram reexo no software desenvolvido para ele est~ao o
\n~ao-comercial". A raz~ao da aceitac~ao do UNIX e explicada por: modelo de mem oria e a falta de protec~ao de hardware. Apesar do processador 8088 ter um espaco de
enderecamento de 1 MByte, apenas os primeiros 640 KBytes (dez vezes maior que a mem oria f sica) es-
 ser escrito em linguagem de alto n vel, o que facilita seu transporte para diferentes plataformas tavam dispon veis como RAM, sendo o restante do espaco de enderecamento alocado a outras mem orias,
 ter interface simples para com o usu ario (shell) como ROM e mem oria de v deo. Esta caracter stica trouxe reexos posteriores, quando nenhum pro-
grama rodando em MS-DOS podia ser maior que 640 KBytes.
 fornecer primitivas que permitem o desenvolvimento de programas complexos a partir de progra-
mas mais simples
 suportar estrutura hier arquica de arquivos
 ter formataca~o de arquivos baseada no conceito de stream (cadeia) de bytes
 ter interfaceamento simples e consistente com os dispositivos perif ericos
 ser multiusu ario/multiprogramado
 esconder a arquitetura do hardware, permitindo que um programa execute em m ultiplas platafor-
mas.

1.4.2 MS-DOS
MS-DOS (MicroSoft Disk Operating System), provavelmente o sistema operacional com maior n umero
de usu arios, foi desenvolvido de forma n~ao t~ao prossional. Quando a IBM decidiu lancar seu compu-
tador pessoal no in cio da d ecada de 1980, a empresa n~ao estava interessada no desenvolvimento de
6 c 1996 DCA/FEEC/UNICAMP 7
Cardozo, Magalh~aes, Faina & Ricarte Processos Concorr^encia 2.2]

ao m sem interrupc~ao para evitar inconsist^encias. Em situac~oes como estas, a parte do c odigo que o
manipula o recurso compartilhado e uma regi~ao cr tica.
O c odigo que implementa uma regi~ao cr tica deve obedecer a uma s erie de restric~oes:
 dois processos n~ao podem estar simultaneamente executando regi~oes cr ticas referentes a um
Captulo 2 mesmo recurso compartilhado (garantia de m utua exclus~ao)
 a garantia de m utua exclus~ao deve ser independente da velocidade relativa dos processos ou n umero
Processos de CPUs
 nenhum processo executando fora de regi~oes cr ticas pode bloquear outro processo
 nenhum processo deve esperar um tempo arbitrariamente longo para poder executar uma regi~ao
cr tica.
2.1 Conceitos Basicos V arios algoritmos de controle visando garantir as propriedades acima foram propostos. Estes al-
No cap tulo anterior denimos o conceito de processo | essencialmente, um programa em execuca~o. goritmos s~ao classicados segundo o modo com que esperam pela autorizac~ao de entrada numa regi~ao
Um processo possui duas importantes propriedades: cr tica: espera ocupada (usando a CPU durante a espera) ou bloqueada (n~ao competindo pela CPU).
Todo algoritmo de m utua exclus~ao possui duas func~oes delimitadoras. A primeira func~ao e evocada
 o resultado da execuc~ao de um processo independe da velocidade com que o processo e executado quando o processo deseja iniciar a execuc~ao de uma regi~ao cr tica. Quando esta func~ao retorna, o
 se um processo for executado novamente com os mesmos dados, ele passar a precisamente pela processo est a apto a executar a regi~ao cr tica. No nal da execuc~ao da regi~ao cr tica, o processo evoca a
segunda func~ao, que ent~ao provoca o retorno da primeira func~ao em outro processo. Para permitir que
mesma sequ^encia de instruc~oes e fornecer a o mesmo resultado. regi~oes cr ticas que acessam recursos compartilhados distintos possam ser executadas ao mesmo tempo,
Estas propriedades enfatizam a natureza sequencial de um processo. O processo sequencial e denido a cada recurso compartilhado e associado um identicador, e as duas func~oes que comp~oem o algoritmo
pelo resultado de suas instruc~oes, n~ao pela velocidade com que as instruc~oes s~ao executadas. de garantia de m utua exclus~ao possuem este identicador como par^ametro.
A maioria dos computadores modernos s~ao capazes de realizar diversas atividades em paralelo.
Enquanto roda um programa do usu ario, o computador pode ler um disco ou utilizar a impressora. 2.2.1 Mutua Exclus~ao Com Espera Ocupada
Em sistemas multiprogramados, a CPU e comutada de programa a programa em per odos da ordem de
mil esimos de segundos, dando ao usu ario a impress~ao de paralelismo. Nesta sec~ao analisaremos v arias propostas para garantir exclus~ao m utua nas regi~oes cr ticas, n~ao
A ger^encia de atividades paralelas e dif cil de ser implementada com eci^encia. Entretanto, proje- permitindo que mais de um processo possam manipular um recurso compartilhado ao mesmo tempo.
tistas de sistemas operacionais ao longo dos anos v^em desenvolvendo modelos objetivando tornar esta Em todas, o processo que est a tentanto acessar uma regi~ao cr tica em execuca~o por outro processo
tarefa mais simples. permanece em espera ocupada, isto e, competindo pela CPU mas sem avancar no seu processamento.
No modelo mais empregado atualmente, todos os programas execut aveis no computador, muitas
vezes incluindo subsistemas do sistema operacional, est~ao organizados na forma de processos. Concei- Desabilitar Interrupc~oes A soluc~ao mais simples e o m etodo de desabilitar todas as interrupc~oes
tualmente, cada processo tem uma CPU virtual pr opria. A posse da CPU real e passada periodicamente quando se est a entrando na regi~ao cr tica, e reabilit a-las ao sair. Esta proposta n~ao e muito atrativa,
de processo a processo. pois d a ao processo usu ario poder de desabilitar todas as interrupc~oes, inclusive aquelas que permitem
Em sistemas multiprogramados, a velocidade de execuca~o de um processo e func~ao da quantidade o n ucleo reassumir a CPU. Caso o processo n~ao as reabilite por algum motivo, o sistema operacio-
de processos competindo pela CPU. Isto implica que o tempo de execuc~ao de um processo varia a cada nal jamais reassume o controle do harware. Por outro lado, e conveniente para o sistema operacional
nova execuc~ao, dependendo da \carga" da m aquina | ou seja, processos n~ao devem ser programados desabilitar interrupc~oes durante algumas instruc~oes, enquanto est a atualizando vari aveis internas. As-
com considerac~oes intr nsecas de tempo. sim, desabilitar interrupc~oes e uma soluc~ao u til para o sistema operacional, mas n~ao para processos de
Neste cap tulo, avancaremos no estudo de processos, analisando problemas de concorr^encia, escalo- aplicac~ao.
namento e comunicac~ao interprocessos.
Variaveis LOCK Uma segunda tentativa leva-nos a uma soluc~ao por software. Considere, para cada
2.2 Concorr^encia recurso compartilhado, uma vari avel global LOCK, inicialmente igual a 0. Quando um processo deseja
entrar em sua regi~ao cr tica ele primeiro testa o valor de LOCK. Se for 0, o processo altera para 1 e
Em muitos sistemas operacionais, processos frequentemente compartilham outros recursos al em da executa a regi~ao cr tica. Se for 1, ele espera at e que seja 0. Embora pareca uma boa soluc~ao, o que ir a
CPU. Em muitos casos, o recurso s o pode atender a uma requisica~o por vez, e deve atend^e-la do princ pio ocorrer se dois processos testam uma vari avel de valor 0 ao mesmo tempo?
8 c 1996 DCA/FEEC/UNICAMP 9
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Processos Comunica ca~o Interprocessos 2.3]

Altern^ancia Estrita Esta proposta dene uma vari avel TURN que indica qual processo tem o direito a caracter stica de m utua exclus~ao, pois eles devem garantir que apenas um processo pode estar ativo1
de acesso a regi~ao cr tica | ou seja, esta vari avel indica quem deve esperar e quem pode entrar na sec~ao no monitor em um dado instante.
cr tica. Se TURN for , o processo pode entrar na regi~ao cr tica. Ao sair, deve passar o valor de TURN
i i Monitores constituem-se em um conceito de linguagem de programac~ao, ou seja, o compilador reco-
para + 1 (m odulo o n umero total de processos). Este algoritmo garante a m utua exclus~ao, mas os
i nhece que os monitores s~ao especiais e pode manusear as chamadas do monitor diferentemente de outras
processos estritamente se alternam na posse do recurso compartilhado. Isto faz com que um processo chamadas. Monitores, apesar de elegantes na manutenc~ao de m utua exclus~ao, t^em aplicac~ao restrita
necessite aguardar o acesso a um recurso compartilhado por todos os demais at e que chegue novamente pois raras s~ao as linguagens de programac~ao que os incorporam.
a sua vez. O que ocorre quando a frequ^encia de acesso for diferente entre os processos?
Soluc~ao de Peterson Esta soluc~ao e obtida pela combinaca~o das id eias de vari aveis LOCK e TURN, 2.3 Comunicac~ao Interprocessos
criando-se tamb em uma soluc~ao por software para o problema. Ela evita os problemas individuais das Muitos autores consideram os mecanismos de exclus~ao m utua apresentados acima como formas de
soluc~oes anteriores, mas e pouco utilizada na pr atica por utilizar espera ocupada. processos se comunicarem. Entretanto, preferimos considerar tais mecanismos como de sincronizac~ao
interprocessos, usando o termo comunicac~ao apenas quando ocorrer interc^ambio de informac~ao entre
Instruc~ao TSL Esta proposta requer suporte de hardware. Ela utiliza uma instruca~o da forma TSL processos. Sincronizac~ao e procedimento de controle, normalmente usado para garantir m utua exclus~ao
(Test and Set Lock) presente em muitos processadores. Esta instruc~ao permite a implementac~ao de e gerenciar a competic~ao entre os processos. Comunicac~ao, por sua vez, visa promover a cooperac~ao
vari aveis LOCK cujo teste e atualizaca~o s~ao at^omicos (em outras palavras, a instruc~ao TSL e indivis vel entre os processos.
mesmo frente a interrupc~oes de hardware ).
Passagem de Mensagem Este m etodo de comunicac~ao entre processos usa duas chamadas de sis-
2.2.2 Mutua Exclus~ao com Espera Bloqueada tema, send (que envia umamensagem a um processo destino) e receive (que recebe uma mensagem
Ser~ao apresentados a seguir alguns mecanismos de garantia de m utua exclus~ao que bloqueiam os de um processo fonte). Destino e fonte de mensagens s~ao bu"ers alocados pelos processos para ns
processos quando tentam executar uma regi~ao cr tica \ocupada". S~ao mais ecientes que os anteriores, de envio e recepc~ao de mensagens. Mensagens s~ao estruturas cujo conte udo e interpretado unicamente
posto que processos bloqueados n~ao competem pela CPU. pelos processos emissor e receptor da mensagem.

Sleep e Wakeup Um dos m etodos mais simples de implementac~ao da espera bloqueada e a utilizac~ao Compartilhamento de Dados Processos podem se comunicar atrav es do compartilhamento de uma
do par sleep e wakeup. sleep e uma chamada de sistema que muda o estado de um processo em a rea comum onde dados podem ser escritos por um e lidos por outro processo. O acesso a esta area
execuc~ao para bloqueado. Um processo bloqueado volta a tornar-se ativo quando outro processo o comum deve ser disciplinado por um mecanismo de m utua exclus~ao (tipicamente sem aforos) ou tornando
desbloqueia atrav es da chamada wakeup. O m etodo e o mesmo que emprega vari aveis LOCK operadas as instruc~oes de leitura e gravac~ao at^omicas. Duas primitivas s~ao necess arias, STORE (que grava dados na
por instruc~oes TSL, exceto que quando a vari avel apresenta valor 1, o processo executa sleep. O posic~ao compartilhada especicada) e FETCH (que acessa dados da posic~ao compartilhada especicada).
processo que altera o valor de LOCK para 0 ao sair da regi~ao cr tica e o respons avel por ativar um
processo bloqueado (via wakeup). Infelizmente, deixar ao programador a responsabilidade da execuc~ao Chamada de Procedimentos Remotos Chamada de procedimentos remotos (RPC) e uma forma
destas chamadas pode levar a um estado onde todos os processos encontram-se bloqueados | uma de troca de mensagens que estrutura processos como servidores ou clientes. Um processo servidor disp~oe
situaca~o denominada deadlock. de um conjunto de servicos que s~ao disponibilizados para outros processos (atrav es de uma rotina RE-
GISTER RPC). Um processo cliente pode evocar um destes servicos como se evocasse um procedimento
Semaforos Nesta abordagem, o bloqueio ou reativaca~o de processos n~ao e realizada diretamente pelo local, passando par^ametros para sua execuc~ao se for o caso, atrav es de uma rotina CALL RPC. Rece-
usu ario, mas atrav es vari aveis do tipo sem aforos, que contam o n umero de vezes que a operac~ao wakeup bida a requisica~o, o servidor executa o servico e retorna os resultados ao cliente. O envio e recepc~ao de
foi realizada. Duas operac~oes, DOWN e UP s~ao denidas. A operac~ao DOWN verica se o valor do par^ametros e retornos se d a por troca de mensagens, que cam transparentes para o programador.
sem aforo e maior que 0. Se o for, decrementa este valor e continua. Se o valor e 0, o processo e bloqueado.
A operac~ao UP incrementa o valor do sem aforo. Se um ou mais processos estiverem bloqueados sobre
aquele sem aforo, um deles e escolhido pelo sistema para completar a operaca~o DOWN (emitindo-lhe um
2.4 Escalonamento de Processos
wakeup). As opera c~oes com sem aforos s~ao at^omicas ou indivis veis, implementadas com instruc~oes TSL. Quando mais de um processo est a ativo (pronto para executar), cabe ao sistema operacional decidir
qual ter a a posse da CPU. A parte do sistema operacional que toma esta decis~ao e chamada escalonador
Monitores Sem aforos tornam simples a proteca~o de recursos compartilhados, mas n~ao garantem e o algoritmo utilizado e o algoritmo de escalonamento.
que n~ao v a haver deadlocks : a troca na ordem da chamada das primitivas pode gerar uma situac~ao de V arios crit erios devem ser observados por um algoritmo de escalonamento:
bloqueio m utuo. Monitores s~ao uma proposta de mecanismo de sincronizac~ao de alto n vel. Um monitor progresso: garantir que cada processo tenha acesso a CPU
e uma colec~ao de procedimentos, vari aveis e estruturas de dados agrupados em um bloco. Os processos
podem acessar os procedimentos do monitor mas n~ao suas estruturas internas. Monitores apresentam 1 Executando qualquer um de seus procedimentos.

10 c 1996 DCA/FEEC/UNICAMP 11
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Processos Processos em Unix 2.5]

eci^encia: manter a CPU ocupada praticamente 100% do tempo 2.5 Processos em Unix
tempo de resposta: minimizar o tempo de resposta na execuc~ao dos processos, principalmente os Unix e um sistema que suporta multiprogramac~ao, e como tal pode ter diversos processos rodando
interativos (editores, planilhas, etc) simultaneamente | alguns processos de usu arios, outros processos do n ucleo do sistema. Cada processo
corresponde a execuc~ao de um programa e consiste de um conjunto de bytes que a CPU interpreta como
tempo de espera: minimizar o tempo de espera de servicos n~ao interativos (compilac~ao, impress~ao, instruc~ao de m aquina, dado e pilha. O processo executa uma sequ^encia de instruc~oes que e auto-contida
etc) e que n~ao salta para um outro processo. Ele l^e e escreve seus dados nas suas a reas de dado e pilha, mas
vaz~ao: maximizar o n umero de processos executados por hora. n~ao pode ler ou escrever nas areas de dado e pilha de outro processo. Os processos comunicam com
outros processos e com o resto do sistema atrav es de chamadas de sistema.
E importante observar que alguns desses objetivos s~ao contradit orios. Se um algoritmo favorece Do ponto de vista pr atico, um processo em UNIX e uma entidade criada pela chamada fork, que
o escalonamento de processos interativos certamento estar a comprometendo os n~ao interativos. Na cria um novo processo pela duplicac~ao do estado de um processo que executa a chamada. O processo
sequ^encia apresentaremos alguns algoritmos de escalonamento. que chamou fork e identicado como \processo pai" e o processo criado por esta chamada e identicado
como \processo lho". Para que um processo lho execute um programa diferente do processo pai, uma
chamada do sistema exec deve ser invocada ap os o fork.
Escalonamento Round Robin Este e o mais antigo e simples algoritmo de escalonamento. Cada Todo processo tem um u nico pai mas pode ter v arios lhos, determinando assim uma hierarquia de
processo e executado por um intervalo de tempo (quantum). Se o processo ainda estiver executando processos. Exceto pelo primeiro processo (processo 0, na raiz da hierarquia), qualquer outro processo e
ao nal do quantum, ele e suspenso e a CPU e alocada a outro processo. Se o processo acabar ou criado atrav es da chamada fork. O processo 0 e um processo especial criado quando da iniciaca~o do
for bloqueado antes do nal do quantum, a CPU tamb em e passada a outro processo. O tamanho do sistema (boot). Ap os criar o processo 1, conhecido como init, o processo 0 torna-se o processo swapper.
quantum e cr tico nesta abordagem. Se for muito pequeno, diminui a eci^encia da CPU, pois a alocac~ao O processo 1 e ancestral de qualquer outro processo no sistema, possuindo uma relac~ao especial com
da CPU para outro processo implica em uma sobrecarga de processamento para o chaveamento de estes.
recursos entre os processos. Se for muito grande, degrada a resposta para os processos interativos. O contexto de um processo e o estado denido pelo seu texto correspondendo aos valores das suas
vari aveis globais e estruturas de dados, os valores dos registros de m aquina usados, os valores armaze-
Algoritmos com Prioridades O algoritmo Round Robin faz a consideraca~o que todos os proces- nados no seu slot na tabela de processos e o conte udo das suas pilhas de usu ario e n ucleo. Quando o
sos s~ao de igual import^ancia. Certas aplicaco~es, como controle de processos industriais, demandam n ucleo decide executar um novo processo realiza-se uma mudanca de contexto.
um algoritmo de escalonamento com prioridades | desta forma, e poss vel tratar adequadamente si- Quando da realizac~ao de uma mudanca de contexto o n ucleo salva informac~oes sucientes de modo a
tuac~oes de emerg^encia. O princ pio do escalonamento por prioridades e que cada processo tem associada que posteriormente ele possa recuperar o contexto do processo anterior e continuar a sua execuc~ao. Da
uma prioridade, e processos com prioridades superiores devem ser executados primeiro. Para prevenir mesma forma, quando da mudanca do modo usu ario para o modo n ucleo, o n ucleo salva as informac~oes
que processos de alta prioridade executem indenidamente, o escalonador pode diminuir a prioridade necess arias para que o processo possa retornar ao modo usu ario e continuar a execuc~ao. Neste u ltimo
dos processos com o aumento de seu respectivo tempo de execuca~o | um processo conhecido como caso, temos uma mudanca de modo e n~ao de um chaveamento de contexto.
envelhecimento. A vida de um processo pode ser representada por um conjunto de estados (Figura 2.1): executando
no modo usu ario executando no modo n ucleo pronto ou bloqueado (dormindo). O n ucleo protege
Multiplas Filas Este e um algoritmo que dene classes com prioridades. Processos na classe de a sua consist^encia permitindo chaveamento de contexto apenas quando o processo transita do estado
menor prioridade s~ao executados por um quantum  processos na classe seguinte, por dois quanta  na \executando no modo n ucleo" para o modo \bloqueado". O n ucleo tamb em eleva o n vel de execuca~o do
pr oxima classe por quatro quanta, e assim por diante. Quando um processo utiliza todos os quanta a processador quando da execuc~ao de regi~oes cr ticas de modo a impedir interrupc~oes que possam provocar
ele alocados, o mesmo e interrompido e sua classe tem a prioridade diminu da. Este algoritmo diminui inconsist^encias em suas estruturas de dados. O escalonador de processo realiza, periodicamente, a
o n umero de comutac~oes da CPU entre os processos ativos. \preempc~ao" de processos executando no modo usu ario de forma a que os processos n~ao monopolizem
a CPU.
Tarefas Pequenas Primeiro Este algoritmo e designado para aplicac~oes n~ao interativas, onde o
tempo m edio de execuc~ao e conhecido a priori. O algoritmo dene que as tarefas menores devem ser
executadas primeiro. Prova-se que esta pol tica minimiza o tempo m edio de espera dos jobs. 2.6 Processos em MS-DOS
Assim como Unix, MS-DOS tem um processo (command.com) que comeca a executar quando o
Algoritmo Policy-Driven Este algoritmo particiona a CPU de forma equ^anime entre os usu arios sistema e iniciado e controla a interac~ao entre entre o sistema e o usu ario. Entretanto, h a uma diferenca
(n~ao entre os processos). O algoritmo dene que se existirem usu arios ligados ao sistema, cada usu ario
n fundamental entre os modelos de execuc~ao nos dois sistemas. Como MS-DOS n~ao suporta multipro-
dever a receber 1 do poder da CPU. Para isto, o sistema deve manter informac~oes do tempo de CPU
=n gramac~ao, quando um processo lho e iniciado a partir de command.com ele passa a ter controle total
que cada usu ario j a disp^os desde que entrou no sistema, e do instante de tempo que cada usu ario ligou-se sobre a m aquina. Ao contr ario do que acontece em Unix, n~ao e poss vel executar processos indepen-
ao sistema. dentes simultaneamente em uma mesma m aquina. Quando um processo lho e iniciado, o processo pai
12 c 1996 DCA/FEEC/UNICAMP 13
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Processos Processos em MS-DOS 2.6]

Executando em
um apontador para o PSP do processo corrente.
1
3. Carregar o c odigo bin ario na primeira posic~ao ap os o PSP.
Modo Usuário

chamada de sistema
ou interrupção retorno 4. Iniciar a execuc~ao do programa.
Escalonamento da CPU tamb em e simples. Como s o h a um processo ativo, este processo ret em a
Executando em
Modo Núcleo 2
interrupção/retorno
posse da CPU o tempo todo, a n~ao ser quando um processo TSR toma o controle da execuca~o.
escalonado
aguardando
evento

4 3
evento

Bloqueado Pronto

Figura 2.1: Estados de um processo

deve car suspenso aguardando o m da execuc~ao do processo lho.


MS-DOS tem dois tipos de arquivos execut aveis bin arios, e h a correspondentemente dois tipos de
processos. Um arquivo com extens~ao .com n~ao tem nenhum cabecalho e ocupa um u nico segmento
combinando texto, dados e pilha, at e o limite m aximo de 64 KBytes. O conte udo do arquivo e uma
imagem exata do c odigo execut avel. Embora o segmento n~ao possa ocupar mais do que 64 KBytes, o
processo recebe para si toda a mem oria dispon vel. Uma tentativa de iniciar um novo processo lho
nesta situac~ao iria falhar por falta de mem oria, a n~ao ser que o programador explicitamente libere a
porca~o da mem oria que ele n~ao ir a usar para o sistema operacional com uma chamada do sistema.
O outro tipo de arquivo execut avel tem extens~ao .exe. O processo criado por este tipo de arquivo pode
ter diversos segmentos: texto, dados, pilha e segmentos extras. Um arquivo .exe incorpora informac~ao
de relocac~ao, e pode ser relocado enquanto carregado. MS-DOS diferencia estes dois tipos de arquivo
pelo conte udo de seus dois primeiros bytes, e n~ao pela extens~ao do nome do arquivo.
Todo processo em MS-DOS tem um bloco de 256 bytes, o PSP (Program Segment Prex), que
descreve informac~ao b asica para o controle do processo, tal como tamanho do programa, apontador
para o bloco do ambiente, apontador para o processo pai, e o endereco da rotina que ser a invocada caso
haja uma interrupc~ao do usu ario (Control-C).
Normalmente, quando um processo encerra sua execuca~o, o espaco em mem oria ocupado por ele
e retomado pelo sistema e o processo deixa de existir. Uma alternativa permitida por MS-DOS e a
sa da de um processo que mant em sua imagem em mem oria, mesmo sem ser executado. Este tipo
de processo, conhecido como TSR (Terminate and Stay Resident), e usualmente reativado por uma
combinac~ao especial de teclas. A forma pela qual MS-DOS permite que isto aconteca e atrav es da
modicac~ao, pelo pr oprio processo do usu ario, de rotinas que ir~ao tratar interrupco~es de teclado.
A ger^encia de processos em MS-DOS e simples. Quando um processo requer o carregamento e
execuc~ao de um outro programa, os seguintes passos s~ao executados pelo sistema operacional:
1. Encontrar um bloco de mem oria grande o suciente para o processo. Para um arquivo .exe, esta
informac~ao est a contida no cabecalho para arquivos .com, toda a mem oria dispon vel e alocada
para o processo.
2. Contruir o PSP nos primeiros 256 bytes da area alocada. Uma vari avel global do sistema mant em
14 c 1996 DCA/FEEC/UNICAMP 15
Cardozo, Magalh~aes, Faina & Ricarte Ger^encia de Memoria Ger^encia com Permuta 3.2]

processos em mem oria, a CPU dever a estar ocupada o tempo todo. Este modelo e otimista, entretanto,
pois assume que os 5 processos nunca estejam esperando por E/S ao mesmo tempo.

3.1.3 Multiprogramac~ao com Partic~oes Fixas


Captulo 3 Se adotarmos a estrat egia de admitir mais de um processo na mem oria por vez, devemos estabelecer
uma estrat egia de organizac~ao da m em oria. A estrat egia mais simples consiste em dividir a mem oria
em n (possivelmente diferentes) partic~oes.
Ger^encia de Memoria Quando um processo inicia, este pode ser colocado em uma la de entrada para ocupar a menor
partic~ao de tamanho suciente para acomod a-lo. Desde que as partic~oes s~ao xas, qualquer espaco em
uma partic~ao n~ao usado pelo processo e perdido. A Figura 3.1(a) apresenta este esquema de partic~ao.

A parte do sistema operacional que gerencia a mem oria e chamada de gerenciador de memoria. partição 4 partição 4

Dentre outras tarefas, o gerenciador de mem oria monitora quais partes da mem oria est~ao em uso e 700K

quais est~ao dispon veis aloca e libera mem oria para os processos gerencia a permuta de processos entre
mem oria principal e secund aria (quando a mem oria principal n~ao e capaz de abrigar todos os processos). partição 3 partição 3
Sistemas de ger^encia de mem oria podem ser divididos em duas classes: aqueles que mant^em os pro-
cessos xos em mem oria prim aria e aqueles que movem processos entre a mem oria principal e secund aria
(tipicamente disco) durante a execuc~ao, neste caso baseando-se em t ecnicas de swapping (permuta) ou 400K

paginaca~o. partição 2 partição 2

3.1 Ger^encia Sem Permuta partição 1


200K

partição 1

3.1.1 Monoprogramac~ao sistema


operacional
100K
sistema
operacional
O esquema mais simples poss vel de ger^encia de mem oria consiste em ter-se somente um processo
na mem oria durante toda a sua execuc~ao. O usu ario carrega um programa do disco (ou ta) para (a) (b)

a mem oria, podendo este fazer uso de toda a m aquina. Se a mem oria for insuciente, o programa Figura 3.1: Organizac~oes com partic~oes xas: (a) Partic~oes de mem oria xa com las de entrada
simplesmente tem sua execuc~ao rejeitada. separadas para cada partic~ao (b) partic~ao de mem oria xa com uma la simples de entrada
Quando o sistema e organizado dessa maneira, somente um processo pode estar em execuc~ao por vez.
O usu ario entra com um comando no terminal, e o sistema operacional carrega o programa requerido do A desvantagem de se ordenar os processos que chegam em las separadas torna-se aparente quando
disco para a mem oria e o executa. Quando o processo termina, o sistema operacional reassume a CPU a la para a maior partic~ao est a vazia, mas a la para a menor partic~ao est a cheia, como no caso
e espera por um novo comando para carregar um outro processo na mem oria j a liberada pelo primeiro. das partic~oes 1 e 4 na Figura 3.1(a). Uma organizac~ao alternativa e manter uma la u nica como na
Figura 3.1(b). Toda vez que uma partic~ao e liberada, a mesma e alocada ao primeiro processo da
3.1.2 Multiprogramac~ao e Uso da Memoria la. Uma vez que e indesej avel gastar uma partic~ao grande com um processo pequeno, uma estrat egia
mais ecaz e procurar em toda la de entrada a maior tarefa para a partic~ao liberada. Note que o
Embora a monoprogramac~ao seja usada em pequenos computadores, em grandes computadores u ltimo algoritmo discrimina os processos pequenos, quando e usualmente desej avel dar a eles o melhor
com m ultiplos usu arios ela e proibitiva. Multiprogramac~ao, al em de suportar processos simult^aneos de tratamento, n~ao o pior.
diversos usu arios, tamb em permite utilizar melhor a CPU durante acessos de um processo a dispositivos
de entrada e sa da. E comum para um processo permanecer em um loop lendo um bloco de dados de
um arquivo em disco e ent~ao realizando alguma computac~ao sobre o conte udo dos blocos lidos. Se for
gasto 40 ms para ler um bloco e a computac~ao demanda apenas 10 ms, sem a multiprogramac~ao a CPU
3.2 Ger^encia com Permuta
estar a desocupada esperando pelo acesso ao disco durante 80% do tempo. Num sistema operando em batch, a organizac~ao da mem oria em partic~oes xas e simples e efetiva.
Quando a multiprogramac~ao e usada, o percentual de utilizaca~o da CPU aumenta. A grosso modo, Quanto mais jobs estiverem na mem oria, mais a CPU estar a ocupada e n~ao h a raz~ao para usar algo
se a m edia dos processos utilizam CPU somente 20% do tempo que permanecem na mem oria, com 5 mais complicado. Com time-sharing, a situac~ao e diferente: h a normalmente mais usu arios que mem oria
16 c 1996 DCA/FEEC/UNICAMP 17
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Ger^encia de Memoria Ger^encia com Permuta 3.2]

para armazenar os seus processos, sendo ent~ao necess ario mover temporariamente processos para disco. para compactar toda a mem oria. Certos mainframes utilizam hardware especial para a compactac~ao
Obviamente, para continuar sua execuc~ao, um processo movido para disco deve ser trazido novamente da mem oria.
para a mem oria. Um ponto negativo neste m etodo de ger^encia e saber o quanto de mem oria alocar para um processo.
Outro aspecto fundamental nesta abordagem de ger^encia e como controlar onde h a espaco dispon vel Se os processos s~ao criados com um tamanho xo que permanece constante ao longo de sua execuca~o,
na mem oria. As duas estrat egias mais utilizadas s~ao ger^encia de espaco livre por mapa de bits ou por ent~ao a alocac~ao e simples: aloca-se exatamente o necess ario ao tamanho do processo, nem mais nem
listas encadeadas, que ser~ao descritas na sequ^encia. menos.
Na pr atica, os segmentos de dados e pilha de um processo tendem a crescer durante a sua execuca~o.
Alocac~ao din^amica de mem oria e recurs~ao (presentes em praticamente em todas as linguagens moder-
3.2.1 Multiprogramac~ao com Partico~es Variaveis nas de programac~ao) s~ao exemplos t picos de crescimento destes segmentos. Se o processo necessitar
Em princ pio, um sistema que utiliza swapping pode ser baseado em partico~es xas. Sempre que expandir sua mem oria e existir um buraco adjacente, simplesmente o buraco pode vir a ser incorporado
um processo e bloqueado, ele pode ser movido para o disco e um outro processo trazido do disco para a ao espaco de enderecamento do processo. De outra forma, se o processo est a adjacente a outro processo,
sua partic~ao em mem oria. Na pr atica, partic~oes xas s~ao pouco atrativas quando a a rea de mem oria e o primeiro dever a ser movido para um buraco grande o suciente para armazen a-lo, ou um ou mais
escassa pois muita mem oria e perdida por programas muito menores que o tamanho da partic~ao. Assim processos ter~ao que ser movidos para disco com o intuito de criar espaco na mem oria. Se o processo n~ao
sendo, um novo sistema de ger^encia de mem oria foi desenvolvido, chamado ger^encia com partic~oes puder crescer na mem oria e a a rea do disco reservada para abrigar processos permutados estiver cheia,
variaveis. o processo deve ser terminado.
Quando partic~oes vari aveis s~ao usadas, o n umero e tamanho de processos na mem oria varia dinami-
camente. A Figura 3.2 mostra como partic~oes vari aveis trabalham. Inicialmente, somente o processo A 3.2.2 Ger^encia com Mapa de Bits
est a na mem oria. Ent~ao o processo B e C s~ao criados ou trazidos do disco. Na Figura 3.2(d) o processo
A termina ou e movido para o disco. Ent~ao o processo D inicia e B termina. Finalmente, processo E Com um mapa de bits, a mem oria e dividida em unidades de alocac~ao, desde um pequeno n umero
inicia. de palavras at e muitos quilobytes. Para cada unidade de alocac~ao existe um bit no mapa de bits, que
e 0 se a unidade estiver livre e 1 caso esteja ocupada (ou vice-versa). A Figura 3.3 mostra parte da
mem oria e o correspondente mapa de bits.
A B C D ....

8 16 24
C C C C C

11111000
11111111 (a)
10011111
B B B B
E

A A A (b)
D D D

sistema sistema sistema sistema sistema sistema sistema A B C D


operacional operacional operacional operacional operacional operacional operacional
P 0 5 B 6 8 p 9 14 P 15 17 B 18 19 P 20 25
(a) (b) (c) (d) (e) (f) (g)

Figura 3.2: Organizac~ao com swapping: mudancas na alocac~ao de mem oria com processos chegando e
P: processo
B: buraco
deixando a mem oria (regi~oes escuras representam espaco n~ao usado) (c)

Figura 3.3: Organizac~ao com mapa de bits: (a) parte da mem oria com 5 processos e 3 buracos (as
A principal diferenca entre partic~oes xas da Figura 3.1 e partico~es vari aveis da Figura 3.2 e que marcas mostram as unidades de alocac~ao da mem oria e as regi~oes escuras est~ao livres) (b) mapa de
o n umero, a localizaca~o e o tamanho das partic~oes variam dinamicamente ao longo do tempo. A bits correspondente (c) a mesma informac~ao como uma lista ligada
exibilidade de n~ao se ter um n umero xo de partic~oes aumenta a utilizac~ao da mem oria, mas tamb em
complica a tarefa de alocar e liberar a mem oria, bem como gerenci a-la. O tamanho de cada unidade de alocac~ao e uma importante caracter stica de projeto. Para pequenas
E poss vel combinar todos os buracos disjuntos num u nico espaco dispon vel agrupando-se todos unidades de alocac~ao tem-se um mapa de bits maior. Entretanto, mesmo com uma unidade de alocac~ao
processos para um lado da mem oria. Est a t ecnica e conhecida como compactaca~o da memoria. Ela n~ao t~ao pequena como 4 bytes, cada 32 bits de mem oria requer somente 1 bit no mapa (3% da mem oria).
e empregada com frequ^encia pelo fato de requerer muito tempo de CPU. Por exemplo, um microcom- Se a unidade de alocac~ao for escolhida grande, o mapa de bits ser a pequeno, mas mem oria consider avel
putador com 1 MByte de mem oria e que pode copiar 1 Byte por s (1 MByte/s), gasta um segundo
 pode ser desperdicada se o tamanho do processo n~ao for um m ultiplo exato da unidade de alocac~ao.
18 c 1996 DCA/FEEC/UNICAMP 19
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Ger^encia de Memoria Memoria Virtual 3.3]

Um mapa de bits (ocupando uma porc~ao xa da mem oria) prov^e uma maneira simples de gerenciar Todos os quatro algoritmos podem melhorar seus desempenhos mantendo-se em separado listas
mem oria, uma vez que o tamanho do mapa de bits depende somente do tamanho da mem oria e do para processos e buracos. Neste caso, todos devotam suas energias para inspec~ao de buracos, n~ao de
tamanho da unidade de alocac~ao. O problema principal com isto e que quando se decide trazer um processos. O preco pago por esse aumento de velocidade na alocac~ao e uma complexidade adicional e
processo de k unidades de alocac~ao para a mem oria, o gerenciador de mem oria deve pesquisar no mapa diminuic~ao de velocidade quando se trata de liberar mem oria, uma vez que um segmento livre tem de
de bits uma sequ^encia de k consecutivos bits 0 no mapa. Esta operac~ao e lenta, raz~ao pela qual os ser removido da lista de processos e inserido na lista de buracos. Novamente, a ineci^encia est a em se
mapas de bits s~ao evitados na pr atica. determinar poss veis fus~oes.

3.2.3 Ger^encia com Listas Encadeadas 3.2.4 Alocac~ao de Espaco para Permuta
Outra maneira de gerenciar a mem oria e manter uma lista de alocac~oes e segmentos de mem oria Os algoritmos apresentados acima mant^em o rastreamento da mem oria principal. Assim, quando
livre, onde um segmento e um processo ou um buraco entre dois processos. A mem oria da Figura 3.3(a) processos s~ao permutados do disco para a mem oria, o sistema pode alocar espaco em mem oria para eles.
e representada na mesma gura (c) como uma lista encadeada de segmentos. Cada entrada da lista Em alguns sistemas, quando um processo est a na mem oria, nenhum espaco em disco e a ele reservado.
especica um buraco (B) ou um processo (P), contendo o endereco onde comeca, onde termina (ou Quando for movido da mem oria, espaco deve ser alocado na area de disco para abrig a-lo (portanto,
tamanho do bloco), e um ponteiro para a pr oxima entrada da lista. em cada troca o processo pode residir em lugares diferentes no disco). Neste caso, os algoritmos para
Neste exemplo, a lista de segmentos e mantida ordenada por enderecos. A vantagem desse m etodo ger^encia de espaco para permuta s~ao os mesmos usados para ger^encia da mem oria principal.
e que quando o processo termina ou e movido para o disco, torna-se simples combinar o buraco criado Em outros sistemas, quando um processo e criado, um espaco para permuta e alocado em disco
com buracos adjacentes. (usando um dos algoritmos descritos acima). Sempre que um processo em mem oria d a lugar a outro
Quando processos e buracos s~ao mantidos na lista ordenada por enderecos, v arios algoritmos podem processo, ele e colocado no espaco em disco a ele previamente alocado. Quando um processo termina,
ser usados para alocar mem oria, a m de criar ou permutar processos. Tais algoritmos s~ao evocados o seu espaco para permuta em disco e desalocado. Esta t ecnica e mais eciente que a anterior pois
quando o gerenciador de mem oria necessita um segmento de mem oria de bytes.
M uma u nica alocac~ao de espaco em disco por processo e necess aria (lembre-se que um processo pode
ser permutado v arias vezes durante a sua execuc~ao). Entretanto, uma area maior de disco deve ser
Algoritmo First-t E o algoritmo mais simples. O algoritmo procura ao longo da lista de segmentos reservada para swapping.
at e encontrar um buraco de tamanho maior ou igual a . Caso o buraco tenha tamanho
M ,oN > M

buraco e quebrado em dois segmentos: um para o processo (de tamanho ) e o outro para a mem oria
n~ao usada (de tamanho ; ). First-t e um algoritmo r apido pois naliza a busca o mais cedo
N M
M
3.3 Memoria Virtual
poss vel. Desde o in cio da inform atica, o tamanho dos programas vem superando a quantidade de mem oria
dispon vel para abrig a-los. A soluc~ao usualmente adotada era dividir o programa em partes, chamados
Algoritmo Next-t Este algoritmo trabalha da mesma forma que o rst-t, exceto que guarda a overlays, que eram mantidas em disco e permutadas para a mem oria pelo sistema operacional.
posic~ao da lista onde o u ltimo buraco foi alocado. Da pr oxima vez que e chamado, o algoritmo comeca Overlays apresentavam um problema: a partic~ao do programa era deixada a cargo do programador.
a procurar a partir deste ponto. Um m etodo que foi desenvolvido para deixar o particionamento do programa a cargo do sistema opera-
cional veio a ser conhecido como memoria virtual. A id eia b asica e que a combinac~ao do tamanho do
Algoritmo Best-t Este algoritmo procura pela lista inteira e toma o buraco de tamanho mais programa, dados e pilha, pode exceder a quantia de mem oria f sica dispon vel. O sistema operacional
pr oximo de . E um algoritmo lento e cria na mem oria buracos pequenos que dicilmente ser~ao
M mant em aquelas partes do programa correntemente em uso na mem oria principal e o resto no disco.
alocados. Entretanto, para grande, o best-t aumenta as chances de se encontrar na lista um buraco
M Mem oria virtual pode tamb em trabalhar em um sistema com multiprogramac~ao. De fato, mem oria
de tamanho adequado, posto que minimiza o uso buracos grandes para atender alocac~oes pequenas. virtual e multiprogramac~ao est~ao intimamente relacionadas. Enquanto um programa est a esperando
Como um exemplo, considere a Figura 3.3. Se um bloco de tamanho 2 for solicitado, o algoritmo que parte de seu espaco de enderecamento seja trazido a mem oria, o programa e bloqueado, aguardando
rst t alocar a o buraco 5, e o best t o buraco 18. E/S. At e que a operac~ao de E/S seja completada, a CPU pode ser direcionada para outro processo.
Algoritmo Quick-t Este algoritmo mant em listas separadas para tamanhos comumente requeridos. 3.3.1 Paginac~ao
Por exemplo, seja uma tabela com n entradas, na qual a primeira e um ponteiro para a cabeca da lista
de buracos de tamanho 4 KBytes, a segunda e um ponteiro para a cabeca da lista de buracos de tamanho A maioria dos sistemas com mem oria virtual usa uma t ecnica chamada paginac~ao. Em qualquer
8 KBytes, a terceira de tamanho 12 KBytes, e assim sucessivamente. Com o quick-t, acha-se um buraco computador existe certo conjunto de enderecos de mem oria que programas podem referenciar | seu
de tamanho requerido muito rapidamente, mas com a desvantagem de todos os esquemas de classicar espaco de enderecamento. Enderecos podem ser gerados por exemplo usando indexac~ao, registradores
os buracos por tamanho, a saber, quando um processo termina ou e permutado para disco, determinar base ou registradores de segmento.
seus vizinhos para uma poss vel fus~ao e uma operac~ao custosa. Se fus~oes n~ao forem feitas, a mem oria Estes enderecos gerados pelos programas s~ao chamados enderecos virtuais e formam o espaco virtual
rapidamente se fragmentar a em um grande n umero de pequenos buracos n~ao utiliz aveis. de enderecamento do processo. Em computadores sem mem oria virtual, o endereco virtual e colocado
20 c 1996 DCA/FEEC/UNICAMP 21
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Ger^encia de Memoria Memoria Virtual 3.3]

diretamente no barramento de mem oria e causa uma palavra da mem oria f sica com mesmo endereco espaço de espaço de

ser lida ou escrita. Quando mem oria virtual e usada, os enderecos de mem oria n~ao v~ao diretamente
endereçamento endereçamento
virtual (tabela) real (físico)
para o barramento de mem oria. Ao inv es disso, eles v~ao a unidade de ger^encia de mem oria (Memory 0 0
Management Unit, MMU), onde um hardware espec co mapeia os enderecos virtuais nos enderecos da 2
1
0-4K
1
mem oria f sica como ilustrado na Figura 3.4. 1
2
4-8K
2
6 8-12K
processador 3 3
0 12-16K
4 4
CPU 4 16-20K
endereço 5 5
virtual memória control. 3 20-24K
de disco 6 6
X 24-28K
MMU 7 7
X 28-32K
8
X
barramento 9
5
10
endereço físico X
11
Figura 3.4: A posic~ao e funca~o da MMU 7
12
X X: página ausente (em disco)
Um exemplo de como este mapeamento trabalha e mostrado na Figura 3.5. Neste exemplo, temos X
13

um computador que pode gerar enderecos de 16 bits, de 0 at e 64 KBytes. Estes s~ao os enderecos virtuais. 14 : página de 4 Kbytes

Este computador, entretanto, tem somente 32 KBytes de mem oria f sica, assim, embora programas de
X
15
64K possam ser escritos, eles n~ao podem ser carregados para a mem oria na sua totalidade para serem X

executados. Uma c opia completa de um n ucleo de imagem do programa, acima de 64K, deve estar
presente no disco os pedacos podem ser trazidos para a mem oria pelo sistema a medida que se tornem Figura 3.5: Relac~ao entre endereco virtual e endereco f sico de mem oria, dada pela tabela de paginas
necess arios.
O espaco de enderecamento virtual e dividido em unidades chamadas paginas. As unidades cor- ser~ao respons aveis por ter de lembrar onde foram posicionadas areas de dados com func~oes muitas vezes
respondentes na mem oria f sica s~ao chamadas page frames. As p aginas e page frames s~ao sempre do distintas | por exemplo, para c odigo e para tabelas de dados. Al em disto, o crescimento de uma area
mesmo tamanho. Neste exemplo elas s~ao de 4K, mas tamanhos de p aginas de 512 bytes, 1K, e 2K s~ao al em do previsto pode levar a uma situac~ao de choque entre estas areas.
comumente usados. Com 64K de espaco de endereco virtual e 32K de mem oria f sica, temos 16 p aginas Para algumas aplicac~oes, um espaco enderec avel bidimensional e mais conveniente. Esta alternativa
e 8 page frames. Transfer^encias entre mem oria e disco s~ao sempre feitas em unidades de p aginas. e suportada atrav es do conceito de segmentac~ao, onde posic~oes de mem oria s~ao identicadas por um
Quando o programa tenta acessar o endereco 0, o endereco virtual 0 e enviado para a MMU. Ela par (segmento, deslocamento). Esta abordagem de segmentac~ao interpreta o espaco de mem oria sob um
reconhece que este endereco cai na p agina 0 (0 a 4095), o qual, de acordo com seu mapeamento e a page ponto de vista mais pr oximo da l ogica do programador | por exemplo, um segmento pode conter pro-
frame n umero 2 (8192 at e 12287). Ele ent~ao transforma o endereco para 8192 e coloca o endereco 8192 cedimentos, ou tabelas de dados. Como cada segmento tem um espaco de enderecamento independente
no barramento. A tabela de mem oria nada sabe a respeito da MMU, e apenas v^e uma requisic~ao para dos outros, o crescimento de um segmento n~ao afeta os demais.
leitura ou escrita no endereco 8192, a qual e respeitada. Assim, a MMU mapeou todo endereco virtual A traduc~ao de enderecos segmentados para enderecos f sicos ocorre de maneira similar a traduc~ao
entre 0 e 4095 em endereco f sico de 8192 a 12287. de enderecos virtuais. O sistema deve manter uma tabela mapeando segmentos para os enderecos da
Uma tentaiva de acessar uma p agina n~ao mapeada provoca uma falta de p agina (page fault). Neste mem oria. Uma diferenca fundamental e que segmentos t^em dimens~oes distintas, e portanto a informac~ao
caso, o sistema operacional libera um page frame e escreve seu conte udo de volta no disco. Ele ent~ao sobre o comprimento de um segmento tamb em deve ser mantida. O fato de se trabalhar com partic~oes de
busca a p agina referenciada para o page frame liberado, atualiza o mapa, e retorna a instruca~o inter- tamanhos vari aveis implica que ap os um tempo de uso a fragmentac~ao ir a ocorrer, e pode ser necess ario
rompida. aplicar mecanismos de compactac~ao.
Uma forma de reduzir o problema de fragmentac~ao mantendo-se o princ pio de segmentac~ao e com-
3.3.2 Segmentac~ao binar este esquema com paginac~ao | ou seja, cada segmento e dividido em p aginas de tamanho xo,
que s~ao trazidas para a mem oria de acordo com a demanda.
Paginaca~o prov^e uma t ecnica para implementaca~o de um grande espaco enderec avel numa mem oria Atrav es do uso de segmentos e poss vel compartilhar trechos de c odigo que s~ao comuns entre diversas
f sica limitada. Este espaco de enderecamento e unidimensional, pois a posic~ao de mem oria e identicada aplicac~oes. Isto e u til, por exemplo, em sistemas de interfaces gr acas, onde grandes bibliotecas s~ao
por um u nico valor que vai de 0 at e um endereco m aximo. Esta caracter stica implica que programadores respons aveis pela ger^encia de sistemas de janelas. Al em disto, o uso de segmentos facilita tamb em a
22 c 1996 DCA/FEEC/UNICAMP 23
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Ger^encia de Memoria Algoritmos de Troca de Pagina 3.4]

protec~ao de acesso a a reas da mem oria. para distinguir p aginas que n~ao foram referenciadas recentemente daquelas que tenham sido. Quando
uma falta de p agina ocorre, o sistema operacional examina todas as p aginas e as classica em quatro
categorias baseado nos valores correntes de seus bits RM :
3.4 Algoritmos de Troca de Pagina Classe 0 (00) n~ao referenciada, n~ao modicada.
Quando uma falta de p agina ocorre, o sistema operacional tem que escolher uma p agina para remover
da mem oria a m de dar lugar a que ser a trazida do disco. Se a p agina a ser removida foi modicada Classe 1 (01) n~ao referenciada, modicada.
enquanto estava na mem oria, ela deve ser reescrita no disco para manter a c opia em disco atualizada. Classe 2 (10) referenciada, n~ao modicada.
Se, todavia, a p agina n~ao tiver sido alterada, a c opia do disco j a est a atualizada, n~ao sendo necess aria
sua reescrita. A p agina a ser lida e simplesmente superposta a p agina retirada. Classe 3 (11) referenciada, modicada.
Apesar de ser poss vel escolher uma p agina aleat oria para dar lugar a p agina em demanda, o desem-
penho do sistema e melhorado se for escolhida uma p agina pouco usada (referenciada). Se uma p agina Ainda que as p aginas na classe 1 parecam, a primeira vista, imposs veis de existir, elas ocorrem quando
muito usada e removida, ela provavelmente ter a de ser trazida de volta em breve, resultando um esforco as p aginas da classe 3 t^em seu bit R zerado pela interrupc~ao do rel ogio. Interrupc~oes de rel ogio n~ao
adicional. Algoritmos ecientes de troca de p agina visam minimizar este esforco. zeram o bit M porque esta informac~ao e necess aria para determinar se uma p agina ter a que ser reescrita
no disco ou n~ao.
3.4.1 Troca O tima de Pagina O algoritimo N~ao Recentemente Usada (NRU) remove uma p agina aleat oria da classe n~ao vazia
de numerac~ao mais baixa. A estrat egia impl cita neste algoritmo e que e melhor remover uma p agina
O melhor algoritmo de troca de p aginas e f acil de descrever mas imposs vel de implementar. No modicada que n~ao foi referenciada pelo menos no u ltimo tick de rel ogio, que uma p agina n~ao modicada
momento que ocorre uma falta de p agina, um certo conjunto de p aginas est a na mem oria. Uma dessas mas muito usada. As caracter sticas principais do NRU e que ele e f acil de entender, eciente de se
p aginas ser a referenciada em muitas das pr oxima instruco~es (a p agina contendo a instruc~ao). Outras implementar, e gera um desempenho que, enquanto certamente n~ao otimo, e geralmente tido como
p aginas n~ao ser~ao referenciadas antes de 10, 100, ou talvez 1000 instruco~es. Cada p agina pode ser rotu- adequado.
lada com o n umero de instruc~oes que ser~ao executadas antes que a p agina seja inicialmente referenciada.
O algoritmo da p agina otima simplesmente diz que a p agina com o maior r otulo deve ser removida, 3.4.3 Troca da Pagina FIFO
adiando-se o m aximo poss vel a pr oxima falta de p agina.
O u nico problema com este algoritimo e que ele n~ao e realiz avel. No momento da falta de p agina, O algoritmo de paginac~ao First-In-First-Out (FIFO) e similar ao NRU. O sistema operacional
o sistema operacional n~ao tem como saber quando cada p agina ser a referenciada. No entanto, uma mant em uma lista de todas as p aginas correntes na mem oria, sendo a p agina da cabeca da lista a
aplicaca~o a posteriori deste algoritmo e u til para comparar o desempenho de algoritmos realiz aveis com mais velha e a p agina do m a instalada mais recentemente. Em uma falta de p agina, a p agina da
o melhor poss vel. cabeca e removida e a nova p agina acrescentada no m da lista.
Uma simples modicac~ao no FIFO para evitar o problema da retirada de uma p agina muito usada
3.4.2 Troca da Pagina N~ao Recentemente Usada (NRU) e o algoritmo Segunda Chance. A id eia e primeiro examinar a p agina mais velha como uma v tima
potencial. Se seu bit R e 0, a p agina e trocada imediatamente. Se o bit R e 1, o bit e zerado e a p agina
Para permitir que o sistema operacional colete estat sticas sobre quais p aginas est~ao sendo usadas e e colocada no m da lista de p aginas, como se estivesse acabado de chegar a mem oria. Ent~ao a pesquisa
quais n~ao est~ao, muitos computadores com mem oria virtual t^em 2 bits associados a cada p agina. Um continua. O que o Segunda Chance faz e procurar por uma p agina velha que n~ao tem sido referenciada
bit, R ou bit de refer^encia, e ativado pelo hardware em qualquer leitura ou escrita de p agina. O outro no tick de rel ogio anterior. Se todas as p aginas tiverem sido referenciadas, o algoritmo degenera-se e
bit, M ou bit de modicac~ao, e ativado pelo hardware quando h a alteraca~o no conte udo de uma p agina. torna-se simplesmente um FIFO.
Uma vez que um bit foi ativado, ele permanece ativado at e que o sistema operacional o desative por
software. 3.4.4 Troca da Pagina Menos Recentemente Usada (LRU)
Se o hardware n~ao disp~oe dos bits R e M, eles podem ser simulados por software atrav es das rotinas
de tratamento de faltas de p agina e de proteca~o. Quando um processo e iniciado, todas as suas entradas Uma boa aproximac~ao para o algoritmo otimo e baseada em uma observac~ao comum que as p aginas
de tabela de p aginas s~ao marcadas como ausentes na mem oria. T~ao logo uma p agina seja referenciada, muito usadas nas u ltimas instruc~oes provavelmente ser~ao usadas nas pr oximas instruc~oes. Da mesma
uma falta de p agina ocorrer a. O sistema operacional ent~ao ativa o bit R (em sua tabela interna), muda forma, p aginas que n~ao t^em sido usadas por um longo tempo provavelmente continuar~ao sem uso. Esta
a entrada de tabela de p aginas para apontar para a p agina correta com modo READ ONLY e reinicia a observac~ao sugere um algoritmo realiz avel: quando ocorre uma falta de p agina, retira-se a p agina que
instruca~o. Se a p agina e subsequentemente escrita, uma falta de proteca~o da p agina ocorrer a, pemitindo n~ao tem sido usada por um tempo longo. Esta estrat egia e chamada de Menos Recentemente Usada
ao sistema operacional ativar o bit M e mudar o modo da p agina para READ/WRITE. (Least Recently Used, LRU).
Os bits R e M podem ser usados para construir um algoritmo de paginaca~o como se segue. Quando Embora o algoritmo LRU seja teoricamente realiz avel, seu custo e alto. Para implementac~ao com-
um processo e iniciado, ambos os bits de p agina para todas estas p aginas s~ao declarados 0 pelo sistema pleta do LRU, e necess ario manter uma lista ligada de todas as p aginas em mem oria, com a p agina mais
operacional. Periodicamente (a cada interrupca~o de rel ogio | tipicamente 20 mseg), o bit R e zerado, recentemente usada no in cio e a menos recentemente usada no nal. A diculdade e que a lista deve
24 c 1996 DCA/FEEC/UNICAMP 25
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Ger^encia de Memoria Ger^encia de Memoria no UNIX 3.5]

ser atualizada em toda refer^encia de mem oria. Encontrar a p agina na lista, remov^e-la de sua posic~ao demanda. Este esquema requer do hardware a possibilidade de reiniciar uma instruc~ao interrompida
corrente, e mov^e-la para o in cio representa um esforco n~ao desprez vel. pela aus^encia de p agina cujo endereco foi referenciado na instruc~ao. Assim que a p agina e trazida para
Manipular uma lista ligada a toda instruc~ao e proibitivo, at e mesmo em hardware. Entretanto, a mem oria, a instruc~ao interrompida e reiniciada.
h a outras maneiras de implementar LRU com um hardware especial. Vamos considerar o caminho No esquema de paginac~ao por demanda, o espaco virtual de enderecamento e muito superior a
mais simples primeiro. Este m etodo requer equipar o hardware com um contador de 64 bits, C, que quantidade de mem oria f sica dispon vel, sendo limitado apenas pelo capacidade de enderecamento
e automaticamente incrementado ap os cada instruc~ao. Al em disso, cada entrada na tabela de p aginas virtual da MMU. O n ucleo mant em quatro estruturas principais para ns de ger^encia de mem oria:
deve tamb em ter um campo grande o bastante para conter o contador. Ap os cada refer^encia de mem oria, tabela de p aginas, tabela de frames, descritores de blocos e tabela de uso de swap.
o valor corrente de C e armazenado na entrada da tabela de p aginas para a p agina referenciada. Quando A tabela de p aginas tem como entrada o n umero da p agina. Deve-se notar que esta tabela tem
ocorre uma falta de p agina, o sistema operacional examina todos os contadores na tabela de p aginas dimens~ao xa pois a quantidade de p aginas e igual a dimens~ao f sica de mem oria dividida pelo tamanho
para achar o menor deles. A p agina correspondente e a menos recentemente usada. da p agina. Cada entrada na tabela possui campos descrevendo, entre outras informac~oes, o endereco
Agora vejamos um segundo algoritmo LRU, tamb em em hardware. Para uma m aquina com page f sico de mem oria que cont em os dados referentes a p agina, a idade da p agina (i.e., por quantos ciclos
frames, o LRU deve manter uma matriz de  bits, inicialmente todos zero. Quando o page frame
N

N N k esta p agina est a ativa na mem oria), os ags de refer^encia, modicac~ao, validade e protec~ao.
e referenciado, o hardware primeiro ativa todos os bits da linha para 1, atribuindo a todos os bits da
k A tabela de frames armazena dados adicionais a p agina, tais como o endereco f sico de mem oria que
coluna o valor 0. Em algum instante, a linha na qual o valor bin ario e menor, e a menos recentemente
k cont em os dados referentes a p agina, um contador de refer^encia indicando quantos processos comparti-
usada, a linha na qual o valor e o pr oximo superior e a segunda menos recentemente usada, e assim por lham esta p agina em mem oria, e o n umero do bloco alocado a p agina.
diante. Finalmente, a tabela de uso de swap e acessada tendo como ndice o dispositivo de swap e n umero
do bloco neste dispositivo. Esta tabela armazena apenas um contador de refer^encia indicando quantas
Simulac~ao do LRU em Software p aginas se utilizam deste bloco em disco.
Deve-se notar que algumas informac~oes s~ao replicadas em tabelas distintas. Esta replicac~ao visa
Embora os algoritmos apresentados sejam realiz aveis, eles s~ao dependentes de hardware especial, e beneciar a eci^encia do esquema de paginac~ao, diminuindo o n umero de consultas as tabelas.
s~ao de pouco uso para o projetista de sistema operacional construindo um sistema para uma m aquina O processo paginador remove da mem oria p aginas n~ao referenciadas pelos processos por um longo
que n~ao disp~oe deste hardware. Uma soluca~o que pode ser implementada em software faz-se necess aria. tempo. Quando executado, o processo vai montando uma lista de p aginas candidatas a permuta (Fi-
Uma possibilidade e o algoritmo chamado de N~ao Frequentemente Usada (NFU). O algoritmo NFU gura 3.6). O processo paginador zera o bit de refer^encia da p agina, como descrito na Sec~ao 3.4.2. Uma
requer um contador em software associado a cada p agina, inicialmente zero. Em cada tick de rel ogio, p agina e candidata a permuta quando seu contador de refer^encia foi zerado h a um determinado n umero
o sistema operacional pesquisa todas as p aginas na mem oria. Para cada p agina, o bit R, que e 0 ou 1, de passadas do processo paginador. Se uma p agina candidata a permuta e novamente referenciada, a
e adicionado ao contador. Em suma, os contadores s~ao uma tentativa de guardar a frequ^encia com que mesma e removida da lista.
cada p agina tem sido referenciada. Quando uma falta de p agina ocorre, a p agina com o menor contador
e escolhida para substituic~ao. página referenciada (idade zerada)

O principal problema com o NFU e que ele nunca esquece refer^encias anteriores. P aginas muito página pronta
para swap
(e n~ao mais) refenciadas no comeco da execuc~ao de um programa permanecem com um contador alto
at e o nal da execuc~ao. Felizmente, uma pequena modicaca~o no NFU faz com que este seja capaz de
página em ....
1 2 3 n
memória

simular LRU muito bem (o algoritmo modicado e denominado Aging ). A modicac~ao tem duas partes. página não refenciada (idade aumentando)

Primeiro, os contadores s~ao cada um deslocados 1 bit para a direita antes do bit R ser incrementado.
Segundo, o bit R e incrementado no bit mais a esquerda.
Quando ocorre ume falta de p agina, a p agina de menor contador e removida. E obvio que a p agina página em

que n~ao tenha sido referenciada por, digamos, quatro ticks de rel ogio ter a quatro zeros signicativos
swap-in disco swap-out

em seu contador, tendo assim um valor mais baixo que o contador de uma p agina que tenha sido Figura 3.6: Fila de p aginas candidatas a permuta
referenciada nos quatro u ltimos ticks de rel ogio.
Uma diferenca entre LRU e Aging e que no u ltimo os contadores t^em um n umero nito de bits (ti-
picamente 8). Portanto, n~ao podemos classicar as p aginas segundo refer^encias anteriores a capacidade O processo paginador e ativado quando a quantidade de mem oria dispon vel atinge um limite m nimo.
do contador. P aginas s~ao ent~ao removidas da mem oria e gravadas em disco at e que um limiar de mem oria livre seja
atingido.
Ao gravar uma p agina em disco, o processo paginador apaga o bit de validade da p agina e decrementa
3.5 Ger^encia de Memoria no UNIX seu contador de refer^encia na tabela de frames. Se o contador de refer^encia vai a zero (indicando que
um u nico processo estava utilizando a p agina), o n ucleo adiciona o campo da tabela de frames referente
Vers~oes anteriores ao System V e ao 4.2 BSD empregavam um esquema de permuta (swapping) de a p agina numa lista de p aginas livres. O conte udo de uma p agina na lista de p aginas livres continua
processos como pol tica de ger^encia de mem oria. Vers~oes atuais empregam o esquema de paginac~ao por v alido at e que o sistema associe a p agina a outro processo. Mesmo na lista de p aginas livres, uma p agina
26 c 1996 DCA/FEEC/UNICAMP 27
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Ger^encia de Memoria Ger^encia de Memoria em MS-DOS 3.6]

pode ser revalidada (sem necessidade de traz^e-la do disco) caso um processo torne a referenci a-la. Neste alocac~ao desejado | rst t, best t ou last t | e outro para indicar se a area de mem oria superior
caso, a p agina e removida da lista de p aginas livres, tendo seu bit de validade reativado. deve ou n~ao ser inclu da na busca por um bloco de mem oria livre.

3.6 Ger^encia de Memoria em MS-DOS


A ger^encia de mem oria em MS-DOS apresenta um modelo razoavelmente complexo, em parte pela
arquitetura de mem oria adotada pelos processadores da linha Intel 80x86 e em parte heranca de decis~oes
tomadas pela IBM para a implementac~ao dos primeiros PCs.
A complexidade imposta pela arquitetura dos processadores est a relacionada com a caracter stica de
compatibilidade de c odigo desenvolvido para os processadores antecessores, que deveriam ser capaz de
ser executados em cada novo processador. Assim foi que, por exemplo, o 8086, apesar de ser capaz de
enderecar 1 MByte de mem oria, mantinha um esquema de enderecamento baseado em 16 bits a m de
manter compatibilidade com c odigo desenvolvido para o 8080. Desta forma, foi introduzido o conceito
de segmentos com o limite m aximo de 64 KBytes.
Com relac~ao as decis~oes de projeto da IBM, decidiu-se que os primeiros 640 KBytes (a chamada area
de memoria convencional ) seriam alocados ao espaco de enderecamento para programas, enquanto que
o espaco de enderecamento entre 640K e 1 Mbyte (a area de memoria superior ) seria reservado para
ROMs, RAM de v deo e enderecos de placas de entrada e sa da. Posteriormente (ap os MS-DOS 5.0),
foram introduzidos mecanismos para que processadores 80386 ou posteriores pudessem usar parte deste
espaco de enderecamento | por exemplo, para alocar o programa do sistema operacional, drivers de
dispositivos e programas TSR.
Pelo esquema de segmentac~ao do processador, e poss vel que um endereco seja gerado para o espaco
de 64 KBytes acima de 1 MByte. Este espaco tem o nome de area de memoria alta, ou HMA. Esta
area pode ou ser mapeada para receber o programa do sistema operacional ou, em caso de sistemas
que mant em compatibilidade estrita com o processador 8088, ser um espaco que equivale sicamente ao
primeiro bloco de 64K, entre os enderecos 0 e 65519.
Processadores posteriores ao 8088 podiam ter mais de 1 MByte de mem oria f sica | 16M para o
80286 e 4 GBytes para 80386 e posteriores. A mem oria acima de 1M e chamada de memoria estendida.
MS-DOS n~ao pode fazer uso diretamente desta area de mem oria, uma vez que ele e executado no
chamado modo real do processador, que limita acesso ao primeiro megabyte apenas. Foram ent~ao
desenvolvidos aplicativos que permitiam usar este espaco em MS-DOS como discos RAM e cache de
bu"ers, tais como RAMDRIVE.SYS e SMARTDRV.SYS, respectivamente.
A m de se vencer a barreira de 640K com MS-DOS, dois esquemas foram denidos. O sistema
operacional suporta um esquema em software, atrav es de chamadas de sistemas que permitem a execuc~ao
de programas em overlays. O outro esquema, em hardware, partiu de um cons orcio entre Lotus, Intel e
Microsoft para desenvolver um esquema alternativo de mem oria. Este esquema foi denominado sistema
de memoria expandida (EMS), que permitiu que mesmo um processador 8088 pudesse utilizar grandes
mem orias f sicas. Neste caso, a mem oria est a sicamente alocada em placas de extens~ao de mem oria
(desenvolvidas pela Intel), e pode ser acessada por aplicativos como Lotus 1-2-3 e o pr oprio MS-DOS.
A placa de mem oria expandida cont em registros que mapeiam um espaco de enderecamento virtual de
640K para a mem oria sicamente maior, permitindo que programas trabalhassem com dados acima do
limite de 640 KBytes. Em processadores 80386 e posteriores, o pr oprio hardware suporta o mecanismo
de paginac~ao necess ario, e a mem oria estendida pode ser utilizada para simular a mem oria expandida
sem necessidade de placas especiais.
MS-DOS suporta chamadas do sistema para alocar e liberar blocos de mem oria, assim como para
modicar o tamanho de um bloco j a alocado. H a tamb em um mecanismo para especicar o tipo de
28 c 1996 DCA/FEEC/UNICAMP 29
Cardozo, Magalh~aes, Faina & Ricarte Sistema de Arquivos Projeto do Sistema de Arquivos 4.2]

Em muitos sistemas, arquivos regulares s~ao subdivididos em diferentes tipos em func~ao de sua
utilizac~ao. Os tipos s~ao identicados pelos nomes com que os arquivos regulares terminam | por
exemplo, arquivo.c denotando um programa fonte em C e arquivo.obj para um arquivo objeto. Em
alguns sistemas, as extens~oes s~ao simples convenc~ao, representando apenas uma facilidade para o usu ario
identicar o tipo de conte udo no arquivo. Em outros, o sistema operacional tem regras r gidas em relac~ao
Captulo 4 aos nomes | por exemplo, \o sistema n~ao executar a um arquivo a menos que sua extens~ao seja .BIN."
Diretorios, os quais em muitos casos s~ao tamb em arquivos, permitem organizar os arquivos de um
sistema. Um diret orio cont em tipicamente um registro por arquivo. Sistemas primitivos admitiam um
Sistema de Arquivos u nico diret orio compartilhado por todos os usu arios, ou um u nico diret orio por usu ario. Os sistemas
operacionais modernos permitem um n umero arbitr ario de diret orios por usu ario (em geral, formando
uma hierarquia).
Quando o sistema de arquivos e organizado como uma arvore de diret orios, algum meio se faz
necess ario para especicar nomes de arquivos. Dois m etodos s~ao comumente empregados. No primeiro
A parte mais vis vel de um sistema operacional e o seu sistema de arquivos. Programas aplicativos m etodo, cada arquivo e identicado pela sequ^encia de diret orios desde o diret orio raiz at e o arquivo
utilizam o sistema de arquivos (atrav es de chamadas de sistema) para criar, ler, gravar e remover (caminho absoluto). Nomes absolutos para caminhos sempre comecam na raiz e s~ao u nicos. Uma outra
arquivos. Usu arios utilizam interativamente o sistema de arquivos (atrav es de shell ) para listar, alterar forma de especicar nomes de arquivos e atrav es de seu caminho relativo. E usado em conjunto com o
propriedades e remover arquivos. A conveni^encia e facilidade de uso de um sistema operacional e conceito de diret orio de trabalho (ou diret orio corrente). Um usu ario pode designar um diret orio como
fortemente determinada pela interface, estrutura e conabilidade de seu sistema de arquivos. diret orio corrente. Neste caso, todos os caminhos s~ao referenciados a partir do diret orio corrente.
Do ponto de vista do usu ario, o aspecto mais importante do sistema de arquivos e como ele se
apresenta, isto e, o que constitui um arquivo, como os arquivos s~ao identicados e protegidos, que
operac~oes s~ao permitidas sobre os arquivos, e assim por diante. Para o projetista do sistema, por outro
lado, a preocupac~ao e como organizar e gerenciar arquivos de forma a garantir boa ocupaca~o do espaco 4.2 Projeto do Sistema de Arquivos
em disco e bom desempenho nas operac~oes sobre arquivos. Examinaremos agora o sistema de arquivos do ponto de vista do projetista de sistemas operacionais.
Uma das grandes preocupac~oes associadas com a manipulac~ao de sistemas de arquivos refere-se ao
4.1 Interface do Sistema de Arquivos desempenho. Discos s~ao organizados em cilindros, os quais s~ao compostos de trilhas, que por sua
vez s~ao compostos por setores. Um acesso ao disco envolve movimentac~ao de partes mec^anicas para
A maior parte dos sistemas operacionais traz a seguinte proposta para armazenagem de informaca~o: o posicionamento na trilha desejada e a transfer^encia dos setores contendo dados, sendo que a taxa
permitir aos usu arios denir objetos chamados arquivos, que podem armazenar programas, dados, ou de transfer^encia est a associada a velocidade de rotac~ao do disco. Como estes tempos s~ao muito mais
qualquer outra informaca~o. Estes arquivos n~ao s~ao parte enderec avel de nenhum processo e o sistema lentos que a velocidade de processamento, um acesso ineciente pode tornar a utilizac~ao do sistema
operacional suporta operaco~es especiais (chamadas de sistema) para criar, destruir, ler, atualizar e demasiadamente baixa.
proteger arquivos.
Todos os sistemas operacionais visam uma independ^encia dos dispositivos de armazenagem, permi- 4.2.1 Ger^encia de Espaco em Disco
tindo acessar um arquivo sem especicar em qual dispositivo o mesmo se encontra sicamente arma-
zenado. Um programa que l^e um arquivo de entrada e escreve um arquivo de sa da deve ser capaz de Arquivos s~ao normalmente armazenados em disco, sendo portanto a ger^encia do espaco em disco de
operar com arquivos armazenados em quaisquer dispositivos, sem necessidade de um c odigo especial maior interesse do projetista. Duas estrat egias s~ao poss veis para armazenagem em um arquivo com n
para explicitar o tipo de perif erico. bytes: bytes consecutivos do disco s~ao alocados ou o arquivo e dividido em um n umero de blocos n~ao
n
Alguns sistemas operacionais suportam maior independ^encia dos dispositivos de armazenagem que necessariamente cont guos1.
outros. No Unix, por exemplo, um sistema de arquivos pode ser montado em qualquer dispositivo de Quando blocos de tamanho xo s~ao adotados, e necess ario denir qual o tamanho do bloco. Uma
armazenagem, permitindo que qualquer arquivo seja acessado pelo seu nome (path name) sem considerar unidade de alocac~ao grande, tal como um cilindro, implica que muitos arquivos, at e mesmo arquivos de 1
o dispositivo f sico. No MS-DOS, o usu ario deve especicar em qual dispositivo cada arquivo se encontra byte, dever~ao ocupar o cilindro inteiro. Por outro lado, usar uma unidade de alocac~ao pequena signica
(exceto quando um dispositivo e default e for omitido). que cada arquivo ter a muitos blocos, o que pode prejudicar o desempenho de acesso. E compromisso
A maior parte dos sistemas operacionais suportam v arios tipos de arquivos | por exemplo, arquivos usual escolher um bloco de tamanho entre 512 e 4K bytes. Se um bloco de tamanho 1K for escolhido
regulares, diret orios e arquivos especiais. Arquivos regulares cont em dados e programas do usu ario. em um disco com setor de 512 bytes, ent~ao o sistema de arquivo sempre ir a ler ou escrever em dois
Diret orios permitem identicar arquivos atrav es de nomes simb olicos (sequ^encia de caracteres ASCII). setores consecutivos, e trat a-los como uma unidade indivis vel.
Arquivos especiais s~ao usados para especicar perif ericos tais como terminais, impressoras e unidades
de ta. 1 A mesma poltica esta presente no sistema de ger^encia de memoria entre a segmentac~ao pura e a paginac~ao.

30 c 1996 DCA/FEEC/UNICAMP 31
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Sistema de Arquivos Projeto do Sistema de Arquivos 4.2]

A escolha da estrat egia de alocaca~o de um arquivo no disco traz impactos no desempenho e exi- 42 239 971 1001001001011001

bilidade de acesso aos dados armazenados. A seguir, estes impactos ser~ao analisados para as diversas
136 124 7 0000100100011000
45 432 99 0011001110100100
possibilidades de organizaca~o. 127
65
58
490
640
589
1000000100001001
0000000000001000
254 643 737
Alocac~ao Cont gua Nesta estrat egia, a posic~ao inicial onde o arquivo est a armazenado no disco e seu 321 486 872

tamanho s~ao as u nicas informac~oes necess arias para permitir o acesso ao seu conte udo. A transfer^encia 342
123
12
43
543
321
dos dados, uma vez que o posicionamento inicial j a tenha sido completado, e r apido, pois envolve requer 415 481 13 0100001100000011

mudancas m nimas de posicionamento. 1111000011000010

Entretanto, armazenar um arquivo como uma sequ^encia cont gua de bytes apresenta um problema (b)

obvio que e o crescimento do arquivo, uma ocorr^encia muito comum | o arquivo provavelmente ter a 410 654 597

que ser movido no disco. Embora o problema seja o mesmo que ocorre em ger^encia de mem oria por 312 318 873

segmentaca~o, neste caso o impacto no desempenho e muito maior. (a)

Figura 4.1: Organizac~ao de blocos livres: (a) blocos livres armazenados em lista ligada (b) um mapa
Listas Ligadas de Blocos Quando a estrat egia de alocaca~o em blocos e adotada, uma primeira de bits.
possibilidade de se conectar os blocos de um mesmo arquivo e atrav es da manutenca~o de apontadores
de um bloco para o pr oximo. Assim, em cada bloco a primeira palavra indica qual o pr oximo bloco da
lista, e o restante e a area de dados. A grande vantagem desta estrat egia e evitar a fragmentac~ao que 4.2.2 Estrutura de Diretorio
ocorre no uso de alocac~ao cont gua. No entanto, acessos a posico~es arbitr arias do arquivo (o chamado Antes de um arquivo ser manipulado, ele deve ser aberto. Quando um arquivo e aberto, o sistema
acesso aleatorio ) s~ao lentos, uma vez que diversos blocos podem ter que ser lidos para alcancar a posic~ao operacional usa o nome do arquivo para buscar as informac~oes necess arias para prosseguir com as
do dado desejado. operac~oes de acesso ao arquivo. Estas informac~oes adicionais s~ao mantidas nos arquivos diret orios.
A estrat egia de organizac~ao de arquivos em diret orios mais simples e manter um diret orio u nico.
Listas Ligadas com Indice Nesta estrat egia, os apontadores para pr oximo bloco s~ao mantidos em Assim, a localizac~ao de um arquivo reduz-se a procura neste u nico diret orio. Encontrado o registro do
um ndice (ou tabela) que e trazido a mem oria principal. Desta forma, percorrer uma lista de blocos arquivo, tem-se o n umero de blocos do disco, posto que estes s~ao armazenados no pr oprio registro. Se
para alcancar uma posica~o arbitr aria torna-se uma operaca~o r apida, que e realizada sem acessos ao o arquivo utiliza mais blocos de disco que o permitido no registro, o arquivo ter a registros adicionais
disco. A desvantagem deste m etodo e que todo o ndice deve ser alocado a mem oria principal, o que no diret orio. Informac~oes usualmente mantidos s~ao nome, tipo, usuario (durante a busca, apenas os
pode ocupar um espaco consider avel de mem oria para discos com grande capacidade. registros pertencentes ao usu ario corrente s~ao considerados), tamanho e contador de bloco (indica qual
bloco est a em uso). Campos adicionais cont^em os n umeros dos blocos de disco que comp~oem o arquivo.
Nos Indices Neste caso, cada arquivo tem uma pequena tabela de ndices chamada de i-node que Outra estrat egia e a organizac~ao de sistemas de diret orio em arvore (hier arquicos). Neste caso, todo
mant em os enderecos em disco dos blocos que comp~oem o arquivo. Quando um arquivo e aberto pela diret orio (exceto o raiz) e um arquivo. Quando um arquivo e aberto, o sistema de arquivos recebe o
aplicac~ao, o seu n o ndice e lido para a mem oria. Os enderecos dos primeiros blocos do arquivo s~ao nome de arquivo fornecido e localiza seus blocos no disco. Para nomes absolutos, primeiro o sistema
mantidos no pr oprio i-node, de forma que o acesso a pequenos arquivos e eciente. Os u ltimos enderecos de arquivo localiza o diret orio raiz, que e mantido em um lugar xo no disco. Ent~ao, procura-se pelo
do i-node n~ao apontam diretamente para blocos de dados, mas para blocos contendo enderecos de outros arquivo (diret orio) que e o primeiro componente do caminho, e neste diret orio procura pelo pr oximo
blocos. Em geral, h a um apontador para enderecos indiretos simples (o bloco apontado cont em enderecos componente, at e encontrar a entrada para o arquivo sendo aberto. Nomes de caminhos relativos s~ao
de blocos de dados), outro para enderecos indiretos duplos (o bloco apontado cont em enderecos de blocos pesquisados de forma id^entica, apenas partindo do diret orio de trabalho em vez de partir-se do diret orio
que apontam para blocos de dados) e outro para enderecos indiretos triplos (para encontrar o endereco raiz. Todos os diret orios t^em registros para . e .., criados juntamente com o diret orio, para indicar
do bloco de dados tr^es n veis de ndice t^em de ser acessados). Apenas arquivos muito grandes precisariam respectivamente o diret orio corrente e o diret orio pai. Nenhum mecanismo especial e necess ario para
usar este u ltimo n vel de acesso indireto. manipular estes nomes.
N~ao raro, e conveniente que um mesmo arquivo (ou diret orio) pertenca simultaneamente a diferentes
Ger^encia de Espaco Livre Outra quest~ao importante para o projetista e como manter a informac~ao usu arios. A associac~ao entre um diret orio e um arquivo pertencente a outro diret orio e chamada de
sobre blocos livres no disco | informac~ao que ser a fundamental quando a aplicac~ao requisitar a escrita conex~ao ou link. O sistema de arquivos passa a ser organizado como um grafo, e n~ao mais como uma
de dados em arquivos. Dois m etodos s~ao amplamente usados (Figura 4.1). O primeiro consiste no uso arvore.
de uma lista ligada de blocos, com cada elemento da lista armazenando tantos blocos livres quanto Uma possibilidade de suportar o compartilhamento de arquivos e manter um link simbolico. Por
poss vel. Uma outra t ecnica de ger^encia de espaco livre e o mapa de bits. Um disco com blocos n exemplo, digamos que um arquivo X em um diret orio D1 deve tamb em ser visto por um diret orio D2.
necessita de um mapa de bits com bits. Blocos livres s~ao representados por 1s no mapa de bits blocos
n O link simb olico ser a uma entrada no diret orio D2 com o nome X, mas marcada como sendo um tipo
alocados por 0s (ou vice-versa). Para um disco cheio (com poucos blocos livres) a lista ligada necessita especial de arquivo (link) e cuja informac~ao associada e o nome absoluto do arquivo compartilhado
de menos espaco que o mapa de bits. original (/D1/X).
32 c 1996 DCA/FEEC/UNICAMP 33
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Sistema de Arquivos O Sistema de Arquivos do Unix 4.3]

Outra possibilidade depende da utilizaca~o de n os ndice para a organizaca~o de arquivos no disco. livres rastreando todos os blocos que n~ao est~ao em uso. Cada ocorr^encia de um bloco na lista de blocos
Neste caso, a entrada do diret orio armazena apenas o apontador para o n o ndice do arquivo comparti- livres resulta no incremento do segundo contador. Se o sistema de arquivo for consistente, cada bloco
lhado, e o n o ndice deve manter um contador de quantas refer^encias s~ao feitas ao arquivo (de modo a ter a o valor 1 em um contador e 0 no outro. Contudo, em caso de falha, pode detectar-se as seguintes
garantir consist^encia ap os operac~oes de remoca~o). situac~oes:
Blocos perdidos: 0 em ambos contadores, ou seja, blocos que n~ao ocorrem em nenhuma das tabelas.
4.2.3 Conabilidade do Sistema de Arquivos A soluc~ao para blocos perdidos e simples: o vericador do sistema de arquivos acrescenta-os na
Considerando a import^ancia da informac~ao mantida em discos, deve ser uma preocupac~ao do pro- lista de blocos livres.
jetista de um sistema de arquivos o aspecto de conabilidade deste sistema. Bloco livre e ocupado: 1 em ambos contadores. A soluc~ao tamb em e simples: remover o bloco da
lista livre.
Blocos Defeituosos Discos frequentemente apresentam blocos defeituosos (bad blocks), isto e, blocos
onde a escrita e/ou leitura e impossibilitada. Duas soluc~oes para o problema de blocos defeituosos s~ao Blocos multiplamente livres: 0 no contador de blocos ocupados e um valor maior que 1 no contador
empregadas, uma em hardware e outra em software. A soluc~ao em hardware consiste em dedicar um de blocos livres. A soluc~ao neste caso tamb em e simples: reconstruir a lista de blocos livres,
setor no disco para a lista de blocos defeituosos. Quando o controlador do disco e iniciado, este l^e a eliminando-se as duplicac~oes.
lista de blocos defeituosos e escolhe blocos sobressalentes para substitu -los. S~ao feitas ent~ao indirec~oes
dos blocos defeituosos para os blocos sobressalentes. Da  por diante, qualquer operac~ao envolvendo Blocos multiplamente ocupados: 0 no contador de blocos livres e um valor maior que 1 no contador
um bloco defeituoso ter a efeito em seu respectivo bloco sobressalente. A soluc~ao em software requer de blocos ocupados. Este e o tipo de falha mais grave. A ac~ao apropriada do utilit ario e alocar
que o usu ario informe (ou que o sistema de arquivos detecte) os blocos defeituosos. Estes blocos s~ao um bloco livre, copiar o conte udo do bloco duplicado nele, e inserir a c opia em um dos arquivos.
encadeados como se fosse um arquivo do sistema, de modo que eles n~ao far~ao parte da lista de blocos Desde modo, a informac~ao dos arquivos n~ao e alterada (embora certamente incorreta para um
livres. dos arquivos), mas a estrutura do sistema de arquivos e, pelo menos, consistente. O erro ser a
informado para permitir ao usu ario examinar a falha.
Backups Mesmo com uma estrat egia engenhosa para tratar os blocos defeituosos, e importante se
proceder backups frequentes. Sistemas de arquivos em discos de pequena capacidade podem ser salvos em
ta magn etica, por exemplo, tas padr~ao de 9 trilhas (com capacidade de 50 Megabytes por bobina) ou
4.3 O Sistema de Arquivos do Unix
ta de 8 mm (com capacidade de at e 4 Gigabytes). Para discos de grande capacidade, salvar o conte udo Todo arquivo no Unix System V cont em um u nico i-node. O i-node possui as informac~oes necess arias
inteiro em tas e inconveniente e consome muito tempo. Uma alternativa e o backup incremental. Em para um processo acessar um arquivo, tais como: propriet ario do arquivo, direito de acesso, tamanho
sua forma mais simples, copia-se para ta todos os arquivos a cada semana ou m^es, e, diariamente, do arquivo e localizac~ao dos dados do arquivo no sistema de arquivos. A refer^encia a um arquivo e feita
apenas daqueles arquivos que foram modicados deste o u ltimo backup completo. Num outro esquema, pelo seu nome e, atrav es deste, o n ucleo determina o i-node do arquivo.
mais eciente, copia-se apenas aqueles arquivos que foram alterados desde o u ltimo backup. Para Um i-node existe estaticamente no disco e o n ucleo realiza a sua leitura para a mem oria quando
implementar este m etodo, o hor ario da u ltima duplicaca~o para cada arquivo deve ser mantida no disco. necessita manipul a-lo. O i-node no disco cont em os seguintes campos (Figura 4.2):

4.2.4 Consist^encia do Sistema de Arquivos  identicador do dono do arquivo: dividido em dono individual e grupo
Outro t opico envolvendo conabilidade e a consist^encia do sistema de arquivos. Muitos sistemas de  tipo do arquivo: regular, diret orio, especial ou FIFO (pipes)
arquivos l^eem blocos, modicam-nos, e os regravam mais tarde. Se o sistema falha antes que todos os
blocos modicados sejam escritos no disco, o sistema de arquivos assume um estado inconsistente. Este
 permiss~ao de acesso
problema e especialmente cr tico se alguns dos blocos que n~ao foram escritos, s~ao blocos de i-nodes,  instantes de acesso ao arquivo: u ltima modicac~ao, u ltimo acesso e u ltima modicac~ao ocorrida
blocos de diret orio, ou blocos contendo a lista de blocos livres. no i-node 
Para vericar a consist^encia do sistema de arquivos, muitos sistemas operacionais utilizam programas
utilit arios desenvolvidos para este m. Tais programas s~ao executados sempre que o sistema e iniciado,  n umero de conex~oes (links) associados ao arquivo
particularmente depois de um desligamento abrupto.  enderecos no disco dos blocos de dados do arquivo
Para controle de consist^encia a n vel de blocos, o utilit ario constr oi uma tabela com dois contadores
por bloco, ambos iniciados em 0. O primeiro contador rastreia quantas vezes o bloco aparece referenciado
por algum arquivo o segundo contador registra com que frequ^encia ele aparece na lista de blocos
 tamanho do arquivo.
livres. O utilit ario acessa a informac~ao de todos os arquivos, incrementando o primeiro contador para A indicac~ao dos blocos do disco que constituem um determinado arquivo encontra-se no i-node
a ocorr^encia de cada bloco que faz parte de cada arquivo. A seguir, e examinada a lista de blocos associado ao arquivo. Esta indicac~ao traduz-se na utilizac~ao de 13 n umeros para blocos. Os 10 primeiros
34 c 1996 DCA/FEEC/UNICAMP 35
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Sistema de Arquivos Sistemas de Arquivos do MS-DOS 4.4]

ponteiro para
blocos de dados open: abre um arquivo para leitura/gravac~ao. Par^ametros da chamada indicam, por exemplo, se o
arquivo deve ser criado (caso inexista) e permiss~oes.
INODE

arquivo close: encerra a operac~ao sobre um arquivo aberto.


read: l^e dados de um arquivo (para um bu"er em mem oria).
numeros de links

identificador do proprietário

grupo do proprietário
tamanho do arquivo
write: escreve dados num arquivo (de um bu"er em mem oria).
data da criação

data do último acesso


lseek: altera a posic~ao corrente de leitura/gravac~ao no arquivo.
data da última modificação
chdir: altera o diret orio corrente.
ponteiro para 10 blocos de dados chown: altera o usu ario que t^em a posse do arquivo.
bloco indireto simples chmod: altera permiss~oes de um arquivo.
bloco indireto duplo

bloco indireto triplo


stat: fornece informac~oes sobre um arquivo (tipicamente as constantes no i-node do arquivo).

4.4 Sistemas de Arquivos do MS-DOS


Discos em MS-DOS s~ao organizados como se segue. O primeiro setor do disco e reservado para o
c odigo de boot. Ap os o setor de boot vem a Tabela de Alocac~ao de Arquivos (FAT), que e um ndice
para uma lista ligada de blocos. Blocos livres s~ao marcados com um c odigo especial nesta tabela. A
Figura 4.3 ilustra a organizac~ao da FAT no MS-DOS.
Figura 4.2: Estrutura de i-node FAT
x 0
} tamanho 6 8 4 2
x 1 do disco
n umeros (blocos diretos) cont em n umeros para blocos de disco os tr^es n umeros seguintes indicam EOF 2
respectivamente apontadores indireto simples, indireto duplo e indireto triplo. 13 3
Os processos enxergam o arquivo como um conjunto de bytes comecando com o endereco 0 e termi- 2 4 5 9 12

nando com o endereco equivalente ao tamanho do arquivo menos 1. O n ucleo converte esta vis~ao dos 9 5
processos em termos de bytes em uma vis~ao em termos de blocos: o arquivo comeca com o bloco 0 (apon- 8 6
tado pelo primeiro n umero de bloco no i-node ) e continua at e o n umero de bloco l ogico correspondente FREE 7 10 3 13

ao tamanho do arquivo. 4 8

Quando da abertura de um arquivo, o sistema operacional utiliza o nome (path) do arquivo fornecido 12 9

pelo usu ario para localizar os blocos do disco associados ao arquivo. O mapeamento do nome nos i-nodes 3 10

est a associado a forma como o sistema de diret orio encontra-se organizado. FREE 11

A estrutura de diret orio usada no Unix e extremamente simples. Cada entrada cont em o nome do EOF 12

arquivo e o n umero do seu i-node. Todos os diret orios do Unix s~ao arquivos e podem conter um n umero EOF 13

arbitr ario destas entradas. Quando um arquivo e aberto, o sistema deve, atrav es do nome do arquivo, EOF 14

localizar os seus blocos no disco. Caso o nome do arquivo seja relativo, o n ucleo acessa primeiro o i-node BAD 15
associado ao diret orio corrente.
Cada arquivo no Unix e identicado por um descritor de arquivos (um n umero inteiro). Descri- Figura 4.3: Estrutura da FAT
tores de arquivos identicam arquivos univocamente a n vel de processo, isto e, dois arquivos abertos
pelo mesmo processo possuem descritores necessariamente diferentes. Rotinas do n ucleo do sistema Cada entrada no diret orio tem 32 bytes, dos quais 11 s~ao reservados para o nome e extens~ao do
operacional operam com estes descritores. As principais chamadas de sistema referentes ao sistema de arquivo. Um byte de atributos descreve o tipo e propriedades do arquivo. Hora e data da u ltima
arquivos s~ao: atualizac~ao ocupam dois bytes cada. Os dois u ltimos campos indicam o endereco do primeiro bloco (2
36 c 1996 DCA/FEEC/UNICAMP 37
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Cardozo, Magalh~aes, Faina & Ricarte

bytes) e o tamanho do arquivo (4 bytes). A partir do primeiro bloco, os demais s~ao localizados a partir
da Tabela de Alocac~ao de Arquivos.

Captulo 5
Entrada e Sada
Uma das func~oes do sistema operacional e controlar todos os dispositivos de entrada e sa da (E/S)
do computador, emitindo comandos para os dispositivos, atendendo interrupc~oes e manipulando erros.
Deve tamb em prover uma interface entre os dispositivos e o resto do sistema, que seja simples e f acil
de usar (se poss vel, a interface deve ser a mesma para todos os dispositivos). O c odigo de entrada
e sa da representa uma frac~ao signicativa do total do sistema operacional. A forma como o sistema
operacional gerencia E/S e o objeto deste cap tulo.

5.1 Princpios do Hardware


Diferentes indiv duos v^eem o hardware de E/S de diferentes maneiras. Engenheiros eletr^onicos
v^eem em termos de chips, os, fontes de pot^encia, motores e todos os outros componentes f sicos que
constituem em conjunto o hardware. Programadores v^eem como a interface apresentada ao software,
os comandos que o hardware aceita, as func~oes que ele suporta, e os erros que s~ao reportados. O nosso
interesse aqui e restringir em como o hardware e programado, e n~ao como ele trabalha internamente.

5.1.1 Dispositivos de E/S


Dispositivos de E/S podem ser grosseiramente divididos em duas categorias: dispositivos de bloco
e dispositivos de caracter. Um dispositivo de bloco armazena informac~oes em blocos de tamanho xo,
cada um com seu pr oprio endereco. Tamanhos comuns de blocos est~ao na faixa de 128 bytes a 4096
bytes. A propriedade essencial dos dispositivos de bloco e que e poss vel ler ou escrever cada bloco
independentemente de todos os outros. Em outras palavras, em qualquer instante, o programa pode ler
ou escrever qualquer um dos blocos. Discos s~ao dispositivos de bloco.
O outro tipo de dispositivo de E/S, o de caracter, libera ou aceita uma la de caracteres sem
estrutura. Ele n~ao e enderec avel e n~ao aceita operaco~es de busca. Terminais, impressoras, leitora optica
e outros dispositivos que n~ao trabalham como os discos s~ao exemplos de dispositivos de caracter.
Este esquema de classicac~ao n~ao e perfeito. Alguns dispositivos n~ao s~ao enquadrados nele. Rel ogios,
por exemplo, n~ao s~ao enderec aveis por bloco. Nem geram ou aceitam las de caracteres. Tudo o que
fazem e gerar interrupc~oes em intervalos regulares. Contudo, este modelo e geral o suciente para
ser usado como base na construc~ao de um sistema operacional com bom n vel de independ^encia dos
dispositivos de E/S. O sistema de arquivo, por exemplo, negocia apenas com dispositivos de blocos
abstratos, e deixa a parte dependente do dispositivo para o software de mais baixo n vel, chamado
acionadores de dispositivos (device drivers).
38 c 1996 DCA/FEEC/UNICAMP 39
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Entrada e Sada Princpios do Software 5.2]

5.1.2 Controladores de Dispositivos disquete do IBM PC, por exemplo, aceita 15 diferentes comandos, tais como read, write, seek, format,
Unidades de E/S consistem tipicamente de componentes mec^anicos e eletr^onicos. E frequente a e recalibrate. Muitos dos comandos t^em par^ametros, os quais s~ao tamb em carregados nos registradores
separac~ao das duas porc~oes para se obter um projeto mais geral e modular. O componente eletr^onico e do controlador. Quando um comando e aceito, a CPU pode abandonar o controlador atender a outra
tarefa. Quando completado, o controlador causa uma interrupc~ao com o objetivo de permitir que o
chamado de controlador do dispositivo (device controller ou adapter). Em mini e microcomputadores, ele sistema operacional tome o controle da CPU e teste o resultado da operac~ao. A CPU obt em o resultado
normalmente toma forma de um circuito impresso que pode ser inserido no computador. O componente e o status do dispositivo pela leitura de um ou mais bytes de informac~ao nos registradores do controlador.
mec^anico e o dispositivo propriamente dito.
O cart~ao do controlador normalmente tem um conector, no qual um cabo condutor do pr oprio
dispositivo pode ser conectado. Muitos controladores podem manusear dois ou mais dispositivos do
mesmo tipo. 5.2 Princpios do Software
A distinc~ao entre dispositivo e controlador deve ser ressaltada, j a que o sistema operacional v^e o Os objetivos gerais do software de E/S s~ao f aceis de serem estabelecidos. A id eia b asica e organizar
controlador, n~ao o dispositivo. Normalmente, minicomputadores e microcomputadores usam um barra- o software como uma s erie de camadas, com as mais baixas escondendo peculiaridades do hardware e
mento u nico (Figura 5.1) para comunicac~ao entre CPU e os controladores. Mainframes frequentemente as mais altas mostrando-se simples para o usu ario.
usam um modelo diferente, no qual m ultiplos barramentos e computadores especializados de E/S, cha-
mados canais de E/S, aliviam parte da carga da CPU.
unidades de disco
5.2.1 Objetivos do Software de E/S
O conceito chave no projeto do software de E/S e a independ^encia do dispositivo. Deve ser poss vel
impressora escrever programas que usem arquivos gravados em disquete ou em disco r gido, sem a necessidade de
interface
controlador-dispositivo modicar o programa para cada tipo de dispositivo. De prefer^encia, deve ser poss vel utilizar o programa
sem recompil a-lo.
CPU memória
controlador
de disco
controlador
de impressora
outros
controladores Relacionado com a independ^encia do dispositivo est a a uniformidade de nome. O nome de um
dispositivo ou arquivo deve ser simplesmente uma cadeia de caracteres (string) ou um inteiro n~ao
dependente do dispositivo em nenhum caso.
Outra caracter stica importante e a manipulac~ao de erros. Em geral os erros devem ser manipulados
barramento

Figura 5.1: Um modelo para conex~ao da CPU, mem oria, controladores e dispositivos de E/S o mais pr oximo poss vel do hardware. Se o controlador encontra um erro, ele deve tentar corrig -lo, se
poss vel. Se n~ao, o driver do dispositivo deve faz^e-lo, talvez apenas tentando ler novamente. Muitos
A interface entre o controlador e o dispositivo e, via de regra, uma interface de baixo n vel. O erros s~ao transientes e desaparecem se a operac~ao for repetida. Somente se as camadas mais baixas n~ao
disco, por exemplo, pode ser formatado com 8 setores de 512 bytes por trilha. O que realmente sai conseguirem resolver o problema e que este deve ser apresentado as camadas superiores.
do driver, entretanto, e uma lista serial de bits, partindo com um pre^ambulo, depois os 4096 bits no Transfer^encias podem ser s ncronas (blocos) e ass ncronas (manipuladas por interrupc~ao). Muitos
setor, e nalmente o checksum ou o c odigo de correca~o de erro. O pre^ambulo e escrito quando o disco dispositivos de E/S s~ao ass ncronos: a CPU inicia a transfer^encia e se ocupa de outras atividades at e
e formatado, e cont em o n umero de cilindros e de setores, o tamanho do setor, e outros dados. que chegue uma interrupc~ao. O sistema operacional realiza as operac~oes de forma ass ncrona, mas para
A tarefa do controlador e converter a lista serial de bits em um bloco de bytes e realizar alguma o usu ario ela se apresenta como transfer^encia de blocos (o que torna muito mais simples a programac~ao).
correc~ao de erro necess aria. O bloco de bytes e tipicamente primeiro montado, bit por bit, em um buer Alguns dispositivos de E/S, como discos, podem ser utilizados por muitos usu arios ao mesmo tempo.
mantido no controlador. Ap os o checksum ter sido vericado e o bloco declarado livre de erro, ele pode Outros dispositivos, como impressoras, devem ser dedicados a um u nico usu ario at e que este nalize a
ent~ao ser copiado para a mem oria principal. operac~ao. A inclus~ao de dispositivos dedicados introduz uma variedade de problemas, como o deadlock.
O controlador para o terminal CRT tamb em trabalha como um dispositivo serial de bits e em baixo Sistemas operacionais devem manipular os dispositivos de maneira a evitar estes problemas.
n vel. Ele l^e da mem oria o byte contendo o caracter a ser exibido, e gera os sinais usados na modulac~ao Estes objetivos podem ser organizados de maneira clara e eciente pela estruturac~ao do software em
do feixe do CRT para causar a escrita na tela. O controlador tamb em gera os sinais para o feixe CRT quatro camadas:
fazer o retrace horizontal ap os ele ter terminado de esquadrinhar a linha, como tamb em sinais para
fazer o retrace vertical ap os a tela toda ter sido esquadrinhada. Se n~ao tiv essemos um controlador CRT, 1. Manipulac~ao de interrupc~oes.
o sistema operacional teria que gerar estes sinais no tubo. Com o controlador, o sistema operacional
inicia-o com poucos par^ametros, tais como o n umero de caracteres por linha e o n umero de linhas por 2. Drivers de dispositivos.
tela, deixando o controlador tomar conta do direcionador do feixe de raios cat odicos.
Cada controlador tem alguns poucos registradores que s~ao usados para comunicac~ao com a CPU. 3. Software do sistema operacional independente do dispositivo.
Em alguns computadores estes registradores s~ao parte do espaco de enderecamento regular. O sistema
operacional realiza E/S escrevendo comandos nos registradores dos controladores. O controlador de 4. Software do n vel do usu ario.
40 c 1996 DCA/FEEC/UNICAMP 41
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Entrada e Sada Princpios do Software 5.2]

5.2.2 Manipuladores de Interrupc~oes 5.2.4 Software de E/S Independente do Dispositivo


Interrupc~oes s~ao eventos complexos, que devem ser isolados de modo que apenas uma pequena parte Embora parte de software de E/S seja espec co do dispositivo, grande parte e independente do
do sistema operacional os manipule. Um meio para isolar o tratamento de interrupc~oes e bloquear os dispositivo. O limite exato entre os drivers e o software independente dos dispositivos e func~ao do
processos aguardando operac~oes de E/S at e que uma interrupc~ao anuncie que a operac~ao se completou. sistema, uma vez que algumas func~oes que s~ao independentes do dispositivo podem atualmente estarem
nos drivers, por eci^encia ou outras raz~oes. As func~oes listadas abaixo s~ao tipicamente implementadas
Quando a interrupc~ao acontece, a rotina de tratamento daquela interrupc~ao libera o processo blo- no software independente do dispositivo:
queado atrav es do envio de uma mensagem. Em alguns sistemas, isto e conseguido fazendo-se um UP
sobre um sem aforo. Seja qual for a forma adotada, o efeito da interrupc~ao e que o processo que estava  interface uniforme para com os drivers de dispositivos
previamente bloqueado dever a agora estar habilitado para execuc~ao.
 identicac~ao simb olica dos dispositivos
 protec~ao dos dispositivos
5.2.3 Drivers de Dispositivos  manipulac~ao de blocos independente dos dispositivos
Todo o c odigo dependente do dispositivo aparece no driver do dispositivo. Cada driver manipula  \bu"erizac~ao"
um dispositivo ou uma classe de dispositivos intimamente relacionados.  alocac~ao de espaco nos dispositivos do tipo bloco
Foi visto que cada controlador de dispositivos tem registradores para receber comandos. O driver
do dispositivo envia estes comandos e testa se foram carregados propriamente. Desta maneira, o driver  alocac~ao e liberac~ao de dispositivos dedicados
e a parte do sistema operacional que conhece quantos registradores tem, por exemplo, o controlador de  ger^encia de erros.
disco e para que estes s~ao utilizados. Ele reconhece setores, trilhas, cilindros, cabecas de leitura/escrita,
motor, fator de entrelacamento e todos os mecanismos que fazem um disco trabalhar propriamente. A func~ao b asica do software independente do dispositivo e realizar as func~oes de E/S que s~ao comuns
Em termos gerais, o trabalho de um driver e aceitar requisico~es abstratas de um software de mais a todos os dispositivos, e suportar uma interface uniforme para o software do usu ario.
alto n vel, e providenciar para que o pedido seja atendido. Uma t pica requisic~ao e ler um bloco. Se Uma quest~ao fundamental em um sistema operacional e como objetos tais como os arquivos e dispo-
o driver est a desocupado no momento, a requisica~o e aceita, sendo processada imediatamente. Caso o sitivos de E/S s~ao identicados. O software independente do dispositivo se encarrega do mapeamento
driver esteja processando uma requisic~ao, esta normalmente entra numa la de requisic~oes pendentes. simb olico dos nomes dos dispositivos para os seus drivers apropriados.
O primeiro passo e transcrever os termos abstratos da requisica~o para aco~es concretas. Para um disk Relacionado ao nome est a a protec~ao. Como o sistema previne usu arios de acessar dispositivos que
driver, por exemplo, isto signica informar onde o bloco se encontra no disco, vericar se o motor est a n~ao est~ao autorizados a acessar? Em muitos microcomputadores, n~ao h a nenhuma protec~ao. Em muitos
girando, determinar se o braco est a posicionado no cilindro apropriado, e assim por diante. Em poucas mainframes e superminis, acessos a dispositivos de E/S pelos usu arios e completamente proibido.
palavras, o driver deve decidir quais operaco~es do controlador s~ao requeridas e em que sequ^encia. Diferentes discos podem ter diferentes tamanhos de setor. O software independente do dispositivo
Uma vez determinado quais comandos emitir ao controlador, este inicia a emiss~ao escrevendo nos re- deve encobrir este fato e prover um tamanho de bloco uniforme para camadas superiores, por exemplo,
gistradores do controlador do dispositivo. Alguns controladores podem manusear somente um comando pelo tratamento de v arios setores como um simples bloco l ogico. Deste modo, os n veis superiores
por vez. Outros controladores aceitam uma lista de comandos, os quais s~ao carregadas sem a ajuda do somente negociam com dispositivos abstratos que usam o mesmo tamanho de bloco l ogico, independente
sistema operacional. do tamanho f sico do setor.
\Bu"erizac~ao" e uma outra quest~ao, tanto para dispositivos de blocos como para de caracter. Para
Ap os o comando ou comandos terem sido emitidos, podem ocorrer duas situaco~es. Em muitos casos dispositivos de bloco, o hardware executa escrita e leitura de blocos inteiros, mas o processo do usu ario
o device driver deve esperar at e que o controlador execute as operac~oes requisitadas. Se estas operac~oes est a livre para ler ou escrever unidades arbitr arias. Para dispositivos de caracter, usu arios podem
forem lentas (envolvendo movimentos mec^anicos, por exemplo), o driver bloqueia at e que as operac~oes escrever dados no sistema mais r apido do que a taxa com que eles s~ao transferidos para o dispositivo
se completem. Em outros casos, entretanto, as operaco~es s~ao r apidas, situaca~o esta em que o driver n~ao f sico, necessitando assim de \bu"erizac~ao". Entrada de teclado e outro exemplo de atividade que requer
precisa ser bloqueado. Como um exemplo dessa situac~ao, o deslocamento da tela em terminais requer \bu"erizac~ao".
apenas escrita de uns poucos bytes nos registradores do controlador. Nenhum movimento mec^anico e Quando um arquivo e criado e preenchido com dados, novos blocos de disco t^em que ser alocados
necess ario e a operac~ao toda pode se completar em alguns microsegundos. para o arquivo. Para realizar esta alocac~ao, o sistema operacional precisa de uma lista ou mapa de bits
Neste ponto, ap os a operaca~o ter sido completada, o driver deve vericar a ocorr^encia de erros. Se dos blocos livres no disco, mas o algoritmo para localizar um bloco livre e independente do dispositivo
tudo estiver correto, ele passa os dados (o bloco lido, por exemplo) para a pr oxima camada do software e pode ser implementado acima do n vel do driver.
de E/S. Finalmente, ele retorna alguma informaca~o de status de erros. Se alguma requisic~ao est a na Alguns dispositivos, tais como as tas magn eticas, podem ser usadas somente por um simples pro-
la, uma delas pode agora ser selecionada e iniciada. Se nenhuma est a na la, o driver ca aguardando cesso em um dado momento. E o sistema operacional que examina a requisic~ao para usar o dispositivo
a pr oxima requisica~o. e aceita ou n~ao, dependendo da disponibilidade do dispositivo requisitado.
42 c 1996 DCA/FEEC/UNICAMP 43
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Entrada e Sada Discos 5.3]

A manipulac~ao de erros tamb em e feita nesta camada. Um erro t pico e causado por um bloco do camada funcionalidade

disco ruim e que n~ao pode mais ser lido. Ap os o driver tentar ler o bloco v arias vezes, ele informa
ao software independente do dispositivo a raz~ao. O erro e ent~ao tratado. Se ocorreu num arquivo do processos do usuário executa operação de E/S

usu ario, e suciente informar o erro para o mesmo. Entretanto, se o erro ocorreu numa area cr tica, o
sistema operacional deve apresentar uma mensagem e, eventualmente, terminar sua execuc~ao. software independente
do dispositivo
identifição, proteção, bloqueio
"bufferização"

5.2.5 Software a Nvel do Usuario drivers de dispositivos


inicia registradores do dispositivo
verifica status da operação
Embora muito do software de E/S esteja embutido no sistema operacional, uma pequena porc~ao
dele consiste de bibliotecas ligadas juntamente com programas do usu ario, e at e mesmo com programas gerenciadores desbloqueia o driver quando a

inteiros executando fora do n ucleo. Chamadas de sistema, incluindo chamadas do subsistema de E/S, de interrupção operação de E/S se completa

s~ao normalmente feitas por procedimentos da biblioteca. Quando um programa em C cont em a chamada
bytes_lidos = fread(buffer, tam_item, n_itens, arquivo) dispositivos executa fisicamente a operação de E/S

o procedimento da biblioteca fread ser a ligado com o programa. A colec~ao de todos estes procedimentos
da biblioteca e parte do sistema de E/S.
Enquanto estes procedimentos fazem pouco mais que colocar seus par^ametros em lugares apropriados
para a chamada do sistema, h a outros procedimentos de E/S que fazem o trabalho real. Em particular,
requisição de E/S resposta da requisição

a formatac~ao de uma entrada e sa da e feita por um procedimento da biblioteca. Figura 5.2: N veis do sistema de E/S e func~oes principais de cada n vel
Nem todo o software de E/S utilizado pelo usu ario consiste de procedimentos da biblioteca. Outra
importante categoria e o sistema spooling. Spooling e o modo de negociaca~o com os dispositivos dedicados
de E/S em um sistema com multiprogramac~ao, tais como impressoras. Embora seja f acil permitir que setores no anel externo do disco sejam sicamente maiores que aqueles no anel interno. O espaco extra
algum processo do usu ario abra o arquivo especial associado a uma impressora, se o processo mantiver n~ao e aproveitado.
o arquivo aberto por v arias horas ent~ao nenhum outro processo poder a imprimir. Um aspecto que tem importante implicac~oes no disk driver e a possibilidade do controlador fazer bus-
Ao inv es disso, o que e feito e criar um processo especial, chamado daemon, e um diret orio especial, cas (seek) em dois ou mais dispositivos ao mesmo tempo. Estas s~ao conhecidas como busca entrelacada
chamado spooling directory. Para imprimir um arquivo, o aplicativo recebe o arquivo inteiro para ser (overlapped seek). Enquanto o controlador e o software est~ao esperando uma busca se completar em um
impresso e o coloca no spooling directory. Ent~ao o daemon, o u nico processo que tem permiss~ao de usar dispositivo, o controlador pode iniciar uma busca em outro. Muitos controladores podem tamb em ler
o arquivo especial associado a impressora, transfere um arquivo do spooling directory para a impressora ou escrever em um dispositivo enquanto executam uma busca em um ou mais dispositivos, mas nenhum
por vez. Protegendo-se os arquivos especiais contra o uso direto por usu arios, o problema de se ter pode ler ou escrever em dois dispositivos no mesmo tempo. (Ler ou escrever requer que o controlador
algu em monopolizando-os e eliminado. mova bits na faixa de microsegundos, assim uma transfer^encia usa muito de sua capacidade computa-
Spooling e tamb em usado em outras situac~oes, tais como a transfer^encia de arquivos na rede. Para cional). A habilidade de realizar duas ou mais buscas ao mesmo tempo pode reduzir sensivelmente o
enviar um arquivo a algum lugar, o aplicativo coloca o arquivo dentro do diret orio de spooling da rede. tempo m edio de acesso.
Mais tarde, o network daemon acessa o arquivo e o transmite.
A Figura 5.2 resume o sistema de E/S, mostrando todas os n veis e func~oes principais de cada n vel.
5.3.2 Software do Disco
5.3 Discos Nesta sec~ao veremos algumas caracter sticas gen ericas relacionadas com os disk drivers. O tempo
de leitura ou escrita de um bloco do disco e determinado por tr^es fatores: o tempo de seek (tempo para
Dispositivos do tipo bloco s~ao armazenadores que aceitam dois comandos: escrever um bloco e ler mover o braco para o cilindro desejado), o atraso rotacional (tempo para o setor desejado car sob a
um bloco. Normalmente esses blocos s~ao armazenados em mem oria rotativa, tal como os discos r gidos cabeca de leitura/escrita), e o tempo de transfer^encia. Para muitos discos, o tempo de seek domina.
e ex veis. Nas seco~es seguintes, descreveremos brevemente o hardware do disco, passando para os disk Reduzindo-se o tempo de seek, podemos melhorar substancialmente o desempenho do sistema.
drivers a seguir.
Algoritmos de Escalonamento do Braco do Disco
5.3.1 Hardware do Disco Se o disk driver aceita uma requisic~ao por vez e a executa nesta ordem, isto e, First-Come, First-
Todos os discos rotativos s~ao organizados em cilindros, cada qual contendo tantas trilhas quanto Served (FCFS), pouco pode ser feito para otimizar o tempo de seek. Entretanto uma estrat egia e
cabecas empilhadas verticalmente. As trilhas s~ao divididas em setores, com um n umero de setores na poss vel: e prov avel que enquanto o braco est a executando um seek na metade de uma requisica~o,
circunfer^encia, tipicamente entre 8 a 32. Todos os setores cont^em o mesmo n umero de bytes, embora uma outra requisic~ao de disco pode ter sido gerada por outro processo. Muitos disk drivers mant em
44 c 1996 DCA/FEEC/UNICAMP 45
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Entrada e Sada E/S no Unix 5.4]

uma tabela, indexada pelo n umero do cilindro, com todas as requisic~oes pendentes para cada cilindro, A Figura 5.4 mostra o algoritmo do elevador usando as mesmas sete requisic~oes da Figura 5.3,
encadeadas juntas numa lista. assumindo que o bit de direc~ao esteja inicialmente em UP . A ordem na qual os cilindros s~ao servidos
Para este tipo de estrutura de dados, podemos melhorar o algoritmo de escalonamento First-Come, e 12, 16, 34, 36, 9, e 1, gerando movimento do braco de 1, 4, 18, 2, 27, e 8, num total de 60 cilindros.
First-Served. Considere um disco com 40 cilindros. Uma requisic~ao chega para ler um bloco no cilindro Neste caso, o algoritmo do elevador e um pouco melhor que SSF, embora seja usualmente pior. Uma
11. Enquanto a busca para o cilindro 11 est a em progresso, novas requisico~es chegam para os cilindros propriedade interessante do algoritmo do elevador e que dada uma colec~ao de requisic~oes, o limite
1, 36, 16, 34, 9, e 12, nesta ordem. Elas s~ao inseridas na tabela de requisic~oes pendentes, tendo cada superior para o total de movimentos e xado: ele e apenas duas vezes o n umero de cilindros.
cilindro um lista separada. As requisic~oes s~ao mostradas na Figura 5.3. posição inicial

posição inicial
X X X X X X X
0 5 10 15 20 25 30 cilindro
X X X X X X X
0 5 10 15 20 25 30 cilindro

sequência de movimentos
tempo
sequência de movimentos

tempo
Figura 5.4: Escalonamento de requisic~oes no disco atrav es do algoritmo do elevador
Figura 5.3: Algoritmo de escalonamento menor seek primeiro (SSF) Alguns controladores de disco suportam um modo do software para inspecionar o n umero de setores
correntes sob a cabeca. Com um desses controladores, uma outra otimizac~ao e poss vel. Se duas ou
Quando a requisic~ao corrente termina (cilindro 11), o disk driver tem que escolher qual ser a a mais requisic~oes para o mesmo cilindro est~ao pendentes, o driver pode emitir a requisic~ao para o setor
pr oxima requisic~ao. Usando FCFS, ele ir a para o cilindro 1, ent~ao para o 36, e assim por diante. Este que passar a sob a cabeca do pr oximo cilindro. Note que quando trilhas m ultiplas est~ao presentes num
algoritmo requer movimentos do braco de 10, 35, 20, 18, 25, e 3, respectivamente, num total de 111 cilindro, requisic~oes consecutivas podem ser conduzidas para diferentes trilhas com nenhuma penalidade.
cilindros. O controlador pode selecionar alguma das cabecas instantaneamente, uma vez que selec~ao de cabeca
Alternativamente, a pr oxima requisic~ao pode ser manuseada a m de minimizar o tempo de seek. n~ao requer movimento dos bracos nem atraso rotacional.
Dadas as requisic~oes da Figura 5.3, a sequ^encia 12, 9, 16, 1, 34, e 36, como mostrado na linha entalhada. Quando existe v arios dispositivos, uma tabela de requisic~oes pendentes deve ser mantida para cada
Com esta sequ^encia, os movimentos do braco s~ao 1, 3, 7, 15, 33, e 2, num total de 61 cilindros. Este dispositivo separadamente. Quando algum dispositivo est a desocupado, um seek deve ser emitido para
algoritmo, menor seek primeiro (SSF), diminuiu o total de movimentos do braco pela metade, comparado mover os seus bracos para o cilindro onde ser a necess ario (assumindo que o controlador permita seeks
com o FCFS. sobrepostos). Quando a transfer^encia corrente termina, um teste pode ser feito para vericar se algum
Infelizmente, SSF tem um problema. Suponha mais requisic~oes chegando enquanto as requisic~oes dos dispositivos est~ao posicionados no cilindro correto. Se um ou mais est~ao, a pr oxima transfer^encia
da Figura 5.3 est a sendo processada. Por exemplo, se, ap os chegar ao cilindro 16, uma nova requisic~ao pode ser iniciada no dispositivo que j a est a no cilindro correto. Se nenhum dos bracos est a na posic~ao
para o cilindro 8 est a presente. Esta requisica~o ter a prioridade sobre o cilindro 1. Se a requisic~ao for desejada, o driver deve emitir novos seeks sobre os dispositivos que j a completaram a transfer^encia,
para o cilindro 13, o braco ir a para o 13, ao inv es de ir para o cilindro 1. Com disco muito carregados, o e esperar at e a pr oxima interrupc~ao para examinar em qual dispositivo o posicionamento do braco se
braco tende a permanecer no meio do disco a maior parte do tempo, prejudicando assim as requisic~oes completou.
das extremidades. Requisic~oes distantes do meio s~ao em m edia mais demoradas, colocando o objetivo
de m nima resposta no tempo e imparcialidade no acesso.
Um algoritmo para reconciliar os objetivos conitantes entre a eci^encia e imparcialidade constitui-
5.4 E/S no Unix
se em manter o movimento do braco na mesma direc~ao at e n~ao haver mais requisic~oes pendentes Dispositivos no Unix podem ser do tipo bloco ou caracter. O interfaceamento com os dispositivos
naquela direc~ao, e ent~ao o movimento do braco e mudado. Este algoritmo, conhecido como algoritmo se d a atrav es do subsistema de arquivos. Cada dispositivo tem um nome id^entico a nomes de arquivos
do elevador, requer o software mantenha 1 bit: o bit da direc~ao corrente, UP ou DOWN . Quando a (/dev/tty, /dev/console) e um respectivo i-node. i-nodes associados a dispositivos t^em como tipo de
requisic~ao termina, o disk driver testa o bit. Se e UP, o braco e movido para a pr oxima requisic~ao arquivo \block" ou \character special", o que os distingue dos arquivos regulares.
pendente de posic~oes mais altas, se houver. Se n~ao h a requisic~oes pendentes para posic~oes mais altas, Cada dispositivo tem seu device driver associado. No Unix, um driver implementa as chamadas
o bit de direca~o e revertido. Quando o bit e mudado para DOWN, o movimento ser a para a pr oxima de sistema open, close, read, write e ioctl para o seu dispositivo, bem como o tratamento para as
requisic~ao de posic~ao mais baixa, se houver. interrupc~oes oriundas deste.
46 c 1996 DCA/FEEC/UNICAMP 47
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Entrada e Sada E/S em MS-DOS 5.5]

Em dispositivos que operam em bloco, a transfer^encia de dados entre o espaco de enderecamento de Uma rotina denominada strategy perfaz as operac~oes de leitura e escrita em tais dispositivos. Quando
um processo e o dispositivo de d a atrav es de um buer cache. A raz~ao para tal e que tais dispositivos uma operac~ao de leitura ou escrita e requisitada, o n ucleo identica a rotina strategy denida para o
s~ao lentos, sendo portanto a \bu"erizac~ao" um meio de aumentar a taxa de transfer^encia de dados. dispositivo, passando a mesma o endereco do cabecalho do bu"er para onde os dados devem ser copiados,
Dispositivos do tipo caracter (terminais, por exemplo) s~ao inerentemente r apidos e n~ao necessitam caso leitura, ou contendo os dados para escrita.
deste recurso.
A Figura 5.5 mostra o esquema b asico de entrada e sa da no Unix. Quando um processo executa
uma chamada de sistema open, por exemplo, o n ucleo acessa o i-node do arquivo passado a chamada e 5.5 E/S em MS-DOS
descobre que e um arquivo associado a um dispositivo de E/S. Atrav es de uma tabela de chaveamento Assim como Unix, MS-DOS tamb em suporta dispositivos de E/S atrav es de arquivos especiais de
de dispositivo, o n ucleo obt em o endereco da rotina de open para este dispositivo. Uma vez iniciado tipo bloco ou caracter. Parte dos drivers est a incorporada no arquivo io.sys, mas o usu ario pode instalar
o dispositivo, um campo na tabela de arquivos e adicionado, sendo o ndice deste campo (descritor) drivers adicionais atrav es de comandos device= no arquivo cong.sys.
retornado ao processo. Uma chamada close faz com que o n ucleo acesse o respectivo procedimento Todo driver em MS-DOS e composto de duas partes de c odigo, uma para receber as requisic~oes
para o dispositivo, cuja identicac~ao e obtida na tabela de arquivos. (o request handler ) do sistema operacional e outra parte para efetivar a operac~ao de transfer^encia de
dados. Cada driver instalado e inserido no topo de uma lista ligada de drivers, e uma vari avel interna
open close read write ioctl open close read write do sistema aponta para o topo da lista. Desta forma, drivers instalados recentemente tem preced^encia
mount umount
sobre drivers antigos.
Em termos de dispositivos f sicos, muitos t^em enderecos pr e-denidos na congurac~ao de hardware. A
rotinas do
Tabela 5.1 mostra os enderecos de E/S e os vetores de interrupc~ao alocados para alguns dos controladores
cache de buffers do IBM PC. A atribuic~ao de enderecos de E/S para dispositivos e feita por um decodicador l ogico
associado ao controlador. Alguns IBM PC-compat veis usam diferentes enderecos de E/S.
tabela de chaveamento tabela de chaveamento
dispositivo endereco E/S vetor int.
rel ogio 040 - 043 8
(dispositivos orientados a caracter) (dispositivos orientados a bloco)

teclado 060 - 063 9


porta serial secund aria 2F8 - 2FF 11
disco r gido 320 - 32F 13
impressora 378 - 37F 15
open close read write ioctl open close strategy

v deo monocrom atico 380 - 3BF -


driver driver v deo colorido 3D0 - 3DF -
disco ex vel 3F0 - 3F7 14
gerenciador de interrupções gerenciador de interrupções
porta serial prim aria 3F8 - 3FF 12
Tabela 5.1: Alguns exemplos de controladores, os seus enderecos de E/S e seus vetores de interrupc~ao
no IBM PC
vetor de interrupção

interrupções

dispositivo dispositivo dispositivo

Figura 5.5: Esquema b asico de E/S no Unix


Chamadas ioctl permitem o usu ario operar tanto arquivos regulares quanto dispositivos do tipo
caracter. Operac~oes t picas s~ao bloquear um arquivo, desligar o eco do terminal, ajustar taxa de
transfer^encia de modems e rebobinar uma ta.
Para dispositivos do tipo bloco, chamadas read e write seguem o mesmo procedimento. Para tais
dispositivos, na qual o driver tem que iteragir com as rotinas de buer cache, o procedimento e outro.
48 c 1996 DCA/FEEC/UNICAMP 49
Cardozo, Magalh~aes, Faina & Ricarte Entrada e Sada E/S em MS-DOS 5.5]

(d) Worst t (sempre ocupar o maior buraco dispon vel)?


(5) Considere um computador com 1M de mem oria do usu ario que executa um procedimento de com-
pactac~ao de mem oria a cada segundo. Se e preciso 0.5 s para copiar um byte e o tamanho m edio


de um buraco e 40% do tamanho m edio de um segmento, que frac~ao do tempo total de CPU e
Problemas (6)
gasta com compactac~ao?
Usando a tabela de p aginas da Figura 3.5, d^e os enderecos f sicos correspondentes aos enderecos
virtuais:
(1) Um problema cl assico de sincronizac~ao e conhecido como o problema produtor-consumidor. Um (a) 20
processo (produtor) p~oe informac~ao em um bu"er com capacidade limitada, enquanto outro pro- (b) 4100
cesso (consumidor) remove elementos deste bu"er. O bu"er e um recurso compartilhado, e deve ser (c) 8300
controlado de forma que nem o produtor possa inserir elementos quando o bu"er est a cheio e nem
o consumidor retire elementos de um bu"er vazio. Esquematize uma soluc~ao para este problema (7) A listagem a seguir corresponde a um programa em assembly para um computador com p aginas
de sincronizac~ao usando sem aforos. de 512 bytes. O programa est a localizado no endereco 1020, e o stack pointer est a em 8192 (com a
(2) Medidas em um sistema indicam que umprocesso executa em m edia segundos antes de bloquear pilha crescendo para 0). D^e a sequ^encia de p aginas referenciadas por este programa, considerando
T

em uma operaca~o de entrada e sa da. O tempo de chaveamento de contexto e segundos. Para um que cada instruc~ao ocupa 4 bytes (uma palavra). Tanto refer^encias a dados quanto a instruc~oes
S

sistema escalonador usando round-robin com um quantum , dena uma f ormula para a eci^encia devem ser consideradas.
 Load palavra em 6144 no registrador 0
Q

da CPU (raz~ao entre tempo gasto com trabalho u til sobre tempo total) em cada um dos casos
seguintes:  Push registrador 0 na pilha
(a) = 1
Q  Call procedimento em 5120, empilhando endereco de retorno
(b) Q > T  Subtract a constante imediata 16 do stack pointer
(c) S < Q < T  Compare o par^ametro atual com a constante imediata 4
(d) =Q S  Jump se igual para 5152.
(e)  0
Q
(8) Um computador tem quatro page frames. O instante em que foram carregados, o instante da u ltima
(3) Cinco jobs (A, B, C, D, E) chegam a um centro de processamento quase ao mesmo tempo. Eles refer^encia e os estados dos bits R e M s~ao indicados abaixo:
t^em tempos estimados de execuc~ao 10, 6, 2, 4 e 8 minutos, respectivamente, e prioridades (denidas Frame Carreg Refer R M
externamente) 3, 5, 2, 1, e 4, com 5 sendo a prioridade mais alta. Determine o tempo m edio de 0 126 279 0 0
execuc~ao por processo para cada uma das seguintes pol ticas de escalonamento: 1 230 260 1 0
(a) Round robin 2 120 120 1 1
(b) Por prioridades 3 160 280 1 1
(c) FCFS Qual p agina seria substitu da se a pol tica de troca adotada fosse:
(d) Tarefas pequenas primeiro. (a) FIFO?
(4) Considere um sistema de swapping na qual a mem oria tem buracos de tamanhos 10K, 4K, 20K, (b) NRU?
~ sucessivas para segmentos de 12K, 10K e 9K. Que buracos
18K, 7K, 9K, 12K e 15K. H a requisicOes (c) LRU?
s~ao ocupados quando a pol tica de alocac~ao e:
(d) Segunda chance?
(a) First t?
(b) Best t?
(9) Quanto tempo e necess ario para carregar um programa de 64K do disco se o tempo m edio de
posicionamento e 30 ms, o tempo de rotac~ao e 20 ms e as trilhas t^em 32K quando o tamanho das
(c) Next t? p aginas e
50 c 1996 DCA/FEEC/UNICAMP 51
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais

(a) 2K?
(b) 4K?
As p aginas est~ao espalhadas aleatoriamente pelo disco.
(10) Considere um disco de 1G de capacidade com blocos de tamanho 4K. Quanto espaco e necess ario
para manter a ger^encia de espaco livre por mapa de bits? E por lista ligada de blocos? A partir de
qual fator de ocupaca~o uma estrat egia passa a ser mais econ^omica que a outra?
(11) Um vericador de sistema de arquivos construiu a seguinte tabela de consist^encia de blocos:
Em uso: 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0
Livre: 0 0 0 1 1 1 0 0 0 1 0 1 1 0 1

H a algum erro de consist^encia? Em caso armativo, estes erros s~ao graves? Por qu^e?
(12) Um driver de disco r gido recebe requisic~oes para os cilindros 10, 22, 20, 2, 40, 6 e 38, nesta ordem.
O tempo de seek toma 6 ms por cilindro. Qual e o tempo gasto em posicionamento para atender
estas requisic~oes com as pol ticas de (a) FCFS (b) SSF e (c) elevador? Considere que o disco
estava posicionado no cilindro 20, e para o elevador a direc~ao inicial era crescente (para cima).
(13) A rotina de manipulac~ao de interrupca~o de rel ogio em um computador requer 2 ms para executar,
incluindo-se chaveamento de contextos. O rel ogio trabalha a uma frequ^encia de 60 Hz. Que frac~ao
do tempo de CPU e dedicada ao rel ogio?

52 c 1996

Вам также может понравиться