Академический Документы
Профессиональный Документы
Культура Документы
Indice
1 Introduc~ao 1
1.1 O que e um Sistema Operacional? : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1
Sistemas Operacionais 1.2
1.3
1.4
Historia dos Sistemas Operacionais
Denic~oes
Exemplos
: : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
2
4
5
Notas de aula 2 Processos 8
2.1 Conceitos Basicos : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 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 Memoria Virtual : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 21
3.4 Algoritmos de Troca de Pagina : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 24
Texto-base: Introduc~ao a Sistemas Operacionais 3.5 Ger^encia de Memoria no UNIX : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 26
3.6 Ger^encia de Memoria 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 Princpios do Hardware : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 39
5.2 Princpios 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 necessario dada a discrep^ancia entre o tipo de informac~ao manipulada
pelo homem e pela maquina. A maquina opera com cadeias de codigos binarios 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 usuario.
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.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 varios subsistemas tais como processadores, memorias, gramac~ao
discos, terminais, tas magneticas, interfaces de rede, impressoras, e outros dispositivos de E/S. Sob No incio 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 compatveis de produtos. De um lado, havia os computadores cientcos que eram usados para calculos
modo que as tarefas impostas pelos usuarios sejam atendidas da forma mais rapida e conavel possvel. numericos na ci^encia e engenharia. Do outro, haviam os computadores comerciais que executavam tare-
Um exemplo tpico e o compartilhamento da unidade central de processamento (CPU) entre as fas como ordenac~ao de dados e impress~ao de relatorios, sendo utilizados principalmente por instituic~oes
varias tarefas (programas) em sistemas multiprogramados. O sistema operacional e o responsavel pela nanceiras.
distribuic~ao de forma otimizada da CPU entre as tarefas em execuc~ao. A IBM tentou resolver este problema introduzindo a serie System/360. Esta serie consistia de
maquinas com mesma arquitetura2 e conjunto de instruc~oes. Desta maneira, programas escritos para
uma maquina da serie executavam em todas as demais. A serie 360 foi projetada para atender tanto
1.2 Historia dos Sistemas Operacionais aplicac~oes cientcas quanto comerciais.
N~ao foi possvel para a IBM escrever um sistema operacional que atendesse a todos os conitos de
Os sistemas operacionais t^em evoludo com o passar dos anos. Nas proximas sec~oes vamos apresentar requisitos dos usuarios. 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
usuarios. Ele tambem popularizou muitas tecnicas 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 caracterstica apresentada foi a capacidade de ler jobs
Apos 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 decada de 1940 alguns sucessos foram obtidos na construca~o de maquinas de que um job terminasse, o computador iniciava a execuc~ao do seguinte, que ja f^ora lido e armazenado
calculo empregando-se valvulas e reles. Estas maquinas eram enormes, ocupando salas com racks que em disco. Esta tecnica foi chamada spool (simultaneous peripherical operation on line), sendo tambem
abrigavam dezenas de milhares de valvulas (e consumiam quantidades imensas de energia). utilizada para a sada 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 maquina. Toda programac~ao era feita absolutamente em linguagem de maquina, sistemas. O desejo por respostas rapidas abriu caminho para o time-sharing, uma variac~ao da multi-
muitas vezes interligando plugs para controlar func~oes basicas da maquina. Linguagens de programac~ao programac~ao onde cada usuario tem um terminal on-line e todos compartilham uma unica CPU.
eram desconhecidas, assim como sistemas operacionais. Por volta de 1950 foram introduzidos os cart~oes Apos 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 consorcio envolvendo o MIT, a GE e o Laboratorio Bell foi formado com o intuito
de desenvolver um projeto ambicioso para a epoca: um sistema operacional que suportasse centenas de
usuarios on-line. O MULTICS (MULTiplexed Information and Computing Service) introduziu muitas
1.2.2 A Segunda Gerac~ao (1955-1965): Transistores e Processamento em ideias inovadoras, mas sua implementac~ao mostrou-se impraticavel para a decada de sessenta. O projeto
Batch MULTICS inuenciou os pesquisadores da Bell que viriam a desenvolver o UNIX uma decada depois.
A introduc~ao do transistor mudou radicalmente o quadro. Computadores tornaram-se conaveis 1.2.4 A Quarta Gerac~ao (1980-): Computadores Pessoais e
e difundidos (com a fabricac~ao em serie), sendo empregados em atividades multiplas. 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 centmetro
detinham recursos e infraestrutura para empregar os computadores desta gerac~ao. quadrado de silcio, surgiu a era dos computadores pessoais e estac~oes de trabalho. Em termos de arqui-
Estas maquinas 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 usuarios individualmente.
Quando o computador completava o trabalho, o operador devolvia os cart~oes com a impress~ao dos O aumento do potencial destas maquinas criou um vastssimo mercado de software a elas dirigido.
resultados ao programador. Como requisito basico, estes produtos (tanto aplicativos quanto o proprio sistema operacional) necessita-
A maioria dos computadores de 2a gerac~ao foram utilizados para calculos cientcos e de engenharia. vam ser \amigaveis", visando usuarios sem conhecimento aprofundado de computadores e sem intenc~ao
Estes sistemas eram largamente programados em FORTRAN e ASSEMBLY. Sistemas operacionais de estudar muito para utiliza-los. Esta foi certamente a maior mudanca em relac~ao ao OS/360 que
tpicos1 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 multiplos 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 memoria principal simultaneamente.
O proximo desenvolvimento no campo dos sistemas operacionais surgiu com a tecnologia de redes
de computadores: os sistemas operacionais de rede e distribudos. Multiprocessamento Embora a maioria dos computadores disponha de uma unica 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 distribudos pelos processadores da rede. Por exemplo, um computac~ao permitindo que varias instruc~oes fossem executadas ao mesmo tempo. Um computador
arquivo pode ser acessado por um usuario num processador, mesmo que sicamente o arquivo se encontre com multiplos processadores que compartilhem uma memoria principal comum e chamado um multi-
em outro processador. Sistemas operacionais de rede prov^eem ao usuario 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 distribudos 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 intrnsecos de sistemas operacionais tais como escalonamento de interface do usuario com o sistema operacional. Este processo l^e o teclado a espera de comandos,
tarefas e paginac~ao. Por exemplo, num sistema operacional distribudo 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 atraves do interpretador de comandos.
Contrario aos sistemas operacionais de rede que s~ao largamente disponveis comercialmente, sistemas
operacionais distribudos t^em sua utilizac~ao ainda restrita. Chamadas de Sistema (System Calls) Assim como o interpretador de comandos e a interface
entre usuario 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 relogio interno, operac~oes de entrada/sada e comunicac~ao
inter-processos.
Nesta seca~o, alguns termos basicos relativos a sistemas operacionais s~ao denidos. Nos captulos
seguintes, os conceitos associados ser~ao aprofundados. Arquivos Uma das func~oes associadas a sistemas operacionais e esconder os detalhes de hardware do
usuario. O conceito de arquivos oferece um nvel 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 perifericos de entrada e sada (I/O). Alem 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 perifericos) e a aplicac~ao, o sistema operacional pode tambem suportar
(acesso a discos, perifericos, 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 | alem da CPU | n~ao disponveis no momento), ou ativo
(aguardando apenas CPU para executar). Codigo Reentrante Um codigo de um programa e dito ser reentrante quando um segundo processo
pode iniciar a execuc~ao deste codigo mesmo que o codigo 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 unico, sem necessa-
riamente prover forma elaborada de gerenciamento de recursos (CPU, memoria, etc). Sistemas opera-
1.4 Exemplos
cionais multiusuarios permitem acessos simult^aneos ao computador atraves 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- memoria, manipulac~ao de arquivos e de dispositivos de entrada e sada | ser~ao ilustrados sob a optica
riamente em uma operac~ao multiusuario. Operac~ao multiprocessos sem suporte de multiusuarios 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, memoria, sistema de O ja 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 maquina ja sem uso (um minicomputador PDP-7). Esta vers~ao do sistema foi
momentos em que o processo se encontra executando ou bloqueado. Atraves do uso da multiprogramac~ao batizada de UNICS (Uniplexed Information and Computing Service), uma brincadeira com relac~ao ao
e possvel reduzir os perodos 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]
Apos 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 maquinas da famlia PDP-11. Como o o processador 8088 da Intel, com arquitetura interna de 16 bits mas trabalhando em um barramento
esforco de transportar o codigo desenvolvido em assembly era muito grande, o grupo decidiu desenvolver externo de dados de 8 bits. Apesar de que ja existia na epoca o processador 8086, com barramento
tambem uma linguagem de alto-nvel para reescrever o sistema. A primeira linguagem desenvolvida foi externo de 16 bits, os perifericos 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 raciocnio, a IBM procurou uma pequena empresa de Seattle, a Microsoft, para licenciar
alcancou sucesso entre os usuarios de PDP-11, que eram na epoca principalmente universidades. Com uma vers~ao de um interpretador BASIC para o seu computador pessoal. O proprietario da empresa,
o desenvolvimento de um compilador C portatil (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 decada 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, ha o sistema Unix desenvolvido (a partir oferecidos pela maquina (64 KBytes de memoria, sem disco rgido). A recomendac~ao foi adotar o sistema
da vers~ao para o PDP-11) na Universidade da California 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). Varias 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 memoria 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 rapida. 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 nvel 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 disponveis
respondida. Ha ainda hoje distinc~ao entre sistemas produzidos pela Open Software Foundation (OSF, em qualquer loja de eletr^onica e os diagramas esquematicos e codigo basico podiam ser encontrados
um consorcio 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 consorcio liderado pela AT&T), alem de empresas que utilizam suas proprias variac~oes, como o \compatveis" 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 caractersticas 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 memoria 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 memoria fsica) es-
ser escrito em linguagem de alto nvel, o que facilita seu transporte para diferentes plataformas tavam disponveis como RAM, sendo o restante do espaco de enderecamento alocado a outras memorias,
ter interface simples para com o usuario (shell) como ROM e memoria de vdeo. Esta caracterstica 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 hierarquica de arquivos
ter formataca~o de arquivos baseada no conceito de stream (cadeia) de bytes
ter interfaceamento simples e consistente com os dispositivos perifericos
ser multiusuario/multiprogramado
esconder a arquitetura do hardware, permitindo que um programa execute em multiplas platafor-
mas.
1.4.2 MS-DOS
MS-DOS (MicroSoft Disk Operating System), provavelmente o sistema operacional com maior numero
de usuarios, foi desenvolvido de forma n~ao t~ao prossional. Quando a IBM decidiu lancar seu compu-
tador pessoal no incio da decada 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 codigo que o
manipula o recurso compartilhado e uma regi~ao cr
tica.
O codigo que implementa uma regi~ao crtica deve obedecer a uma serie de restric~oes:
dois processos n~ao podem estar simultaneamente executando regi~oes crticas referentes a um
Captulo 2 mesmo recurso compartilhado (garantia de mutua exclus~ao)
a garantia de mutua exclus~ao deve ser independente da velocidade relativa dos processos ou numero
Processos de CPUs
nenhum processo executando fora de regi~oes crticas pode bloquear outro processo
nenhum processo deve esperar um tempo arbitrariamente longo para poder executar uma regi~ao
crtica.
2.1 Conceitos Basicos Varios algoritmos de controle visando garantir as propriedades acima foram propostos. Estes al-
No captulo 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: crtica: espera ocupada (usando a CPU durante a espera) ou bloqueada (n~ao competindo pela CPU).
Todo algoritmo de mutua 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 crtica. Quando esta func~ao retorna, o
se um processo for executado novamente com os mesmos dados, ele passara precisamente pela processo esta apto a executar a regi~ao crtica. No nal da execuc~ao da regi~ao crtica, 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 fornecera o mesmo resultado. regi~oes crticas 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 mutua 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 usuario, 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 perodos da ordem de
milesimos de segundos, dando ao usuario a impress~ao de paralelismo. Nesta sec~ao analisaremos varias propostas para garantir exclus~ao mutua nas regi~oes crticas, n~ao
A ger^encia de atividades paralelas e difcil 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 esta tentanto acessar uma regi~ao crtica 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 executaveis 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 metodo de desabilitar todas as interrupc~oes
tualmente, cada processo tem uma CPU virtual propria. A posse da CPU real e passada periodicamente quando se esta entrando na regi~ao crtica, e reabilita-las ao sair. Esta proposta n~ao e muito atrativa,
de processo a processo. pois da ao processo usuario 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 nucleo 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 maquina | ou seja, processos n~ao devem ser programados desabilitar interrupc~oes durante algumas instruc~oes, enquanto esta atualizando variaveis internas. As-
com considerac~oes intrnsecas de tempo. sim, desabilitar interrupc~oes e uma soluc~ao util para o sistema operacional, mas n~ao para processos de
Neste captulo, 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 variavel global LOCK, inicialmente igual a 0. Quando um processo deseja
entrar em sua regi~ao crtica 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 alem da executa a regi~ao crtica. Se for 1, ele espera ate que seja 0. Embora pareca uma boa soluc~ao, o que ira
CPU. Em muitos casos, o recurso so pode atender a uma requisica~o por vez, e deve atend^e-la do princpio ocorrer se dois processos testam uma variavel de valor 0 ao mesmo tempo?
8 c 1996 DCA/FEEC/UNICAMP 9
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Processos Comunicaca~o Interprocessos 2.3]
Altern^ancia Estrita Esta proposta dene uma variavel TURN que indica qual processo tem o direito a caracterstica de mutua exclus~ao, pois eles devem garantir que apenas um processo pode estar ativo1
de acesso a regi~ao crtica | ou seja, esta variavel indica quem deve esperar e quem pode entrar na sec~ao no monitor em um dado instante.
crtica. Se TURN for , o processo pode entrar na regi~ao crtica. 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 (modulo o numero total de processos). Este algoritmo garante a mutua 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 mutua exclus~ao, t^em aplicac~ao restrita
necessite aguardar o acesso a um recurso compartilhado por todos os demais ate 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 ideias de variaveis LOCK e TURN, 2.3 Comunicac~ao Interprocessos
criando-se tambem uma soluc~ao por software para o problema. Ela evita os problemas individuais das Muitos autores consideram os mecanismos de exclus~ao mutua apresentados acima como formas de
soluc~oes anteriores, mas e pouco utilizada na pratica 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 mutua 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
variaveis LOCK cujo teste e atualizaca~o s~ao at^omicos (em outras palavras, a instruc~ao TSL e indivisvel entre os processos.
mesmo frente a interrupc~oes de hardware ).
Passagem de Mensagem Este metodo 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 mutua 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 crtica \ocupada". S~ao mais ecientes que os anteriores, de envio e recepc~ao de mensagens. Mensagens s~ao estruturas cujo conteudo e interpretado unicamente
posto que processos bloqueados n~ao competem pela CPU. pelos processos emissor e receptor da mensagem.
Sleep e Wakeup Um dos metodos mais simples de implementac~ao da espera bloqueada e a utilizac~ao Compartilhamento de Dados Processos podem se comunicar atraves do compartilhamento de uma
do par sleep e wakeup. sleep e uma chamada de sistema que muda o estado de um processo em area 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 mutua exclus~ao (tipicamente semaforos) ou tornando
desbloqueia atraves da chamada wakeup. O metodo e o mesmo que emprega variaveis LOCK operadas as instruc~oes de leitura e gravac~ao at^omicas. Duas primitivas s~ao necessarias, STORE (que grava dados na
por instruc~oes TSL, exceto que quando a variavel 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 crtica e o responsavel 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 (atraves 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, atraves de uma rotina CALL RPC. Rece-
usuario, mas atraves variaveis do tipo semaforos, que contam o numero 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 da por troca de mensagens, que cam transparentes para o programador.
semaforo 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 semaforo. Se um ou mais processos estiverem bloqueados sobre
aquele semaforo, 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 semaforos s~ao at^omicas ou indivisveis, implementadas com instruc~oes TSL. Quando mais de um processo esta ativo (pronto para executar), cabe ao sistema operacional decidir
qual tera a posse da CPU. A parte do sistema operacional que toma esta decis~ao e chamada escalonador
Monitores Semaforos tornam simples a proteca~o de recursos compartilhados, mas n~ao garantem e o algoritmo utilizado e o algoritmo de escalonamento.
que n~ao va haver deadlocks : a troca na ordem da chamada das primitivas pode gerar uma situac~ao de Varios criterios devem ser observados por um algoritmo de escalonamento:
bloqueio mutuo. Monitores s~ao uma proposta de mecanismo de sincronizac~ao de alto nvel. Um monitor progresso: garantir que cada processo tenha acesso a CPU
e uma colec~ao de procedimentos, variaveis 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 usuarios, outros processos do nucleo 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 maquina, 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 areas de dado e pilha, mas
vaz~ao: maximizar o numero 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 atraves de chamadas de sistema.
E importante observar que alguns desses objetivos s~ao contraditorios. Se um algoritmo favorece Do ponto de vista pratico, um processo em UNIX e uma entidade criada pela chamada fork, que
o escalonamento de processos interativos certamento estara 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 apos o fork.
Escalonamento Round Robin Este e o mais antigo e simples algoritmo de escalonamento. Cada Todo processo tem um unico pai mas pode ter varios 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 atraves 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 tambem e passada a outro processo. O tamanho do sistema (boot). Apos criar o processo 1, conhecido como init, o processo 0 torna-se o processo swapper.
quantum e crtico 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
variaveis globais e estruturas de dados, os valores dos registros de maquina 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 conteudo das suas pilhas de usuario e nucleo. Quando o
sos s~ao de igual import^ancia. Certas aplicaco~es, como controle de processos industriais, demandam nucleo decide executar um novo processo realiza-se uma mudanca de contexto.
um algoritmo de escalonamento com prioridades | desta forma, e possvel tratar adequadamente si- Quando da realizac~ao de uma mudanca de contexto o nucleo salva informac~oes sucientes de modo a
tuac~oes de emerg^encia. O princpio 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 usuario para o modo nucleo, o nucleo salva as informac~oes
que processos de alta prioridade executem indenidamente, o escalonador pode diminuir a prioridade necessarias para que o processo possa retornar ao modo usuario e continuar a execuc~ao. Neste ultimo
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 usuario executando no modo nucleo pronto ou bloqueado (dormindo). O nucleo 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 nucleo" para o modo \bloqueado". O nucleo tambem eleva o nvel de execuca~o do
proxima classe por quatro quanta, e assim por diante. Quando um processo utiliza todos os quanta a processador quando da execuc~ao de regi~oes crticas de modo a impedir interrupc~oes que possam provocar
ele alocados, o mesmo e interrompido e sua classe tem a prioridade diminuda. Este algoritmo diminui inconsist^encias em suas estruturas de dados. O escalonador de processo realiza, periodicamente, a
o numero de comutac~oes da CPU entre os processos ativos. \preempc~ao" de processos executando no modo usuario 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 medio de execuc~ao e conhecido a priori. O algoritmo dene que as tarefas menores devem ser
executadas primeiro. Prova-se que esta poltica minimiza o tempo medio 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 usuarios sistema e iniciado e controla a interac~ao entre entre o sistema e o usuario. Entretanto, ha uma diferenca
(n~ao entre os processos). O algoritmo dene que se existirem usuarios ligados ao sistema, cada usuario
n fundamental entre os modelos de execuc~ao nos dois sistemas. Como MS-DOS n~ao suporta multipro-
devera 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 usuario ja disp^os desde que entrou no sistema, e do instante de tempo que cada usuario ligou-se sobre a maquina. Ao contrario do que acontece em Unix, n~ao e possvel executar processos indepen-
ao sistema. dentes simultaneamente em uma mesma maquina. 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 codigo binario na primeira posic~ao apos o PSP.
Modo Usuário
chamada de sistema
ou interrupção retorno 4. Iniciar a execuc~ao do programa.
Escalonamento da CPU tambem e simples. Como so ha um processo ativo, este processo retem 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
processos em memoria, a CPU devera 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.
A parte do sistema operacional que gerencia a memoria e chamada de gerenciador de memoria. partição 4 partição 4
Dentre outras tarefas, o gerenciador de memoria monitora quais partes da memoria est~ao em uso e 700K
quais est~ao disponveis aloca e libera memoria para os processos gerencia a permuta de processos entre
memoria principal e secundaria (quando a memoria principal n~ao e capaz de abrigar todos os processos). partição 3 partição 3
Sistemas de ger^encia de memoria podem ser divididos em duas classes: aqueles que mant^em os pro-
cessos xos em memoria primaria e aqueles que movem processos entre a memoria principal e secundaria
(tipicamente disco) durante a execuc~ao, neste caso baseando-se em tecnicas de swapping (permuta) ou 400K
partição 1
a memoria, podendo este fazer uso de toda a maquina. Se a memoria for insuciente, o programa Figura 3.1: Organizac~oes com partic~oes xas: (a) Partic~oes de memoria xa com las de entrada
simplesmente tem sua execuc~ao rejeitada. separadas para cada partic~ao (b) partic~ao de memoria 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 usuario 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 memoria e o executa. Quando o processo termina, o sistema operacional reassume a CPU a la para a maior partic~ao esta vazia, mas a la para a menor partic~ao esta cheia, como no caso
e espera por um novo comando para carregar um outro processo na memoria ja liberada pelo primeiro. das partic~oes 1 e 4 na Figura 3.1(a). Uma organizac~ao alternativa e manter uma la unica 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 indesejavel gastar uma partic~ao grande com um processo pequeno, uma estrategia
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 ultimo algoritmo discrimina os processos pequenos, quando e usualmente desejavel dar a eles o melhor
com multiplos usuarios ela e proibitiva. Multiprogramac~ao, alem de suportar processos simult^aneos de tratamento, n~ao o pior.
diversos usuarios, tambem permite utilizar melhor a CPU durante acessos de um processo a dispositivos
de entrada e sada. 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 conteudo 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
estara desocupada esperando pelo acesso ao disco durante 80% do tempo. Num sistema operando em batch, a organizac~ao da memoria 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 memoria, mais a CPU estara ocupada e n~ao ha raz~ao para usar algo
se a media dos processos utilizam CPU somente 20% do tempo que permanecem na memoria, com 5 mais complicado. Com time-sharing, a situac~ao e diferente: ha normalmente mais usuarios que memoria
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 necessario mover temporariamente processos para disco. para compactar toda a memoria. 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 memoria.
para a memoria. Um ponto negativo neste metodo de ger^encia e saber o quanto de memoria alocar para um processo.
Outro aspecto fundamental nesta abordagem de ger^encia e como controlar onde ha espaco disponvel Se os processos s~ao criados com um tamanho xo que permanece constante ao longo de sua execuca~o,
na memoria. As duas estrategias 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 necessario ao tamanho do processo, nem mais nem
listas encadeadas, que ser~ao descritas na sequ^encia. menos.
Na pratica, os segmentos de dados e pilha de um processo tendem a crescer durante a sua execuca~o.
Alocac~ao din^amica de memoria 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 tpicos de crescimento destes segmentos. Se o processo necessitar
Em princpio, um sistema que utiliza swapping pode ser baseado em partico~es xas. Sempre que expandir sua memoria 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 esta adjacente a outro processo,
sua partic~ao em memoria. Na pratica, partic~oes xas s~ao pouco atrativas quando a area de memoria e o primeiro devera ser movido para um buraco grande o suciente para armazena-lo, ou um ou mais
escassa pois muita memoria 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 memoria. Se o processo n~ao
sendo, um novo sistema de ger^encia de memoria foi desenvolvido, chamado ger^encia com partic~oes puder crescer na memoria e a area do disco reservada para abrigar processos permutados estiver cheia,
variaveis. o processo deve ser terminado.
Quando partic~oes variaveis s~ao usadas, o numero e tamanho de processos na memoria varia dinami-
camente. A Figura 3.2 mostra como partic~oes variaveis trabalham. Inicialmente, somente o processo A 3.2.2 Ger^encia com Mapa de Bits
esta na memoria. 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 memoria e dividida em unidades de alocac~ao, desde um pequeno numero
inicia. de palavras ate 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
memoria 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
Figura 3.2: Organizac~ao com swapping: mudancas na alocac~ao de memoria com processos chegando e
P: processo
B: buraco
deixando a memoria (regi~oes escuras representam espaco n~ao usado) (c)
Figura 3.3: Organizac~ao com mapa de bits: (a) parte da memoria com 5 processos e 3 buracos (as
A principal diferenca entre partic~oes xas da Figura 3.1 e partico~es variaveis da Figura 3.2 e que marcas mostram as unidades de alocac~ao da memoria e as regi~oes escuras est~ao livres) (b) mapa de
o numero, 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 numero xo de partic~oes aumenta a utilizac~ao da memoria, mas tambem
complica a tarefa de alocar e liberar a memoria, bem como gerencia-la. O tamanho de cada unidade de alocac~ao e uma importante caracterstica de projeto. Para pequenas
E possvel combinar todos os buracos disjuntos num unico espaco disponvel 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 memoria. Esta tecnica e conhecida como compactaca~o da memoria. Ela n~ao t~ao pequena como 4 bytes, cada 32 bits de memoria requer somente 1 bit no mapa (3% da memoria).
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 sera pequeno, mas memoria consideravel
putador com 1 MByte de memoria 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 multiplo 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 memoria) prov^e uma maneira simples de gerenciar Todos os quatro algoritmos podem melhorar seus desempenhos mantendo-se em separado listas
memoria, uma vez que o tamanho do mapa de bits depende somente do tamanho da memoria 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 memoria, o gerenciador de memoria deve pesquisar no mapa diminuic~ao de velocidade quando se trata de liberar memoria, 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 esta em se
mapas de bits s~ao evitados na pratica. determinar possveis fus~oes.
3.2.3 Ger^encia com Listas Encadeadas 3.2.4 Alocac~ao de Espaco para Permuta
Outra maneira de gerenciar a memoria e manter uma lista de alocac~oes e segmentos de memoria Os algoritmos apresentados acima mant^em o rastreamento da memoria principal. Assim, quando
livre, onde um segmento e um processo ou um buraco entre dois processos. A memoria da Figura 3.3(a) processos s~ao permutados do disco para a memoria, o sistema pode alocar espaco em memoria para eles.
e representada na mesma gura (c) como uma lista encadeada de segmentos. Cada entrada da lista Em alguns sistemas, quando um processo esta na memoria, 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 memoria, espaco deve ser alocado na area de disco para abriga-lo (portanto,
tamanho do bloco), e um ponteiro para a proxima 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 metodo ger^encia de espaco para permuta s~ao os mesmos usados para ger^encia da memoria 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 memoria da lugar a outro
Quando processos e buracos s~ao mantidos na lista ordenada por enderecos, varios algoritmos podem processo, ele e colocado no espaco em disco a ele previamente alocado. Quando um processo termina,
ser usados para alocar memoria, a m de criar ou permutar processos. Tais algoritmos s~ao evocados o seu espaco para permuta em disco e desalocado. Esta tecnica e mais eciente que a anterior pois
quando o gerenciador de memoria necessita um segmento de memoria de bytes.
M uma unica alocac~ao de espaco em disco por processo e necessaria (lembre-se que um processo pode
ser permutado varias 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.
ate 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 memoria
n~ao usada (de tamanho ; ). First-t e um algoritmo rapido pois naliza a busca o mais cedo
N M
M
3.3 Memoria Virtual
possvel. Desde o incio da informatica, o tamanho dos programas vem superando a quantidade de memoria
disponvel para abriga-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 memoria pelo sistema operacional.
posic~ao da lista onde o ultimo buraco foi alocado. Da proxima 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 metodo que foi desenvolvido para deixar o particionamento do programa a cargo do sistema opera-
cional veio a ser conhecido como memoria virtual. A ideia basica 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 memoria fsica disponvel. O sistema operacional
proximo de . E um algoritmo lento e cria na memoria buracos pequenos que dicilmente ser~ao
M mantem aquelas partes do programa correntemente em uso na memoria principal e o resto no disco.
alocados. Entretanto, para grande, o best-t aumenta as chances de se encontrar na lista um buraco
M Memoria virtual pode tambem trabalhar em um sistema com multiprogramac~ao. De fato, memoria
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 esta 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 memoria, o programa e bloqueado, aguardando
rst t alocara o buraco 5, e o best t o buraco 18. E/S. Ate que a operac~ao de E/S seja completada, a CPU pode ser direcionada para outro processo.
Algoritmo Quick-t Este algoritmo mantem 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 memoria virtual usa uma tecnica 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 memoria 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 possvel fus~ao e uma operac~ao custosa. Se fus~oes n~ao forem feitas, a memoria Estes enderecos gerados pelos programas s~ao chamados enderecos virtuais e formam o espaco virtual
rapidamente se fragmentara em um grande numero de pequenos buracos n~ao utilizaveis. de enderecamento do processo. Em computadores sem memoria 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 memoria e causa uma palavra da memoria fsica com mesmo endereco espaço de espaço de
ser lida ou escrita. Quando memoria virtual e usada, os enderecos de memoria n~ao v~ao diretamente
endereçamento endereçamento
virtual (tabela) real (físico)
para o barramento de memoria. Ao inves disso, eles v~ao a unidade de ger^encia de memoria (Memory 0 0
Management Unit, MMU), onde um hardware especco mapeia os enderecos virtuais nos enderecos da 2
1
0-4K
1
memoria fsica 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 ate 64 KBytes. Estes s~ao os enderecos virtuais. 14 : página de 4 Kbytes
Este computador, entretanto, tem somente 32 KBytes de memoria fsica, assim, embora programas de
X
15
64K possam ser escritos, eles n~ao podem ser carregados para a memoria na sua totalidade para serem X
executados. Uma copia completa de um nucleo de imagem do programa, acima de 64K, deve estar
presente no disco os pedacos podem ser trazidos para a memoria pelo sistema a medida que se tornem Figura 3.5: Relac~ao entre endereco virtual e endereco fsico de memoria, dada pela tabela de paginas
necessarios.
O espaco de enderecamento virtual e dividido em unidades chamadas paginas. As unidades cor- ser~ao responsaveis por ter de lembrar onde foram posicionadas areas de dados com func~oes muitas vezes
respondentes na memoria fsica s~ao chamadas page frames. As paginas e page frames s~ao sempre do distintas | por exemplo, para codigo e para tabelas de dados. Alem disto, o crescimento de uma area
mesmo tamanho. Neste exemplo elas s~ao de 4K, mas tamanhos de paginas de 512 bytes, 1K, e 2K s~ao alem 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 memoria fsica, temos 16 paginas Para algumas aplicac~oes, um espaco enderecavel bidimensional e mais conveniente. Esta alternativa
e 8 page frames. Transfer^encias entre memoria e disco s~ao sempre feitas em unidades de paginas. e suportada atraves do conceito de segmentac~ao, onde posic~oes de memoria 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 memoria sob um
reconhece que este endereco cai na pagina 0 (0 a 4095), o qual, de acordo com seu mapeamento e a page ponto de vista mais proximo da logica do programador | por exemplo, um segmento pode conter pro-
frame numero 2 (8192 ate 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 memoria 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 fsicos ocorre de maneira similar a traduc~ao
entre 0 e 4095 em endereco fsico de 8192 a 12287. de enderecos virtuais. O sistema deve manter uma tabela mapeando segmentos para os enderecos da
Uma tentaiva de acessar uma pagina n~ao mapeada provoca uma falta de pagina (page fault). Neste memoria. 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 conteudo de volta no disco. Ele ent~ao sobre o comprimento de um segmento tambem deve ser mantida. O fato de se trabalhar com partic~oes de
busca a pagina referenciada para o page frame liberado, atualiza o mapa, e retorna a instruca~o inter- tamanhos variaveis implica que apos um tempo de uso a fragmentac~ao ira ocorrer, e pode ser necessario
rompida. aplicar mecanismos de compactac~ao.
Uma forma de reduzir o problema de fragmentac~ao mantendo-se o princpio de segmentac~ao e com-
3.3.2 Segmentac~ao binar este esquema com paginac~ao | ou seja, cada segmento e dividido em paginas de tamanho xo,
que s~ao trazidas para a memoria de acordo com a demanda.
Paginaca~o prov^e uma tecnica para implementaca~o de um grande espaco enderecavel numa memoria Atraves do uso de segmentos e possvel compartilhar trechos de codigo que s~ao comuns entre diversas
fsica limitada. Este espaco de enderecamento e unidimensional, pois a posic~ao de memoria e identicada aplicac~oes. Isto e util, por exemplo, em sistemas de interfaces gracas, onde grandes bibliotecas s~ao
por um unico valor que vai de 0 ate um endereco maximo. Esta caracterstica implica que programadores responsaveis pela ger^encia de sistemas de janelas. Alem disto, o uso de segmentos facilita tambem 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 areas da memoria. para distinguir paginas que n~ao foram referenciadas recentemente daquelas que tenham sido. Quando
uma falta de pagina ocorre, o sistema operacional examina todas as paginas 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 pagina ocorre, o sistema operacional tem que escolher uma pagina para remover
da memoria a m de dar lugar a que sera trazida do disco. Se a pagina a ser removida foi modicada Classe 1 (01) n~ao referenciada, modicada.
enquanto estava na memoria, ela deve ser reescrita no disco para manter a copia em disco atualizada. Classe 2 (10) referenciada, n~ao modicada.
Se, todavia, a pagina n~ao tiver sido alterada, a copia do disco ja esta atualizada, n~ao sendo necessaria
sua reescrita. A pagina a ser lida e simplesmente superposta a pagina retirada. Classe 3 (11) referenciada, modicada.
Apesar de ser possvel escolher uma pagina aleatoria para dar lugar a pagina em demanda, o desem-
penho do sistema e melhorado se for escolhida uma pagina pouco usada (referenciada). Se uma pagina Ainda que as paginas na classe 1 parecam, a primeira vista, impossveis de existir, elas ocorrem quando
muito usada e removida, ela provavelmente tera de ser trazida de volta em breve, resultando um esforco as paginas da classe 3 t^em seu bit R zerado pela interrupc~ao do relogio. Interrupc~oes de relogio n~ao
adicional. Algoritmos ecientes de troca de pagina visam minimizar este esforco. zeram o bit M porque esta informac~ao e necessaria para determinar se uma pagina tera 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 pagina aleatoria da classe n~ao vazia
de numerac~ao mais baixa. A estrategia implcita neste algoritmo e que e melhor remover uma pagina
O melhor algoritmo de troca de paginas e facil de descrever mas impossvel de implementar. No modicada que n~ao foi referenciada pelo menos no ultimo tick de relogio, que uma pagina n~ao modicada
momento que ocorre uma falta de pagina, um certo conjunto de paginas esta na memoria. Uma dessas mas muito usada. As caractersticas principais do NRU e que ele e facil de entender, eciente de se
paginas sera referenciada em muitas das proxima instruco~es (a pagina contendo a instruc~ao). Outras implementar, e gera um desempenho que, enquanto certamente n~ao otimo, e geralmente tido como
paginas n~ao ser~ao referenciadas antes de 10, 100, ou talvez 1000 instruco~es. Cada pagina pode ser rotu- adequado.
lada com o numero de instruc~oes que ser~ao executadas antes que a pagina seja inicialmente referenciada.
O algoritmo da pagina otima simplesmente diz que a pagina com o maior rotulo deve ser removida, 3.4.3 Troca da Pagina FIFO
adiando-se o maximo possvel a proxima falta de pagina.
O unico problema com este algoritimo e que ele n~ao e realizavel. No momento da falta de pagina, 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 pagina sera referenciada. No entanto, uma mantem uma lista de todas as paginas correntes na memoria, sendo a pagina da cabeca da lista a
aplicaca~o a posteriori deste algoritmo e util para comparar o desempenho de algoritmos realizaveis com mais velha e a pagina do m a instalada mais recentemente. Em uma falta de pagina, a pagina da
o melhor possvel. cabeca e removida e a nova pagina acrescentada no m da lista.
Uma simples modicac~ao no FIFO para evitar o problema da retirada de uma pagina muito usada
3.4.2 Troca da Pagina N~ao Recentemente Usada (NRU) e o algoritmo Segunda Chance. A ideia e primeiro examinar a pagina mais velha como uma vtima
potencial. Se seu bit R e 0, a pagina e trocada imediatamente. Se o bit R e 1, o bit e zerado e a pagina
Para permitir que o sistema operacional colete estatsticas sobre quais paginas est~ao sendo usadas e e colocada no m da lista de paginas, como se estivesse acabado de chegar a memoria. Ent~ao a pesquisa
quais n~ao est~ao, muitos computadores com memoria virtual t^em 2 bits associados a cada pagina. Um continua. O que o Segunda Chance faz e procurar por uma pagina velha que n~ao tem sido referenciada
bit, R ou bit de refer^encia, e ativado pelo hardware em qualquer leitura ou escrita de pagina. O outro no tick de relogio anterior. Se todas as paginas tiverem sido referenciadas, o algoritmo degenera-se e
bit, M ou bit de modicac~ao, e ativado pelo hardware quando ha alteraca~o no conteudo de uma pagina. torna-se simplesmente um FIFO.
Uma vez que um bit foi ativado, ele permanece ativado ate 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 atraves das rotinas
de tratamento de faltas de pagina 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 paginas
de tabela de paginas s~ao marcadas como ausentes na memoria. T~ao logo uma pagina seja referenciada, muito usadas nas ultimas instruc~oes provavelmente ser~ao usadas nas proximas instruc~oes. Da mesma
uma falta de pagina ocorrera. O sistema operacional ent~ao ativa o bit R (em sua tabela interna), muda forma, paginas que n~ao t^em sido usadas por um longo tempo provavelmente continuar~ao sem uso. Esta
a entrada de tabela de paginas para apontar para a pagina correta com modo READ ONLY e reinicia a observac~ao sugere um algoritmo realizavel: quando ocorre uma falta de pagina, retira-se a pagina que
instruca~o. Se a pagina e subsequentemente escrita, uma falta de proteca~o da pagina ocorrera, pemitindo n~ao tem sido usada por um tempo longo. Esta estrategia e chamada de Menos Recentemente Usada
ao sistema operacional ativar o bit M e mudar o modo da pagina 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 realizavel, seu custo e alto. Para implementac~ao com-
um processo e iniciado, ambos os bits de pagina para todas estas paginas s~ao declarados 0 pelo sistema pleta do LRU, e necessario manter uma lista ligada de todas as paginas em memoria, com a pagina mais
operacional. Periodicamente (a cada interrupca~o de relogio | tipicamente 20 mseg), o bit R e zerado, recentemente usada no incio 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 memoria. Encontrar a pagina 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 incio representa um esforco n~ao desprezvel. pela aus^encia de pagina cujo endereco foi referenciado na instruc~ao. Assim que a pagina e trazida para
Manipular uma lista ligada a toda instruc~ao e proibitivo, ate mesmo em hardware. Entretanto, a memoria, a instruc~ao interrompida e reiniciada.
ha 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 metodo requer equipar o hardware com um contador de 64 bits, C, que quantidade de memoria fsica disponvel, sendo limitado apenas pelo capacidade de enderecamento
e automaticamente incrementado apos cada instruc~ao. Alem disso, cada entrada na tabela de paginas virtual da MMU. O nucleo mantem quatro estruturas principais para ns de ger^encia de memoria:
deve tambem ter um campo grande o bastante para conter o contador. Apos cada refer^encia de memoria, tabela de paginas, tabela de frames, descritores de blocos e tabela de uso de swap.
o valor corrente de C e armazenado na entrada da tabela de paginas para a pagina referenciada. Quando A tabela de paginas tem como entrada o numero da pagina. Deve-se notar que esta tabela tem
ocorre uma falta de pagina, o sistema operacional examina todos os contadores na tabela de paginas dimens~ao xa pois a quantidade de paginas e igual a dimens~ao fsica de memoria dividida pelo tamanho
para achar o menor deles. A pagina correspondente e a menos recentemente usada. da pagina. Cada entrada na tabela possui campos descrevendo, entre outras informac~oes, o endereco
Agora vejamos um segundo algoritmo LRU, tambem em hardware. Para uma maquina com page fsico de memoria que contem os dados referentes a pagina, a idade da pagina (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 pagina esta ativa na memoria), 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 pagina, tais como o endereco fsico de memoria que
coluna o valor 0. Em algum instante, a linha na qual o valor binario e menor, e a menos recentemente
k contem os dados referentes a pagina, um contador de refer^encia indicando quantos processos comparti-
usada, a linha na qual o valor e o proximo superior e a segunda menos recentemente usada, e assim por lham esta pagina em memoria, e o numero do bloco alocado a pagina.
diante. Finalmente, a tabela de uso de swap e acessada tendo como ndice o dispositivo de swap e numero
do bloco neste dispositivo. Esta tabela armazena apenas um contador de refer^encia indicando quantas
Simulac~ao do LRU em Software paginas 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 realizaveis, eles s~ao dependentes de hardware especial, e beneciar a eci^encia do esquema de paginac~ao, diminuindo o numero de consultas as tabelas.
s~ao de pouco uso para o projetista de sistema operacional construindo um sistema para uma maquina O processo paginador remove da memoria paginas 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 necessaria. tempo. Quando executado, o processo vai montando uma lista de paginas 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 pagina, como descrito na Sec~ao 3.4.2. Uma
requer um contador em software associado a cada pagina, inicialmente zero. Em cada tick de relogio, pagina e candidata a permuta quando seu contador de refer^encia foi zerado ha um determinado numero
o sistema operacional pesquisa todas as paginas na memoria. Para cada pagina, o bit R, que e 0 ou 1, de passadas do processo paginador. Se uma pagina 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 pagina tem sido referenciada. Quando uma falta de pagina ocorre, a pagina 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. Paginas muito página pronta
para swap
(e n~ao mais) refenciadas no comeco da execuc~ao de um programa permanecem com um contador alto
ate 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 pagina, a pagina de menor contador e removida. E obvio que a pagina página em
que n~ao tenha sido referenciada por, digamos, quatro ticks de relogio tera quatro zeros signicativos
swap-in disco swap-out
em seu contador, tendo assim um valor mais baixo que o contador de uma pagina que tenha sido Figura 3.6: Fila de paginas candidatas a permuta
referenciada nos quatro ultimos ticks de relogio.
Uma diferenca entre LRU e Aging e que no ultimo os contadores t^em um numero nito de bits (ti-
picamente 8). Portanto, n~ao podemos classicar as paginas segundo refer^encias anteriores a capacidade O processo paginador e ativado quando a quantidade de memoria disponvel atinge um limite mnimo.
do contador. Paginas s~ao ent~ao removidas da memoria e gravadas em disco ate que um limiar de memoria livre seja
atingido.
Ao gravar uma pagina em disco, o processo paginador apaga o bit de validade da pagina 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 unico processo estava utilizando a pagina), o nucleo 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 pagina numa lista de paginas livres. O conteudo de uma pagina na lista de paginas livres continua
processos como poltica de ger^encia de memoria. Vers~oes atuais empregam o esquema de paginac~ao por valido ate que o sistema associe a pagina a outro processo. Mesmo na lista de paginas livres, uma pagina
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 referencia-la. Neste alocac~ao desejado | rst t, best t ou last t | e outro para indicar se a area de memoria superior
caso, a pagina e removida da lista de paginas livres, tendo seu bit de validade reativado. deve ou n~ao ser includa na busca por um bloco de memoria livre.
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 usuario
identicar o tipo de conteudo no arquivo. Em outros, o sistema operacional tem regras rgidas em relac~ao
Captulo 4 aos nomes | por exemplo, \o sistema n~ao executara um arquivo a menos que sua extens~ao seja .BIN."
Diretorios, os quais em muitos casos s~ao tambem arquivos, permitem organizar os arquivos de um
sistema. Um diretorio contem tipicamente um registro por arquivo. Sistemas primitivos admitiam um
Sistema de Arquivos unico diretorio compartilhado por todos os usuarios, ou um unico diretorio por usuario. Os sistemas
operacionais modernos permitem um numero arbitrario de diretorios por usuario (em geral, formando
uma hierarquia).
Quando o sistema de arquivos e organizado como uma arvore de diretorios, algum meio se faz
necessario para especicar nomes de arquivos. Dois metodos s~ao comumente empregados. No primeiro
A parte mais visvel de um sistema operacional e o seu sistema de arquivos. Programas aplicativos metodo, cada arquivo e identicado pela sequ^encia de diretorios desde o diretorio raiz ate o arquivo
utilizam o sistema de arquivos (atraves de chamadas de sistema) para criar, ler, gravar e remover (caminho absoluto). Nomes absolutos para caminhos sempre comecam na raiz e s~ao unicos. Uma outra
arquivos. Usuarios utilizam interativamente o sistema de arquivos (atraves de shell ) para listar, alterar forma de especicar nomes de arquivos e atraves 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 diretorio de trabalho (ou diretorio corrente). Um usuario pode designar um diretorio como
fortemente determinada pela interface, estrutura e conabilidade de seu sistema de arquivos. diretorio corrente. Neste caso, todos os caminhos s~ao referenciados a partir do diretorio corrente.
Do ponto de vista do usuario, 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 usuarios denir objetos chamados arquivos, que podem armazenar programas, dados, ou de transfer^encia esta 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 enderecavel 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 sada 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 codigo especial maior interesse do projetista. Duas estrategias s~ao possveis para armazenagem em um arquivo com n
para explicitar o tipo de periferico. bytes: bytes consecutivos do disco s~ao alocados ou o arquivo e dividido em um numero de blocos n~ao
n
Alguns sistemas operacionais suportam maior independ^encia dos dispositivos de armazenagem que necessariamente contguos1.
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 necessario 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, ate mesmo arquivos de 1
o dispositivo fsico. No MS-DOS, o usuario 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 tera muitos blocos, o que pode prejudicar o desempenho de acesso. E compromisso
A maior parte dos sistemas operacionais suportam varios 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, diretorios e arquivos especiais. Arquivos regulares contem dados e programas do usuario. em um disco com setor de 512 bytes, ent~ao o sistema de arquivo sempre ira ler ou escrever em dois
Diretorios permitem identicar arquivos atraves de nomes simbolicos (sequ^encia de caracteres ASCII). setores consecutivos, e trata-los como uma unidade indivisvel.
Arquivos especiais s~ao usados para especicar perifericos 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 estrategia 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 estrategia, a posic~ao inicial onde o arquivo esta armazenado no disco e seu 321 486 872
tamanho s~ao as unicas informac~oes necessarias para permitir o acesso ao seu conteudo. A transfer^encia 342
123
12
43
543
321
dos dados, uma vez que o posicionamento inicial ja tenha sido completado, e rapido, pois envolve requer 415 481 13 0100001100000011
Entretanto, armazenar um arquivo como uma sequ^encia contgua de bytes apresenta um problema (b)
obvio que e o crescimento do arquivo, uma ocorr^encia muito comum | o arquivo provavelmente tera 410 654 597
que ser movido no disco. Embora o problema seja o mesmo que ocorre em ger^encia de memoria por 312 318 873
Figura 4.1: Organizac~ao de blocos livres: (a) blocos livres armazenados em lista ligada (b) um mapa
Listas Ligadas de Blocos Quando a estrategia de alocaca~o em blocos e adotada, uma primeira de bits.
possibilidade de se conectar os blocos de um mesmo arquivo e atraves da manutenca~o de apontadores
de um bloco para o proximo. Assim, em cada bloco a primeira palavra indica qual o proximo bloco da
lista, e o restante e a area de dados. A grande vantagem desta estrategia e evitar a fragmentac~ao que 4.2.2 Estrutura de Diretorio
ocorre no uso de alocac~ao contgua. No entanto, acessos a posico~es arbitrarias 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 necessarias para prosseguir com as
do dado desejado. operac~oes de acesso ao arquivo. Estas informac~oes adicionais s~ao mantidas nos arquivos diretorios.
A estrategia de organizac~ao de arquivos em diretorios mais simples e manter um diretorio unico.
Listas Ligadas com Indice Nesta estrategia, os apontadores para proximo bloco s~ao mantidos em Assim, a localizac~ao de um arquivo reduz-se a procura neste unico diretorio. Encontrado o registro do
um ndice (ou tabela) que e trazido a memoria principal. Desta forma, percorrer uma lista de blocos arquivo, tem-se o numero de blocos do disco, posto que estes s~ao armazenados no proprio registro. Se
para alcancar uma posica~o arbitraria torna-se uma operaca~o rapida, que e realizada sem acessos ao o arquivo utiliza mais blocos de disco que o permitido no registro, o arquivo tera registros adicionais
disco. A desvantagem deste metodo e que todo o ndice deve ser alocado a memoria principal, o que no diretorio. Informac~oes usualmente mantidos s~ao nome, tipo, usuario (durante a busca, apenas os
pode ocupar um espaco consideravel de memoria para discos com grande capacidade. registros pertencentes ao usuario corrente s~ao considerados), tamanho e contador de bloco (indica qual
bloco esta em uso). Campos adicionais cont^em os numeros 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 estrategia e a organizac~ao de sistemas de diretorio em arvore (hierarquicos). Neste caso, todo
mantem os enderecos em disco dos blocos que comp~oem o arquivo. Quando um arquivo e aberto pela diretorio (exceto o raiz) e um arquivo. Quando um arquivo e aberto, o sistema de arquivos recebe o
aplicac~ao, o seu no ndice e lido para a memoria. 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 proprio i-node, de forma que o acesso a pequenos arquivos e eciente. Os ultimos enderecos de arquivo localiza o diretorio 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 (diretorio) que e o primeiro componente do caminho, e neste diretorio procura pelo proximo
blocos. Em geral, ha um apontador para enderecos indiretos simples (o bloco apontado contem enderecos componente, ate 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 contem enderecos de blocos pesquisados de forma id^entica, apenas partindo do diretorio de trabalho em vez de partir-se do diretorio
que apontam para blocos de dados) e outro para enderecos indiretos triplos (para encontrar o endereco raiz. Todos os diretorios t^em registros para . e .., criados juntamente com o diretorio, para indicar
do bloco de dados tr^es nveis dendice t^em de ser acessados). Apenas arquivos muito grandes precisariam respectivamente o diretorio corrente e o diretorio pai. Nenhum mecanismo especial e necessario para
usar este ultimo nvel de acesso indireto. manipular estes nomes.
N~ao raro, e conveniente que um mesmo arquivo (ou diretorio) pertenca simultaneamente a diferentes
Ger^encia de Espaco Livre Outra quest~ao importante para o projetista e como manter a informac~ao usuarios. A associac~ao entre um diretorio e um arquivo pertencente a outro diretorio e chamada de
sobre blocos livres no disco | informac~ao que sera 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 metodos 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
possvel. Uma outra tecnica de ger^encia de espaco livre e o mapa de bits. Um disco com blocos n exemplo, digamos que um arquivo X em um diretorio D1 deve tambem ser visto por um diretorio D2.
necessita de um mapa de bits com bits. Blocos livres s~ao representados por 1s no mapa de bits blocos
n O link simbolico sera uma entrada no diretorio 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 nos 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 diretorio armazena apenas o apontador para o no ndice do arquivo comparti- livres resulta no incremento do segundo contador. Se o sistema de arquivo for consistente, cada bloco
lhado, e o no ndice deve manter um contador de quantas refer^encias s~ao feitas ao arquivo (de modo a tera o valor 1 em um contador e 0 no outro. Contudo, em caso de falha, pode detectar-se as seguintes
garantir consist^encia apos 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 tambem 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 tambem 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 tera 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 utilitario e alocar
que o usuario informe (ou que o sistema de arquivos detecte) os blocos defeituosos. Estes blocos s~ao um bloco livre, copiar o conteudo do bloco duplicado nele, e inserir a copia 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 sera
informado para permitir ao usuario examinar a falha.
Backups Mesmo com uma estrategia 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 magnetica, 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 ate 4 Gigabytes). Para discos de grande capacidade, salvar o conteudo Todo arquivo no Unix System V contem um unico i-node. O i-node possui as informac~oes necessarias
inteiro em tas e inconveniente e consome muito tempo. Uma alternativa e o backup incremental. Em para um processo acessar um arquivo, tais como: proprietario 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 ultimo backup completo. Num outro esquema, pelo seu nome e, atraves deste, o nucleo determina o i-node do arquivo.
mais eciente, copia-se apenas aqueles arquivos que foram alterados desde o ultimo backup. Para Um i-node existe estaticamente no disco e o nucleo realiza a sua leitura para a memoria quando
implementar este metodo, o horario da ultima duplicaca~o para cada arquivo deve ser mantida no disco. necessita manipula-lo. O i-node no disco contem 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 topico envolvendo conabilidade e a consist^encia do sistema de arquivos. Muitos sistemas de tipo do arquivo: regular, diretorio, 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 crtico se alguns dos blocos que n~ao foram escritos, s~ao blocos de i-nodes, instantes de acesso ao arquivo: ultima modicac~ao, ultimo acesso e ultima modicac~ao ocorrida
blocos de diretorio, 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
utilitarios desenvolvidos para este m. Tais programas s~ao executados sempre que o sistema e iniciado, numero 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 nvel de blocos, o utilitario constroi 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 utilitario 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 numeros 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
identificador do proprietário
grupo do proprietário
tamanho do arquivo
write: escreve dados num arquivo (de um bu"er em memoria).
data da criação
nando com o endereco equivalente ao tamanho do arquivo menos 1. O nucleo 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 numero de bloco no i-node ) e continua ate o numero de bloco logico 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 usuario para localizar os blocos do disco associados ao arquivo. O mapeamento do nome nos i-nodes 3 10
esta associado a forma como o sistema de diretorio encontra-se organizado. FREE 11
A estrutura de diretorio usada no Unix e extremamente simples. Cada entrada contem o nome do EOF 12
arquivo e o numero do seu i-node. Todos os diretorios do Unix s~ao arquivos e podem conter um numero EOF 13
arbitrario destas entradas. Quando um arquivo e aberto, o sistema deve, atraves do nome do arquivo, EOF 14
localizar os seus blocos no disco. Caso o nome do arquivo seja relativo, o nucleo acessa primeiro o i-node BAD 15
associado ao diretorio corrente.
Cada arquivo no Unix e identicado por um descritor de arquivos (um numero inteiro). Descri- Figura 4.3: Estrutura da FAT
tores de arquivos identicam arquivos univocamente a nvel de processo, isto e, dois arquivos abertos
pelo mesmo processo possuem descritores necessariamente diferentes. Rotinas do nucleo do sistema Cada entrada no diretorio 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 ultima
arquivos s~ao: atualizac~ao ocupam dois bytes cada. Os dois ultimos 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 sada (E/S)
do computador, emitindo comandos para os dispositivos, atendendo interrupc~oes e manipulando erros.
Deve tambem prover uma interface entre os dispositivos e o resto do sistema, que seja simples e facil
de usar (se possvel, a interface deve ser a mesma para todos os dispositivos). O codigo de entrada
e sada representa uma frac~ao signicativa do total do sistema operacional. A forma como o sistema
operacional gerencia E/S e o objeto deste captulo.
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 tambem 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 obtem 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 proprio
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, ja que o sistema operacional v^e o Os objetivos gerais do software de E/S s~ao faceis de serem estabelecidos. A ideia basica e organizar
controlador, n~ao o dispositivo. Normalmente, minicomputadores e microcomputadores usam um barra- o software como uma serie de camadas, com as mais baixas escondendo peculiaridades do hardware e
mento unico (Figura 5.1) para comunicac~ao entre CPU e os controladores. Mainframes frequentemente as mais altas mostrando-se simples para o usuario.
usam um modelo diferente, no qual multiplos 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 possvel
impressora escrever programas que usem arquivos gravados em disquete ou em disco rgido, sem a necessidade de
interface
controlador-dispositivo modicar o programa para cada tipo de dispositivo. De prefer^encia, deve ser possvel utilizar o programa
sem recompila-lo.
CPU memória
controlador
de disco
controlador
de impressora
outros
controladores Relacionado com a independ^encia do dispositivo esta 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 caracterstica 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, memoria, controladores e dispositivos de E/S o mais proximo possvel do hardware. Se o controlador encontra um erro, ele deve tentar corrig-lo, se
possvel. 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 nvel. 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 sncronas (blocos) e assncronas (manipuladas por interrupc~ao). Muitos
setor, e nalmente o checksum ou o codigo de correca~o de erro. O pre^ambulo e escrito quando o disco dispositivos de E/S s~ao assncronos: a CPU inicia a transfer^encia e se ocupa de outras atividades ate
e formatado, e contem o numero 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 assncrona, mas para
A tarefa do controlador e converter a lista serial de bits em um bloco de bytes e realizar alguma o usuario ela se apresenta como transfer^encia de blocos (o que torna muito mais simples a programac~ao).
correc~ao de erro necessaria. 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 usuarios ao mesmo tempo.
mantido no controlador. Apos o checksum ter sido vericado e o bloco declarado livre de erro, ele pode Outros dispositivos, como impressoras, devem ser dedicados a um unico usuario ate que este nalize a
ent~ao ser copiado para a memoria principal. operac~ao. A inclus~ao de dispositivos dedicados introduz uma variedade de problemas, como o deadlock.
O controlador para o terminal CRT tambem trabalha como um dispositivo serial de bits e em baixo Sistemas operacionais devem manipular os dispositivos de maneira a evitar estes problemas.
nvel. Ele l^e da memoria 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 tambem gera os sinais para o feixe CRT quatro camadas:
fazer o retrace horizontal apos ele ter terminado de esquadrinhar a linha, como tambem sinais para
fazer o retrace vertical apos a tela toda ter sido esquadrinhada. Se n~ao tivessemos 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 numero de caracteres por linha e o numero de linhas por 2. Drivers de dispositivos.
tela, deixando o controlador tomar conta do direcionador do feixe de raios catodicos.
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 nvel do usuario.
40 c 1996 DCA/FEEC/UNICAMP 41
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais Entrada e Sada Princpios do Software 5.2]
A manipulac~ao de erros tambem e feita nesta camada. Um erro tpico e causado por um bloco do camada funcionalidade
disco ruim e que n~ao pode mais ser lido. Apos o driver tentar ler o bloco varias 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
usuario, e suciente informar o erro para o mesmo. Entretanto, se o erro ocorreu numa area crtica, o
sistema operacional deve apresentar uma mensagem e, eventualmente, terminar sua execuc~ao. software independente
do dispositivo
identifição, proteção, bloqueio
"bufferização"
inteiros executando fora do nucleo. 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 contem 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 sera 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, ha 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 sada e feita por um procedimento da biblioteca. Figura 5.2: Nveis do sistema de E/S e func~oes principais de cada nvel
Nem todo o software de E/S utilizado pelo usuario 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 facil permitir que setores no anel externo do disco sejam sicamente maiores que aqueles no anel interno. O espaco extra
algum processo do usuario abra o arquivo especial associado a uma impressora, se o processo mantiver n~ao e aproveitado.
o arquivo aberto por varias horas ent~ao nenhum outro processo podera imprimir. Um aspecto que tem importante implicac~oes no disk driver e a possibilidade do controlador fazer bus-
Ao inves disso, o que e feito e criar um processo especial, chamado daemon, e um diretorio 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 unico processo que tem permiss~ao de usar dispositivo, o controlador pode iniciar uma busca em outro. Muitos controladores podem tambem 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 usuarios, o problema de se ter pode ler ou escrever em dois dispositivos no mesmo tempo. (Ler ou escrever requer que o controlador
alguem monopolizando-os e eliminado. mova bits na faixa de microsegundos, assim uma transfer^encia usa muito de sua capacidade computa-
Spooling e tambem 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 diretorio de spooling da rede. tempo medio 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 nveis e func~oes principais de cada nvel.
5.3.2 Software do Disco
5.3 Discos Nesta sec~ao veremos algumas caractersticas genericas 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 memoria rotativa, tal como os discos rgidos cabeca de leitura/escrita), e o tempo de transfer^encia. Para muitos discos, o tempo de seek domina.
e exveis. 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 estrategia e
cabecas empilhadas verticalmente. As trilhas s~ao divididas em setores, com um numero de setores na possvel: e provavel que enquanto o braco esta executando um seek na metade de uma requisica~o,
circunfer^encia, tipicamente entre 8 a 32. Todos os setores cont^em o mesmo numero de bytes, embora uma outra requisic~ao de disco pode ter sido gerada por outro processo. Muitos disk drivers mantem
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 numero 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 esta 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 numero 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 atraves 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 numero de setores
correntes sob a cabeca. Com um desses controladores, uma outra otimizac~ao e possvel. Se duas ou
Quando a requisic~ao corrente termina (cilindro 11), o disk driver tem que escolher qual sera a mais requisic~oes para o mesmo cilindro est~ao pendentes, o driver pode emitir a requisic~ao para o setor
proxima requisic~ao. Usando FCFS, ele ira para o cilindro 1, ent~ao para o 36, e assim por diante. Este que passara sob a cabeca do proximo cilindro. Note que quando trilhas multiplas 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 proxima 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 varios 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 esta 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 sera necessario (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 proxima transfer^encia
da Figura 5.3 esta sendo processada. Por exemplo, se, apos chegar ao cilindro 16, uma nova requisic~ao pode ser iniciada no dispositivo que ja esta no cilindro correto. Se nenhum dos bracos esta na posic~ao
para o cilindro 8 esta presente. Esta requisica~o tera prioridade sobre o cilindro 1. Se a requisic~ao for desejada, o driver deve emitir novos seeks sobre os dispositivos que ja completaram a transfer^encia,
para o cilindro 13, o braco ira para o 13, ao inves de ir para o cilindro 1. Com disco muito carregados, o e esperar ate a proxima 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 media mais demoradas, colocando o objetivo
de mnima 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 ate 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 da atraves 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 proxima 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 ha 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 sera para a proxima 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 da atraves de um buer cache. A raz~ao para tal e que tais dispositivos uma operac~ao de leitura ou escrita e requisitada, o nucleo 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 rapidos e n~ao necessitam caso leitura, ou contendo os dados para escrita.
deste recurso.
A Figura 5.5 mostra o esquema basico de entrada e sada no Unix. Quando um processo executa
uma chamada de sistema open, por exemplo, o nucleo 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. Atraves de uma tabela de chaveamento Assim como Unix, MS-DOS tambem suporta dispositivos de E/S atraves de arquivos especiais de
de dispositivo, o nucleo obtem o endereco da rotina de open para este dispositivo. Uma vez iniciado tipo bloco ou caracter. Parte dos drivers esta incorporada no arquivo io.sys, mas o usuario pode instalar
o dispositivo, um campo na tabela de arquivos e adicionado, sendo o ndice deste campo (descritor) drivers adicionais atraves de comandos device= no arquivo cong.sys.
retornado ao processo. Uma chamada close faz com que o nucleo acesse o respectivo procedimento Todo driver em MS-DOS e composto de duas partes de codigo, 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 variavel 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 fsicos, muitos t^em enderecos pre-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 logico
associado ao controlador. Alguns IBM PC-compatveis usam diferentes enderecos de E/S.
tabela de chaveamento tabela de chaveamento
dispositivo endereco E/S vetor int.
relogio 040 - 043 8
(dispositivos orientados a caracter) (dispositivos orientados a bloco)
interrupções
de um buraco e 40% do tamanho medio de um segmento, que frac~ao do tempo total de CPU e
Problemas (6)
gasta com compactac~ao?
Usando a tabela de paginas da Figura 3.5, d^e os enderecos fsicos correspondentes aos enderecos
virtuais:
(1) Um problema classico 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 esta 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 paginas
de sincronizac~ao usando semaforos. de 512 bytes. O programa esta localizado no endereco 1020, e o stack pointer esta em 8192 (com a
(2) Medidas em um sistema indicam que umprocesso executa em media segundos antes de bloquear pilha crescendo para 0). D^e a sequ^encia de paginas referenciadas por este programa, considerando
T
em uma operaca~o de entrada e sada. 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 formula para a eci^encia devem ser consideradas.
Load palavra em 6144 no registrador 0
Q
da CPU (raz~ao entre tempo gasto com trabalho util 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 ultima
(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 medio de 0 126 279 0 0
execuc~ao por processo para cada uma das seguintes polticas 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 pagina seria substituda se a poltica de troca adotada fosse:
(d) Tarefas pequenas primeiro. (a) FIFO?
(4) Considere um sistema de swapping na qual a memoria 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. Ha requisicOes (c) LRU?
s~ao ocupados quando a poltica de alocac~ao e:
(d) Segunda chance?
(a) First t?
(b) Best t?
(9) Quanto tempo e necessario para carregar um programa de 64K do disco se o tempo medio 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? paginas e
50 c 1996 DCA/FEEC/UNICAMP 51
Cardozo, Magalh~aes, Faina & Ricarte Sistemas Operacionais
(a) 2K?
(b) 4K?
As paginas est~ao espalhadas aleatoriamente pelo disco.
(10) Considere um disco de 1G de capacidade com blocos de tamanho 4K. Quanto espaco e necessario
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 estrategia 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
Ha algum erro de consist^encia? Em caso armativo, estes erros s~ao graves? Por qu^e?
(12) Um driver de disco rgido 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 polticas 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 relogio em um computador requer 2 ms para executar,
incluindo-se chaveamento de contextos. O relogio trabalha a uma frequ^encia de 60 Hz. Que frac~ao
do tempo de CPU e dedicada ao relogio?
52 c 1996