You are on page 1of 204

Notas sobre

Sistemas Operacionais

Peter Jandl Jr.

ii Jandl, Peter, Jr. Notas sobre Sistemas Operacionais/Peter Jandl Jr. Apostila 1. Sistemas operacionais: Computadores : Processamento de dados : 005.43 2004 Histrico o 1.1 Fev2004 Reviso Geral. Threads. Escalonamento por prioridades. Esa calonamento com mltiplas las. u 1.0 Ago1999 Verso Inicial. a

(C) 2004 Prof. Peter Jandl Jr. Verso 1.1 Fevereiro/2004 a A Este documento foi preparado utilizando L TEX 2 .

iii

O homem pode se tornar culto pela cultura dos outros, mas s pode se tornar sbio o a pelas prprias experincias. o e (Provrbio Arabe) e

iv

Sumrio a
Prefcio a 1 Introduo ca 1.1 Denindo os sistemas operacionais . 1.2 Objetivos de um sistema operacional 1.3 Breve histrico . . . . . . . . . . . . o 1.3.1 O in cio . . . . . . . . . . . . 1.3.2 Dcada de 1940 . . . . . . . . e 1.3.3 Dcada de 1950 . . . . . . . . e 1.3.4 Dcada de 1960 . . . . . . . . e 1.3.5 Dcada de 1970 e 1980 . . . . e 1.3.6 Dcada de 1990 . . . . . . . . e 1.3.7 Dcada de 2000 . . . . . . . . e 1.4 Tipos de sistemas operacionais . . . 1.5 Recursos e ambiente operacional . . 1 3 3 6 7 7 7 9 11 13 14 15 15 17 21 21 22 23 24 24 25 28 29 30 30 31 32 32 33 33 36

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

2 Processos 2.1 O que um processo computacional . . . . e 2.1.1 Subdiviso dos processos . . . . . . a 2.2 Ocorrncia de processos . . . . . . . . . . . e 2.2.1 Processos seqenciais . . . . . . . . . u 2.2.2 Processos Paralelos . . . . . . . . . . 2.3 Estado dos processos . . . . . . . . . . . . . 2.4 PCB e tabelas de processos . . . . . . . . . 2.4.1 PCB . . . . . . . . . . . . . . . . . . 2.4.2 Tabelas de processos . . . . . . . . . 2.5 Operaes sobre processos . . . . . . . . . . co 2.6 Funes do ncleo de sistema operacional . co u 2.7 Competio por recursos . . . . . . . . . . . ca 2.7.1 Regies cr o ticas . . . . . . . . . . . . 2.7.2 Cdigo reentrante . . . . . . . . . . o 2.8 Protocolos de acesso . . . . . . . . . . . . . 2.8.1 Soluo com instrues TST ou TSL ca co v

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

vi 2.8.2 Situaes de corrida . . . . . . . . . . . co 2.8.3 Requisitos de um protocolo de acesso . . A soluo de Dekker . . . . . . . . . . . . . . . ca A soluo de Peterson . . . . . . . . . . . . . . ca Deadlocks . . . . . . . . . . . . . . . . . . . . . 2.11.1 Diagramas de processos e recursos . . . 2.11.2 Condies para ocorrncia de deadlocks co e 2.11.3 Recuperao de deadlocks . . . . . . . . ca 2.11.4 Preveno de deadlocks . . . . . . . . . ca 2.11.5 Estados seguros e inseguros . . . . . . . 2.11.6 Algoritmo do banqueiro . . . . . . . . . Comunicao de processos . . . . . . . . . . . . ca 2.12.1 Buers e operaes de sleep e wakeup . co 2.12.2 Semforos . . . . . . . . . . . . . . . . . a 2.12.3 Memria compartilhada . . . . . . . . . o 2.12.4 Outros mecanismos de IPC . . . . . . . Threads . . . . . . . . . . . . . . . . . . . . . . 2.13.1 Modelos de multithreading . . . . . . . . 2.13.2 Benef cios do uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

SUMARIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 40 40 43 45 46 49 50 51 51 53 53 54 57 58 60 62 64 64 67 68 69 69 71 72 73 74 76 77 79 80 83 84 87 89 89 92 95 97 99 101 103

2.9 2.10 2.11

2.12

2.13

3 Escalonamento de Processos 3.1 Objetivos do escalonamento . . . . . . . . . . . . . . . . . . 3.2 N veis de escalonamento . . . . . . . . . . . . . . . . . . . . 3.3 Escalonamento preemptivo e no preemptivo . . . . . . . . a 3.4 Qualidade do escalonamento . . . . . . . . . . . . . . . . . . 3.5 Algoritmos de escalonamento . . . . . . . . . . . . . . . . . 3.5.1 Escalonamento FIFO (First In First Out) . . . . . . 3.5.2 Escalonamento HPF (Highest Priority First) . . . . 3.5.3 Escalonamento SJF (Shortest Job First) . . . . . . . 3.5.4 Escalonamento HRN (Highest Response-Ratio Next) 3.5.5 Escalonamento SRT (Shortest Remaining Time) . . 3.5.6 Escalonamento RR (Round-Robin) . . . . . . . . . . 3.5.7 Escalonamento MQ (Multilevel Queues) . . . . . . . 3.5.8 Escalonamento MFQ (Multilevel Feedback Queues) . 3.6 Comparao dos algoritmos de escalonamento . . . . . . . . ca 4 Gerenciamento de Memria o 4.1 Primeiras consideraes . . . . . . . . . co 4.2 Multiprogramao . . . . . . . . . . . . ca 4.3 Organizao da memria . . . . . . . . . ca o 4.4 Denio de gerenciamento de memria ca o 4.5 Criao de programas . . . . . . . . . . ca 4.5.1 Espaos lgicos e f c o sicos . . . . . 4.5.2 Compiladores (compilers) . . . .

. . . . . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

SUMARIO 4.5.3 Ligadores (linkers) . . . . . . . . . . . 4.5.4 Carregadores (loaders) . . . . . . . . . 4.5.5 Relocadores (swappers) . . . . . . . . Memria virtual . . . . . . . . . . . . . . . . o Modelos de gerenciamento de memria . . . . o 4.7.1 Monoprogramado com armazenamento 4.7.2 Particionamento xo . . . . . . . . . . 4.7.3 Particionamento varivel . . . . . . . . a 4.7.4 Paginao . . . . . . . . . . . . . . . . ca 4.7.5 Segmentao . . . . . . . . . . . . . . ca 4.7.6 Paginao versus Segmentao . . . . ca ca 4.7.7 Paginao e segmentao combinadas ca ca 4.7.8 Tabelas de pginas . . . . . . . . . . . a 4.7.9 Algoritmos de troca de pginas . . . . a . . . . . . . . . . . . . . . real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

vii 107 110 111 113 118 118 120 122 123 128 131 132 134 139 143 143 145 145 148 150 152 152 153 154 155 156 160 165 167 171 173 178 181 184 186 192 195

4.6 4.7

5 Gerenciamento de I/O 5.1 Mdulos de I/O . . . . . . . . . . . . . . . . . . . . . . . o 5.2 Operao de Mdulos de I/O . . . . . . . . . . . . . . . ca o 5.2.1 I/O Programado . . . . . . . . . . . . . . . . . . 5.2.2 I/O com interrupes . . . . . . . . . . . . . . . co 5.2.3 I/O com Acesso Direto ` Memria (DMA) . . . a o 5.3 Tipos de dispositivos de E/S . . . . . . . . . . . . . . . 5.3.1 Conexo de Dados dos I/O . . . . . . . . . . . . a 5.3.2 Tipos de Transferncia de I/O . . . . . . . . . . e 5.3.3 Conexes ponto a ponto e multiponto com I/Os . o 5.4 Dispositivos perifricos t e picos . . . . . . . . . . . . . . . 5.4.1 Unidades de disco . . . . . . . . . . . . . . . . . 5.4.2 Escalonamento de disco . . . . . . . . . . . . . . 5.4.3 Unidades de ta . . . . . . . . . . . . . . . . . . 5.4.4 Terminais . . . . . . . . . . . . . . . . . . . . . . 5.5 Sistemas de arquivos . . . . . . . . . . . . . . . . . . . . 5.5.1 Arquivos . . . . . . . . . . . . . . . . . . . . . . 5.5.2 Diretrios . . . . . . . . . . . . . . . . . . . . . . o 5.5.3 Servios do sistema operacional . . . . . . . . . . c 5.5.4 Implementao Lgica . . . . . . . . . . . . . . . ca o 5.5.5 Implementao F ca sica . . . . . . . . . . . . . . . 5.5.6 Fragmentao . . . . . . . . . . . . . . . . . . . . ca Bibliograa

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

viii

SUMARIO

Prefcio a
Este texto representa a condensao do material apresentado durante as ca aulas da disciplina Sistemas Operacionais, ministradas ao longo de meu trabalho no magistrio nos cursos de graduao em Anlise de Sistemas e e ca a Engenharia da Computao. ca Como o prprio t o tulo indica, so notas de aulas, organizadas num roteiro a bastante tradicional, acompanhadas de diagramas, desenhos, comentrios e a exemplos que tem como objetivo maior facilitar o entendimento do tema, to a importante dentro da Cincia da Computao assim como em outros cursos e ca correlatos, tais como Engenharia da Computao, Anlise de Sistemas e ca a Sistemas de Informao. Desta forma, no se pretendeu colocar como um ca a estudo completo e detalhado dos sistemas operacionais, to pouco substituir a a vasta bibliograa existente, mas apenas oferecer um texto de referncia, e onde sempre que poss so citadas outras fontes bibliogrcas. vel a a O Cap tulo 1 apresenta os Sistemas Operacionais, alguns conceitos importantes, um breve histrico de sua evoluo e uma classicao de seus o ca ca tipos. O Cap tulo 2 discute os processos computacionais, sua ocorrncia e e as principais questes associadas ao seu controle. o No Cap tulos 3 falamos sobre o escalonamento de processos enquanto que o Cap tulo 4 trata o gerenciamento de memria. Finalmente o Cap o tulo 5 aborda o gerenciamento de dispositivos perifricos. e Que este material possa ser util aos estudantes desta disciplina, des pertando o interesse no tema e principalmente motivando um estudo mais profundo e amplo. O Autor

PREFACIO

Cap tulo 1

Introduo ca
Neste cap tulo vamos apresentar os sistemas operacionais, seus objetivos e um breve histrico de sua evoluo. Tambm proporemos uma forma o ca e simples para sua classicao e forneceremos alguns outros conceitos imporca tantes.

1.1

Denindo os sistemas operacionais

Desde sua criao, os computadores sempre foram sistemas de elevada sostica cao em relao ao estgio tecnolgico de suas pocas de desenvolvimento. ca ca a o e Ao longo dos ultimos 50 anos evolu ram incrivelmente e, embora tenham se tornado mais comuns e acess veis, sua popularizao ainda esconde sua ca tremenda complexidade interna. Neste sentido, os sistemas operacionais, em termos de suas origens e desenvolvimento, acompanharam a prpria evoluo dos computadores. Deitel o ca nos traz a seguinte denio de sistema operacional: ca Vemos um sistema operacional como os programas, implementados como software ou rmware, que tornam o hardware utilizvel. O hardware oferece capacidade computacional bruta. Os a sistemas operacionais disponibilizam convenientemente tais capacidades aos usurios, gerenciando cuidadosamente o hardware a para que se obtenha uma performance adequada. [DEI92, p. 3] Nesta denio surgem alguns novos termos explicados a seguir. O hardca ware o conjunto de dispositivos eltricos, eletrnicos, pticos e eletromece e o o a nicos que compe o computador, sendo a mquina f o a sica propriamente dita. O hardware, aparentemente identicvel pelos dispositivos ou mdulos que a o compe um sistema computacional, determina as capacidades deste sistema. o O software o conjunto de todos os programas de computador em operao e ca num dado computador. J o rmware representado por programas espea e ciais armazenados de forma permanente no hardware do computador que 3

CAP ITULO 1. INTRODUCAO

permitem o funcionamento elementar e a realizao de operaes bsicas ca co a em certos dispositivos do computador, geralmente associadas a alguns perifricos e a execuo de outros programas tambm especiais. e ca e Na Figura 1.1 podemos identicar o hardware como sendo os dispositivos f sicos, sua microprogramao e o rmware existente neste computador. ca Como exemplos de dispositivos existentes num sistema podemos citar os circuitos integrados de memria, as unidades de disco ex ou r o vel gido e o processador do sistema, sendo este ultimo um dispositivo microprogramado. O rmware geralmente vem acondicionado em circuitos de memria no o a voltil (ROM, PROM ou EPROM) sendo os programas ali gravados escritos a geralmente em linguagem de mquina e destinados a execuo de operaes a ca co especiais tal como a auto-vericao inicial do sistema (POST ou power on ca self test) e a carga do sistema operacional a partir de algum dispositivo adequado (bootstrap). O software deste sistema ou os programas do sistema so representados a pelo sistema operacional e todos os seus componentes (bibliotecas de funes co e programas utilitrios) alm de todos os outros programas acessrios do sisa e o tema, tais como editores de texto, programas grcos, compiladores, intera pretadores de comando (shells), aplicativos de comunicao e ferramentas ca de administrao e manuteno do sistema. ca ca Os programas de aplicao so todos os demais softwares, desenvolvidos ca a com nalidades particulares, que so utilizados num dado sistema computaa cional sob suporte e superviso do sistema operacional, tais como planilhas a eletrnicas, programas de correio eletrnico, navegadores (browsers), jogos, o o aplicaes multim co dia etc.

Figura 1.1: Hardware, software, rmware e o SO Por si s, o hardware do computador dicilmente poderia ser utilizado o diretamente e mesmos assim, exigindo grande conhecimento e esforo para c execuo de tarefas muito simples. Neste n ca vel, o computador somente cae

1.1. DEFININDO OS SISTEMAS OPERACIONAIS

paz de entender programas diretamente escritos em linguagem de mquina. a Alm disso, cada diferente tipo de computador possui uma arquitetura ine terna distinta que pode se utilizar de diferentes processadores que por sua vez requisitaro diferentes linguagens de mquina, tornando penosa e cana a sativa a tarefa dos programadores. Desta forma, adequada a existncia de uma camada intermediria entre e e a o hardware e os programas de aplicao que pudesse no apenas oferecer ca a um ambiente de programao mais adequado mas tambm um ambiente de ca e trabalho mais simples, seguro e eciente. Um sistema operacional um programa, ou conjunto de programas, e especialmente desenvolvido para oferecer, da forma mais simples e transparente poss vel, os recursos de um sistema computacional aos seus usurios, a controlando e organizando o uso destes recursos de maneira que se obtenha um sistema eciente e seguro. Stallings, ao tratar dos objetivos e funes dos sistemas operacionais, co arma que: Um sistema operacional um programa que controla a execuo e ca dos programas de aplicao e atua como uma interface entre o ca usurio do computador o hardware do computador. Um sisa tema operacional pode ser pensado como tendo dois objetivos ou desempenhando duas funes: convenincia, pois faz o sistema co e computacional mais conveniente de usar; e ecincia, pois pere mite que os recursos do sistema computacional sejam usados de maneira eciente. [STA96, p. 222] Silberschatz utiliza praticamente a mesma denio, indicando que um ca sistema operacional um ambiente intermedirio entre o usurio e o harde a a ware do computador no qual programas podem ser executados de forma conveniente e eciente [SG00, p. 23]. Davis [DAV91], Shay [SHA96] e outros tambm apresentam idias semelhantes. e e Tanenbaum, por sua vez, dene um sistema operacional atravs de uma e o tica ligeiramente diferente: O mais fundamental de todos os programas do sistema o sise tema operacional que controla todos os recursos computacionais e prov uma base sobre a qual programas de aplicao podem ser e ca escritos. [TAN92, p. 1] Os sistemas operacionais so uma camada de software que envolve os a componentes f sicos de um computador, intermediando as interaes entre co estes componentes e os usurios ou os programas dos usurios. Neste sentido a a apropriado considerar que os sistemas operacionais podem ser vistos como e uma extenso do prprio computador ou como gerenciadores dos recursos a o existentes neste computador.

CAP ITULO 1. INTRODUCAO

Ao invs de lidar com a complexidade inerente ao hardware, o sistema e operacional oferece a funcionalidade dispon no hardware atravs de uma vel e interface de programao orientada a operao de cada tipo de recurso, ca ca proporcionado no apenas transparncia, mas tambm isolando o hardware a e e das aplicaes. Assim temos que o comportamento do sistema operacional co como uma extenso do prprio hardware ou como uma mquina virtual, e a o a que possui caracter sticas diferentes da mquina f a sica real. Imaginando que mltiplos programas em execuo desejem fazer uso dos u ca diversos recursos do hardware, no razovel que o controle destes recursos a e a seja transferido aos programadores pois isto acrescentaria uma sobrecarga desnecessria a cada programa, sem que fosse poss otimizar o uso dos rea vel cursos. Alm disso, erros ou omisses, mesmo que involuntrias, poderiam e o a provocar erros de dimenses catastrcas, acarretando perda de grandes o o quantidades de dados, violaes importantes de segurana etc. O sistema co c operacional deve se encarregar de controlar os recursos do computador, garantindo seu uso adequado, buscando tambm otimizar tal uso objetivando e um melhor ecincia do sistema, assim sendo, o sistema operacional se come porta como gerente dos recursos do computador.

1.2

Objetivos de um sistema operacional

A despeito do tipo, sosticao ou capacidades do computador, um sistema ca operacional deve atender aos seguintes princ pios: 1. Oferecer os recursos do sistema de forma simples e transparente; 2. Gerenciar a utilizao dos recursos existentes buscando seu uso ecica ente em termos do sistema; e 3. Garantir a integridade e a segurana dos dados armazenados e procesc sados no sistema e tambm de seus recursos f e sicos. Alm destes objetivos, um sistema operacional tambm deve proporcie e onar uma interface adequada para que ele possa ser utilizado pelos seus usurios. Historicamente as primeiras interfaces dos sistemas operacionais a eram baseadas em um conjunto de palavras-chave (comandos) e mensagens de dilogo que permitiam a execuo de tarefas e a comunicao entre hoa ca ca mem (o operador) e mquina. Estes comandos e mensagens deniam a a Interface Humano-Computador (IHC) daquele sistema. Atualmente as interfaces baseadas em modo texto esto em desuso, sendo substitu a das por interfaces grcas mais modernas e simples que buscam facilitar a utilizao a ca do computador atravs de sua aparncia atraente e uso intuitivo. e e

1.3. BREVE HISTORICO

1.3

Breve histrico o

O desenvolvimento dos sistemas operacionais pode ser melhor observado e compreendido quando acompanhamos a histria do prprio computador. o o No breve resumo que segue pretende-se enfocar os principais eventos e movimentos relacionados ao desenvolvimento destas mquinas. a

1.3.1

O in cio

Por volta de 1643, Blaise Pascal projeta e constri uma mquina de calcular o a mecnica, que deu origem as calculadores mecnicas utilizadas at meados a a e do sculo XX. No nal do sculo XVIII, Joseph-Marie Jacquard constri um e e o tear que utiliza cartes de papelo perfurado para determinar o padro a o a a ser desenhado no tecido, criando a primeira mquina programvel. a a Charles Babbage constri em 1822 a mquina de diferenas e depois, paro a c tindo das idias de Jacquard, projeta a mquina anal e a tica, a qual no foi tera minada. Recentemente comprovou-se que suas idias eram corretas, sendo e ele hoje reconhecido como pai do computador moderno. Em 1870 conse tru uma mquina analgica para previso de mars por Willian Thomson, do a o a e que origina os computadores analgicos. Em 1890 o Censo Americano utio liza com grande sucesso as mquinas de tabular de Herman Hollerith, que a funda em 1896 a Tabulating Machine Company. Alguns anos depois esta companhia se transformaria na IBM (International Business Machines). Na dcada de 30 comeam a surgir, em diferentes pontos do mundo, e c projetos de mquinas eletromecnicas e eletrnicas de calcular: a a o 1934 Mquina eletromecnica programvel do engenheiro Konrad Zuse. a a a 1935 In do projeto da mquina eletrnica ABC, baseada em vlvulas, cio a o a para resoluo de sistemas, proposta pelo f ca sico John Vicent Atanasoft. 1937 John Von Neumann, matemtico hngaro, prope uma arquitetura a u o genrica para o computador, utilizada at hoje (veja Figura 1.2). e e 1939 Desenvolvida a primeira calculadora eletromecnica dos laboratrios a o Bell. As descobertas da poca motivaram cientistas de diversas especialidades e a trabalhar no desenvolvimento dos ento chamados crebros eletrnicos. a e o

1.3.2

Dcada de 1940 e

Os primeiros computadores eram realmente grandes mquinas de calcua lar. Compostas por circuitos baseados em rels e outros dispositivos eletroe mecnicos, estas mquinas eram muito grandes, lentas, consumiam muita a a

CAP ITULO 1. INTRODUCAO

energia eltrica e eram de dif operao. Esta tecnologia foi progressie cil ca vamente substitu pelas vlvulas eletrnicas, um pouco mais conveis da a o a e rpidas, embora muito mais caras. Com isso os computadores da poca a e eram car ssimos, restringindo seu uso ` organismos militares, agncias goa e vernamentais e grandes universidades. O uso do computador era claramente experimental. Um dos primeiros sistemas programveis constru a dos foi o computador eletromecnicos Mark I, projetado em conjunto pela IBM e pela Universia dade de Harvard, apresentado em 1944. Em 1946 o Exrcito Americano e revela seu computador eletrnico digital, o ENIAC, utilizado para clculos o a de bal stica externa, que vinha sendo utilizado a alguns anos.

Figura 1.2: Arquitetura de Von Neumann O uso destes sistemas exigia um grande grau de conhecimento de sua arquitetura e funcionamento. Os engenheiros exerciam o papel de programadores, determinando quais mdulos deveriam ser interligados e em que o ordem. Um grupo de tcnicos treinados, de posse de esquemas de ligao, e ca realizavam a conexo de tais mdulos, de forma que a mquina pudesse a o a ser energizada e os clculos realizados. Nesta poca o computador no era a e a programvel pois seu hardware era modicado para cada tipo de problema a diferente, o que representava uma tarefa complexa e delicada. Nesta dcada o matemtico Von Neumann props a construo de sise a o ca tema computacional baseada numa arquitetura composta por trs blocos e bsicos (Figura 1.2) onde a seqncia de passos a ser executada pela mquina a ue a fosse armazenada nela prpria sem necessidade de modicao de seu hardo ca ware. O computador de Von Neumann era uma mquina genrica, cujo bloco a e processador seria capaz de realizar um conjunto de operaes matemticas co a e lgicas alm de algumas operaes de movimentao de dados entre os o e co ca blocos da mquina. Estas operaes, chamadas de instrues, seriam armaa co co zenadas no bloco memria enquanto o bloco de dispositivos de E/S (Entrada o e Sa da) ou I/O (Input and Output) seria responsvel pela entrada e sa a da dos dados, instrues e controle do sistema. co A seguir temos a Figura 3 representando o esquema bsico de funcia onamento dos processadores. Aps ligado, um processador efetua um cio clo de busca por uma instruo na memria (fetch), a qual decodicada ca o e

1.3. BREVE HISTORICO

do ciclo seguinte (decode), que determina quais as aes necessrias para co a sua execuo no ultimo ciclo (execute). Aps a execuo repetem-se os cica o ca clos de busca, decodicao e execuo indenidamente. A repetio desta ca ca ca seqncia s interrompida atravs da execuo de uma instruo de parada ue oe e ca ca (halt) ou pela ocorrncia de um erro grave. e

Figura 1.3: Funcionamento bsico dos processadores a Assim sendo, um mesmo hardware poderia resolver diferentes tipos de problemas sem necessidade de qualquer modicao, bastando que uma ca seqncia adequada de instrues fosse carregada no computador. Com ue co isto nascem os conceitos de programa, computador programvel e com eles a a programao de computadores. Apesar de todas as restries tecnolgicas ca co o da poca, as idias de Von Neumann revolucionaram a construo dos come e ca putadores e ditaram a nova direo a ser seguida. ca

1.3.3

Dcada de 1950 e

A descoberta do transistor deu novo impulso ` eletrnica e aos computaa o dores. Apesar de seu custo ainda alto, j era poss a vel fabricar e vender computadores para grandes empresas e organismos governamentais, tanto que em 1951 surge o primeiro computador comercial, o Univac-I (Universal Automatic Computer ) e em 1953 a IBM lana seu primeiro computador c digital, o IBM 701. Para program-los ainda era necessrio conhecer detalhes sobre seus cira a cuitos e sobre o funcionamento de seus dispositivos. Tais exigncias fae ziam que os computadores s pudessem ser utilizados por especialistas em o eletrnica e programao. Mesmo tais especialistas tinham diculdade em o ca lidar com diferentes computadores, dado que cada computador possu uma a estrutura e funcionamento particulares. A programao era feita em assembly, ou seja, diretamente em linguagem ca de mquina. Com a evoluo dos computadores, tornou-se necessrio criar a ca a pequenos programas que os controlassem na execuo de tarefas cotidianas, ca tais como acionar certos dispositivos em operaes repetitivas ou mesmo co

10

CAP ITULO 1. INTRODUCAO

simplicar a execuo de novos programas. Surgiram assim os primeiros ca sistemas operacionais. O uso individual do computador (conceito de open shop) era pouco produtivo, pois a entrada de programas constitu uma etapa muito lenta e a demorada que na prtica representava o computador parado. a Para otimizar a entrada de programas surgiram as mquinas leitoras de a carto perfurado (semelhantes as mquinas de tabular constru a a das por Herman Hollerith) que aceleravam muito a entrada de dados. Os programadores deveriam ento escrever seus programas e transcrev-los em cartes perfua e o rados. Cada programa e seus respectivos dados eram organizados em conjuntos denominados jobs que poderiam ser processados da seguinte forma: os vrios jobs de diferentes usurios eram lidos por uma mquina leitora de a a a cartes que gravava os dados numa ta magntica. Esta ta era levada para o e o computador propriamente dito que lia os jobs, um a um, gravando uma outra ta magntica com os resultados de cada job. Esta ta de sa era e da levada a outro mquina que lia a ta e imprimia as listagens, devolvidas aos a usurio juntamente com seus cartes. a o

Figura 1.4: Sistema Univac, 1951 (processamento em lote - batch) Apesar da natureza seqencial do processamento, para os usurios era u a como se um lote de jobs fosse processado a cada vez, originando o termo processamento em lote (batch processing). Os sistemas batch viabilizaram o uso comercial dos computadores, poca em que grandes fabricantes de e computadores comeam a surgir. c Ainda na dcada de 50 surgiram a primeira linguagem de programao de e ca alto n (o IBM FORTRAN - Formula Translator - em 1957), a primeira vel unidade de disquetes comercialmente dispon vel no modelo IBM 305 e os mecanismos de interrupo implementados diretamente no hardware dos ca processadores. Em 1959 a DEC (Digital Equipment Corporation) apresenta seu minicomputador, o PDP-I, que fez grande sucesso comercial, originando uma grande linha de equipamentos.

1.3. BREVE HISTORICO

11

1.3.4

Dcada de 1960 e

Buscando uma utilizao mais eciente e segura dos computadores, os sisca temas operacionais foram se tornando cada vez mais complexos, passando a administrar os recursos do computador de forma cada vez mais sosticada. Ao mesmo tempo em que se buscava um uso mais eciente e seguro do computador, estudavam-se alternativas para que pessoas menos especializadas nos aspectos construtivos da mquina pudessem utilizar o computador, se a concentrando em suas verdadeiras tarefas e ampliando as possibilidades de uso dos computadores. Nesta dcada aparece o COBOL (Commom Business Oriented Lane guage), linguagem de programao especialmente desenvolvida para o Penca tgono americano para auxiliar o desenvolvimento de sistemas comerciais. a Em 1961 a Farchild inicia a comercializao dos primeiros circuitos integraca dos. Em 1963 a DEC introduz o uso de terminais de v deo e no ano seguinte surge o mouse. Um dos primeiros avanos ocorridos na dcada de 60 foi a c e utilizao da multiprogramao. Segundo Deitel: ca ca Multiprogramao quando vrios jobs esto na memria princa e a a o cipal simultaneamente, enquanto o processador chaveado de um e job para outro job fazendo-os avanarem enquanto os dispositic vos perifricos so mantidos em uso quase constante. [DEI92, p. e a 4] Enquanto o processamento chamado cient co era muito bem atendido pelo processamento em lote comum o mesmo no acontecia com processaa mento dito comercial. No processamento cient co ocorre a execuo de ca grande quantidade de clculos com quantidades relativamente pequenas de a dados, mantendo o processador ocupado na maior parte do tempo sendo que o tempo gasto com I/O (entrada e sa da) era insignicante, da este com portamento ser chamado CPU Bounded. J no processamento comercial o a processador permanece bastante ocioso dado que os clculos so relativaa a mente simples e o uso de I/O freqente dada a quantidade de dados a ser e u processada, temos um comportamento I/O Bounded. A multiprogramao permitiu uma soluo para este problema atravs ca ca e da diviso da memria em partes, chamadas parties, onde em cada diviso a o co a um job poderia ser mantido em execuo. Com vrios jobs na memria o ca a o processador permaneceria ocupado o suciente para compensar o tempo das operaes mais lentas de I/O. co A utilizao de circuitos integrados na construo de computadores coca ca merciais e a criao de fam ca lias de computadores compat veis iniciadas com o IBM System/360 inaugurou uma nova era na computao e a expanso de ca a sua utilizao. Outra tcnica utilizada era o spooling (simultaneous peripheca e ral operation on line), isto , a habilidade de certos sistemas operacionais em e ler novos jobs de cartes ou tas armazenado-os em uma rea temporria o a a

12

CAP ITULO 1. INTRODUCAO

Figura 1.5: Parties de memria num sistema multiprogramado co o do disco r gido interno para uso posterior quando uma partio de memria ca o fosse liberada [TAN92, p. 9]. Apesar destas novas tcnicas, os sistemas da poca operavam basicae e mente em lote. Assim, enquanto satisfaziam as necessidades mais comuns de processamento comercial e cient co, no ofereciam boas condies para a co o desenvolvimento de novos programas. Num sistema em lote, a correo de ca um problema simples de sintaxe poderia levar horas devido a rotina imposta: preparao dos cartes, submisso do job no prximo lote e a retirada dos ca o a o resultados vrias horas ou at mesmo dias depois. a e Tais problemas associados ao desenvolvimento de software motivaram a concepo de sistemas multiprogramados, isto , sistemas que permitissem o ca e uso simultneo do computador por diversos usurios atravs do pseudoparaa a e lelismo. O pseudoparalelismo poderia ser obtido com o chaveamento do processador entre vrios processos que poderiam atender os usurios desde que a a fossem dotados de interfaces interativas. A idia central destes sistemas era e dividir o poder computacional de um computador entre seus vrios usurios, a a fornecendo uma mquina virtual para cada um destes. Esta mquina vira a tual deveria passar a impresso de que o computador estava integralmente a dispon para cada usurio, mesmo que isto no fosse verdade. vel a a Nestes sistemas, denominados de sistemas em tempo repartido (time sharing systems), o tempo do processador era dividido em pequenos intervalos denominados quanta de tempo ou janelas temporais, como ilustra a (Figura 1.6). Tais quanta de tempo eram distribu dos seqencialmente enu tre os processos de cada usurio, de forma que a espera entre os intervalos a fosse impercept para os usurios. Depois que um quanta de tempo era vel a distribu para cada processo, se iniciava um novo ciclo de trabalho. A um do dado processo seriam concedidos tantos quanta de tempo quanto necessrio a mas apenas um a cada ciclo. Com isto, a capacidade de processamento da 1 mquina cava dividida entre os usurios do sistema a razo de n , onde n a a a e o nmero de usurios do sistema. u a O mecanismo central de funcionamento destes sistemas a interrupo. e ca Uma interrupo uma forma de parar a execuo de um programa qualca e ca

1.3. BREVE HISTORICO

13

quer, conduzindo o processador a execuo de uma outra rotina, previaca mente especicada que aps ser executada por completo, permite o retorno o ao programa original, sem preju para execuo do primeiro. zo ca Os sistemas em tempo repartido tamnbm criaram as necessidades dos e mecanismos de identicao de usurio (userid e password ), dos mecanismos ca a de in e trmino de sesso de trabalho (login ou logon), da existncia de cio e a e contas de usurio, etc. a

Figura 1.6: Ciclo de trabalho em sistemas de tempo repartido Um dos processos de cada usurio poderia ser um interpretador de coa mandos (shell ) que representaria a interface do computador para o usurio. a Inicialmente estas interfaces eram implementadas como linhas de comando em terminais de teletipo e depois em terminais de v deo. Como utilizavam exclusivamente caracteres tambm so conhecidas como interfaces em modo e a texto. As maiores diculdades que surgiram durante o desenvolvimento destes sistemas foram a soluo dos problemas associados ao compartilhamento ca dos recursos, ` organizao dos usurios e das tarefas do sistema, alm dos a ca a e mecanismos de segurana e privacidade. c

1.3.5

Dcada de 1970 e 1980 e

Estas dcadas so marcadas especialmente pelo crescimento em tamanho, e a sosticao e complexidade dos sistemas computacionais. Aparece o termo ca mainframe (computador principal) e tornam-se cada vez mais comuns os centros de processamento de dados (CPDs) corporativos de uso privativo e bureaus de processamento de dados que vendiam servios para terceic ros. Surge o primeiro microprocessador comercial integrado em um unico chip, o Intel 4004 em 1971. Na dcada de 70 comeam a surgir pequenos e c computadores destinados ao uso pessoal ou domstico, comeando pelos mie c crocomputadores da Xerox em Palo Alto em 1973, o Altair 8.800 destinado ao consumo em massa em 1974, o IBM 5100 em 1975 e o sucesso de vendas do Apple 2 lanado em 1976. Comeam a ser desenvolvidas as primeiras c c aplicaes comerciais dos microcomputadores. co A dcada de 80 viu o surgimento da gerao do microcomputadores, o e ca boom dos sistemas desktop a partir do lanamento do IBM-PC (Personal c Computer) em 1981 e o desenvolvimento de uma enorme indstria de hardu

14

CAP ITULO 1. INTRODUCAO

ware, software e servios originadas nestes eventos. Na mesma dcada de 80 c e surgem empresas especializadas em arquiteturas de alto desempenho e so a desenvolvidos os primeiros supercomputadores tais como os modelos 1-A ou X-MP da Cray Research.

1.3.6

Dcada de 1990 e

Esta dcada marcada pelas estaes de trabalho (workstations), pela come e co putao pessoal porttil e pela interoperabilidade. Dispe-se de microcomca a o putadores cujo poder de processamento maior do que os mainframes da e dcada de 1970. Os supercomputadores, fabricados quase que artesanale mente, comeam a ser tornar mquinas fantsticas, tal como o Cray Y-MP c a a capaz de processar at 2.667 GFlops1 [NCA04]. Tais equipamentos so free a quentemente empregados para simulaes complexas, tais como as requerico das pela metereologia, astrof sica, f sica atmica, farmacutica, engenharia o e entre outras. Os notebooks, palmtops e PDAs (personal digital assistents) representam o mximo em portabilidade e exibilidade, e esto grandemente incorporaa a dos no cotidiano de executivos, prossionais de design, vendedores e outros prossionais liberais, mesmo aqueles cuja atividade m no a informtica. a e a Mesmo estes pequenos aparelhos possuem verses simplicadas de sistemas o operacionais, permitindo que uma gama maior de servios e funcionalidac des sejam oferecidas. Alm disso a eletrnica embarcada comea a ser tore o c nar presente em automveis e utens o lios domsticos, alm das tradicionais e e aplicaes industriais. co Ferramentas de desenvolvimento rpido (RAD tools), ferramentas CASE a sosticadas para modelagem de dados e sistemas, complexos sistemas de CAD-CAE-CAM (Computer Aided Design, Engineering ou Manufacturing). Internet. Sistemas de correio eletrnico, grupos de discusso, educao ` o a ca a distncia, multim a dia, ATM, Java, Corba, sistemas distribu dos, processamento vetorial, processamento paralelo etc. Inmeras tecnologias de projeto, u desenvolvimento, aplicao, integrao e interoperabilidade, adicionando dica ca versidade, novas necessidades e maior complexidade aos sistemas operacionais contemporneos. a Com isto, alguns milhes de linhas de programa so necessrias para a o a a criao de um sistema operacional que atenda em parte tais necessidades, ca sendo necessrio adapt-los aos mais diversos tipos de aplicao e usurio. E a a ca a para dar suporte a tremenda complexidade destes programas, a indstria de u hardware vem continuamente desenvolvendo novos processadores tambm e com velocidade cada vez maior, circuitos de memria de maior capacidade o
A capacidade de processamento computacional (computer power ) usualmente mee dida em termos do nmero de operaes em ponto utuante completas por segundo u co (Flops).
1

1.4. TIPOS DE SISTEMAS OPERACIONAIS

15

Figura 1.7: Servidor, workstation e notebook e velocidade bem como dispositivos perifricos cada vez mais sosticados, e tudo atravs das novas tecnologias. e

1.3.7

Dcada de 2000 e

A supercomputao se torna superlativa. Exemplos disso so os novos sisca a temas da IBM e da Cray Research, conhecidos como IBM BlueSky e Cray X1 (Figura 1.8) que, respectivamente, tem capacidades de processamento de 6.323 TFlops [NCA04] e 52.4 TFlops [CRA04]. Graas ` pesquisa e a c a evoluo dos sistemas distribu ca dos, tal como as tcnicas de grid computing, e o emprego de clusters (agrupamentos) de computadores geogracamente dispersos e interligados atravs da Internet ou conectados atravs de redes e e locais de alto desempenho tambm vem se tornando mais comum, como e alternativa mais econmica e de desempenho semelhante aos supercompuo tadores. O desenvolvimento e miniaturizao de novos componentes eletrnicos ca o em adio e a utilizao de novos processos de fabricao associados ` grande ca ca ca a expanso das redes digitais de telefonia mvel permitem que muitos milhes a o o de usurios se beneciem de equipamentos que somam as caracter a sticas de telefones portteis com PDAs cada vez mais sosticados. a Os computadores dedicados e os de uso genrico esto se tornando cada e a vez mais populares em contraste com as necessidades e exigncias mais soe sticadas de seus usurios. O nmero de usurios de computador tambm a u a e cresce vertiginosamente, impulsionando os fabricantes a criarem novos produtos, servios e solues. c co Com tudo isso a computao , sem dvida alguma, imprescind como ca e u vel ferramenta para o homem moderno, tornando o desenvolvimento cont nuo dos sistemas operacionais uma tarefa essencial.

1.4

Tipos de sistemas operacionais

Identicamos atravs da histria dos sistemas operacionais alguns tipos de e o sistemas operacionais, os quais so comparados segundo alguns aspectos a considerados importantes como pode ser visto na Tabela 1.1.

16

CAP ITULO 1. INTRODUCAO

Figura 1.8: Supercomputador Cray X1 Tabela 1.1: Tipos de sistemas operacionais Tipo de SO Interativo Tempo de Produtividade Multiusurio a Resposta (Throughput) Open Sim Baixo Baixa No a Shop Irregular Batch No a Alto Mdia Alta e Sim Simples Regular Batch com No a Alto Mdia Alta e Sim Spooling Regular Tempo Sim Baixo Mdia e Sim Repartido Previs vel Tempo Sim Baixo Mdia e Sim Real Previs vel

A interatividade o aspecto que considera se o usurio utiliza diree a tamente o sistema computacional, podendo receber as respostas deste, sem intermediao e dentro de intervalos de tempo razoveis. ca a O tempo de resposta (response time) , desta forma, uma medida e de interatividade, que representa o intervalo de tempo decorrido entre um pedido ou soliticao de processamento (por exemplos, a entrada de um coca mando ou execuo de um programa) e a resposta produzida pelo sistema ca (realizao das operaes solicitadas ou nalizao do programa aps sua ca co ca o execuo completa). Tempos de resposta da ordem de alguns segundos conca guram sistemas interativos, embora sejam admitidas esperas mais longas. Por exemplo, uma resposta produzida num intervalo de 30 segundos pode ser considerada normal levando-se em conta a natureza e complexidade da operao solicitada. Embora normal, intervalos desta ordem de grandeza ou ca superiores tornam enfadonho e cansativo o trabalho com computadores.

1.5. RECURSOS E AMBIENTE OPERACIONAL

17

O tempo de reao (reaction time) tambm outra medida de interaca e e tividade a qual considera o tempo decorrido entre a solicitao de uma ao ca ca e seu efetivo processamento. J a produtividade (throughput) uma medida de trabalho relativa do a e sistema, expressa usualmente em tarefas completas por unidade de tempo, ou seja, uma medida que relaciona o trabalho efetivamente produzido e e o tempo utilizado para realizao deste trabalho. Unidades poss ca veis do throughput so: programas por hora, tarefas por hora, jobs por dia etc. a A produtividade no deve ser confundida com o desempenho bruto do a processador do sistema (sua capacidade de processamento), pois depende muito da arquitetura do sistema e do sistema operacional o quanto desta capacidade efetivamente convertida em trabalho util e o quanto dispene e dida nas tarefas de controle e gerncia do prprio sistema computacional. e o Podemos notar que dentre estas medidas de performance (existem ainda diversas outras), algumas so orientadas ao usurio, tal como o tempo de a a resposta ou o tempo de reao; enquanto outras so orientadas ao sistema ca a em si, tal como a taxa de utilizao do processador ou a produtividade ca [DEI92, p. 423].

1.5

Recursos e ambiente operacional

O hardware do computador, ou seja, sua parte f sica, determina suas capacidades brutas, isto , seus verdadeiros limites. Todos os elementos funcionais e do computador so considerados recursos do sistema computacional e so, a a geralmente, representados pelos dispositivos que o compe e que podem ser o utilizados pelos usurios, ou seja: monitores de v a deo, teclado, mouse, mesas digitalizadoras, portas de comunicao serial e paralela, placas de rede ca ou comunicao, impressoras, scanners, unidades de disco ex ou r ca vel gido, unidades de ta, unidades leitoras/gravadoras de CD, DVDs etc. O sistema operacional aparece como uma camada sobre o hardware e rmware, mas simultaneamente envoltria deste. O sistema operacional o est sobre o hardware e rmware pois deles depende para sua prpria exea o cuo. Ao mesmo tempo uma camada envoltria pois pretende oferecer os ca e o recursos do computador ao usurio do sistema minimizando os aspectos de a como so tais dispositivos ou como sero feitas as operaes que os utilizam. a a co Desta forma o sistema operacional, atravs de sua interface, dene uma e nova mquina que a combinao de um certo hardware com este sistema a e ca operacional. O conjunto de hardware e sistema operacional, usualmente chamado de plataforma ou ambiente operacional, aparentemente capaz de realizar e tarefas de um modo espec co ditado pela prpria interface. Note que o amo biente operacional distinto do hardware, pois o hardware do computador, e por si s, no capaz de copiar um determinado arquivo de uma unidade o a e

18

CAP ITULO 1. INTRODUCAO

de disco r gido para uma unidade de disquete. Para realizar esta cpia, uma o srie procedimentos devem ser executados, indo desde o acionamento das e unidades utilizadas, passando pela localizao das partes do arquivo origem ca e das reas dispon a veis no disquete de destino, at a transferncia efetiva e e dos dados. Atravs da interface do sistema operacional, tal ao poderia ser poss e ca vel atravs de um comando fornecido dentro de um console (uma interface de e modo texto, tal como mostra a Figura 1.9, por exemplo: copy so.dvi a:\ ou, se dispusermos de uma interface grca (Figura 1.10), atravs de uma a e operao visual frequentemente denominada arrastar e soltar (drag and ca drop) devido as aes realizadas com o mouse. co

Figura 1.9: Interface em modo texto (linha de comando ou console) Enquanto o hardware isolado no permitia a realizao direta da tarefa a ca de copiar um arquivo, atravs do sistema operacional temos a impresso e a de que o computador se tornou capaz de realizar a tarefa desejada atravs e do comando dado ou da operao visual efetuada, sem a necessidade do ca conhecimento de detalhes de como a tarefa verdadeiramente realizada. e A aparentemente expanso das capacidades do hardware do computador a , na verdade, uma simplicao obtida atravs da automatizao da tarefa e ca e ca atravs de sua programao no sistema operacional. O hardware realmente e ca e o realizador da tarefa, enquanto o sistema operacional apenas intermedia esta operao atravs de sua interface. ca e Observamos que a criao de uma interface, grca ou no, para um sisca a a tema operacional extremamente importante 2 , pois determinam a criao e ca de um ambiente operacional consistente. Tais possibilidades so bastante a atraentes, pois se cada sistema operacional tem a capacidade de transformaro hardware de um computador em um determinado ambiente operacional, isto eqivale a dizer que computadores diferentes, dotados de um mesmo u sistema operacional, oferecero transperentemente um ambiente operacional a

1.5. RECURSOS E AMBIENTE OPERACIONAL

19

Figura 1.10: Interface grca a idntico, ou seja, se comportaro como se fossem mquinas de um mesmo e a a tipo. Por exemplo, o emprego de uma distribuio do Linux em microcomca putadores baseados em processadores na Intel oferece o mesmo ambiente que workstations IBM utilizando este mesmo sistema operacional. Esta possibilidade propicia as seguintes vantagens: 1. Determinao de um ambiente de trabalho equivalente para os usuca a rios, que podem desconhecer as diferenas entre os diversos computac dores dotados de um mesmo sistema operacional (plataforma de operao). ca 2. Criao de um ambiente de desenvolvimento semelhante, onde outros ca programas podem ser desenvolvidos, testados e utilizados em diferentes computadores dotados de um mesmo SO, com a conseqente criao u ca de uma plataforma de desenvolvimento. 3. Reduo das necessidades de treinamento e acelerao do processo de ca ca familiarizao e aprendizado no novo ambiente. ca Para estudarmos os sistemas operacionais devemos primeiro no familiarizar com o conceito de processo, fundamental para uma compreenso mais a ampla dos problemas envolvidos e de suas solues. Depois sero estudadas co a a administrao da execuo dos programas no sistema, o gerenciamento de ca ca memria e tambm dos dispositivos de entrada e sa o e da.
2 O projeto de interfaces consistentes, convenientes e uso simplicado, bem como sua avaliao, uma disciplina compreendida como IHC ou Interface Humano-Computador. ca e

20

CAP ITULO 1. INTRODUCAO

Cap tulo 2

Processos
O estudo e o desenvolvimento dos sistemas operacionais requer a compreenso de um conceito fundamental: processo computacional. Veremos que a os processos computacionais constituem a unidade bsica de administrao a ca de um sistema e, que junto deste importante conceito, surgem uma srie de e problemas que devem ser adequadamente equacionados dentro de qualquer sistema operacional.

2.1

O que um processo computacional e

Um processo computacional ou simplesmente processo pode ser entendido como uma atividade que ocorre em meio computacional, usualmente possuindo um objetivo denido, tendo durao nita e utilizando uma quanca tidade limitada de recursos computacionais. Esta denio traz algumas implicaes: apenas as atividades que aconca co tecem num sistema computacional so compreendidas como sendo processos a computacionais. Outro ponto importante a durao nita, pois isto ime ca plica que um processo computacional, por mais rpido ou curto que possa a ser tem sempre uma durao maior que zero, ou seja, no existem processos ca a instantneos. Alm disso, um processo utiliza ao menos um dos recursos a e computacionais existentes para caracterizar seu estado. Simplicando, podemos entender um processo como um programa em execuo, o que envolve o cdigo do programa, os dados em uso, os registraca o dores do processador, sua pilha (stack ) e o contador de programa alm de e outras informaes relacionadas a sua execuo. co ca Desta forma, temos que a impresso de um documento um processo a e computacional assim como a cpia de um arquivo, a compilao de um proo ca grama ou a execuo de uma rotina qualquer. Todas as atividades, manuais ca ou automticas, que ocorrem dentro de um computador podem ser descritas a como processos computacionais. Atualmente quase todos os computadores so capazes de realizar diversas a 21

22

CAP ITULO 2. PROCESSOS

tarefas ao mesmo tempo, onde cada uma destas tarefas pode representar um ou mesmo mais processos. Para funcionarem desta forma tais computadores so multiprogramados, ou seja, o processador chaveado de processo em a e processo, em pequenos intervalos de tempo, isto , o processador executa um e programa durante um pequeno intervalo de tempo, para depois executar outro programa por outro pequeno intervalo de tempo e assim sucessivamente. Num instante de tempo qualquer, o processador estar executando apenas a um dado programa, mas durante um intervalo de tempo maior ele poder a ter executado trechos de muitos programas criando a iluso de paralelismo. a Este comportamento , algumas vezes, chamado de paralelismo virtual e ou pseudoparalelismo. Em computadores com dois ou mais processadores e poss a existncia de paralelismo verdadeiro pois cada processador pode vel e executar um processo independentemente. A administrao de vrios diferentes programas em execuo concomica a ca tante o que permite o funcionamento eciente dos computadores modernos, e ao mesmo tempo conferindo-lhe complexa organizao e estrutura pois tal ca administrao no simples e requer a considerao de muitos fatores e ca a e ca situaes diferentes, mesmo que improvveis. co a O termo processo (process) muitas vezes substitu pelo termo tarefa e do (task ) e pode assumir um dos seguintes signicados: um programa em execuo; ca uma atividade ass ncrona; o esp rito ativo de um procedimento; uma entidade que pode utilizar um processador ou uma unidade que pode ser despachada para execuo. ca

2.1.1

Subdiviso dos processos a

Outro ponto importante que os processos computacionais podem ser die vididos em sub-processos, ou seja, podem ser decompostos em processos componentes mais simples que o processo como um todo, o que permite um detalhamento da realizao de sua tarefa ou do seu modo de operao. Esta ca ca anlise aprofundada dos processos atravs de sua decomposio em suba e ca processos pode ser feita quase que indenidamente, at o exagerado limite e das micro-instrues do processador que ser utilizado. O n co a vel adequado de diviso de um processo aquele que permite um entendimento preciso a e dos eventos em estudo, ou seja, depende do tipo de problema em questo e a tambm da soluo pretendida. e ca Processos tipicamente tambm podem criar novos processos. O processo e criador chamado de processo-pai (parent process) enquanto os processos e

2.2. OCORRENCIA DE PROCESSOS

23

criados so denominados de processos lhos (child process). Um processoa lho tambm pode criar novos processos, permitindo a criao de rvores de e ca a processos hierarquicamente relacionados, como exemplicado na Figura 2.1.

Figura 2.1: Subdiviso de um processo a

2.2

Ocorrncia de processos e

E importante estudarmos os processos computacionais porque a razo de a ser dos computadores a realizao de certas atividades de maneira mais e ca rpida e convel do que seria poss para o homem. Como cada processo a a vel precisa de recursos para ser executado e conclu do, a ocorrncia de processos e signica a utilizao de recursos do computador. Sendo assim, para que um ca sistema operacional possa cumprir com seu papel de gerente de recursos de um sistema computacional fundamental um entendimento mais profundo e dos processos computacionais e de suas particularidades como forma efetiva de criar-se sistemas operacionais capazes de lidar com as exigncias dos e processos em termos de recursos. Um critrio muito importante de anlise dos processos computacionais e a aquele que considera os processos segundo sua ocorrncia, isto , a obe e e servao de seu comportamento considerando o tempo. Neste caso ter ca amos os seguintes tipos de processos: Seq enciais So aqueles que ocorrem um de cada vez, um a um no tempo, u a serialmente, como que de forma exclusiva. Paralelos aqueles que, durante um certo intervalo de tempo, ocorrem simultaneamente, ou seja, aqueles que no todo ou em parte ocorrem ao mesmo tempo.

24

CAP ITULO 2. PROCESSOS

2.2.1

Processos seq enciais u

Dados que os processos seq enciais so aqueles que ocorrem um de cada u a vez no tempo, como numa srie de eventos (veja Figura 2.2), temos que para e um dado processo, todos os recursos computacionais esto dispon a veis, ou seja, como s ocorre um processo de cada vez, os recursos computacionais o podem ser usados livremente pelos processos, no sendo disputados entre a processos diferentes, mas apenas utilizados da maneira necessria por cada a processo.

Figura 2.2: Diagrama-exemplo de processos seqenciais u Esta aparente situao de simplicidade esconde um outro fato alarmante: ca como muito improvvel que um processo utilize mais do que alguns poucos e a recursos do sistema, todos os demais recursos no utilizados caro ociosos a a por todo o tempo de execuo deste processo. No geral, com a execuo de ca ca um unico processo, temos que a ociosidade dos diversos recursos computa cionais muito alta, sugerindo que sua utilizao pouco efetiva, ou, em e ca e outros termos, invivel economicamente. a

2.2.2

Processos Paralelos

Os processos paralelos so aqueles que, durante um certo intervalo de a tempo, ocorrem simultaneamente, como mostra Figura 2.3. Se consideramos a existncia de processos paralelos, ento estamos admitindo a possibilidade e a de que dois ou mais destes processos passem, a partir de um dado momento, a disputar o uso de um recurso computacional particular.

Figura 2.3: Diagrama-exemplo de processos paralelos Considerando tal possibilidade de disputa por recursos e tambm sua e natureza, os processos paralelos podem ser classicados nos seguintes tipos:

2.3. ESTADO DOS PROCESSOS

25

Independentes Quando utilizam recursos completamente distintos, no se a envolvendo em disputas com outros processos. Concorrentes Quando pretendem utilizar um mesmo recurso, dependendo de uma ao do sistema operacional para denir a ordem na qual os ca processos usaro o recurso. a Cooperantes Quando dois ou mais processos utilizam em conjunto um mesmo recurso para completarem uma dada tarefa. Como no se pode prever quais os tipos de processos que existiro num a a sistema computacional, o sistema operacional deve estar preparado para administrar a ocorrncia de processos paralelos concorrentes em quantidade, e ou seja, dever assumir a complexidade de administrar e organizar a coa existncia de inmeros processos diferentes disputando todos os tipos de e u recursos instalados no sistema. Apesar da maior complexidade, a existncia de processos paralelos pere mitem o melhor aproveitamento dos sistemas computacionais e mais, atravs e do suporte oferecido pelo sistema operacional passa a ser poss vel a explorao do processamento paralelo e da computao distribu ca ca da.

2.3

Estado dos processos

Dado que um processo pode ser considerado como um programa em execuo, num sistema computacional multiprogramado poder ca amos identicar trs estados bsicos de existncia de um processo: e a e Pronto (Ready ) Situao em que o processo est apto a utilizar o proca a cessador quando este estiver dispon vel. Isto signica que o processo pode ser executado quando o processador estiver dispon vel. Execuo (Running ) Quando o processo est utilizando um processador ca a para seu processamento. Neste estado o processo tem suas instrues co efetivamente executadas pelo processador. Bloqueado (Blocked ) Quando o processo est esperando ou utilizando a um recurso qualquer de E/S (entrada e sa da). Como o processo dever aguardar o resultado da operao de entrada ou sa a ca da, seu processamento ca suspenso at que tal operao seja conclu e ca da. Durante o ciclo de vida de um processo, isto , desde seu in at seu e cio e encerramento, podem ocorrer diversas transies entre os estados relacionaco dos, como ilustra a Figura 2.4. Devemos observar que entre os trs estae dos bsicos existem quatro transies poss a co veis, isto , quatro situaes de e co modicao de estado que correspondem ` aes espec ca a co cas do sistema operacional com relao ao processos: Despachar (Dispatch), Esgotamento ca

26

CAP ITULO 2. PROCESSOS

(TimeRunOut), Bloqueio (Block ) e Reativar (Awake). Alm destas quae tro transies existe outras duas correspondentes a Criao (Create) e Fico ca nalizao (Terminate) do processo. ca

Figura 2.4: Diagrama-exemplo de processos paralelos Quando solicitamos a execuo de um programa, o sistema operacional ca cria (Create) um processo atribuindo a este um n mero de identicao u ca ou seu PID (Process Identier ), um valor inteiro que servir para distinguir a este processo dos demais. Aps a criao, o processo colocado no nal de uma la onde existem o ca e apenas processos prontos, ou seja, o estado inicial de um processo denido e como sendo o estado Pronto (Ready). Quando todos os processos existentes nesta la, ou seja, criados anteriormente, j tiverem utilizado seu quantum a (frao de tempo do processador), o sistema operacional acionar uma rotina ca a especial para Despachar (Dispatch) o processo, ou seja, para efetivamente colocar o processo em execuo. Nesta situao ocorrer uma transio do ca ca a ca estado do processo de Pronto para Execuo (Running). Quando a frao ca ca de tempo destinada ao processo se esgotar, ocorrer uma interrupo que dea ca volver o controle para o sistema operacional, fazendo-o acionar uma rotina a especial (TimeRunOut) para retirar o processo do processador e recoloc-lo a na la de processos prontos. Esta transio do estado Execuo para o e ca ca estado Pronto. Nos casos em que o processo deseje utilizar algum dispositivo de entrada/sa da, ou seja, efetuar uma operao de I/O, na solicitao deste ca ca recurso o prprio processo sair do estado de Execuo entrando voluno a ca tariamente no estado Bloqueado (Blocked ) para utilizar ou esperar pela disponibilidade do recurso solicitado. Ao nalizar o uso do recurso, o sistema operacional recolocar o processo na lista de processos prontos, atravs a e da transio denominada Reativao ou Awake, que faz com que o processo ca ca passe do estados Bloqueado para Pronto. A Tabela 2.1 mostra resumidamente as operaes de transio de estado co ca dos processos, indicando os respectivos estados inicial e nal.

2.3. ESTADO DOS PROCESSOS

27

Tabela 2.1: Operaes de transio de estado dos processos co ca Operao de ca Estado Estado Transio ca Inicial Final Create() Ready Dispatch(PID) Ready Running TimeRunOut(PID) Running Ready Block(PID) Running Blocked Awake(PID) Blocked Ready Devemos destacar que a transio do estado Execuo (Running) para ca ca Bloqueado (Blocked ) a unica causada pelo prprio processo, isto , voe o e luntria, enquanto as demais so causadas por agentes externos (entidades a a do sistema operacional). Outro ponto importante que os estados Pronto e (Ready) e Execuo (Running) so estados considerados ativos enquanto ca a que o estado Bloqueado (Blocked ) tido como inativo. e Num sistema em tempo repartido a entidade que coordena a utilizao ca do processador por parte dos processos o escalonador (scheduler ). O e scheduler uma funo de baixo n e ca vel, que se utiliza de um temporizador (timer ) do sistema para efetuar a diviso de processamento que, em ultima a instncia uma mera diviso de tempo. Sendo assim est intimamente a e a a ligada ao hardware do computador. Regularmente, a cada intervalo de tempo xo ou varivel, este tempoa rizador dispara uma interrupo (um mecanismo especial de chamada de ca rotinas) que ativa uma rotina que corresponde ao escalonador do sistema. Esta rotina realiza algumas operaes com os registradores do processador co que forma que o resultado seja o chaveamento do processador para o prximo o processo na la de processos em estado Pronto (Ready). Ao encerrar-se esta interrupo o novo processo em execuo aquele preparado pelo escalonaca ca e dor. Praticamente todas as outras funes do sistema operacional so acioco a nadas por chamadas expl citas ou impl citas de suas prprias funes (chao co madas de sistema ou system calls) enquanto outras entidades do prprio o sistema operacional assumem a forma de processos que tambm compartie lham o processamento. Neste sentido, as interrupes so um mecanismo co a important ssimo para que os sistemas possa alcanar melhores n c veis de produtividade, pois permitem que perifricos do sistema possam trabalhar de e forma independente, caracterizando a execuo de atividades em paralelo ca num sistema computacional. De forma simplicada podemos dizer que o escalonador e a interrupo ca do temporizador do sistema se relacionam da seguinte maneira: 1. O processador empilha o program counter e tambm o contedo dos e u regsitradores do processador.

28

CAP ITULO 2. PROCESSOS

Figura 2.5: Representao do escalonamento de processos ca 2. O processador carrega um novo valor para o program counter a partir do vetor de interrupo onde existe uma rotina que realizar a troca ca a de processos em execuo. ca 3. Rotina modica estado do processo cuja execuo foi interrompida (o ca processo atual) para Pronto (Ready). 4. O contedo dos registradores e o program counter empilhados so cou a piados para uma rea de controle prpria do processo interrompido a o (cada processo tem tal rea de controle, como veremos na seo 2.4.1), a ca preservando o contexto do processo interrompido.. 5. Rotina consulta escalonador para determinar qual ser o prximo proa o cesso a ser executado (qual o processo que utilizar processador). a 6. Rotina copia o contedo dos registradores e do program counter aru mazenado na rea de controle do processo para a pilha, restaurando o a contexto deste processo e, assim, alterando a seqncia de retorno da ue interrupo. ca 7. O temporizador reprogramado. e 8. A rotina nalizada e, com isso, encerrando a interrupo. e ca 9. Processador restaura seus registradores e o program counter com base nos contedo da pilha, passando a continuar a execuo de um processo u ca que tinha sido interrompido em um momento anterior.

2.4

PCB e tabelas de processos

Quando o modelo de administrao de processos adotado em um sistema ca e operacional, para que este possa efetivamente controlar os processos existentes em um sistema, comum a criao e manuteno de uma tabela para e ca ca a organizao das informaes relativas aos processos chamada de tabela ca co

2.4. PCB E TABELAS DE PROCESSOS

29

de processos. Esta tabela usualmente implementada sob a forma de um e vetor de estruturas ou uma lista ligada de estruturas. Para cada processo existente existe uma entrada correspondente nesta tabela, ou seja, um elemento da estrutura destinado a armazenar os dados relativos ao respectivo processo, como mostra a Figura 2.6. Tal estrutura, projetada para armazenar as informaes, recebe o nome de PCB. co

2.4.1

PCB

O PCB (Process Control Block ou Process Descriptor ) uma estrutura de e dados que mantm a representao de um processo para o sistema operae ca cional. O PCB contm todas as informaes necessrias para a execuo do e co a ca mesmo possa ser iniciada, interrompida e retomada conforme determinao ca do sistema operacional, sem preju para o processo. zo Apesar de ser dependente do projeto e implementao particulares do ca sistema operacional, geralmente o PCB contm as seguintes informaes: e co identicao do processo (PID); ca estado corrente do processo; ponteiro para o processo pai (parent process); lista de ponteiros para os processos lho (child processes); prioridade do processo; lista de ponteiros para as regies alocadas de memria; o o informaes sobre horrio de in co a cio, tempo utilizado do processador; estat sticas sobre uso de memria e perifricos; o e cpia do contedo do contador de programa (program counter ); o u cpia do contedo dos registradores do processador; o u identicador do processador sendo utilizado; informaes sobre diretrios raiz e de trabalho; co o informaes sobre arquivos em uso; co permisses e direitos. o A Figura 2.6 ilustra uma tabela de processos e os PCB associados.

30

CAP ITULO 2. PROCESSOS

Figura 2.6: Organizao de uma tabela de processos ca

2.4.2

Tabelas de processos

2.5

Operaes sobre processos co

Considerando os estados poss veis dos processos e as necessidades dos sistema operacional, temos que dispor das seguintes operaes a serem realico zadas sobre os processos: criao (create) ca destruio (destroy) ca suspenso (suspend ou wait) a retomada (resume) troca de prioridade bloqueio (block ) ativao (activate) ca execuo (execute ou dispatch) ca comunicao inter-processo ca A criao de um processo envolve algumas outras operaes particulares: ca co identicao do processo (determinao do PID) ca ca

2.6. FUNCOES DO NUCLEO DE SISTEMA OPERACIONAL insero do processo na lista de processos conhecidos do sistema ca determinao da prioridade inicial do processo ca criao do PCB ca alocao inicial dos recursos necessrios ca a

31

2.6

Funes do n cleo de sistema operacional co u

Todas as operaes que envolvem os processos so controladas por uma parte co a do sistema operacional denominada n cleo (core ou kernel ). Apesar do u ncleo no representar a maior parte do sistema operacional, a parcela mais u a e importante e mais intensivamente utilizada, tanto que ca permanentemente alocada na memria primria do sistema. o a Uma das mais importantes funes do ncleo do sistema operacional co u o gerenciamento das interrupes, pois em grandes sistemas, um grande e co nmero delas constantemente dirigida ao processador e seu efetivo prou e cessamento determina quo bem sero utilizados os recursos do sistema e, a a consequentemente, como sero os tempos de resposta para os processos dos a usurios. a O ncleo de um sistema operacional constri, a partir de uma mquina u o a f sica dotada de um ou mais processadores, n mquinas virtuais, onde cada a mquina virtual designada para um processo. Tal processo, dentro de cera e tos limites impostos pelo sistema operacional, controla sua mquina virtual a de modo a realizar suas tarefas. Resumidamente, o ncleo de um sistema operacional deve conter rotinas u para que sejam desempenhadas as seguintes funes: co gerenciamento de interrupes co manipulao de processos (criao, destruio, suspenso, retomada ca ca ca a etc.) manipulao dos PCBs (Process Control Blocks) ca troca de estados dos processos (execuo, timerunout e ativao) ca ca intercomunicao de processos ca sincronizao de processos ca gerenciamento de memria o gerenciamento de dispositivos de E/S suporte a um ou mais sistemas de arquivos

32

CAP ITULO 2. PROCESSOS suporte ` funes de administrao do sistema a co ca

Devido ao uso intensivo destas rotinas, comum que boa parte delas e sejam programadas diretamente em assembly, permitindo assim grande otimizao e, portanto, a maior ecincia poss em sua execuo. ca e vel ca

2.7

Competio por recursos ca

Quando armamos que existiro dois ou mais processos em execuo paralela a ca estamos admitindo a possibilidade de que alguns destes processos solicitem a utilizao de um mesmo recurso simultaneamente. Conforme o tipo de reca curso requisitado e tambm as operaes pretendidas, desejvel que ocorra e co e a o compartilhamento de tal recurso ou, como mais frequente, que seja exie gido o uso individual e organizado de recurso. Obviamente o processo que recebe o direito de usar primeiramente o recurso favorecido em relao e ca aos demais, transformando tal situao numa competio pelos recursos ca ca do sistema. A exigncia de uso individual ou a possibilidade de compartilhamento e caracterizam duas situaes importantes: o cdigo reentrante e as regies co o o cr ticas, que sero tratadas nas sees seguintes. a co

2.7.1

Regies cr o ticas

Quando um dado recurso computacional s pode ser utilizado por um unico o processo de cada vez, dizemos que este recurso determina uma regio a cr tica (ou critical section), como representado na Figura 2.7. Sendo assim uma regio cr a tica pode ser uma rotina de software especial ou um dispositivo de hardware ou uma rotina de acesso para um certo dispositivo do hardware.

Figura 2.7: Representao de uma regio cr ca a tica Segundo Guimares: a

2.8. PROTOCOLOS DE ACESSO Uma regio cr a tica , no fundo, uma forma de administrar a e concesso e devoluo de um recurso comum. [GUI86, p. 81] a ca

33

A situao que se deseja a excluso m tua, ou seja, quando um ca e a u processo qualquer utiliza a regio cr a tica, todos os demais, sejam quais forem, so exclu a dos, isto , cam impossibilitados de utiliz-la. Apenas quando a e a regio cr a tica for liberada que um outro processo ter acesso a mesma e e a tambm de forma exclusiva. Os processos de desejam utilizar uma regio e a cr tica so, portanto, processos paralelos concorrentes. a Quando acidentalmente acontece o acesso de um ou mais processos enquanto regio cr a tica est ocupada ou quando dois ou mais processo adena tram a regio cr a tica simultaneamente, dizemos estar ocorrendo um acesso simultneo. Tal situao geralmente conduz a perda de dados de um ou a ca mais dos processos participantes e, as vezes, o comprometimento da estabilidade do sistema como um todo. Para prevenir que mais de um processo faa uso de uma regio cr c a tica, no razovel que tal controle seja realizado pelos prprios processos, pois a e a o erros de programao ou aes mal intencionadas poderiam provocar preca co ju zos aos usurios ou comprometer a estabilidade do sistema. a Assim, o sistema operacional implementa uma rotina de tratamento especial denominada protocolo de acesso (seo 2.8) que, alm de determinar ca e os critrios de utilizao do recurso, resolve as situaes de competio bem e ca co ca como a organizao de uma eventual lista de espera no caso de disputa do ca recurso por processos concorrentes.

2.7.2

Cdigo reentrante o

Em contrante com as regies cr o ticas, quando uma certa rotina de software pode ser utilizada simultaneamente por uma quantidade qualquer de processos, dizemos que esta rotina um bloco de cdigo reentrante ou cdigo e o o p blico (ou ainda public code), como ilustrado na Figura 2.8. u O cdigo reentrante uma situao bastante desejvel, pois representa o e ca a um compartilhamento benco para o sistema, onde um mesmo recurso e e utilizado por diversos processos, aumentando a ecincia do sistema como e um todo.

2.8

Protocolos de acesso

Um protocolo de acesso (access protocol ) composto por uma rotina de e entrada e uma outra de sa da. A rotina de entrada determina se um processo pode ou no utilizar o recurso, organizando um la de espera (espera inativa) a ou apenas bloqueando a entrada do processo (espera ativa). A rotina de sa executada aps o uso do recurso, sinalizando que este se encontra da e o

34

CAP ITULO 2. PROCESSOS

Figura 2.8: Representao de cdigo reentrante ca o

desocupado, ou seja, causando a liberao do recurso para outro processo ca em espera ou bloqueado. No se pode denir o acesso ` recursos unicamente pela atribuio de pria a ca oridades xas, pois podem ocorrer situaes onde um processo de prioridade co mais baixa no consegue utilizar a regio cr a a tica dado que sempre existem processos de maior prioridade, congurando um problema de prioridade esttica. Existem tambm as situaes de bloqueio simultneo, onde os a e co a vrios processos que esto em disputa pelo uso recurso so bloqueados de a a a modo tal que o recurso continue sem uso, ou ainda de adiamento innito, onde um processo sistemtica e indenidamente bloqueado de utilizar o e a recurso. Todas estas situaes tambm so inaceitveis. co e a a Devemos ainda considerar que o sistema operacional gerencia diferentes tipos de recursos computacionais, isto , controla dispositivos com cae racter sticas bastante diferenciadas em termos de velocidade, capacidade e, principalmente utilizao. O processador possui certas caracter ca sticas enquanto a memria possui outras. Acontece o mesmo quando avaliamos o a funcionalidade de unidades de disco e ta, impressoras, portas de comunicao e outros dispositivos que podem ser interligados a um sistema ca computacional. Desta forma o tratamento ideal que deve ser dado a uma impressora no pode ser aceitvel para um outro tipo de dispositivo. a a Torna-se bvio que o controle destes diferentes dispositivos por si s o o adiciona uma razovel complexidade aos sistemas operacionais, mas quando a consideramos que diferentes processos computacionais faro uso distinto e a imprevis vel destes recursos, tal complexidade e as inerentes diculdades aumentam tremendamente, exigindo especial ateno durente o projeto do ca sistema. O sistema operacional deve dispor de um protocolo de acesso diferente para cada tipo de recurso devido suas caracter sticas prprias, as quais deo vem ser respeitadas durente sua utilizao. Quando tais caracter ca sticas so a

2.8. PROTOCOLOS DE ACESSO

35

entendidas e tratadas da forma adequada podemos obter situaes que faco voream o desempenho global do sistema. c De modo resumido, as caracter sticas desejveis de um protocolo de a acesso esto relacioandas na Tabela 2.2 a Tabela 2.2: Funes de um protocolo de acesso co Garantir Evitar Excluso Mtua Acesso Simultneo a u a Bloqueio Mtuo ou Simultneo u a Adiamento Indenido Prioridade Esttica a Na Figura 2.9 temos um exemplo simplicado de um protocolo de acesso, com destaque as suas partes de entrada e sa da. Aparentemente o problema parece resolvido, mas em situaes de corrida, isto , nas situaes onde dois co e co ou mais processos procuram acessar um recurso simultaneamente (ou algo prximo a isto), pode ocorrer uma violao do desejado acesso exclusivo: se o ca dois processos executarem o teste da varivel de controle X antes que um a deles consiga fazer com que X = 0, ento ambos utilizaro a regio cr a a a tica. Mesmo considerando que, na verdade, os processos no esto sendo exea a cutados paralelamente, se o primeiro deles interrompido aps o teste, mas e o antes da alterao da varivel de controle, ento qualquer outro poder ca a a a adentrar a regio cr a tica. Quando o primeiro tem retomada sua execuo, ca ele continuar seu processamento usando a regio cr a a tica, mesmo que esteja ocupada, pois j realizou o teste da varivel de controle, provocando os a a problemas descritos.

Figura 2.9: Protocolo de acesso simples O protocolo exemplicado necessita de 2 a 4 instrues para ser impleco mentado numa mquina convencional (vide Exemplo 2.1), portanto pode a ocorrer uma interrupo de um dos processos durante a execuo do trecho ca ca antes da atualizao da varivel X. ca a

36 Lao: c LDA X BZ Lao c CLR X . . .

CAP ITULO 2. PROCESSOS ; Carrega o acumulador com X ; Se zero repete o teste ; Zera varivel X a ; Entra na RC

Exemplo 2.1 Cdigo assembly de protocolo de acesso ineciente o Uma anlise cuidadosa permite ver que X, uma varivel comum aos proa a cessos, tambm deveria ser usada de forma exclusiva, ou seja, tambm conse e titui uma regio cr a tica e, assim, apenas adiou-se o problema de um n vel. A modicao do protocolo exemplicado utilizando-se uma instruo de ca ca troca, isto , uma instruo que efetua a movimentao de contedo entre e ca ca u dois registradores distintos, permite resolver o problema, como ilustrado no Exemplo 2.2. Lao: c CLR A EXA X BZ Lao c . . . . . . . . . ; Zera o acumulador ; Troca acumulador com X ; Se zero repete o teste ; Entra na RC

; Sai da RC MVI A,1 ; Coloca um no acumulador EXA X ; Troca acumulador com X

Exemplo 2.2 Protocolo de acesso funcional com instruo EXA ca

2.8.1

Soluo com instrues TST ou TSL ca co

O uso de instrues de troca levou alguns fabricantes a criarem uma insco truo especial denominada TST (Test and Set) ou TSL (Test and Set Lock ). ca As instrues TST ou TSL foram primeiramente implementadas no nal da co dcada de 1950 e introduzidas na linha IBM/360. Tais instrues realizavam e co duas operaes atomicamente, isto , de forma indivis co e vel, no podendo ser a interrompida durante sua execuo, permitindo assim resolver os problemas ca de excluso mtua encontrados at ento. As operaes realizadas atravs a u e a co e de uma instruo TST so ilustradas abaixo: ca a TST(v, x) Equivale `: a v ? x ? x 1 ; copia valor de x para v ; seta valor de x para 1

Com isto poder amos implementar um protocolo de acesso eciente atravs da construo de duas primitivas de excluso mtua como indicado e ca a u

2.8. PROTOCOLOS DE ACESSO abaixo: Enter Region: TSL reg, flag CMP reg, #0 JNZ Enter Region RET Leave Region: MOV flag, #0 RET ; ; ; ;

37

copia flag p/ reg e a seta para 1 compara flag com zero se n~o zero loop (travado) a retorna, i.e., entrou na RC

; armazena zero na flag ; retorna, i.e., saiu da RC

Exemplo 2.3 Protocolo de acesso eciente com instruo TST ca Apesar da soluo oferecida pelas instrues TST, o problema da excluso ca co a mtua no estava completamente resolvido, pois tais instrues s resolvem u a co o tal questo em sistemas dotados de um unico processador. Embora na poca a e no se pretendesse construir computadores dotados de mltiplos processaa u dores, percebia-se que tais instrues eram apenas um soluo parcial e co ca temporria. a

2.8.2

Situaes de corrida co

Dizemos existir uma situao de corrida quando a execuo de dois ou mais ca ca processos se d, de tal forma, que tais processos solicitam o uso de uma a regio cr a tica simultaneamente ou praticamente nesta condio. As situaes ca co de corrida exigem protocolos de acesso extremamente bem elaborados para evitarmos o acesso simultneo ou o bloqueio mtuo. a u Para ilustrar o que so as situaes de corrida, imaginemos um sistema a co multiusurio que dispe de vrios de terminais, onde cada terminal monia o a e torado por um processo especial que necessita efetuar a contagem das linhas de texto enviadas pelos usurios. A contagem do total das linhas de texto a mantida atravs de uma varivel global de nome linesEntered. Assumae e a mos que cada terminal em uso seja representado por um processo que possui uma cpia da rotina exibida no Exemplo 2.4 a qual atualiza o nmero de o u linhas de texto enviadas por cada terminal: LOAD linesEntered ADD 1 STORE linesEntered Exemplo 2.4 Rotina local de contagem de linhas Imaginando que o valor corrente de linesEntered 21687 quando um e processo executa as instrues LOAD e ADD, sendo interrompido pelo sistema co operacional e, assim, deixando a valor 21688 no acumulador. Se um segundo

38

CAP ITULO 2. PROCESSOS

processo executa a rotina de forma completa, como o valor 21688 ainda no foi armazenado em memria, o valor 21697 ser utilizado novamente a o a resultando em 21688. Quando o primeiro processo retomar sua execuo o ca valor 21688, presente no acumulador ser armazenado novamente. a Concluimos que o sistema perdeu o controle do nmero de linhas enviado u pois o valor correto deveria ser 21689! Isto ocorreu porque dois processos acessaram simultaneamente a regio cr a tica delimitada pelas operaes reaco lizadas sobre a varivel global linesEntered. Para evitar-se este problema a cada processo deveria ter recebido acesso exclusivo `s operaes sobre a a co varivel linesEntered que uma regio cr a e a tica. Embora o problema de controle de linhas de texto enviadas parea intil, c u imagine que a contagem se rera a peas produzidas numa fbrica que conta c a com diversas linhas de produo: ao nal de um per ca odo no se saberia a com certeza quantas peas foram produzidas, sendo necessrio cont-las no c a a estoque. O mesmo vale para um sistema de controle de estoque, num problema semelhante envolvendo a contagem da retirada de peas. Quando um c nmero m u nimo atingido, se faz necessria a compra de peas para que a e a c produo no seja interrompida pela falta das mesmas. Se a operao de ca a ca retirada no contabilizada corretamente torna-se provvel que a produo a e a ca seja interrompida por falta de peas. Numa instituio nanceira, o mesmo c ca tipo de problema poderia se reetir no saldo da conta corrente de um cliente, onde dependendo da ordenao dos eventos, um dbito ou um crdito ca e e poderiam deixar de ser efetuados, prejudicando a instituio ou o cliente. ca Torna-se claro que todas estas so situaes inadmiss a co veis. Percebemos ser muito importante que um sistema operacional oferea c mecanismos de controle adequado para seus recursos e tambm oferecendo e suporte para o desenvolvimento de aplicaes. Como o problema do acesso co exclusivo tambm pode surgir em decorrncia de aplicaes com mltiplos e e co u usurios ou que apenas compartilhem dados de maneira especial, seria cona veniente dispor-se de primitivas de controle para que os prprios programao dores realizassem, com segurana, tal tarefa. c Tais primitivas de programao poderiam ser EnterMutualExclusion e ca ExitMutualExclusion, que respectivamente signicam a indicao de enca trada e sa de uma regio cr da a tica. Tais primitivas poderiam ser utilizadas como mostra o Exemplo 2.5, que resolve o problema de acesso ` varivel a a global linesEntered. As primitivas EnterMutualExclusion e ExitMutualExclusion correspondem a implementao das regies de entrada e sa de um protocolo de ca o da acesso genrico. Tambm poderiam ser utilizadas as instrues TST nesta e e co implementao ou usadas outras solues mais elegantes, tais como a de ca co Dekker (seo 2.9) ou de Peterson (seo 2.10). ca ca

2.8. PROTOCOLOS DE ACESSO

39

program ExclusaoMutua; { Varivel global para contagem das linhas } a var linesEntered: integer; { Procedimento correspondente ao primeiro terminal } procedure ProcessoUm; begin while true do begin LeProximaLinhaDoTerminal; EnterMutualExclusion; linesEntered := linesEntered + 1; ExitMutualExclusion; ProcessaALinha; end; end; { Procedimento correspondente ao segundo terminal } procedure ProcessoDois; begin while true do begin LeProximaLinhaDoTerminal; EnterMutualExclusion; linesEntered := linesEntered + 1; ExitMutualExclusion; ProcessaALinha; end; end; { Programa principal: ativa~o dos terminais } ca begin linesEntered := 0; parbegin ProcessoUm; ProcessoDois; parend; end. Exemplo 2.5 Uso de primitivas de excluso mtua a u

40

CAP ITULO 2. PROCESSOS

2.8.3

Requisitos de um protocolo de acesso

Antes de nos concentrarmos em outras solues para o problema da excluso co a mtua, interessante analisar os requisitos desejveis para um protocolo de u e a acesso eciente, os quais podem ser expressos atravs dos postulados de e Dijkstra [GUI86, p. 78]: 1. A soluo no deve impor uma prioridade esttica entre os processos ca a a que desejem acessar a regio cr a tica. 2. A unica hiptese que pode ser feita quanto a velocidade de execuo o ca dos processos paralelos que ela no nula e, em particular, quando e e a um processo acessa um regio cr a tica ele sempre a libera depois de um tempo nito. 3. Se um processo bloqueado fora da regio cr e a tica, isto no deve ima pedir que outros processos acessarem a regio cr a tica. 4. Mesmo em improvveis situaes de corrida, so inaceitveis as situaa co a a co es de bloqueio mtuo ou acesso simultneo de processos em uma u a regio cr a tica.

2.9

A soluo de Dekker ca

At 1964 no se conhecia uma soluo geral considerada satisfatria para e a ca o o problema de excluso mtua, excetuando-se os mecanismos de hardware a u implementados pelas instrues de troca e TTST. Neste ano o matemtico co a holands T. J. Dekker props uma soluo para o problema de excluso e o ca a mtua de dois processos, a qual no necessitava instrues especiais imu a co plementadas pelo hardware, ou seja, uma soluo que utilizava apenas os ca recursos comuns das linguagens de programao. ca A engenhosa soluo baseia-se em uma varivel de controle para cada ca a processo envolvido, no caso Avez e Bvez. Cada processo possui uma verso a ligeiramente diferente do algoritmo do protocolo de acesso, pois cada uma das variveis de controle s so alteradas pelos processos as quais pertencem. a o a Alm destas variveis de controle individual, existe uma outra para detere a minao de prioridade (Pr), que pode ser manipulada por todos os processos ca envolvidos mas apenas aps o uso da regio cr o a tica. Esta elegante soluo ca tornou-se conhecida como soluo de Dekker para excluso mtua de dois ca a u processos e ilustrada na Figura 2.10. e O uxograma ilustrado na Figura 2.10 representa apenas o algoritmo da soluo de Dekker correspondente ao processo A. Para obtermos a verso ca a deste uxograma correspondente ao processo B, devemos substituir as ocorrncias da varivel Avez por Bvez e vice-versa e depois as ocorrncias de e a e B por A e vice-versa. O funcionamento correto desta soluo implica na ca

2.9. A SOLUCAO DE DEKKER

41

Figura 2.10: Algoritmo de Dekker para excluso mtua de 2 processos a u utilizao destes dois algoritmos, cada um destinado a um dos processos ca envolvidos. Mesmo em situaes de corrida, a soluo garante a excluso co ca a mtua, evitando o adiamento indenido, a prioridade esttica e o acesso u a simultneo. a Para demonstrarmos uma aplicao da soluo de Dekker, temos no ca ca Exemplo 2.6 uma sugesto para a resoluo do problema de contagem das a ca linhas enviadas pelos terminais usando a notao de paralelismo Pascal. ca A soluo proposta por Dekker apresenta as seguintes vantagens: ca particularmente elegante, pois no necessita de instrues especiais e a co no hardware; um processo fora de sua regio cr a tica no impede (no bloqueia) outro a a processo de adentr-la; e a um processo que deseja entrar na regio cr a tica o far sem a possibilia dade de adiamento innito. Em contrapartida esta soluo possui algumas desvantagens que so: ca a torna-se complexa para um nmero maior de processos pois exige a u introduo de novas operaes de teste a cada processo adicionado; ca co de dif implementao pois necessita uma rotina diferente para e cil ca cada processo; e impe uma espera ativa ou espera ocupada, isto , o processo bloqueo e ado continua consumido tempo do processador na rea de entrada do a protocolo de acesso para vericar a possibilidade de entrada na regio a cr tica.

42

CAP ITULO 2. PROCESSOS

program ExclusaoMutuaDekker; { Globais para contagem das linhas e prioridade } var linesEntered: integer; processo: integer; procedure ProcessoUm; { Primeiro terminal } begin while true do begin LeProximaLinhaDoTerminal; while processo = 2 do; { espera RC livre } { Regi~o Crtica } a linesEntered := linesEntered + 1; { Fim da Regi~o Crtica } a processo := 2; ProcessaALinha; end; end; procedure ProcessoDois; { Segundo terminal } begin while true do begin LeProximaLinhaDoTerminal; while processo = 1 do; { espera RC livre } { Regi~o Crtica } a linesEntered := linesEntered + 1; { Fim da Regi~o Crtica } a processo := 1; ProcessaALinha; end; end; { Programa principal: ativa~o dos terminais } ca begin linesEntered := 0; processo := 1; { valor arbitrariamente escolhido } parbegin ProcessoUm; ProcessoDois; parend; end. Exemplo 2.6 Soluo do problema dos terminais atravs de Dekker ca e

2.10. A SOLUCAO DE PETERSON

43

Dijkstra generalizou a soluo de Dekker para n processos em 1965 e, ca como era de se esperar, a generalizao mostrou-se bem mais complicada. ca Donald Knuth aperfeioou ainda mais a soluo geral de Dijkstra, elimic ca nando a possibilidade de adiamento innito. Visto a introduo de insca trues tipo TST o interesse nestas solues apenas histrico. co co e o

2.10

A soluo de Peterson ca

Outras maneiras de implementar-se primitivas de excluso mtua seria aa u travs da utilizao do algoritmo de G. L. Peterson, publicado em 1981, que e ca representa uma soluo mais simples que a soluo de Dekker. ca ca A soluo de Peterson, como colocado na Listagem 9, se baseia na ca denio de duas primitivas de excluso mtua, utilizadas pelos procesca a u sos que desejam utilizar a regio cr a tica. Tais primitivas so as funes a co enter region() e leave region() que, respectivamente, devem ser utilizadas para sinalizar a entrada do processo na regio cr a tica e sua sa da da mesma. #define FALSE 0 #define TRUE 1 #define N 2 int turn; int interested[N]; void enter region(int process) { int other = 1 - process; interested[process] = TRUE; turn = process; while (turn==process && interested[other]==TRUE); } void leave region(int process) { interested[process] = FALSE; } Exemplo 2.7 Soluo de Peterson para excluso mtua de 2 processos ca a u Note tambm o uso de um vetor contendo a sinalizao de interesse dos e ca processo em utilizar a regio cr a tica. No exemplo dado a soluo para dois e ca processos, que simplica a determinao de interesse por parte dos demais ca processos. Na soluo proposta por Peterson temos que as funes enter region() ca co e leave region() so equivalentes as primitivas EnterMutualExclusion e a

44

CAP ITULO 2. PROCESSOS

ExitMutualExclusion respectivamente. Tal soluo bastante simples e ca e pode ser facilmente implementada para n processos diferentes pois a mesma rotina serve a todos os processos. Sua unica desvantagem que impe uma e o espera ocupada, tal como na soluo de Dekker ou atravs do uso de insca e trues TST. co Os sistemas operacionais Microsoft Windows 9x/2000 oferecem um mecanismo eciente e relativamente simples para o controle de acesso ` regies a o cr ticas, baseado numa estrutura especial designada Critical Section e algumas primitivas de controle [CAL96, p. 224]: InitializeCriticalSection, que prepara o uso de uma regio cr a tica; EnterCriticalSection, que corresponde a solicitao de uso da reca gio cr a tica (regio de entrada do protocolo de acesso); a LeaveCriticalSection, que corresponde a nalizao do uso da reca gio cr a tica (regio de sa do protocolo de acesso); e a da DeleteCriticalSection, que elimina as estruturas de controle declaradas para uma regio cr a tica. Tal mecanismo pode ser utilizado como sugerido no Exemplo 2.8, o qual est expresso na linguagem ObjectPascal do Borland Delphi. a { declara~o da varivel especial de controle } ca a Section: TRTLCriticalSection; { inicializa~o da varivel de controle } ca a InitializeCriticalSection(Section); { sinaliza~o de entrada na regi~o crtica } ca a EnterCriticalSection(Section); { cdigo da regi~o crtica posicionado aqui } o a e { sinaliza~o de sada na regi~o crtica } ca a LeaveCriticalSection(Section); { libera~o da varivel de controle } ca a DeleteCriticalSection(Section); Exemplo 2.8 Mecanismo de excluso mtua no MS-Windows 9x/2000 a u A declarao da varivel especial de controle deve ser global, enquanto ca a que a inicializao e liberao desta varivel deve ocorrer respectivamente ca ca a

2.11. DEADLOCKS

45

antes de qualquer uso da regio cr a tica e aps a nalizao de tal uso por o ca diferentes processos da aplicao (no caso threads da aplicao). O cdigo ca ca o reconhecido como regio cr a tica deve ser posicionado entre as primitivas de sinalizao de entrada e sa da regio cr ca da a tica, sendo utilizado por todos as rotinas que possam estar em execuo concomitante. ca Esta soluo resolve problemas de excluso mtua originados por procesca a u sos de uma mesma aplicao, ou seja, threads de um mesmo programa. Para ca sincronizao de rotinas de programas diferentes deve ser utilizado outro meca canismo, denominado Mutexes no MS-Windows 9x, cujo funcionamento e semelhante aos semforos (veja a seo 2.12.2). a ca Semforos, Semforos Contadores e Contadores de eventos so outros a a a tipos de soluo de podem solucionar problemas de excluso mtua. Alca a u gumas destas alternativas sero vistas mais a frente, quando tratarmos da a comunicao inter-processos (seo 2.12). ca ca

2.11

Deadlocks

Em sistema multiprogramado, o termo deadlock, ou seja, bloqueio perpe tuo ou impasse, signica um evento que jamais ir ocorrer [DEI92, TAN92, a SGG01]. Dizemos que um processo est em deadlock quando espera por a um evento particular que jamais acontecer. Igualmente dizemos que um a sistema est em deadlock quando um ou mais processos esto nesta situao. a a ca Segundo Tanenbaum: Um conjunto de processos est num bloqueio perptuo quando a e cada processo do conjunto est esperando por um evento que apea nas outro processo do conjunto pode causar. [TAN92, p. 242] Observemos a Figura 2.11, onde temos ilustrado um deadlock que pode ocorrer em duas linhas de trens cujas intersees no so compartilhveis. co a a a Problemas semelhantes podem ocorrer no trnsito de uma metrpole. a o Um bloqueio perptuo pode ocorrer de diferentes maneiras: e Quando um processo colocado em espera por algo e o sistema opee racional no inclui qualquer previso para o atendimento desta espera a a dizemos que ocorreu o bloqueio perptuo de um processo unico (onee process deadlock ). Quando se forma uma cadeia sucessiva de solicitaes de recursos que co culminam num arranjo circular, onde um processo A, que detm um e recurso R1, solicita um recurso R2 alocado para um processo B, que por sua vez est solicitando o recurso R1, em uso por A (veja a Figura 2.15). a Como nenhum processo de dispe a, voluntariamente, liberar o recurso o que aloca, congura-se uma situao de bloqueio perptuo. ca e

46

CAP ITULO 2. PROCESSOS

Figura 2.11: Representao de um deadlock ca Independentemente do tipo, os deadlocks causam preju zos srios ao sise tema, pois mesmo num one-process deadlock, recursos cam alocados desnecessariamente, o que signica que restaro menos recursos para os demais a processos. Nos deadlocks circulares, alm da alocao desnecessria de ree ca a cursos, podem ser formadas las de esperas pelos recursos envolvidos, deteriorando o tempo de resposta do sistema, podendo at causar situaes de e co instabilidade ou crash do sistema operacional. Quando um processo bloqueado indenidamente, cando em espera por e um recurso, dizemos que est ocorrendo um adiamento indenido ou bloa queio indenido (respectivamente indenite postponement, indenite blocking). Como um processo nessa situao no pode prosseguir com sua a ca a execuo devido a ausncia de recursos, tambm dizemos que ele est em ca e e a starvation (isto , estagnado). e A maioria dos problemas que culminam com os deadlocks esto relacioa nados com recursos dedicados, isto , com recursos que devem ser utilizados e serialmente, ou seja, por um processo de cada vez [DEI92, p. 156].

2.11.1

Diagramas de processos e recursos

O estudo dos bloqueios perptuos pode ser bastante facilitado atravs da e e utilizao de diagramas especiais denominados diagramas de alocao de reca ca cursos ou diagramas de processo versus recursos ou ainda grafos de alocao ca de recursos [SGG01, p. 162]. Nestes diagramas existem apenas duas entidades, processos e recursos, interligadas por arcos direcionados. Os processos so representados atravs a e de quadrados ou retngulos. Os recursos so representados atravs de cira a e cunferncias. Os arcos direcionados unindo processos e recursos so usados e a com dois signicados distintos: requisio de recursos e alocao de recurca ca sos. Na Figura 2.12 temos os elementos construtivos poss veis deste tipo de

2.11. DEADLOCKS diagrama.

47

Figura 2.12: Elementos do Diagrama de Processos x Recursos Recursos capazes de ser compartilhados podem ser representados por pequenas circunferncias, dispostas dentro do recurso compartilhvel, uma e a para cada unidade de sua capacidade de compartilhamento. Assim, atravs e destes trs elementos (retngulos, circunferncias e arcos) podemos represene a e tar uma innidade de diferentes situaes envolvendo processos, seus pedico dos de recursos (requests) e a alocao de recursos determinada pelo sistema ca operacional (grants). Ao mesmo tempo, temos que so proibidas as construes ilustradas na a co Figura 2.13, isto , processos requisitando ou alocando outros processos e, e da mesma forma, recursos requisitando ou alocando outros recursos.

Figura 2.13: Situaes proibidas no diagrama de processos e recursos co Usualmente no se ilustram o uso de memria e processador por parte a o dos processos, de modo que passam a no existir processos isolados, isto a , processos que no estejam utilizando algum outro tipo de recurso. Na e a Tabela 2.3 esto relacionados os recursos do sistema, os processos alocados a os processos requisitantes destes recursos. Atravs da Tabela 2.3 podemos construir o diagrama de processos e e recursos ilustrado na Figura 2.14. Neste exemplo, embora exista disputa por recursos (processos B e E requisitam o uso do recurso W), no existe nenhum caminho fechado, ou seja, a no existe qualquer deadlock, sendo assim este diagrama pode ser reduzido: a 1. D naliza o uso de Z. 2. Com Z livre, C libera W para alocar Z.

48

CAP ITULO 2. PROCESSOS

Tabela 2.3: Exemplo de alocao e requisio de recursos ca ca Recurso Processo Processo(s) Alocado Requisitante X A Y B A W C B, E Z D C

Figura 2.14: Diagrama de processos e recursos da Tabela 2.3

3. Com W livre, ou B ou E podero aloc-lo. Se B for favorecido nesta a a disputa, alocando W, embora E permanea em espera, Y ser liberado. c a 4. Com Y livre, A libera X para alocar Y. 5. No surgindo novos processos, B libera W. a 6. Com W livre, E pode prosseguir sua execuo. ca A reduo, independentemente do tempo que os processos utilizaro os ca a recursos alocados, mostra que tais processos sero atendidos dentro de um a intervalo de tempo menor ou maior. A despeito de questes relacionadas o com desempenho, esta a situao desejvel em um sistema. ca a Diferentemente, a alocao e requisio de recursos em um sistema pode ca ca congurar um deadlock. Utilizando o diagrama de alocao de recursos, poca der amos representar um deadlock envolvendo dois processos e dois recursos, como ilustra a Figura 2.15. Atravs destes diagramas, ca clara a situao da formao de uma e ca ca cadeia circular (um caminho fechado) ligando uma sequncia de requisies e co e alocaes de recursos do sistema por parte de um grupo de processos. co

2.11. DEADLOCKS

49

Figura 2.15: Representao de deadlock envolvendo 2 processos ca

2.11.2

Condies para ocorrncia de deadlocks co e

Coman, Elphick e Shoshani (1971) armam que existem quatro condies co para a ocorrncia de um deadlock : e 1. Os processos exigem controle exclusivo dos recursos que solicitam (condio de excluso mtua). ca a u 2. Os processos mantm alocados recursos enquanto solicitam novos ree cursos (condio de espera por recurso) ca 3. Os recursos no podem ser retirados dos processos que os mantm a e alocados enquanto estes processos no nalizam seu uso (condio de a ca ausncia de preemptividade). e 4. Forma-se uma cadeia circular de processos, onde cada processo solicita um recurso alocado pelo prximo processo na cadeia (condio de o ca espera circular). Segundo Tanenbaum [TAN92, p. 245] existem basicamente quatro alternativas para o tratamento dos bloqueios perptuos, ou seja, quatro ese tratgias bsicas para resolvermos os problemas dos deadlocks: e a 1. Ignorar o problema (algoritmo da avestruz) Apesar de no parecer uma soluo para o problema, devem ser cona ca sideradas a possibilidade de ocorrncia dos deadlocks e os custos come putacionais associados ao seu tratamento. A alternativa mais simples realmente ignorar o problema e conviver com a possibilidade de sua e ocorrncia. Os sistemas UNIX utilizam esta aproximao favorecendo e ca aspectos de performance em situaes mais comuns. co 2. Deteco e recuperao dos deadlocks ca ca Outra alternativa permitir que os bloqueios ocorram, procurandoe se detect-los e recuper-los. Deve-se utilizar algum algoritmo que a a produza um diagrama de alocao de recursos, analisando em busca ca

50

CAP ITULO 2. PROCESSOS de caminhos fechados (deadlocks) utilizando alguma tcnica de recue perao. Estes algoritmos especiais, que apesar da sobrecarga que ca provocam, podem evitar maiores transtornos no sistema possibilitando que na ocorrncia dos deadlocks estes sejam descobertos e eliminados. e 3. Preveno dinmica ca a Os deadlocks podem ser prevenido atravs de procedimentos cuidae dosos de alocao que analisam constantemente a possibilidade de ca formao de cadeias circulares. Tais algoritmos tambm so complexos ca e a e acabam por onerar o sistema computacional. 4. Preveno estrutural ca Os deadlocks podem ser estruturalmente eliminados de um sistema atravs da negao de uma ou mais das quatro condies de ocorrncia. e ca co e Para isto devem ser tratadas as condies de Coman et al., o que co e resumidamente apresentado na Tabela 2.4 abaixo.

Tabela 2.4: Condies de Coman et al. para preveno de deadlocks co ca Condio ca Aproximao ca Excluso a Colocar todos os recursos do sistema em spool. Mtua u Reteno ca Exigir a alocao inicial de todos os recursos ca e Espera necessrios. a Ausncia de e Retirada de recursos dos processos. Preemptividade Espera Ordenao numrica dos pedidos de recursos. ca e Circular

2.11.3

Recuperao de deadlocks ca

Ainda que os deadlocks ocorram, dentro de certas circunstncias poss a e vel resolv-los, isto , recuper-los ou elimin-los, utilizando algumas tcnicas: e e a a e 1. Recuperao atravs de preempo ca e ca Retirando-se algum recurso envolvido no bloqueio perptuo do proe cesso que o aloca permite a quebra do caminho fechado e conseqente u soluo do deadlock. O problema reside que nem sempre um recurso ca pode ser retirado de um processo sem efeitos colaterais prejudiciais a este processo. 2. Recuperao atravs de operaes de rollback ca e co Exige a implementao de checkpoints, isto , um mecanismo de armaca e zenamento de estados seguros do sistema atravs da cpia dos estados e o

2.11. DEADLOCKS

51

individuais dos processos em arquivos especiais. Isto possibilita que tais estados sejam retomados a partir daquele ponto. Esta soluo, ca alm da dif implementao, exige muitos recursos e tem elevado e cil ca custo computacional, embora resolva bem o problema. 3. Recuperao atravs de eliminao de processos ca e ca Esta maneira mais simples, embora tambm a mais drstica. Um ou e e a mais dos processos identicados como envolvidos no bloqueio perptuo e podem ser sumariamente eliminados, de modo que o bloqueio seja resolvido. Enquanto alguns processos podem ser seguramente reiniciados (p.e., uma compilao), procedimentos de atualizao em bancos de ca ca dados nem sempre podem ser interrompidos e reiniciados. A eliminao de processos que no podem ser simplesmente reiniciados pode ca a provocar preju zos ao sistema.

2.11.4

Preveno de deadlocks ca

A preveno de deadlocks a estratgia preferencialmente adotada pelos ca e e projetistas de sistemas, adotando-se uma pol tica que assume o custo da preveno como alternativa aos preju ca zos poss veis da ocorrncia dos deadlocks e e de sua eliminao. Para prevenir-se a ocorrncia dos deadlocks podem ca e ser adotadas uma ou mais das seguintes estratgias, tal como proposto por e Havender (1968): 1. Um processo s pode solicitar um recurso se liberar o recurso que o detm. e 2. Um processo que tm negado o pedido de recurso adicional deve liberar e o recursos que atualmente detm. e 3. Se a solicitao de recursos ocorrer em ordem linear ascendente, a ca espera circular no consegue se formar. a Mesmo com as quatro condies estando presentes, poss evitar-se a co e vel ocorrncia dos deadlocks utilizando-se o algoritmo do banqueiro de Dijkstra e (65). Antes disto devemos diferenciar estados seguros e inseguros.

2.11.5

Estados seguros e inseguros

A maioria dos algoritmos conhecidos para preveno de deadlocks se baseia ca no conceito de estado seguro. Um estado seguro aquele em que existe e garantia que todos os processos podero ser nalizados considerando (1) suas a necessidades em termos de recursos e (2) os recursos efetivamente dispon veis no sistema [DEI92, p. 166] [TAN92, p. 254]. Desta forma os recursos cedidos aos processos sero devolvidos ao sistema para serem alocados para outros a processos, numa seqncia de estados seguros (veja a Figura 2.16). ue

52

CAP ITULO 2. PROCESSOS

Figura 2.16: Seqncia de estados seguros ue

Por outro lado, um estado considerado como inseguro aquele em no e a existe a garantia de devoluo dos recursos devidos pois o processo no ca a recebe todos os recursos de que necessita no devolvendo ao sistema aqueles a eventualmente j alocados [DEI92, p. 166] [TAN92, p. 254]. Esta situao a ca ilustrada na Figura 2.17, partindo da mesma situao inicial colocada na e ca Figura 25. A maior conseqncia de um estado inseguro que existem ue e grandes chances de ocorrer um deadlock a partir desta situao sendo por ca isso necessrio evit-lo. a a

Figura 2.17: Seqncia de estados inseguros ue

A ocorrncia de um estado inseguro, bem como de um estado seguro, e depende estritamente da ordem com os recursos dispon veis so alocados e a liberados pelos processos envolvidos. O sistema operacional, portanto, deve analisar se pode ou no atender plenamente as necessidades de um processo a antes de ceder recursos que no podero ser devolvidos. a a

2.12. COMUNICACAO DE PROCESSOS

53

2.11.6

Algoritmo do banqueiro

O algoritmo do banqueiro, proposto por Dijkstra em 1965, uma soluo e ca clssica no estudo dos sistemas operacionais que visa ilustrar as questes a o associadas a concesso de recursos aos processos e as conseqncias poss a ue veis destas concesses [DEI92, p. 167] [TAN92, p. 256]. Este algoritmo efetua o um mapeamento dos recursos e processos de forma a considerar, a cada pedido de uso de um recurso, se tal alocao leva a um estado seguro ou ca no. Se o estado seguinte seguro, o pedido concedido, caso contrrio tal a e e a solicitao adiada at que possa conduzir a um estado seguro. ca e e Na prtica, o problema desta soluo que cada processo deve espea ca e cicar, inicialmente, a quantidade mxima de cada recurso que pretenda a utilizar. Alm disso, a quantidade de processos varia a cada instante em sise temas reais. Se um novo processo conduzir a um estado inseguro, sua criao ca dever ser adiada, o que tambm pode gerar um deadlock. Outro ponto a e e que a quantidade de recursos pode variar (geralmente diminuir com falhas no sistema) aumentado muito a complexidade desta soluo e, portanto, sua ca aplicao prtica. ca a

2.12

Comunicao de processos ca

A comunicao entre processos ou comunicao inter-processo (IPC ou Inca ca ter Process Communication) uma situao comum dentro dos sistemas e ca computacionais que ocorre quando dois ou mais processos precisam se comunicar, isto , quando os processos devem compartilhar ou trocar dados e entre si. A comunicao entre processos pode ocorrer em vrias situaes ca a co diferentes tais como: redirecionamento da sa (dos resultados) de um comando para outro, da envio de arquivos para impresso, a transmisso de dados atravs da rede, a e transferncia de dados entre perifricos, etc. e e Tal comunicao se d, geralmente, atravs da utilizao de recursos coca a e ca muns aos processos envolvidos na prpria comunicao. Como no razovel o ca a e a que tal comunicao envolva mecanismos de interrupo devido a sua comca ca plexidade e limitaes de performance, as interrupes so reservadas para co co a a administrao do sistema em si. Para a comunicao inter-processo neca ca e cessrio algum mecanismo bem estruturado. Veremos alguns mecanismos a poss veis para a comunicao de processos destacando-se: ca Buers

54 Semforos a Memria Compartilhada o

CAP ITULO 2. PROCESSOS

2.12.1

Buers e operaes de sleep e wakeup co

Um problema t pico o do produtor-consumidor, onde dois processos dise tintos compartilham um buer, uma rea de dados de tamanho xo que a se comporta como um reservatrio temporrio [DEI92, p. 90] [TAN92, p. o a 39]. O processo produtor coloca informaes no buer enquanto o processo co consumidor as retira de l. a Se o produtor e o consumidor so processos seqenciais, a soluo do a u ca problema simples, mas caso sejam processos paralelos passa a existir uma e situao de concorrncia. Mesmo nos casos onde existam mltiplos produca e u tores ou mltiplos consumidores o problema encontrado basicamente o u e mesmo. Este um problema clssico de comunicao inter-processo, tais e a ca como os problemas do jantar dos lsofos e do barbeiro dorminhoco discuo tidos em detalhes por Tanenbaum [TAN92, p. 56]. Programas que desejam imprimir podem colocar suas entradas (nomes dos arquivos a serem impressos ou os arquivos de impresso propriamente a ditos) em uma rea de spooling, denominada de printer spool. Um outro a processo (tipicamente um daemon de impresso) verica continuamente a a entrada de entradas no spool, direcionando-as para uma ou mais impressoras existentes quando estas se tornam ociosas, com isto retirando as entradas da rea de spool. E claro que a rea reservada para o spool nita e que a a e as velocidades dos diversos produtores (programas que desejam imprimir) pode ser substancialmente diferente das velocidades dos consumidores (das diferentes impressoras instaladas no sistema). A mesma situao pode ocorrer quando diversos processos utilizam uma ca placa de rede para efetuar a transmisso de dados para outros computadores. a Os processos so os produtores, enquanto o hardware da placa e seu cdigo a o representam o consumidor. Em funo do tipo de rede e do trfego, temos ca a uma forte limitao na forma que a placa consegue consumir (transmitir) ca os dados produzidos pelos programas e colocados no buer de transmisso. a Existem outras situaes semelhantes, o que torna este problema um co clssico dentro do estudo dos sistemas operacionais. Na Figura 2.18 temos a um esquema do problema produtor-consumidor. Tanto o buer como a varivel que controla a quantidade de dados que a o buer contm so regies cr e a o ticas, portanto deveriam ter seu acesso limitado atravs de primitivas de excluso mtua, desde que isto no impusesse e a u a esperas demasiadamente longas aos processos envolvidos. Dado que o buer tem um tamanho limitado e xo podem ocorrer problemas tais como:

2.12. COMUNICACAO DE PROCESSOS

55

Figura 2.18: Problema do produtor-consumidor o produtor no pode colocar novas informaes no buer porque ele a co j est cheio; ou a a o consumidor no pode retirar informaes do buer porque ele est a co a vazio. Nestes casos tanto o produtor como o consumidor poderiam ser adormecidos, isto , ter sua execuo suspensa, at que existisse espao no buer e ca e c para que o produtor coloque novos dados ou existam dados no buer para o consumidor possa retir-los. Uma tentativa de soluo deste problema utia ca lizando as primitivas sleep (semelhante a uma operao suspend ) e wakeup ca (semelhante a uma operao resume) pode ser vista no Exemplo 2.9. ca A soluo dada considerada parcial pois pode ocorrer que um sinal de ca e wakeup seja enviado a um processo que no esteja logicamente adormecido, a conduzindo os dois processos a um estado de suspenso que permanecer a a indenidamente, como indicado na seqncia de etapas a seguir. ue 1. O buer se torna vazio. 2. O consumidor l contador=0. e 3. O escalonador interrompe o consumidor. 4. O produtor produz novo item e o coloca no buer. 5. O produtor atualiza varivel contador=1. a 6. O produtor envia sinal wakeup para consumidor pois contador=1. 7. O sinal de wakeup perdido pois o consumidor no est logicamente e a a inativo. 8. O consumidor ativado, continuando execuo, pois considera que e ca contador=0. 9. O consumidor se coloca como inativo atravs de um sleep. e

56 #define FALSE 0 #define TRUE 1 #define N 100 int contador = 0;

CAP ITULO 2. PROCESSOS

void produtor(void) { int item; while (TRUE) { produzir item(&item); if (contador == N) sleep(); colocar item(item); contador++; if (contador == 1) wakeup(consumidor); } } void consumidor (void) { int item; while (TRUE) { if (contador == 0) sleep(); remover item(&item); contador--; consumir item(item); if (contador == N-1) wakeup(produtor); } } Exemplo 2.9 Soluo parcial do problema produtor-consumidor ca 10. O produtor continuar produzindo. a 11. O buer car cheio pois consumidor est inativo, fazendo que o proa a dutor se coloque como inativo com outro sleep. 12. Ambos os processos permanecero para sempre inativos. a A perda de um sinal wakeup acontece devido ao uso irrestrito da varivel a contador. A primeira soluo encontrada para este problema foi adicionar ca uma ag que sinalizasse a situao de envio de um sinal wakeup para um ca processo ativo. Tal ag se denomina (wakeup waiting ag). Em qualquer tentativa de adormecer, o processo deve antes vericar esta ag, ocorrendo o seguinte: se flag=0, o processo adormece; e

2.12. COMUNICACAO DE PROCESSOS se flag=1, o processo permanece ativo e faz flag=0.

57

Esta improvisada soluo resolve o problema as custas de uma ag para ca processo envolvido no problema, mas necessrio destacar que o problema e a continua a existir, apenas de maneira mais sutil.

2.12.2

Semforos a

Para resolver o problema produtor-consumidor, Dijkstra props tambm em o e 1965 a utilizao de variveis inteiras para controlar o nmero de sinais waca a u keup para uso futuro [DEI92, p. 89]. Estas variveis foram denominadas a semforos, e sobre elas estabeleceu-se duas diferentes operaes: P (coa co nhecida tambm como Down) e V (conhecida tambm como Up), que so e e a generalizaes das operaes sleep e wakeup e funcionam como mostra a co co Tabela 2.5. Tabela 2.5: Operaes P() e V() sobre semforos co a Operao ca P(X) ou Down(X) Verica se o valor do semforo X positivo (X>0). a e Caso armativo decrementa X de uma unidade (ou seja, consome um sinal de wakeup). Caso negativo envia sinal de sleep, fazendo inativo o processo. Operao ca V(X) ou Up(X) Incrementa o valor do semforo X de uma unidade. a Existindo processos inativos, na ocorrncia uma operao down, e ca um deles escolhido aleatoriamente pelo sistema para ser ativado e (semforo retornar a zero, i.e., X=0). a a A implementao de semforos em linguagem C poderia ser realizada ca a como esquematizada no Exemplo 2.10. Ambas a operaes devem ser realizadas como transaes atmicas, isto co co o , de forma indivis e vel, de forma que enquanto uma operao esteja em andaca mento com um dado semforo, nenhuma outra seja efetuada, garantindo-se a a consistncia dos valores das variveis semforo. e a a A utilizao de semforos permite a sincronizao de vrios processos, ou ca a ca a seja, num ambiente onde existem diversos processos paralelos competindo por recursos, o uso de semforos garante que um dado recurso seja utilizado a de forma seqencial, ou seja, de forma exclusiva. u Os semforos e as operaes sobre eles so usualmente implementadas a co a como chamadas do sistema operacional, e representam uma soluo para ca

58 typedef int semaforo; void P(semaforo *s) { if(*s > 0) { s = *s - 1; } else { sleep(); } } void V(semaforo *s) { if (ExisteProcessoEsperando(s)) { AtivaProcessoEsperando(s); } else { s = *s + 1; } }

CAP ITULO 2. PROCESSOS

Exemplo 2.10 Implementao de operaes P() e V() sobre semforos ca co a o problema de perda de sinais de wakeup visto no problema produtorconsumidor. Sendo regies cr o ticas, sua implementao utiliza instrues ca co tipo TST e, embora provocando um espera ativa, so operaes extremamente a co rpidas, muito mais ecientes que o uso de outras solues que utilizem tais a co instrues ou as solues de Dekker ou Peterson. co co Semforos iniciados com valor 1 so conhecidos como semforos binrios a a a a [TAN92, p. 42], que permitem que apenas um dentre n processos utilize um dado recurso, ou seja, garantem o uso individual deste recurso atravs da e excluso mtua. a u Os semforos so freqentemente utilizados para sincronizao de proa a u ca cessos, ou seja, so utilizados para garantir a ocorrncia de certas seqncias a e ue de eventos ou para impedir que outras seqncias nunca ocorram ou para ue que ocorram de uma forma espec ca. No Exemplo 2.11 temos uma poss soluo para o problema do provel ca dutor consumidor utilizando semforos. Consideramos que as operaes P() a co e V() foram implementadas como ilustrado no Exemplo 2.10 e inclu das no programa atravs do cabealho declarado. e c

2.12.3

Memria compartilhada o

A memria compartilhada um mecanismo freqentemente utilizado o e u para a comunicao entre processos diferentes onde uma regio de memria ca a o reservada para uso comum dos processos envolvidos na comunicao. e ca A rea de memria reservada para os processo semelhante a um buer, a o e mas nesta situao todos os processos envolvidos podem escrever e ler neste ca

2.12. COMUNICACAO DE PROCESSOS

59

#include "semforos.h" #define FALSE 0 #define TRUE 1 #define N 100 typedef int semaforo; semaforo mutex = 1; semaforo vazio = N; semaforo cheio = 0; void produtor(void) { int item; while (TRUE) { produzir item(&item); p(&vazio); p(&mutex); colocar item(item); v(&mutex); v(&cheio); } } void consumidor(void) { int item; while (TRUE) { p(&cheio); p(&mutex); remover item(&item); v(&mutex); v(&vazio); consumir item(item); } } Exemplo 2.11 Soluo do problema produtor-consumidor com semforos ca a

60

CAP ITULO 2. PROCESSOS

buer. Como dois processo no podem acessar simultaneamente esta regio a a de memria, embora compartilhada seu uso deve ser serializado, ou seja, o um processo de cada vez deve utilizar a regio de memria destinada a a o comunicao entre eles. Para obter-se isso, associa-se um semforo com ca a valor inicial 1 ` regio de memria. Todo os processos, antes de usarem a a o a rea de memria devem acionar uma operao P(). Ao nalizar o uso a o ca devero acionar uma operao V(), garantindo seu uso exclusivo. a ca De forma geral, a soluo semelhante aquela do problema de produtores ca e e consumidores, aplicada a n processos que podem tanto ler ou escrever numa regio de memria espec a o ca, sendo freqentemente utilizada para passagem u de mensagens entre processos.

2.12.4

Outros mecanismos de IPC

Contadores de eventos Reed e Kanodia propuseram em 1979 uma outra soluo para o problema ca de produtor-consumidor sem a necessidade de obter-se a excluso mtua, a u tal como na soluo que utiliza semforos. Esta soluo utiliza uma varivel ca a ca a especial denominada contador de eventos (event counters) que possui trs e operaes denidas como mostra a Tabela 2.6 co Tabela 2.6: Operaes sobre contadores de eventos co Operao ca Descrio ca read(E) Retorna o valor corrente de E. advance(E) Incrementa, atomicamente, o valor de E de uma unidade. await(E, v) Espera que E tenha valor igual ou superior a v. E poss solucionar-se o problema utilizando os contadores de eventos vel e suas operaes, de forma semelhante ao uso de semforos. co a Monitores Tanto os semforos como os contadores de eventos podem resolver uma a srie de problemas, mas seu uso deve ser cuidadoso para que no provoque e a situaes desastrosas. A inverso de dois semforos, (por exemplo, mutex co a a e vazio na soluo do problema produtor-consumidor usando semforos) ca a pode provocar um bloqueio perptuo, ou seja, faz com que uma dada tarefa e pare de ser executada, degradando o sistema e podendo causar at mesmo e sua instabilidade. Para que tais problemas pudessem ser resolvidos mais facilmente Hoare (1974) e Hansem (1975) propuseram o conceito demonitor: uma coleo ca de procedimentos, variveis e estruturas agrupados num mdulo ou pacote a o especial. Segundo Guimares: a

2.12. COMUNICACAO DE PROCESSOS Monitor um conjunto de procedimentos que operam sobre vae riveis comuns a vrios processos. Um procedimento do monia a tor corresponde a uma regio cr a tica. Um monitor corresponde, portanto, a um conjunto de regies cr o ticas operando sobre as mesmas variveis comuns. [GUI86, p. 88] a

61

Processos podem acessar os procedimentos e funes de um monitor co embora no possam utilizar diretamente a estrutura interna de seus dados a [TAN92, p. 45], num arranjo muito semelhante a utilizao da interface de ca um objeto, sem acesso aos seus campos privativos. No Exemplo 2.12, temos a declarao de um monitor numa notao semelhante ao Pascal. ca ca Monitor Exemplo; { declara~o de variveis } ca a emUso : boolean; livre : condition; procedure AlocaRecurso; begin if emUso then wait(livre); emUso := true; end; procedure LiberaRecurso; begin emUso := false; signal(livre); end; begin emUso := false; { inicializa~o } ca end; end monitor. Exemplo 2.12 Exemplo de monitor Esta soluo se baseia na introduo de variveis de condio e de duas ca ca a ca operaes especiais sobre elas: AlocaRecurso e LiberaRecurso. Quando co um monitor descobre que uma operao no poss ca a e vel, ele efetua uma operao wait sobre uma certa varivel de condio, provocando o bloqueio ca a ca do processo que utilizou o monitor. Isto permite que outro processo, anteriormente bloqueado utilize o recurso. Este processo, ou ainda outro, pode efetuar uma operao de signal sobre aquela varivel de condio, saindo ca a ca imediatamente do monitor. Um dos processos em espera pela condio, ao ca ser ativado pelo escalonador poder ento prosseguir com o trabalho. a a

62

CAP ITULO 2. PROCESSOS

Apesar de serem semelhantes as operaes de sleep e wakeup, vistas na co seo 2.12.1, atravs dos monitores os problemas ocorridos em situaes ca e co de corrida no se repetem dado a garantia de excluso mtua sobre as a a u operaes nas variveis de condio internas dos prprios monitores. Alm co a ca o e disso, as operaes wait e signal s podem ser utilizadas internamente aos co o procedimentos e funes dos monitores. Os monitores so um conceito de co a programao. Enquanto que os semforos podem ser implementados direca a tamente em C ou Pascal, com uso de algumas rotinas assembly, a implementao de monitores um pouco mais complexa, exigindo do compilador ca e primitivas de excluso mtua. a u

2.13

Threads

Como vimos, cada processo conta com uma estrutura de controle razoavelmente sosticada. Nos casos onde se deseja realizar duas ou mais tarefas simultaneamente, o soluo trivial a disposio do programador dividir as ca ca e tarefas a serem realizadas em dois ou mais processos. Isto implica na criao ca de manuteno de duas estruturas de controle distintas para tais processos, ca onerando o sistema, e complicando tambm o compartilhamento de recursos, e dados serem processos distintos. Uma alternativa ao uso de processos comuns o emprego de threads. e Enquanto cada processo tem um unico uxo de execuo, ou seja, s recebe ca o a ateno do processador de forma individual, quando um processo divido ca e em threads, cada uma das threads componentes recebe a ateno do procesca sador como um processo comum. No entanto, s existe uma estrutura de o controle de processo para tal grupo, o espao de memria o mesmo e todos c o e os recursos associados ao processo podem ser compartilhados de maneira bastante mais simples entre as suas threads componentes. Segundo Tanebaum, as threads foram inventadas para permitir a combinao de paralelismo com exeuo seqencial e chamadas de sistema bloca ca u queantes [TAN92, p. 509]. Na Figura 2.19 representamos os uxos de execuo de um processo comum e de outro, divido em threads. ca

Figura 2.19: Processos e threads

2.13. THREADS

63

Desta forma, as threads podem ser entendidas como uxos independentes de execuo pertencentes a um mesmo processo, que requerem menos ca recursos de controle por parte do sistema operacional. Assim, as threads so o que consideramos processos leves (lightweight processes) e constituem a uma unidade bsica de utilizao do processador [TAN92, p. 508] [SGG01, a ca p. 82]. Sistemas computacionais que oferecem suporte para as threads so usua almente conhecidos como sistemas multithreading. Como ilustrado na Figura 2.20, os sistemas multithreading podem suportar as threads segundo dois modelos diferentes: User threads As threads de usurio so aquelas oferecidas atravs de bia a e bliotecas espec cas e adicionais ao sistema operacional, ou seja, so a implementadas acima do kernel (ncleo do sistema) utilizando um mou delo de controle que pode ser distinto do sistema operacional, pois no a so nativas neste sistema. a Kernel threads As threads do sistema so aquelas suportadas diretamente a pelo sistema operacional e, portanto, nativas.

Figura 2.20: Threads de usurio e de kernel a Em sistemas no dotados de suporte a threads nativamente, o uso de a bibliotecas de extenso permite a utilizao de pseudo-threads. Exemplos a ca de bibliotecas de suporte threads de usurio so o PThreads do POSIX ou a a o C-threads do sistema operacional Mach. Atravs de tais biblioteca so oferecidos todos os recursos necessrios e a a para a criao e controle das threads. Usualmente os mecanimos de criao ca ca de threads de usurio so bastante rpidos e simples, mas existe uma desa a a vantagem: quando uma thread bloqueada (por exemplo, devido ao uso e de recursos de I/O), as demais threads freqentemente tambm so devido u e a ao suporte no nativo. Quando o suporte nativo, a criao das threads a e ca e usualmente mais demorada, mas no ocorrem os inconveniente decorrentes a do bloqueio de uma ou mais threads em relao `s demais. ca a

64

CAP ITULO 2. PROCESSOS

2.13.1

Modelos de multithreading

A forma com que as threads so disponibilizadas para os usurios o que a a e denominamos modelos de multithreading. Como mostra a Figura 2.21, so a comuns trs modelos distintos: e Modelo n para um. Este modelo empregado geralmente pelas bibliotecas de suporte de e threads de usurio, onde as vrias threads do usurio (n) so associadas a a a a a um unico processo suportado diretamente pelo sistema operacional. Modelo um para um. Modelo simplicado de multithreading verdadeiro, onde cada threads do usurio associada a uma thread nativa do sistema. Este moa e delo empregado em sistemas operacionais tais como o MS-Windows e NT/2000 e no IBM OS/2. Modelo n para m. Modelo mais sosticado de multithreading verdadeiro, onde um conjunto de threads do usurio n associado a um conjunto de threads a e nativas do sistema, no necessriamente do mesmo tamanho (m). Este a a modelo empregado em sistemas operacionais tais como o Sun Solaris, e Irix e Digital UNIX.

Figura 2.21: Modelos de multithreading

2.13.2

Benef cios do uso

A utilizao das threads pode trazer diversos benef ca cios para os programas e para o sistema computacional em si [SGG01, p. 83]: Melhor capacidade de resposta, pois a criao de uma nova thread e ca substancialmente mais rpida do a criao de um novo processo. a ca Compartilhamento de recursos simplicado entre as threads de um mesmo processo, que a situao mais comum de compartilhamento e ca e comunicao inter-processos. ca

2.13. THREADS

65

Economia, pois o uso de estruturas de controle reduzidas em comparao ao controle t ca pico dos processos, desoneramos o sistema. Alm e disso o compartilhamento de recursos simplicado leva tambm a ecoe nomia de outros recursos. Permitem explorar mais adequadamente as arquiteturas computacionais que dispem de mltiplos processadores. o u

66

CAP ITULO 2. PROCESSOS

Cap tulo 3

Escalonamento de Processos
O escalonamento de processadores a forma com os processadores e existentes num sistema computacional so utilizados para efetuar o proa cessamento, isto , como os processos so distribu e e a dos para execuo nos ca processadores. Tanenbaum prope a seguinte denio: o ca Quando mais de um processo executvel, o sistema operacioe a nal deve decidir qual ser executado primeiro. A parte do sisa tema operacional dedicada a esta deciso chamada escalonador a e ( scheduler) e o algoritmo utilizado chamado algoritmo de ese calonamento ( scheduling algorithm). [TAN92, p. 62] Por sua vez, Deitel coloca que: A designao de processadores f ca sicos para processos permite aos processos a realizao de trabalho. Esta designao uma tarefa ca ca e complexa realizada pelo sistema operacional. Isto chamado ese calonamento do processador ( processor scheduling). [DEI92, p. 287] Simplicando, podemos armar que num sistema onde s exista um unico o processador, o escalonamento representa a ordem em que os processos sero a executados. A forma com que se d o escalonamento , em grande parte, responsvel a e a pela produtividade e ecincia atingidas por um sistema computacional. e Mais do que um simples mecanismo, o escalonamento deve representar uma pol tica de tratamento dos processos que permita obter os melhores resultados poss veis num sistema. 67

68

CAP ITULO 3. ESCALONAMENTO DE PROCESSOS

3.1

Objetivos do escalonamento

O projeto de um escalonador adequado deve levar em conta uma srie de e diferentes necessidades, ou seja, o projeto de uma pol tica de escalonamento deve contemplar os seguintes objetivos: Ser justo: todos os processos devem ser tratados igualmente, tendo possibilidades idnticas de uso do processador, devendo ser evitado o e adiamento indenido. Maximizar a produtividade (throughput): procurar maximizar o nu mero de tarefas processadas por unidade de tempo. Ser previs vel: uma tarefa deveria ser sempre executada com aproximadamente o mesmo tempo e custo computacional. Minimizar o tempo de resposta para usurios interativos. a Maximizar o nmero poss de usurios interativos. u vel a Minimizar a sobrecarga (overhead ): recursos no devem ser desperdia c ados embora algum investimento em termos de recursos para o sistema pode permitir maior ecincia. e Favorecer processos bem comportados: processos que tenham comportamento adequado poderiam receber um servio melhor. c Balancear o uso de recursos: o escalonador deve manter todos os recursos ocupados, ou seja, processos que usam recursos sub-utilizados deveriam ser favorecidos. Exibir degradao previs ca vel e progressiva em situaes de intensa co carga de trabalho. Como pode ser visto facilmente, alguns destes objetivos so contraa ditrios, pois dado que a quantidade de tempo dispon de processamento o vel (tempo do processador) nita, assim como os demais recursos computacie onais, para que um processo seja favorecido outro deve ser prejudicado. O maior problema existente no projeto de algoritmos de escalonamento est associado a natureza imprevis a vel dos processos, pois no poss a e vel prevermos se um dado processo utilizar intensamente o processador, ou a se precisar grandes quantidades de memria ou se necessitar numerosos a o a acessos aos dispositivos de E/S.

3.2. N IVEIS DE ESCALONAMENTO

69

3.2

N veis de escalonamento

Existem trs n e veis distintos de escalonamento em um sistema computacional quando se considera a freqncia e complexidade das operaes envolvidas. ue co Escalonamento de alto n vel Chamado tambm de escalonamento de tarefas, corresponde a ade misso de processos, isto , a determinao de quais tarefas passaro a e ca a a competir pelos recursos do sistema. Uma vez admitidas, as tarefas transformam-se em processos. Correspondem a rotinas de alto n vel oferecidas pelas APIs do sistema operacional. Escalonamento de n vel intermedirio a Corresponde a determinao de quais processos existentes competiro ca a pelo uso do processador (processos ativos). Este n vel de escalonamento responsvel por administrar a carga do sistema, utilizando-se e a de primitivas de suspenso (suspend ) e ativao (resume ou activate). a ca Correspondem a rotinas internas do sistema operacional. Escalonamento de baixo n vel Rotinas que determinam qual processos, dentre os processos ativos, ser o prximo processo que efetivamente utilizar o processador. Esa o a tas tarefa so executadas pelo dispatcher, usualmente uma rotina esa crita diretamente em linguagem de mquina que se encontra permaa nentemente na memria principal. o Os n veis de escalonamento alto, intermedirio e baixo tambm so a e a conhecidos respectivamente como escalonamento de longo prazo, mdio e prazo e curto prazo. O escalonamento de alto n vel ou de longo prazo ocorre menos freqentemente num sistema enquanto o escalonamento de u baixo n ou de curto prazo ocorre constantemente, dado que representa a vel troca de contexto e o chaveamento do processador entre os processos ativos. Considerando assim os n veis de escalonamento e as operaes de susco penso (suspend ou sleep) e ativao (resume, wakeup ou activate), o mapa a ca de estados dos processos pode ser representado de maneira mais completa como ilustrado na Figura 3.2

3.3

Escalonamento preemptivo e no preemptivo a

Um algoritmo de escalonamento dito no preemptivo quando temos que e a o processador designado para um certo processo no pode ser retirado deste a at que o processo seja nalizado (completion). Analogamente, um algoe ritmo de escalonamento considerado preemptivo quando o processador e designado para um processo pode ser retirado deste em favor de um outro processo.

70

CAP ITULO 3. ESCALONAMENTO DE PROCESSOS

Figura 3.1: N veis de escalonamento

Algoritmos preemptivos so mais adequados para sistemas em que mla u tiplos processos requerem ateno do sistema, ou seja, no caso de sistemas ca multiusurio interativos (sistemas em tempo repartido) ou em sistema de a tempo real. Nestes casos, a preemptividade representa a troca do processo em execuo, assim sendo, para que o processador seja retirado de ca um processo, interrompendo seu trabalho, e designado a outro processo, anteriormente interrompido, fundamental que ocorra a troca de contexto dos e processos. Tal troca exige que todo o estado de execuo de um processo seja ca adequadamente armazenado para sua posterior recuperao, representando ca uma sobrecarga computacional para realizao desta troca e armazenagem ca de tais dados. Usualmente os algoritmos preemptivos so mais complexos a dada a natureza imprevis dos processos. vel Por sua vez, os algoritmos no preemptivos so mais simples e adea a quados para o processamento no interativo, semelhante aos esquemas de a processamento em lote dos sistemas batch. Embora no proporcionando ina teratividade, so geralmente mais ecientes e previs a veis quanto ao tempo de entrega de suas tarefas.

3.4. QUALIDADE DO ESCALONAMENTO

71

Figura 3.2: Mapa de estados dos processos Existem tambm algoritmos de escalonamento cooperativo, onde os proe cessos no so interrompidos, mas a preempo ocorre em duas situaes a a ca co bem denidas: quando o processo efetua uma operao de I/O e quando o ca processo nalizado [SGG01, p. 97]. Tambm poss que um processo e e e vel ceda o processador, voluntriamente, em favor de outros processos. Neste a caso, o processo educado poderia executar uma chamada a uma funo yeld ca (dar preferncia), como no caso do MS-Windows 3.1. A preempo voe ca luntria pode auxiliar numa distribuio mais equitativa da capacidade de a ca processamento do sistema, mas conta com a generosidade do programador, nem sempre dispon vel. A preemptividade de certos algoritmos se baseia no fato de que o processador , naturalmente, um recurso preemptivo, ou seja, um recurso que e pode ser retirado de um processo e posteriormente devolvido sem preju zo. O mesmo acontece com a memria. Por outro lado, outros tipos de recursos o no podem sofrer preempo, tais como impressoras e at mesmo arquivos, a ca e dado que muitas vezes no podem ser retirados de um processo sem que a ocorra preju para este. zo

3.4

Qualidade do escalonamento

Existem vrias critrios que permitem a avaliao da qualidade do servio a e ca c oferecido por um algoritmo de escalonamento [SGG01, p. 98]: uso do processador, throughput, tempo de resposta e tempo de permanncia. e O tempo de permanncia, tempo de retorno ou turnaround time, e um critrio simples dado pela soma do tempo de espera com o tempo e e de servio ou tempo de execuo: c ca

72

CAP ITULO 3. ESCALONAMENTO DE PROCESSOS

tp = tpermanencia = tespera + tservico

(3.1)

Em geral deseja-se que o tempo de permanncia seja o menor poss e vel. Na Figura 3.3 temos uma representao grca do tempo de permanncia. ca a e

Figura 3.3: Representao grca do tempo de permanncia ca a e Uma outra forma de avaliar-se o escalonamento utilizando-se o tempo e de permanncia normalizado (tpn), ou seja, a razo entre o tempo de e a permanncia (tp) e o tempo de servio (ts): e c tpn = tpermanencia tespera + tservico = tservico tservico (3.2)

Se a espera for zero, o que constitui o melhor caso poss vel, teremos que o tempo de permanncia normalizado de um processo ser 1 (um). Assim e a sendo, valores maiores do que este indicam um pior servio oferecido pelo c algoritmo de escalonamento.

3.5

Algoritmos de escalonamento

Existem vrios algoritmos que so utilizados para a realizao do escalonaa a ca mento de baixo n ou de curto prazo. Em todos eles, o principal objetivo vel e designar o processador para um certo processo dentre vrios processos exisa tentes, otimizando um ou mais aspectos do comportamento geral do sistema. Stallings categoriza os escalonadores como [STA92, p. 356]: 1. Orientados ao usurio: quando procuram otimizar os tempos de a resposta e permanncia alm da previsibilidade. e e 2. Orientados ao sistema: quando enfatizam a produtividade, a taxa de utilizao da processador, o tratamento justo e o balanceamento do ca uso de recursos. Sero abordados os seguintes algoritmos de escalonamento: a First In First Out

3.5. ALGORITMOS DE ESCALONAMENTO Highest Priority First Shortest Job First Highest Response-Ratio Next Shortest Remaining Time Round Robin Multilevel Queues Multilevel Feedback Queues

73

3.5.1

Escalonamento FIFO (First In First Out)

E a forma mais simples de escalonamento tambm conhecido como FCFS e (First Come First Served ), ou primeiro a chegar, primeiro a ser servido. No escalonamento FIFO os processos prontos (ou jobs) so colocado numa la a organizada por ordem de chegada, o que corresponde dizer que sua funo ca de seleo min(tchegada ), como mostra a Figura 3.4. ca e Com esta funo de seleo, seleciona-se dentre os processos na la de ca ca espera aquele com menor tempo de chegada. Tal processo recebe o uso do processador at que seja completado (completion), ou seja, o processo e permanece em execuo at que seja nalizado, de forma que os demais ca e processos na la quem esperando por sua oportunidade de processamento. Assim sendo, o escalonamento FIFO um algoritmo no preemptivo, pois e a os processos em execuo no so interrompidos. ca a a

Figura 3.4: Escalonamento FIFO (First In First Out) Embora d igual tratamento a todos os processos, ocorre que processos e de pequena durao no so favorecidos pois tem seu tempo de resposta forca a a temente inuenciado pelos processos a serem processados primeiramente, ou seja, o tempo de resposta aumenta consideravelmente em funo da quantica dade de processos posicionados a frente e tambm pela durao destes. e ca Outro ponto que processos importantes podem car a espera devido ` e a execuo de outros processos menos importantes dado que o escalonamento ca

74

CAP ITULO 3. ESCALONAMENTO DE PROCESSOS

FIFO no concebe qualquer mecanismo de distino entre processos (por a ca exemplo, processos com diferentes n veis de prioridade). Avaliemos o exemplo ilustrado pela Tabela 3.1, onde quatro processos A, B, C e D com tempos de processamento distintos, respectivamente 3, 35, 12 e 4 segundos, so escalonados conforme sua chegada pelo sistema operacional. a Tabela 3.1: Exemplo de la de processos sob escalonamento FIFO Processo tchegada tservico tespera tperm tpn A 0 3 0 3 1.00 B 1 35 2 37 1.06 C 2 12 36 48 4.00 D 3 4 47 51 12.75 Mdias 21.25 34.75 e 4.7 Podemos perceber que, em funo de como ocorreu o escalonamento, o ca menor processo obteve o pior servio, num esquema de escalonamento que c tende a ter tempos mdios de resposta maiores quanto maior o nmero de e u processos em espera. Esta forma de escalonamento, semelhante aos sistemas de processamento em lote (batch systems) no utilizada como esquema a e principal de escalonamento, mas como forma auxiliar de escalonamento para processamento de las batch.

3.5.2

Escalonamento HPF (Highest Priority First)

O escalonamento HPF (Highest Priority First) ou escalonamento por prioridades uma variante do escalonamento FIFO onde os processos em espera e pelo processador so organizados numa la segundo sua prioridade, sendo a colocados a frente os processos jobs de maior prioridade, isto , sua funo e ca de seleo max(prioridade), favorecendo os processos considerados mais ca e importantes [TAN92, p. 64] [SGG01, p. 105]. Aps iniciados, os processos no so interrompidos, ou seja, uma forma o a a e de escalonamento no preemptivo, oferecendo como a vantagem de propora cionar tempos mdios de espera menores para processos prioritrio. Na e a Figura 3.5 temos uma representao deste tipo de escalonamento. ca

Figura 3.5: Escalonamento HPF (Highest Priority First)

3.5. ALGORITMOS DE ESCALONAMENTO

75

A prioridade , em geral, representada por um nmero inteiro, no ene u tanto no existe consenso em denir prioridade maiores como nmeros maia u ores (indicando sua maior importncia) ou o inverso (indicando sua ordem a preferencial). A prioridade pode ser denida interna ou externamente ao sistema. Quando determinada internamente, o sistema pode utilizar diversos fatores, tais como quantidade de memria necessria, estimativas do tempo o a de servio e outros elementos para calcular a prioridade. Notemos que o c tempo de processamento de um job no pode ser determinado antes de seu a processamento, sendo necessrio o uso de estimativas feitas pelo usurio ou a a pelo programador, as quais so com freqncia pouco precisas. No caso a ue de prioridade externamente, a mesma simplesmente atribu ao processo e da pelo operador ou pelo programador, de maneira emp rica. Avaliemos o mesmo exemplo utilizado para o escalonamento FIFO, onde quatro processos A, B, C e D com tempos de processamento distintos, respectivamente 3, 35, 12 e 4 segundos, so escalonados conforme suas prioridades, a denidas externamente, como mostra a Tabela 3.2. Tabela 3.2: Exemplo de la de processos sob escalonamento HPF Processo tchegada prio tservico tespera tperm tpn A 0 4 3 0 3 1.00 C 2 1 12 1 13 1.08 B 1 2 35 14 49 1.4 D 3 3 4 47 51 12.75 Mdias e 15.5 29.00 4.06 Podemos perceber que, dado o escalonamento ordenar os processos segundo sua prioridade, alguns processos podem ser prejudicados em funo ca de outros de maior prioridade, pois se processos grande so executados pria meiro ocorre uma degradao signicativa para os demais processos. ca Observe tambm que o processo A, embora tenha prioridade mais baixa e que os demais, comeou a ser executado antes devido ao seu tempo de chec gada, no sendo interrompido com a chegada de processos de maior pria oridade, pois este algoritmo no preemptivo. Por outro lado, devemos a e considerar tambm que um processo de prioridade relativamente baixa pode e ter sua execuo adiada indenidamente pela chegada cont ca nua de processos de maior prioridade (indenite postponement), ou seja pode sofrer de estagnao (starvation). ca No caso do HPF, existe uma soluo, relativamente simples, para a ca soluo do problema da estagnao denominada aging (envelhecimento). ca ca Tal soluo consistem em progressivamente aumentar a prioridade dos proca cessos que aguardam na la a medida que o tempo passa, ou seja, como forma de compensar a espera e evitar a estagnao, processos poderiam ter ca sua prioridade incrementada at que sejam executados [SGG01, p. 103]. e

76

CAP ITULO 3. ESCALONAMENTO DE PROCESSOS

Conforme as prioridades e os processos, os resultados apresentados por este algoritmo poderiam tanto aproxim-lo do escalonamento FIFO como a apresentar resultados de qualidade melhores. No caso, os resultados exibidos foram um pouco melhores. Na verdade sua maior qualidade est na execuo a ca seletiva de jobs conforme sua prioridade calculada ou atribu da. Da mesma forma que no escalonamento FIFO, o escalonamento HPF no utilizado como esquema principal de escalonamento, mas como forma a e auxiliar de escalonamento para processamento de las batch.

3.5.3

Escalonamento SJF (Shortest Job First)

O escalonamento SJF (Shortest Job First) ou menor job primeiro, tambm e conhecido como SPF (Shortest Process First) ou menor processo primeiro. e E um caso especial do HPF, onde o tempo de servio tomado como prioric e dade, ou seja, os processos em espera pelo processador so organizados numa a la segundo seu tempo de execuo, sendo colocados a frente os menores proca cessos jobs, isto , sua funo de seleo min(tservico ), favorecendo os e ca ca e processos que podem ser nalizados intervalos de tempo menores. Aps iniciados, os processos no so interrompidos, ou seja, uma forma o a a e de escalonamento no preemptivo, mas mesmo assim oferece a vantagem a de proporcionar tempos mdios de espera menores do aqueles obtidos num e esquema FIFO. Na Figura 3.6 temos uma representao deste tipo de escaca lonamento.

Figura 3.6: Escalonamento SJF (Shortest Job First) O grande problema deste esquema de escalonamento que o tempo de e processamento de um job no pode ser determinado antes de seu procesa samento, sendo necessrio o uso de estimativas feitas pelo usurio ou pelo a a programador, as quais so com freqncia pouco precisas. Para evitar abua ue sos por parte dos usurios (que podem indicar estimativas mais baixas que a os tempos esperados), podem ser adotadas pol ticas de premiao em funo ca ca do acerto das estimativas, mas isto no resolve uma srie de problemas, entre a e os quais o incorreto posicionamento de um job pelo sistema devido a uma estimativa incorreta, prejudicando outros jobs. Uma outra questo a possibilidade deste algoritmos provocar a esa e tagnao (starvation) de processos grandes os quais podem permanecer inca

3.5. ALGORITMOS DE ESCALONAMENTO

77

denidamente na la de espera caso processos de menor durao cheguem ca continuamente ao sistema. Uma soluo para este problema seria impor um ca tempo mximo de espera xo ou proporcional ao tempo de servio, a partir a c do qual tais processos seriam executados, para evitar a estagnao. ca Avaliemos o mesmo exemplo utilizado para o escalonamento FIFO, onde quatro processos A, B, C e D com tempos de processamento distintos, respectivamente 3, 35, 12 e 4 segundos, so escalonados em conforme suas duraes a co e tempo de chegada pelo sistema operacional, como mostra a Tabela 3.3. Tabela 3.3: Exemplo de la de processos sob escalonamento SJF Processo tchegada tservico tespera tperm tpn A 0 3 0 3 1.00 D 3 4 0 4 1.00 C 2 12 5 17 1.42 B 1 35 18 51 1.46 Mdias e 5.75 18.75 1.22 Podemos perceber que neste caso, em funo do escalonamento ordenar ca os processos segundo sua durao, os menores processos obtiveram o meca lhor servio sem que isso resultasse numa degradao signicativa para os c ca processos maiores. Tanto o tempo mdio de espera como os tempos mdios e e de permanncia e de permanncia normalizado apresentam valores bastante e e inferiores aos obtidos com o escalonamento FIFO (Tabela 3.1) ou mesmo o HPF (Tabela 3.2), evidenciando as qualidades do escalonamento SJF. Da mesma forma que os demais esquemas de escalonamento vistos, o escalonamento SJF no utilizado como esquema principal de escalonaa e mento, mas como forma auxiliar de escalonamento para processamento de las batch.

3.5.4

Escalonamento HRN (Highest Response-Ratio Next)

Para corrigir algumas das decincias do escalonamento SJF, Hansen (1971) e props um balanceamento entre a durao do job e seu tempo de espera, o ca de forma a compensar a espera excessiva de tarefas de maior durao. Para ca tanto idealizou uma forma dinmica de organizao da la de processos a ca atravs do clculo de suas taxas de resposta (response ratio) ou prioridades e a como dado a seguir: tespera + tservico (3.3) tservico A funo de seleo escolhe o job de maior a prioridade para faca ca zer uso do processador, ou seja, max(prioridade). Observe atentamente a relao que determina a prioridade, podemos notar que, na verdade, este ca valor corresponde ao tempo de permanncia normalizado, tal como mostra e prioridade =

78

CAP ITULO 3. ESCALONAMENTO DE PROCESSOS

a Equao 3.2. Temos assim que, num primeiro momento, os jobs de curta ca durao so favorecidos, pois o tempo de permanncia gura no numeraca a e dor da frao enquanto apenas o tempo de servio aparece no denominador. ca c A medida que a espera vai se tornando maior, at mesmo os jobs de maior e durao vo tendo suas prioridades aumentadas at que estas superem as prica a e oridades de processos curtos recm-chegados, proporcionando um equil e brio bastante positivo a medida que os processos vo sendo selecionados e exea cutados. Na Figura 3.7 temos uma ilustrao deste esquema de escalonamento. ca

Figura 3.7: Escalonamento HRN (Highest Response-Ratio Next) Uma vez encaminhados a CPU, os jobs so processados at sua naa e lizao, sendo assim, este um algoritmo no preemptivo de escalonamento ca a apesar da forma dinmica com que a la de processos em espera adminisa e trada. Da mesma forma que no escalonamento SJF e SRT, o escalonamento HRN pressupe a disponibilidade dos tempos de execuo de cada job, o o ca que pode inviabilizar seu uso prtico, tal como o de outros algoritmos de a escalonamento baseados em estimativas do tempo de execuo. ca Novamente tomemos o exemplo utilizado para o escalonamento FIFO e SJF, onde quatro processos A, B, C e D com tempos de processamento distintos, respectivamente 3, 35, 12 e 4 segundos, so escalonados em conforme a suas prioridades pelo sistema operacional. Note que as prioridades so reaa valiadas ao nal do trmino de cada job, determinando a prxima tarefa a e o ser processada, como mostra a Tabela 3.4. Tabela 3.4: Exemplo de la de processos sob escalonamento HRN Processo tchegada tservico tespera tperm tpn A 0 3 0 3 1.00 C 2 12 1 13 1.08 D 3 4 12 16 4.00 B 1 35 18 53 1.51 Mdias e 7.75 21.25 1.90 Podemos observar que os resultados apresentados pelo HRN foram bas-

3.5. ALGORITMOS DE ESCALONAMENTO

79

tante superiores ao FIFO (Tabela 3.1), mas um pouco inferiores ao algoritmo SJF (Tabela 3.3). Por outro lado, o HRN no apresenta o risco do adiaa amento innito, sendo mais equilibrado para o processamento de jobs de tamanhos diversos.

3.5.5

Escalonamento SRT (Shortest Remaining Time)

O algoritmo de escalonamento SRT (Shortest Remaining Time) ou SRF (Shortest Remaining First) a variante preemptiva do escalonamento SJF. e A la de processos a serem executados pelo SRT organizada conforme o e tempo estimado de execuo, ou seja, de forma semelhante ao SJF, sendo ca processados primeiro os menores jobs. Na entrada de um novo processo, o algoritmo de escalonamento avalia seu tempo de execuo incluindo o job ca em execuo, caso a estimativa de seu tempo de execuo seja menor que o ca ca do processo correntemente em execuo, ocorre a substituio do processo ca ca em execuo pelo recm chegado, de durao mais curta, ou seja, ocorre a ca e ca preempo do processo em execuo. Assim, a funo de seleo do SRT ca ca ca ca corresponde ` min(tservicorestante ). a Cada processo suspenso pelo SRT dever ser recolocado na la em uma a posio correspondente apenas ao seu tempo restante de execuo e no ca ca a mais o tempo de execuo total, tornando-se necessrio registrar os tempos ca a decorridos de execuo de cada processo suspenso. A Figura 3.8 esquematiza ca o funcionamento de algoritmo.

Figura 3.8: Escalonamento SRT (Shortest Remaining Time) A sobrecarga imposta pelo registro dos tempos decorridos de execuo e ca pela troca de contexto justicada pelo fato de pequenos processos serem e executados praticamente de imediato, permitindo oferecer tempos mdios e de espera baixos, tornando este algoritmo util para sistemas em tempo re partido. Por outro lado, este algoritmo tambm se baseia nas estimativas de e tempo de execuo dos processos, ou seja, possui as mesmas decincias ca e dos escalonamentos SJF e HRN quanto ` preciso das estimativas e abusos a a por parte dos usurios. Sendo assim, devem tambm ser consideradas as a e seguintes questes: o

80

CAP ITULO 3. ESCALONAMENTO DE PROCESSOS 1. Jobs de maior durao tem seus tempos de espera variveis em funo ca a ca de jobs menores que venham a ser executados primeiramente. 2. Existe um risco potencial de processos grandes acabarem sendo adiados por um tempo indeterminado (starvation) devido ao excessivo favorecimento de jobs de curta durao. ca 3. Dado que a preempo poderia, teoricamente, ocorrer quando um proca cesso esta prestes a ser nalizado, algum mecanismo extra deve ser adicionado para evitar que esta preempo inoportuna acabe impondo ca um servio pior. c

Teoricamente, o escalonamento SRT deveria oferecer um melhor situao ca de performance do que o escalonamento SJF, embora a sobrecarga existente possa equiparar os resultados obtidos em situaes particulares. co Podemos aplicar o exemplo utilizado anteriormente para os algoritmos de escalonamento estudados ao SRT, como mostra a Tabela 3.5. Tabela 3.5: Exemplo de la de processos sob escalonamento SRT Processo tchegada tservico tespera tperm tpn A 0 3 0 3 1.00 D 3 4 0 4 1.00 C 2 12 5 17 1.42 B 1 35 18 51 1.46 Mdias e 5.75 18.75 1.22 Dada a ordem de chegada particular deste caso, podemos perceber que os resultados obtidos pelo SRT so exatamente os mesmos do algoritmos a SJF Tabela 3.3), como teoricamente previsto. Mas devemos observar que para outros conjuntos de processos, os resultados deveriam ser ligeiramente melhores que o SJF.

3.5.6

Escalonamento RR (Round-Robin)

No escalonamento RR (Round Robin) ou circular os processos tambm so e a organizados numa la segundo sua ordem de chegada, sendo ento despaa chados para execuo. No entanto, ao invs de serem executados at o m ca e e (completion), a cada processo concedido apenas um pequeno intervalo de e tempo (time slice ou quantum). Caso o processo no seja nalizado neste a intervalo de tempo, ocorre sua substituio pelo prximo processo na la de ca o processos ativos, sendo o processo em execuo interrompido e novamente ca colocado na la de processos prontos, mas em seu m. Isto signica que ao nal de seu intervalo de tempo, isto , de seu quantum, ocorre a preempo do e ca processador, ou seja, o processador designado para outro processo, sendo e

3.5. ALGORITMOS DE ESCALONAMENTO

81

salvo o contexto do processo interrompido para permitir a continuidade da sua execuo quando sua vez chegar novamente. Tal situao ilustrada na ca ca e Figura 3.9.

Figura 3.9: Escalonamento RR (Round Robin) O escalonamento RR se baseia na utilizao de temporizadores, constica tuindo um algoritmo preemptivo bastante adequado para ambiente interativos, ou seja, em sistemas em tempo repartido onde coexistem mltiplos u usurios simultneos sendo, portanto, necessrio garantir-se tempos de resa a a posta razoveis. A sobrecarga (overhead ) imposta pela troca de contexto a representa um investimento para atingir-se um bom n de ecincia, pois vel e com diversos processos em execuo simultnea (pseudoparalelismo) posca a e s manter ocupados todos os recursos do sistema. vel A determinao do tamanho do intervalo de tempo (quantum) extreca e mamente importante, pois relaciona-se com a sobrecarga imposta ao sistema pelas trocas de contexto dos processos ativos. Na Figura 2.5, onde ilustramos o escalonamento de processos, podemos observar o quantum de processamento concedido para cada processo e os tempos de preservao de ca recuperao de contexto a cada preempo. Para cada processo despachado ca ca para execuo ocorre: ca 1. a recuperao do contexto do processo, que toma um tempo que deca nominaremos (trc ), 2. a execuo do processo pela durao do quantum e ca ca 3. a preservao do processo aps o trmino de seu quantum, a qual ca o e tambm toma um intervalo de tempo denotado por (tpc ). e Como o tempo tomado para a troca de contexto (ttc ) no util do ponto a e de vista de processamento de processos dos usurios, temos que para cada a janela de tempo concedida aos processos a troca de contexto representa uma sobrecarga, pois somente o quantum de processamento efetivamente util. e Dado que a troca de contexto toma um tempo aproximadamente constante temos que a sobrecarga pode ser calculada atravs da relao a seguir: e ca ttc = trc + tpc (3.4)

82

CAP ITULO 3. ESCALONAMENTO DE PROCESSOS

sobrecarga =

ttc ttc + quantum

(3.5)

Por exemplo, se o tempo para troca de contexto (ttc ) toma 2 ms e o quantum de 8 ms, temos que apenas 80% do tempo de processamento e e util, ou seja, a sobrecarga imposta pela troca de contexto representa 20% do processamento. Podemos tambm medir o rendimento proporcionado pelo escalonamento e RR considerando quanto do tempo alocado para cada processo efetivae mente usado para o processamento, ou seja, a relao entre o quantum ca (usado para o processamento) e a soma deste com o tempo para troca de contexto (tomada para cada processo), como na relao que segue: ca quantum ttc = 1sobrecarga = 1 (3.6) quantum + ttc ttc + quantum

rendimento =

Ao aumentarmos o quantum diminu mos a sobrecarga percentual da troca de contexto, mas um nmero menor de usurios (nu) ser necessrio u a a a para que os tempos de resposta (tr ) se tornem maiores e percept veis. Diminuindo o quantum temos uma situao inversa de maior sobrecarga e ca tambm de um maior nmero poss de usurios sem degradao sens e u vel a ca vel dos tempos de resposta. tr = nu (quantum + ttc ) ou tr (3.8) quantum + ttc Usualmente o tamanho do quantum utilizado tipicamente algo em torno e de 20ms. Com ou aumento da velocidade dos processadores, a troca de contexto se d mais rapidamente, diminuindo a sobrecarga e aumentando a ligeiramente a quantidade de usurios poss a veis para um mesmo limite de tempo de resposta. Na Tabela 3.6 temos um exemplo hipottico do comportamento poss e vel do rendimento e do nmero de usurios em funo da variao do quantum u a ca ca usado pelo sistema. Nestes clculos consideramos um tempo de resposta a xo de tr = 1s e tambm um tempo troca de contexto constante ttc = 2ms. e Na Figura 3.10 podemos ver o comportamento do rendimento e nmero u de usurios do sistema em funo do quantum para um tempo de resposta a ca xo, conforme a Tabela 3.6 Como antes, podemos vericar o comportamento do algoritmo de escalonamento RR para uma seqncia de quatro processos A, B, C e D, com os ue mesmos tempos de chegada e servio. Tomaremos como quantum um valor c de 100 ms. Assim teremos os resultados apontados pela Tabela 3.7. nu = (3.7)

3.5. ALGORITMOS DE ESCALONAMENTO

83

Tabela 3.6: Rendimento e nmero de usurios em funo do quantum u a ca quantum nmero de rend. u (ms) usurios a (%) 1 333 33.3 2 250 50.0 5 143 71.4 10 83 83.3 20 45 90.9 50 19 96.2 100 10 98.0 200 5 99,0 500 2 99.6 1000 1 99.8 Tabela 3.7: Exemplo de la de processos sob Processo tchegada tservico tespera A 0 3 4.6 B 1 35 18.0 C 2 12 17.5 D 3 4 9.3 Mdias 12.35 e escalonamento RR tperm tpn 7.6 2.53 53.0 1.51 29.5 2.46 13.3 3.32 25.85 2.46

No surpreendentemente, o algoritmo RR apresenta resultados bastante a melhores que o escalonamento FIFO e pouco inferiores aos algoritmos SJF, HRN e SRT. Por outro lado, apresenta um grau de interatividade muito superior a todos os algoritmos citados, compensando largamente seu emprego.

3.5.7

Escalonamento MQ (Multilevel Queues)

Quando poss dividir os processos em diferentes categorias, conforme seu e vel tipo, prioridade e consumo de recursos, pode-se empregar o escalonamento em mltiplas las [TAN92, p. 64] [SGG01, p. 105]. Deste modo, a la u de processos prontos seria separada em vrias las, uma para cada tipo de a processo, tais como processos do sistema, processos interativos, processos de edio interativa, processos batch e processos secundrios, como ilustrado ca a na Figura 3.11, onde a la de processos do sistema teria a maior prioridade enquanto a la de processos secundrios teria a menor prioridade. a Cada la pode possuir seu prprio algoritmo de escalonamento, ou seja, o algumas las pode ser preemptivas enquanto outras no, sendo que os crita e rios de seleo dos processos para execuo e da preempo, quando poss ca ca ca vel, podem ser distintos de uma la para outra. E um arranjo comum que a la de processos do sistema e batch usem um algoritmo tal como o FIFO

84

CAP ITULO 3. ESCALONAMENTO DE PROCESSOS

Figura 3.10: Comportamento do rendimento e nmero de usurios em funo u a ca do quantum enquanto que as demais utilizem algoritmos semelhantes ao round robin. Entre as diferentes las a diviso do processamento tambm pode ocora e rer de diversas maneiras. E poss vel realizar tal diviso considerando um a algoritmo de prioridade simples, onde a la de maior prioridade tem seus processos executados at que esteja vazia. Isto pode comprometer o n e vel de resposta dos processos nas demais las, possibilitando at mesmo a ese tagnao de processos nas las de prioridades inferiores. Outra soluo seria ca ca o emprego de um algoritmo round robim assimtrico, onde, por exemplo, a e la de processos de sistema poderia receber uma janela de processamento de 50% enquanto as demais receberiam janelas progressivamente menores, tais como 25%, 15%, 10% e 5%. Uma alternativa simplicada de emprego deste algoritmos o uso de e apenas duas las, uma para processos em primeiro plano (foreground ) e outra para processos em segundo plano (background ), de modo que as duas las utilizam um algoritmo round robin convencional e a diviso do procesa samento entre as las utilizasse um round robin assimtrico que dedicasse e 80% do processamento para a la de primeiro plano e os 20% restantes para la de segundo plano.

3.5.8

Escalonamento MFQ (Multilevel Feedback Queues)

O escalonamento MFQ (Multilevel Feedback Queues) ou las multin reavel limentadas um interessante esquema de diviso de trabalho do processador e a que baseado em vrias las encadeadas, como mostra a Figura 3.12. e a Diferentemente do algoritmo MQ, que dispe de las distintas para proo cessos de tipos diferentes, todos os novos processos so colocados iniciala

3.5. ALGORITMOS DE ESCALONAMENTO

85

Figura 3.11: Escalonamento MQ (Multiple queues) mente na la de n vel 1, que tem um comportamento FIFO, ou seja, o processo aguarda sua vez para execuo conforme sua ordem de chegada. ca Ao utilizar o processador podem ocorrer trs situaes: e co 1. o processo nalizado e ento retirado das las; e a 2. o processo solicita o uso de dispositivos de E/S, sendo bloqueado at e que o pedido de E/S seja atendido, voltando para a mesma la at que e seu quantum de tempo se esgote; e 3. tendo esgotado seu quantum inicial de tempo, o processo colocado e no nal da la de n 2. vel Nas las seguintes o mecanismo o mesmo, embora os processos s e o utilizem o processador na sua vez e na ausncia de processos nas las de e n superior. Quando novos processos aparecem em las superiores ocorre vel a preempo dos processos nas las n inferior, de forma a atender-se os ca vel processos existentes nas las superiores. A ultima la apresenta um comportamento um pouco diferente: ela no a uma FIFO e sim uma la circular, ou seja, de escalonamento round robin, e onde os processos permanecem at que seja nalizados. e Neste esquema de escalonamento temos que: processos curtos so favorecidos pois recebem tratamento prioritrio a a enquanto permanecem nas las de n superior; vel

86

CAP ITULO 3. ESCALONAMENTO DE PROCESSOS

Figura 3.12: Escalonamento MFQ (Multiple feedback queues) processos com utilizao intensa de E/S so favorecidos pois o uso de ca a E/S no os desloca para las inferiores; e a processos de processamento maior tambm so favorecidos pois os e a quanta de tempo so progressivamente maiores nas las de n infea vel rior. O esquema de mltiplas las encadeadas tem comportamento semelhante u a ` um esquema de prioridades, onde as las de n superior eqivalem aos vel u n veis de prioridade mais altos do sistema e a ultima la, de escalonamento round robin corresponde ao n de prioridade mais baixo. vel Considerando que um algoritmo de escalonamento deveria avalar a natureza dos processos em execuo promovendo um escalonamento adequado ca de modo que, minimamente, fossem favorecidos: processos de curta durao de forma a minimizar os tempos mdios de ca e resposta; e processos que demandem dispositivos de E/S para obter adequada utilizao dos perifricos do sistema. ca e Notamos que o MFQ constitui uma alternativa bastante atraente, pois pode ser considerado um algoritmo adaptativo, ou seja, capaz de perceber e

3.6. COMPARACAO DOS ALGORITMOS DE ESCALONAMENTO 87 o comportamento de um processo, favorecendo-o atravs da recolocao em e ca uma la de n vel adequado. O critrio de recolocao de processos nas e ca mesmas las aps uso de dispositivos de E/S inuencia grandemente no o quanto este esquema de escalonamento adaptativo, isto , no quanto ele e e capaz de atender aos diferentes padres de comportamento dos processos. e o Embora a sobrecarga para administrao deste esquema de escalonamento ca seja maior, o sistema torna-se mais sens ao comportamento dos processos, vel separando-os em categorias (os vrios n a veis das las), possibilitando ganho de ecincia. e

3.6

Comparao dos algoritmos de escalonamento ca

Nas Tabelas 3.8 e 3.9 agrupamos as principais carater sticas dos algoritmos de escalonamento estudados nas sees anteriores, permitindo a avaliao co ca comparativa em termos de sua funo de seleo, preemptividade, throughput ca ca (produtividade), tempo de resposta e sobrecarga apresentados. Tabela 3.8: Algoritmos de escalonamento no preemptivos a
Caracter stica Funo de ca Seleo ca Preemptividade Throughput Tresposta Sobrecarga Adiamento Indenido FIFO min(tchegada ) no a
mdia e alto baixa

HPF max(prio) no a
mdia e baixo:mdio e baixa:alta

SJF min(tservico ) no a
alta baixo:mdio e baixa:alta

HRN max(tpn ) no a
alta baixo:mdio e baixa:alta

no a

sim

sim

no a

Dentre os algoritmos no preemptivos (Tabela 3.8) temos que apresena tam o seguinte comportamento geral: O algoritmo FIFO o mais simples e tambm o mais ineciente, pois e e acaba penalizando processos pequenos que ocorram entre processos maiores e tambm no trata o uso de dispositivos de E/S da maneira e a adequada, penalizando o sistema como um todo. O algoritmo HPF relativamente simples e permite implantar uma e pol tica diferencida de escalonamento atravs da denio de prioridae ca des. No entanto os resultados do escalonamento tendem a se aproximar do FIFO quando ocorrem vrios processos com o mesmo n de a vel prioridade. O escalonamento SJF penaliza os processos longos, sendo poss vel o adiamento indenido destes. Por outro lado, proporciona uma alta

88

CAP ITULO 3. ESCALONAMENTO DE PROCESSOS produtividade as custas de uma maior sobrecarga e tempos de resposta mdios. e O HRN um dos melhores algoritmos de escalonamento no preemptie a vos, pois apresenta alta produtividade, tempos de resposta adequados e bom equil brio entre atendimento de processos grandes e pequenos. Alm disso no possibilita a ocorrncia de adiamento indenido. e a e

Tabela 3.9: Algoritmos de escalonamento preemptivos Caracter stica RR SRT MQ MFQ Funo de ca constante min(tservrest ) complexa complexa Seleo ca Preemptividade sim sim sim sim
(quantum) (chegada) alta baixo:mdio e mdia:alta e (quantum) mdia e baixo:mdio e mdia:alta e (quantum) mdia e baixo:mdio e mdia:alta e

Throughput Tresposta Sobrecarga Adiamento Indenido

mdia e baixo:mdio e baixa

no a

sim

sim

sim

Analisando agora os algoritmos preemptivos (Tabela 3.9), todos possuem implementao mais sosticada que os algoritmos no preemptivos ca a A soluo round robin uma alternativa geral simples, que proporciona ca e tratamento justo e ainda razoavelmente produtivo, pois sua ecincia e e se acha bastante associada ao tamanho do quantum. O escalonamento SRT apresenta produtividade alta e tempos de resposta adequado, mas desfavorece processos longos alm de possibilitar e o adiamento indenido. A sobrecarga um de seus aspectos negativos. e O algoritmo MQ uma soluo que pode ser ligeiramente mais come ca plexa que o round robin ou to complexa como o MFQ. Permite obter a bons resultados quando a categorizao dos processos poss ca e vel. O algoritmo MFQ razoavelmente mais complexo, implicando em e maior sobrecarga, oferecendo o mesmo n de produtividade do round vel robin. Por outro lado se mostra mais eciente em situaes que os co processos exibem comportamento I/O bounded, t pico de aplicaes co comerciais com processamento simples de grandes quantidades de dados.

Cap tulo 4

Gerenciamento de Memria o
Neste cap tulo vamos tratar do gerenciamento de memria e de suas imo plicaes para com as funcionalidades oferecidas pelos sistemas operacionais. co Para isto veremos como as diferentes formas de endereamento inuenciam c as capacidades de um sistema e as diferentes estratgias de organizao e e ca controle da memria. o

4.1

Primeiras consideraes co

Antes de denirmos o que o gerenciamento de memria, devemos primeiro e o considerar a estrutura dos computadores, tal como proposta no nal da dcada de 1930 por John Von Neumann, matemtico hngaro erradicado e a u nos EUA, que trabalhava na Universidade de Princeton: Um computador composto de trs partes fundamentais: o proe e cessador, os dispositivos de entrada/sa e a memria. da o Atravs desta estrutura, ilustrada na Figura 4.1, Von Neumann mudou e radicalmente o conceito do computador, armando que o programa deveria ser armazenado na memria junto com os dados, transformando as soso ticadas mquinas de calcular existentes em uma nova espcie de mquina, a e a completamente diferente, mais genrica e capaz de lembrar seqncias de e ue comandos previamente fornecidas, executando-as elmente. Este novo conceito permitiu construir-se computadores capazes de executar diferentes seqncias de instrues sem a alterao de seu hardware, ue co ca o que no acontecia com as antigas mquinas de calcular gigantes. Mas a a duas vertentes surgiram praticamente na mesma poca, direcionando difee rentemente a arquitetura de sistemas computacionais baseados em memria. o Conforme forma organizados, receberam o nome de arquitetura de Von Neumann ou arquitetura Princeton. Os pesquisadores da Universidade de Harvard propuseram uma arquitetura ligeiramente diferente da proposta inicial de Von Neumann, onde 89

90

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

Figura 4.1: Arquitetura Princeton existiam dispositivos de memria distintos para o armazenamento de dados o e programas (veja a Figura 4.2). O grande diferencial que a arquitetura e de Princeton possui um unico barramento para transferncia de dados e ins e trues entre memria e processador enquanto que a arquitetura de Harvard co o possui dois barramentos, cada um ligando o processador aos dispositivos de memria de dados e programas respectivamente. Apesar da arquitetura de o Harvard ser potencialmente mais eciente, a simplicidade da arquitetura Princeton predominou com o passar dos anos.

Figura 4.2: Arquitetura Harvard Apesar destas duas arquiteturas serem conceitos revolucionrios para a a poca, existia um grave problema: no se dispunha de tecnologia suciente e a para construo de dispositivos eletro-eletrnicos que funcionassem como ca o memrias. o Quando Von Neumann props o computador como uma mquina capaz o a de memorizar e executar seqncias de comandos, j existia tecnologia para ue a implementar-se os primeiros circuitos processadores e tambm os dispositie vos bsicos de entrada e sa a da, mas no se sabia como construir circuitos a de memria. Se passaram vrios anos at que uma primeira implementao o a e ca satisfatria de um circuito de memria permitisse construir um computador o o conforme sugerido por Von Neumann. Isto explica a origem de um defasagem tecnolgica, at hoje no superada por completo, entre memrias e o e a o

4.1. PRIMEIRAS CONSIDERACOES

91

processadores. O prprio termo core memory, utilizado para designar a memria prio o mria ou principal, tem sua origem nos primeiros dispositivos de memria a o constru dos com pequenos ncleos magnetizveis de ferrite interligados mau a tricialmente por uma delicada ao de cobre, onde cada ncleo armazenava ca u um unico bit. Tipicamente tem-se que os processadores so capazes de ler e princia palmente escrever mais rpido do que os circuitos de memria do mesmo a o n tecnolgico. Isto usualmente fora uma determinada espera por parte vel o c dos processadores quando ocorre a troca de informaes com a memria. co o Estes tempos de espera so conhecidos como wait states. Este problema a no seria to grave se a interao entre processador e memria no consa a ca o a titu a prpria essncia do funcionamento dos computadores baseados na sse o e arquitetura de Von Neumann. Na arquitetura de Von Neumman o processador exibe o seguinte comportamento (como ilustrado na Figura 1.3) enquanto estiver ativo so repetidas a as aes seguintes: co busca de uma instruo (ciclo de fetch ou opcode fetch); ca decodicao da instruo (ciclo de instruction decode); e ca ca execuo da instruo (ciclo de instruction execution). ca ca Notamos que o ciclo de fetch basicamente uma operao de leitura da e ca memria, sendo o ciclo de decodicao interno ao processador, enquanto o ca o ciclo de execuo pode realizar tanto operaes internas ao processador ca co como tambm operaes de leitura ou escrita na memria. e co o Apesar das diculdades encontradas, a arquitetura computacional baseada nos trs elementos bsicos (processador, memria e dispositivos de e a o entrada/sa da) ainda se mostra a melhor que existe, principalmente quando se inclui nela todos os avanos tecnolgicos destes ultimos 1950 anos. c o Hoje temos que, em conseqncia da mencionada defasagem tecnolgica ue o e dos problemas inerentes a construo de dispositivos de memria, o custo ca o relativo entre memria e principalmente o processador faz com que a memo o ria represente uma parcela bastante signicativa de um sistema computacional, parcela esta que se torna ainda mais signicativa quanto mais sosticado tal sistema (usualmente so sistemas de alto desempenho). e a E muito importante ressaltarmos que, quando se fala em memria, eso tamos nos referindo aos circuitos que trocam dados diretamente com o processador durante o ciclo de execuo de seus comandos mais bsicos, ou ca a seja, a memria primria ou armazenamento primrio. Os dispositivos de o a a armazenamento secundrio, isto , os dispositivos de memria de massa tal a e o como tas, cartuchos e disco magnticos (xos ou remov e veis) no devem a ser confundidos com a memria bsica do computador. o a

92

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

A memria dita primria possui interao direta com o processador, isto o a ca , ca diretamente conectada aos seus barramentos. J os dispositivos chae a mados de memria secundria necessitam de alguma circuitaria ou memos o a mecnica extra para que os dados presentes no barramento do processador a sejam gravados em suas m dias e vice-versa. Como veremos mais tarde, a memria secundria ter papel fundamental dentro do gerenciamento da o a a memria primria, mas isto deve ser tratado com cautela, pois apesar de seu o a custo ser bastante inferior ao da memria primria bsica, sua velocidade o a a e milhares de vezes menor, como indicado na Tabela 4.1. Tabela 4.1: Valores Mdios de Tempo de Acesso e Preo por MByte para e c Dispositivos de Microcomputadores PC Compat veis em 1998 Dispositivo Tempo de Acesso Preo/MByte c (ms) (US$) Cartuchos 200 0.05 Disco R gido 13 0.22 SIMM 45 12.00 DIM 25 16.00 Sendo assim, somente uma cuidadosa anlise de custo versus benef a cio, que leve em conta outros fatores inerentes ao gerenciamento de memria, o poder diagnosticar com preciso como e quando utilizar-se da memria a a o secundria ao invs da memria primria. a e o a Resumidamente, justicamos a necessidade do gerenciamento de memo ria pelos trs fatores relacionados a seguir: e A memria primria um dos elementos bsicos da arquitetura como a e a putacional atual. Dado que a velocidade de suas operaes de leitura e escrita serem co mais baixas que a correspondentes velocidades dos processadores e ainda seu custo ser mais elevado, exige-se seu uso cuidadoso. Como todo processo utiliza memria primria, ao gerenciarmos meo a mria estamos indiretamente gerenciando os processos. o

4.2

Multiprogramao ca

Como j vimos, a multiprogramao uma importante tcnica utilizada a ca e e para o projeto e construo de sistemas operacionais. Segundo Guimares: ca a A maioria do computadores modernos opera em regime de multiprogramao, isto , mais de um programa em execuo sica e ca multnea na memria. A existncia nesses sistemas de pea o e

4.2. MULTIPROGRAMACAO rifricos ass e ncronos e com velocidades de operao as mais dica versas tornou economicamente necessrio introduzir a multiproa gramao a m de utilizar de maneira mais eciente os recursos ca do sistema. [GUI86, p. 71] [grifos do autor]

93

Da mesma forma, isto tambm permite que uma tarefa seja dividida em e partes, as quais podem ser executadas paralelamente, reduzindo o tempo total de processamento. Em suma, a multiprogramao visa alcanar melhores ca c ndices de produtividade num sistema computacional. Em computadores de pequeno porte ou destinados ao uso pessoal toe lervel uma situao de baixa ecincia ou baixa produtividade, onde tanto a ca e o processador como os dispositivos perifricos permanecem ociosos por boa e parte do tempo de funcionamento do equipamento. Tomemos como exemplo um programa (ou rotina) conversor de imagens de formato BMP para GIF que, num sistema monoprogramado, executado e utilizando 8 segundos da atividade do processador (a converso da imagem a propriamente dita) e 24 segundos de atividade de dispositivos de E/S (gastos para carregamento do arquivo de entrada e armazenamento do arquivo de sa produzido pela rotina. A execuo deste programa impe a situao da ca o ca relacionada na Tabela 4.2. Tabela 4.2: Anlise de ociosidade a Tempo Total 32 s Tempo de Proc 8s Tempo de I/O 24 s Ociosidade do Proc. 75 % Ociosidade do Disco 25 % Ociosidade de Outros Disp. 100 % A ociosidade do processador exibida neste exemplo representa um desperd de sua capacidade equivalente a execuo de outros trs programas cio ca e idnticos. Constatao anloga pode ser feita para os dispositivos de E/S e ca a deste sistema. Tal situao no admiss em sistemas de maior porte e, portanto, de ca a e vel maior custo de aquisio e propriedade. As possibilidades oferecidas por sisca temas monoprogramados impedem que melhores ndices de produtividade e ecincia sejam atingidos, neste sentido, a multiprogramao a alternativa e ca e que permite, as custas de um sistema de maior complexidade, obter ndices adequados de produtividade e ecincia. e Basicamente, o objetivo da multiprogramao maximizar a produca e tividade (throughput) e minimizar os tempos de resposta. Para isto nee cessrio a presena de vrios programas ativos, simultaneamente na memria a c a o principal do sistema de maneira a obter-se a melhor utilizao poss dos ca vel recursos do sistema. O maior problema da multiprogramao , portanto, ca e

94

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

tornar compat veis os tempos de execuo dos programas e o atendimento ca dos usurios junto das diferentes velocidades de operao dos perifricos do a ca e sistema. Se partirmos de um modelo bastante simplicado de sistema onde possamos supor verdadeiras as seguintes condies: co a sobrecarga imposta pelos mecanismos de administrao do sistema ca operacional desprez e vel; os processos sejam totalmente independentes; e existe capacidade de efetuar-se processamento verdadeiramente paralelo. Nestes casos a taxa de ociosidade e utilizao do processador podem ser ca dadas respectivamente pelas seguintes relaes: co ociosidade = tp io utilizacao = 1 ociosidade = 1 tp io (4.1)

(4.2)

Nestas equaes p o nmero de processos ativos existentes no sistema co e u e tio representa a taxa mdia de utilizao de dispositivos de E/S por parte e ca destes processos. Atravs desta relao, podemos obter as seguintes curvas e ca ilustrando o comportamento da utilizao do processador para um nmero ca u varivel de processos, considerando-se diferentes taxas mdias de utilizao a e ca de E/S.

Figura 4.3: Comportamento da taxa de utilizao do processador ca

4.3. ORGANIZACAO DA MEMORIA

95

Notamos que conforme aumenta a taxa mdia de utilizao de disposie ca tivos de E/S (tio ) por parte dos processos, maior o nmero p de processos e u necessrio para que a utilizao do processador se mantenha em n a ca veis adequados, ou seja, utilizacao > 85%. Isto pode ser entendido de outra forma: quanto maior a taxa mdia de utilizao de dispositivos de E/S, maior o e ca e nmero de usurio suportado pelo sistema. u a Apesar de ser uma simplicao, tais valores tem valor indicativo, ou ca seja, o comportamento esperado em sistemas reais o mesmo a despeito e dos valores absolutos obtidos. Com isto justica-se a necessidade de ambientes multiprogramados como unica forma de obter-se sistemas de alta produtividade e ecincia. e

4.3

Organizao da memria ca o

Num sistema computacional o armazenamento de dados ocorre hierarquicamente, ou seja, em diversos n veis dado que realizado em diferentes tipos e de dispositivos devido ` quatro fatores bsicos: a a tempo de acesso velocidade de operao ca custo por unidade de armazenamento capacidade de armazenamento Com isto em mente, o projetista de um sistema operacional determina quanto de cada tipo de memria ser necessrio para que o sistema seja ao o a a mesmo tempo eciente e economicamente vivel. a Em virtude das diculdades tecnolgicas associadas a construo de diso ca positivos ecientes de memria e seu custo, o armazenamento de dados aso sumiu historicamente a seguinte organizao: ca Armazenamento interno So posies de memria dispon a co o veis internamente ao processador para permitir ou agilizar sua operao. Constitui-se dos registradores do ca processador e de seu cache interno. Armazenamento primrio a So as posies de memria externa, diretamente acess a co o veis pelo processador. Tipicamente so circuitos eletrnicos integrados do tipo a o RAM, EEPROM, EPROM, PROM ou ROM. Armazenamento secundrio a So as posies de memria externa que no podem ser acessadas a co o a

96

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

Figura 4.4: Organizao da memria em n ca o veis diretamente pelo processador, devendo ser movidas para o armazenamento primrio antes de sua utilizao. Tipicamente dispositivos de a ca armazenamento de massa tais como unidades de disco e ta. Note que o armazenamento interno aquele que possui as maiores vee locidades de acesso, ou seja, os menores tempos de acesso representando os melhores dispositivos em termos de performance, embora sendo os mais caros. Disto decorre sua implementao em quantidades menores. Em conca trapartida, os dispositivos de armazenamento secundrio so os de maior a a capacidade e de melhor relao custo por byte, mas signicativamente mais ca lentos. A memria primria representa um caso intermedirio, onde a velocio a a dade e tempo de acesso so adequadas ` operao direta com o processador, a a ca mas cujo custo ainda assim elevado. e Com a evoluo do computadores, a atual organizao conta com outros ca ca elementos adicionados para otimizar a performance do sistema e ainda assim reduzir seu custo, conforme a gura a seguir:

Figura 4.5: Organizao t ca pica de armazenamento

4.4. DEFINICAO DE GERENCIAMENTO DE MEMORIA

97

Os registradores, implementados em nmero limitado devido ao seu u custo, so geralmente utilizados para manter dentro do processador dados a freqentemente utilizados. Os cache interno e externo, devido sua maior u velocidade, so usados para manter uma poro do programa (que pode a ca assim ser executada mais rapidamente do que na memria principal), ou o uma poro de dados (evitando-se uso da memria principal) e com isto ca o aumentando o desempenho do sistema [DEI92, p. 30]. A memria primria armazena os programas e dados em execuo no o a ca sistema. Os dispositivos de armazenamento secundrio so usados para prea a servao dos dados de forma perene, embora tambm possam ser usados ca e para expandir as capacidades da memria primria. O cache de disco utio a e lizado para acelerar a operao das unidades de disco, podendo esta tcnica ca e ser utilizada para outros tipos de perifricos. e

4.4

Denio de gerenciamento de memria ca o

A necessidade de manter mltiplos programas ativos na memria do sistema u o impe outra, a necessidade de controlarmos como esta memria utilizada o o e por estes vrios programas. O gerenciamento de memria , portanto, a o e o resultado da aplicao de duas prticas distintas dentro de um sistema ca a computacional: 1. Como a memria principal vista, isto , como pode ser utilizada pelos o e e processos existentes neste sistema. 2. Como os processos so tratados pelo sistema operacional quanto `s a a suas necessidades de uso de memria. o Como a memria um recurso caro, cuja administrao inuencia proo e ca fundamente na ecincia e performance de um sistema computacional, e e necessrio considerar-se trs estratgias para sua utilizao: a e e ca 1. Estratgias de busca e As estratgias de busca (fetch strategies) preocupam-se em determinar e qual o prximo bloco de programa ou dados que deve ser transferido da o memria secundria para a memria primria. Usualmente se utilizam o a o a estratgias de demanda, ou seja, so transferidos os blocos determinae a dos como necessrios para a continuao do processamento. a ca 2. Estratgias de posicionamento e So as estratgias relacionadas com a determinao das regies da a e ca o memria primria (f o a sica) que sero efetivamente utilizados pelos proa gramas e dados, ou seja, pela determinao do espao de endereaca c c mento utilizado (placement strategies).

98

CAP ITULO 4. GERENCIAMENTO DE MEMORIA 3. Estratgias de reposio ou substituio e ca ca So as estratgias preocupadas em determinar qual bloco ser enviado a e a a memria secundria para disponibilizao de espao na memria o a ca c o principal para execuo de outros programas, ou seja, determinam ca quais blocos de memria sero substitu o a dos por outros (replacement strategies).

Minimamente, todo sistema computacional possui alguma estratgia de e busca e alguma estratgia bsica de posicionamento. O aumento da soe a sticao dos sistemas computacionais exige a utilizao de estratgias de ca ca e busca posicionamento mais sosticadas. Para maximizar-se as capacidades dos sistemas computacionais so necessrias as estratgias de reposio. a a e ca Historicamente, o desenvolvimento da organizao e gerenciamento de ca memria foi grandemente afetado pelo prprio desenvolvimento dos compuo o tadores e evoluo dos sistemas operacionais. Os modos bsicos de orgaca a nizao da memria dos sistemas so: ca o a monoprogramado multiprogramados com armazenamento real, particionamento xo e endereamento absoluto c multiprogramados com armazenamento real, particionamento xo e endereamento relocvel c a multiprogramados com armazenamento real, de particionamento varivel a multiprogramados com armazenamento virtual paginado multiprogramados com armazenamento virtual segmentado multiprogramados com armazenamento virtual combinado Na Figura 4.6 temos um quadro onde se ilustra o relacionamento dos modelos bsicos de organizao da memria e, de certa forma, sua evoluo. a ca o ca Com relao ao primeiro aspecto bsico da gerncia de memria, para ca a e o entendermos como os processos enxergam a memria, necessrio conhecer o e a em detalhe como os programas se comportam durante sua execuo. ca O comportamento exibido pelos programas durante sua execuo cria ca determinadas limitaes que devem ser observadas cuidadosamente pelo sisco tema operacional atravs de seu gerenciamento de memria. Por outro lado, e o os programas tambm devem se comportar dentro de regras estabelecidas e pelo prprio sistema operacional, as quais compem o modelo de adminiso o trao de memria empregado pelo sistema. ca o Para sabermos como se comporta um programa durante sua execuo e ca quais so suas limitaes quanto a utilizao da memria, devemos analisar a co ca o todo o processo de criao dos programas. ca

4.5. CRIACAO DE PROGRAMAS

99

Figura 4.6: Evoluo da organizao da memria ca ca o

4.5

Criao de programas ca

Os programas so criados a partir de arquivos-texto, que contm um roa e teiro estruturado de passos e aes a serem executadas pelo programa que se co deseja., ou seja, estes arquivos-texto so uma representao dos algoritmos a ca que se desejam programar. Estes passos e aes esto descritos dentro do co a arquivo-texto atravs de uma linguagem de programao e por isso so e ca a usualmente chamados de arquivo-fonte do programa (resumidamente arquivo-fonte ou fonte). As linguagens de programao utilizadas podem ca ser de alto, mdio ou baixo n e vel, mas qualquer que seja a linguagem, seu tipo e a forma de estruturao do programa, o arquivo-fonte continua a ser ca simplesmente um texto, anlogo ` uma redao, sujeito ` regras de sintaxe a a ca a e de contexto. Da mesma forma que os computadores no entendem a nossa linguaa gem, ou seja a linguagem que naturalmente utilizamos para nossa comunicao, estas mquina to pouco entendem as linguagens de programao ca a a ca diretamente. Existem entidades especiais responsveis pela transformao a ca do arquivo-fonte do programa em uma forma pass de execuo pelo comvel ca putador. Estas entidades esto ilustradas na Figura 4.7. a O compilador (compiler ) um programa especial que traduz o are quivo fonte em um arquivo binrio que contm instrues, dados e endereos a e co c (representados binariamente) que permitem executar as aes necessrias co a atravs das instrues em linguagem de mquina do processador existente e co a

100

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

Figura 4.7: Esquema de criao de programas ca no computador em questo. Os arquivos binrios produzidos pelo compia a lador so os arquivos-objeto ou resumidamente objeto. Note que cada a compilador apropriado para uma unica linguagem de programao. e ca O ligador (linker ), quando necessrio, apenas encadeia dois ou mais ara quivos objeto sob a forma de um unico arquivo de programa executvel ou a arquivo-executvel. O arquivo-executvel aquele que pode ser transfea a e rido para a memria do computador possibilitando a execuo do programa. o ca Assim como os compiladores, o ligador tambm uma entidade deste proe e cesso de gerao de programas e tambm est sujeito a operar com arquivos ca e a objeto produzidos apenas por determinados compiladores. Devemos ressaltar que at agora os arquivos fonte, objeto e executvel e a constituem arquivos, ou seja, esto armazenados nas estruturas de memria a o secundria (unidades de disco r a gido, discos ex veis, tas, cartuchos ou discos pticos). o Existe uma outra entidade especial, chamada carregador (loader ), que parte integrante do sistema operacional, responsvel por transportar os e a arquivos de programa executvel da memria secundria para a memria a o a o principal, onde se dar a execuo do programa carregado. a ca Os carregadores constituem uma parte do sistema operacional porque a colocao de programas na memria e a execuo dos mesmos so funes ca o ca a co deste, responsvel por controlar ecientemente as estruturas de memria a o primria, de armazenamento secundrio e o processamento do sistema coma a

4.5. CRIACAO DE PROGRAMAS

101

putacional. Aps o transporte do arquivo executvel para a memria principal o a o e poss iniciar sua execuo, onde ele mesmo se transforma numa imagem vel ca executvel, que representa a expanso do cdigo de programa contido no a a o arquivo executvel em cdigo executvel, reas de memria reservadas para a o a a o variveis do programa, pilha retorno e rea extra para alocao dinmica a a ca a por parte do programa. A bem da verdade, o sistema operacional, antes da carga do mdulo de cdigo, deve conhecer de antemo seu tamanho o o a total e a quantidade m nima de memria extra necessria. Tais informaes o a co residem geralmente num cabealho (header ) localizado no in do arquivo c cio de programa executvel, que no copiado para memria, mas apenas lido a a e o pelo sistema operacional.

4.5.1

Espaos lgicos e f c o sicos

Retomemos os conceitos envolvidos com os arquivos de programa fonte. Qual o objetivo bsico de um programa? A resposta : ensinar o come a e putador a executar um seqncia de passos, manuseando dados de forma ue interativa ou no, com o objetivo nal de realizar clculos ou transformaes a a co com os dados fornecidos durante a execuo do programa. ca Para isto, aps o entendimento do problema, idealiza-se conceitualmente o uma forma de representao do dados a serem manipulados e depois disso ca um conjunto de operaes especiais que manipularo as estruturas criadas co a possibilitando a obteno dos resultados esperados do programa. ca Notem que ao projetar-se um programa, por mais simples ou complexo que ele seja, dene-se um espao lgico que rene todas as abstraes c o u co feitas para criar-se o programa, sejam elas de natureza estrutural ou procedural/funcional. Tais abstraes so os objetos lgicos do programa. O co a o espao lgico contm todas as denies necessrias para o programa, mas c o e co a sem qualquer v nculo com as linguagens de programao ou com os proca cessadores e computadores que executaro os programas criados a partir a desta concepo. O espao lgico a representao abstrata da soluo do ca c o e ca ca problema, tambm abstrata. e Durante a implementao dos programas utilizam-se, como meios de ca expresso, as linguagens de programao que possibilitam expressar de maa ca neira concreta (apesar das limitaes impostas por qualquer linguagem de co programao) as formulaes contidas no espao lgico. Pode-se dizer assim ca co c o que os programas fonte representam, numa dada linguagem de programao, ca o espao lgico do programa. Num outro extremo, dentro do computador a c o execuo do programa tem que ocorrer dentro da memria principal, como ca o conseqncia e limitao da arquitetura de Von Neumann. ue ca Seja qual for o computador e a particularizao da arquitetura de seu ca hardware, a memria principal pode sempre ser expressa como um vetor, o unidimensional, de posies de memria que se iniciam num determinado co o

102

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

ponto, usualmente o zero, e terminam em outro, 536.870.912 para um computador com 512 Mbytes de memria, por exemplo. Cada posio desta o ca estrutura de memria idntica, podendo armazenar o que se chama de o e e palavra de dados do computador, na prtica um conjunto de bits. a Se a palavra de dados tem 4 bits , a memria est organizada em nibo a bles. Palavras de dados de 8, 16 e 32 bits representam, respectivamente, organizaes de memria em bytes, words e double words. Tipicamente se orco o ganizam as memrias dos microcomputadores em bytes, assim cada posio o ca de memria poderia armazenar um byte de informao, sendo que nos refeo ca renciamos as posies de memria pelos seus nmeros de posio, os quais co o u ca so chamados de endereos. Como a memria de um computador um a c o e componente eletrnico, sicamente palpvel, dizemos que os endereos de o a c memria representam sicamente a organizao de memria de um compuo ca o tador. Sabemos que um programa quando em execuo na memria principal ca o de um computador se chama imagem executvel e que esta imagem ocupa a um regio de memria nita e bem determinada. Ao conjunto de posies a o co de memria utilizado por uma imagem se d o nome de espao f o a c sico desta imagem. De um lado a concepo do programa, representada e contida pelo seu ca espao lgico. Do outro lado, durante a execuo da imagem temos que c o ca as posies de memria usadas constituem o espao f co o c sico deste mesmo programa. De alguma forma, em algum instante o espao lgico do programa foi c o transformado e ligado a organizao de memria do sistema computacional ca o em uso, constituindo o espao f c sico deste mesmo programa. A ligao entre o espao lgico e f ca c o sico representa, na verdade, a um processo de mapeamento, onde cada elemento do espao lgico unido de forma c o e unica a uma posio de memria do computador, acabando por denir um ca o espao f c sico. A este processo de ligao se d o nome de mapeamento ou ca a binding (amarrao), como representado na Figura 4.8. No nosso contexto ca binding signica o mapeamento do espao lgico de um programa no espao c o c f sico que possibilita sua execuo dentro do sistema computacional em uso. ca

Figura 4.8: Representao do binding ca Veremos a seguir que o binding tem que ser realizado por uma das entidades envolvidas no processo de criao de programas, ou seja, em alguns insca

4.5. CRIACAO DE PROGRAMAS

103

tante da compilao, ligao, carregamento ou mesmo execuo. E poss ca ca ca vel tambm que o binding seja realizado por mais de uma destas entidades, onde e cada uma realiza uma parcela deste processo de mapeamento.

4.5.2

Compiladores (compilers)

Como j foi denido, um compilador um programa especial capaz de a e traduzir um arquivo escrito em uma linguagem de programao espec ca ca em um outro arquivo contendo as instrues, dados e endereos que possibico c litam a execuo do programa por um processador particular. O compilador ca , portanto, capaz de entender um algoritmo expresso em termos de uma e linguagem de programao, convertendo-o nas instrues necessrias para ca co a sua execuo por um processador particular (vide Figura 4.9). ca

Figura 4.9: Compilador e cross-compilador Todas as denies internas so transformadas em cdigo. Funes, esco a o co truturas de dados e variveis externas, tem apenas o local de chamada mara cado em tabelas de s mbolos externos para ligao posterior com bibliotecas ca ou outros mdulos de cdigo. Alm de considerar o processador que execuo o e tar tais instrues, alguns aspectos da arquitetura e do sistema operacional a co devem ser observados pelos compiladores como forma de produzir cdigo o verdadeiramente util para uma dada arquitetura computacional. No Exemplo 4.1 temos um trecho de cdigo escrito em linguagem de alto o n e um poss resultado de compilao. vel vel ca Os compiladores podem gerar cdigo de duas maneiras bsicas, isto , o a e empregando dois modos de endereamento: o absoluto e o relocvel. c a Quando no modo de endereamento absoluto, o compilador imac gina que o programa ser sempre executado numa unica e bem determinada a regio de memria. Sendo assim, durante a compilao, o compilador associa a o ca diretamente posies de memria a estruturas de dados, variveis, endereos co o a c de rotinas e funes do programa. Em outras palavras, o compilador xa co

104

CAP ITULO 4. GERENCIAMENTO DE MEMORIA trecho de cdigo compilado o 0200: . . . LOAD 500 . . . CALL printf . . . JNZ 0200

// trecho de cdigo fonte; o while (...) { . . . a = a + 1; . . . printf("%d\n", a); . . . } Exemplo 4.1 Resultado da compilao ca

os endereos de execuo do programa, realizando por completo o binding, c ca tornando-se assim compiladores absolutos.

Figura 4.10: Arquivo objeto gerado atravs de compilao absoluta e ca Na Figura 4.10, onde se apresenta a estrutura interna de arquivos gerados atravs de compilao absoluta, temos os elementos seguintes: e ca Cabealho Regio onde so colocadas informaes gerais sobre o arquivo c a a co objeto e suas partes. Tambm conhecido como header. e Cdigo Segmento onde reside o cdigo do programa, propriamente dito. E o o gerado da mesma forma que na compilao absoluta. ca TSE A tabela de s mbolos externos o local onde so listadas as e a posies de chamada de s co mbolos externos (variveis, estruturas ou a funes). co Os arquivos objeto produzidos tem seus endereos calculados a partir c de um endereo de origem padronizado ou informado antes da compilao. c ca Este endereo de origem, a partir do qual os demais so denidos, chamado c a e de endereo base de compilao ou apenas de endereo base. Desta c ca c maneira a compilao se torna mais simples, mas como conseqncia direta ca ue disto temos que:

4.5. CRIACAO DE PROGRAMAS

105

um arquivo de programa executvel s pode ser executado numa regio a o a xa de memria; o no podem existir duas ou mais instncias do mesmo programa exea a cutvel na memria, a no ser que se realizem compilaes adicioa o a co nais forando a gerao do cdigo para uso em diferentes regies de c ca o o memria; o dois ou mais diferentes programas executveis no podem ser carregaa a dos na memria a no ser que tenham sido compilados prevendo exao a tamente a ordem de carregamento e as reas adicionais de memria a o que venham a utilizar; duas ou mais imagens executveis no podem se sobrepor na memria a a o (ocupar os mesmos endereos de memria) total ou parcialmente; c o uma imagem executvel deve sempre ocupar uma regio cont a a nua de memria; o a soma das imagens poss veis de serem carregadas em memria para o execuo paralela tem que ser menor ou igual a quantidade total de ca memria dispon o vel. As razes para estas limitaes so simples e todas baseadas no fato de o co a que dentro do arquivo objeto s existem nmeros binrios. Tais nmeros o u a u representam tanto os cdigos das instrues do processador como os dados o co constantes do programa e tambm os endereos determinados pelo compilae c dor. Como existem apenas nmeros binrios em todo o arquivo objeto, no u a a trivial a distino entre instrues, dados e endereos, tornando praticae ca co c mente imposs vel: reverter a compilao, pois o binding se tornou irrevers ca vel, no sendo a poss reconstituir-se o espao lgico que originou o programa; vel c o modicar o endereamento do programa pois no se pode distinguir c a que so os endereos dentro dos arquivos objeto gerados pelos compia c ladores absolutos. Quando no modo de endereamento relocvel, o compilador contic a nua realizando todas as suas tarefas, como no caso da compilao absoluta, ca xando os endereos de execuo durante a compilao, mas alm de gerar o c ca ca e cdigo o compilador relocvel monta o arquivo objeto da seguinte forma: o a O unico elemento novo no arquivo objeto a TER (tabela de en e dereos relocveis) onde so relacionadas as posies de todos os enc a a co dereos existentes dentro do bloco de cdigo cujo valor depende da posio c o ca inicial do cdigo, ou seja, lista todos os endereos relativos existentes. o c

106

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

Figura 4.11: Arquivo objeto gerado atravs de compilao relocvel e ca a Desta forma, a TER relaciona onde esto os endereos que deveriam a c ser modicados para permitir a transposio da imagem executvel de uma ca a regio de memria para outra, constituindo o segredo dos compiladores rea o locveis, pois atravs desta tabela que o binding torna-se revers a e e vel, ou melhor, altervel, o que corresponde dizer que o binding no se realizou por a a completo. Portanto temos as seguintes implicaes: co ainda no poss a e vel reverter-se a compilao em si pois apesar do ca binding ser altervel, ainda imposs reconstituir-se o espao lgico a e vel c o original do programa; poss que outra entidade venha a modicar o atual endereamento e vel c do programa, pois os endereos esto evidenciados na TER, sendo que c a tal modicao possibilita determinar o espao f ca c sico do programa em funo da disponibilidade de memria do sistema. ca o De qualquer forma o uso de compiladores relocveis proporcionar as a a seguintes situaes: co um arquivo de programa executvel poder ser executado em diversas a a regies de memria, a serem determinadas pelo sistema operacional; o o podero existir duas ou mais instncias do mesmo programa executvel a a a na memria, sem a necessidade da realizao de compilaes adicionais o ca co para forar a gerao do cdigo para uso em diferentes regies de c ca o o memria; o dois ou mais diferentes programas executveis podero ser carregaa a dos na memria sem que seja necessria a previso da ordem exata o a a de carregamento e as reas adicionais de memria que venham a ser a o utilizadas; duas ou mais imagens executveis no podem se sobrepor na memria a a o (ocupar os mesmos endereos de memria) total ou parcialmente; c o

4.5. CRIACAO DE PROGRAMAS

107

uma imagem executvel deve sempre ocupar uma regio cont a a nua de memria; o a soma das imagens poss veis de serem carregadas em memria para o execuo paralela tem que ser menor ou igual a quantidade total de ca memria dispon o vel. Vemos que uma parte das limitaes provocadas pelo uso de compiladoco res absolutos podem ser contornadas com o uso do modelo de compilao ca relocvel. Como os ligadores no exercem participao no binding no toa a ca cante a modicao ou nalizao do binding, temos que os carregadores ca ca so os candidatos naturais a nalizao do binding no caso da compilao a ca ca relocvel. a

4.5.3

Ligadores (linkers)

Programas capazes de unir parcelas de cdigo, compiladas separadamente, o em um unico arquivo de programa executvel. Atravs de s a e mbolos e posies relacionados em tabelas de s co mbolos geradas pelos compiladores, os ligadores so capazes de unir trechos de cdigo existentes em diferentes a o arquivos objeto em um unico arquivo executvel. a Os s mbolos destas tabelas representam funes ou estruturas de dados co que podem, dentro de certas regras, ser denidas e criadas em certos arquivos. Segundo estas mesmas regras, outros arquivos de programa fonte podem utilizar-se destas funes e estruturas sem a necessidade de redeni-las, co bastando a indicao adequada de sua existncia no exterior destes arquivos ca e fontes. Assim sendo temos: Mdulos exportadores o Aqueles onde so indicadas funes, estruturas de dados e variveis que a co a sero utilizadas por mdulos externos. Utilizam variaes de clusulas a o co a extern ou export. // Exporta~o de estruturas e variveis em linguagem C ca a // estrutura de dados typedef struct { char FuncName[ID LEN]; int Loc; } FuncType; // vetor de estruturas exportado extern FuncType FuncTable[]; // varivel inteira exportada a extern int CallStack[NUM FUNC]; Exemplo 4.2 Declaraes de exportao co ca

108

CAP ITULO 4. GERENCIAMENTO DE MEMORIA Mdulos importadores o Aqueles onde so indicadas quais funes, estruturas de dados e varia co a veis encontram-se declaradas e implementadas em mdulos externos. o Utilizam variaes de clusulas import ou include. co a

// Importa~o de mdulos em linguagem C ca o #include <vcl\Forms.hpp> #include <vcl\Classes.hpp> #include <vcl\ Windows.hpp> #include <dos.h> Exemplo 4.3 Declaraes de importao co ca Cabe ao ligador a tarefa de unir os arquivos que contm estas denies e co aos arquivos que as utilizam, gerando disto um unico arquivo de programa, como ilustrado na Figura 4.12. A ligao nunca afeta a maneira com que ca o binding foi ou ser realizado, constituindo um elemento neutro dentro a da criao dos programas quando analisada sob o aspecto de modelo de ca endereamento. c Os ligadores participam do binding efetuando a unio dos espaos f a c sicos dos mdulos a serem ligados como o programa executvel, que determina o o a espao f c sico denitivo. Os ligadores no exercem papel de modicao ou a ca nalizao do binding, tarefa que ca a cargo das entidades anteriores (os ca compiladores) ou posteriores (os carregadores e relocadores).

Figura 4.12: Esquema de compilao em separado e uso de ligador ca A compilao em separado, com a conseqente unio posterior dos mca u a o dulos produzidos atravs de um ligador, tem os seguintes objetivos: e 1. Reduzir o tempo de desenvolvimento diminuindo os tempos consumidos durante a compilao atravs da partio do programa fonte em ca e ca

4.5. CRIACAO DE PROGRAMAS

109

pedaos (logicamente divididos e encadeados). Pode-se a partir desta c diviso concentrar-se o trabalho em uma das partes de cada vez, que a por ser menor toma um menor tempo de compilao. Quando se consica dera o resultado nal, as diversas compilaes intermedirias durante co a o desenvolvimento totalizam um menor tempo quando feita por partes do que quando o programa era manuseado por inteiro. 2. Permitir a diviso do trabalho dado que o programa pode ser dividido a em partes. Seguindo o mesmo princ pio que o da reduo do tempo ca de desenvolvimento, as diversas partes podem ser implementadas paralelamente por equipes de 2 ou mais programadores. Assim os totais gastos so os mesmos quando se consideram a soma dos tempos gastos a por cada elemento da equipe ou o custo de tal trabalho, mas tem-se a indiscut vantagem de que o desenvolvimento pode ser realizado vel num prazo bastante inferior dado que as partes podem ser desenvolvidas em paralelo. Tal diviso requer cuidadoso projeto e especicao a ca detalhada e consistente das partes do programa. 3. Permitir a padronizao de cdigo e a construo de bibliotecas de ca o ca funes e estruturas de dados. Dado que poss co e vel a compilao ca de uma parte de um programa contendo apenas funes (de uso geco ral ou espec co) e estruturas de dados associadas, pode-se com isto distribuir-se esta funes e estruturas sob a forma compilada, ou seja co um mdulo objeto. Outros programadores podero utilizar este mo a o dulo em seus programas, mas no podero alter-lo, da obtm-se a a a a e padronizao segura de funes e estruturas de dados. Para que isto ca co seja poss basta seguir as regras de compilao por partes e acompavel ca nhar o mdulo objeto de uma descrio das suas funes (parmetros o ca co a de entrada, resultados retornados) criando-se assim bibliotecas. 4. Permitir o uso de diferentes linguagens de programao dentro de um ca mesmo programa. Considerando a capacidade limitada dos Ligadores em interpretar as tabelas de s mbolos geradas pelos compiladores, se vrios compiladores, mesmo que de diferentes linguagens de proa gramao, so capazes de gerar um formato compat de informao ca a vel ca simblica, ento um ligador apropriado ser capaz de unir estes dio a a ferentes mdulos num unico arquivo de programa executvel, mesmo o a que os mdulos tenham sido escrito em diferentes linguagens. Na vero dade, durante a implementao destes mdulos, devem ser observaca o das as convenes de chamada para rotinas externas escritas em ouco tras linguagens espec cas para cada linguagem. Com isto podem ser aproveitadas bibliotecas escritas numa certa linguagem (as bibliotecas matemticas do FORTRAN, por exemplo) em programas escritos em a outras linguagens (C ou PASCAL). Atravs destas tcnicas, podem ser e e melhor exploradas certas carater sticas das linguagens em programas

110

CAP ITULO 4. GERENCIAMENTO DE MEMORIA envolvendo vrias linguagens (C e Clipper, C e DBase, C e SQL, C e a PASCAL , VisualBasic e C, etc).

4.5.4

Carregadores (loaders)

Os carregadores so os programas responsveis pelo transporte dos arquia a vos de programa executveis das estruturas de armazenamento secundrio a a (unidades de disco ou ta) para a memria principal. Os carregadores tem o suas aes dirigidas pelo sistema operacional, que determina qual mdulo co o executvel deve ser carregado e em que regio de memria isto deve ocorrer a a o (endereo base de execuo). Aps o trmino do processo de carregamento, c ca o e o carregador sinaliza ao sistema operacional que o programa foi carregado, neste ponto o sistema operacional determinar quando se iniciar a execuo a a ca do programa, que se transforma em uma imagem executvel ao iniciar sua a execuo efetivamente. ca Quando o arquivo objeto foi gerado em modo absoluto, os carregadores apropriados para esta situao apenas realizam uma cpia do arquivo de ca o programa executvel, transferindo dados do dispositivo de armazenamento a secundrio (unidades de disco ou ta) para a memria principal. Nesta a o situao, tais carregadores so chamados de carregadores absolutos e ca a recebem do sistema operacional apenas as informaes do nome do arquivo co executvel a ser carregado e o endereo de carga (endereo a partir de onde a c c se iniciar a cpia do cdigo na memria principal). a o o o Se o endereo de carga for o mesmo que o endereo base da compilao, c c ca a imagem resultante ser executada sem problemas, de acordo com o que a foi programado no fonte. Caso contrrio as conseqncias so imprevis a ue a veis, resultando geralmente na interrupo abrupta do programa pelo sistema ca operacional, na invaso da rea de dados/cdigo de outros programas, no a a o clculo imprprio dos resultados ou na perda de controle do sistema. a o Quando temos que o arquivo objeto foi gerado em modo relocvel, a devem ser utilizados carregadores relocveis, ou seja, carregadores capaa zes de interpretar o contedo da TER (tabela de endereos relocveis) de u c a forma a transpor a imagem executvel da rea original (iniciada/denida a a pelo endereo base de compilao) para uma outra rea de memria. c ca a o A transposio da rea de memria se baseia no fato de que durante a ca a o transferncia do programa executvel para a memria principal o carregador e a o relocvel, atravs da TER identica quem so os endereos componente do a e a c cdigo. Cada vez que o carregador relocvel l um endereo dentro do o a e c cdigo, ele soma ao endereo lido (endereo original da compilao) o valor o c c ca do endereo de carga fornecido pelo sistema operacional e com isto se realiza c o modicao do binding (iniciado pelo compilador relocvel) nalizandoca a se o mapeamento com a transposio da imagem para uma nova regio de ca a memria, determinada pelo sistema operacional e no pelo compilador. o a

4.5. CRIACAO DE PROGRAMAS

111

Endnovo = Endoriginal + (Endbasecompilacao Endbasecarregamento )

(4.3)

A TSE (tabela de s mbolos externos) lida pelo sistema operacional para e que os mdulos externos necessrios ao programa sejam carregados previao a mente. Caso tais mdulos sejam usados globalmente, isto , compartilhados o e por vrios programas (como as DLLs dos sistemas MS-Windows 95/98), a o sistema operacional s realiza o carregamento quando tais mdulos no o o a esto presentes na memria. a o Finalmente devemos observar que tanto o cabealho existente no arquivo c de programa executvel como a TSE no so transferidas para memria prina a a o cipal. No entanto a rea ocupada pelo programa no corresponde apenas ao a a segmento de cdigo contido no arquivo executvel, sendo substancialmente o a maior, como ilustrado na Figura 4.13

Figura 4.13: Estrutura t pica de imagem executvel a Tal expanso do cdigo ocorre devido as necessidades dos programas de a o possuirem uma rea adicional de memria para armazenamento da pilha a o dos endereos de retorno (stack ) e outra rea extra para armazenamento de c a contedo dinmico do programa (heap), tais como variveis locais e blocos u a a de memria alocados dinmicamente. Por essa razo, aps a transferncia do o a a o e cdigo do armazenamento secundrio para memria, chamamos tal contedo o a o u de memria de imagem executvel ou simplesmente imagem. o a

4.5.5

Relocadores (swappers)

Os relocadores so rotinas especiais do sistema operacional responsveis a a pela movimentao do contedo de certas reas de memria primria para ca u a o a memria secundria (especicamente dispositivos de armazenamento como o a unidades de disco) e vice-versa, como ilustrado na Figura 4.14. A existncia e de relocadores num sistema depende do tipo de gerenciamento de memria o oferecido pelo sistema operacional. Antes de vericarmos quais modelos

112

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

de gerenciamento de memria podem fazer uso dos relocadores, devemos o compreender melhor a natureza de seu trabalho.

Figura 4.14: Conceito de relocao ca Considerando que num sistema multiprogramado existem vrios procesa sos ativos (em estado ready), bloqueados (em estado blocked ) e suspensos (em estado suspended ), sabemos que apenas um processo est efetivamente a em execuo, isto , utilizando o processador (estado running), ento, a meca e a dida de suas necessidades, este processo em execuo poder solicitar reas ca a a adicionais de memria. Estes pedidos de alocao de memria podem ser o ca o atendidos de duas formas: reas efetivamente livres so cedidas ao processo a a ou aciona-se o relocador para liberao de reas de memria pertencentes aos ca a o demais processos ativos e inativos atravs da remoo de seu contedo para e ca u os arquivos de troca, no que se denomina operao de troca ou swapping. ca Seguindo instrues do sistema operacional, que detm o gerenciamento co e da memria e dos processos, um relocador pode ser comandado para retirar o o contedo de uma rea de memria armazenado-a em disco. O espao em u a o c memria disponibilizado atravs desta operao pode ser usado para ateno e ca e der pedidos de alocao de memria do processo correntemente em execuo. ca o ca Com isto, partes de alguns processos sero transferidas para o disco. Quando a estes processos, cuja algumas de suas partes esto armazenadas no disco, a necessitarem de tais contedos, uma nova operao de relocao pode ser u ca ca efetuada para, novamente disponibilizar espao, de modo que este seja agora c usado para que o contedo das partes anteriormente copiadas em disco, seja u recolocada na memria. Todas estas operaes ocorrem sob orientao do o co ca sistema operacional. O que geralmente ocorre que o relocador realiza uma cpia das rea de e o a memria movimentadas para o disco em um arquivo especial denominado o arquivo de troca ou swap le. Ao copiar tais reas de memria para o a o disco, estas so assinaladas como livres, tornando-se dispon a veis para outros processos. Tambm se efetua um registro do que foi copiado para memria e o possibilitando recuperar este contedo quando necessrio. u a Nesta situao, se avaliarmos a soma total de memria utilizada por ca o todos os processos ativos, isto , processos nos estados de running e tambm e e

4.6. MEMORIA VIRTUAL

113

em ready, temos que a quantidade de memria utilizada por eles pode ser o signicativamente maior do que a memria f o sica instalada no sistema, pois alguns destes processos tiveram suas rea de memria transferidas para a a o unidade de disco quando no estavam em execuo. Este o princ bsico a ca e pio a que possibilita a implementao de memria virtual como ser tratado a ca o a seguir (seo 4.6). ca

4.6

Memria virtual o

O conceito de relocao de memria possibilitou o desenvolvimento de um ca o mecanismo mais sosticado de utilizao de memria que se denominou ca o memria virtual ou virtual memory. Segundo Deitel: o O termo memria virtual normalmente associado com a habio e lidade de um sistema enderear muito mais memria do que a c o sicamente dispon vel [DEI92, p. 215]. Este conceito antigo: surgiu em 1960 no computador Atlas, constru e do pela Universidade de Manchester (Inglaterra), embora sua utilizao mais ca ampla s tenha acontecido muitos anos depois. Tanenbaum simplica a o denio do termo: ca A idia bsica da memria virtual que o tamanho combinado do e a o e programa, dados e pilha podem exceder a quantidade de memria o f sica dispon para o mesmo [TAN92, p. 89]. vel Outra denio poss de memria virtual a quantidade de memria ca vel o e o excedente a memria f o sica instalada em um sistema computacional que esta aparentemente em uso quando se consideram a soma das quantidades totais de memria utilizadas por todos os processos existentes num dado momento o dentro deste sistema. Na Figura 4.15 temos uma representao da memria ca o real e virtual.

Figura 4.15: Representao da memria real e virtual ca o Por sua vez, Silberschatz e Galvin propem as seguintes denies: o co

114

CAP ITULO 4. GERENCIAMENTO DE MEMORIA Memria Virtual uma tcnica que permite a execuo de proo e e ca cessos que podem no estar completamente na memria [SG94, a o p. 301]. Memria Virtual a separao da memria lgica vista pelo o e ca o o usurio da memria f a o sica [SG94, p. 302].

De qualquer forma, o termo memria virtual indica que o sistema o computacional possui a capacidade de oferecer mais memria do que a sicao mente instalada, ou seja, capaz de disponibilizar uma quantidade aparente e de memria maior do que a memria de fato (real) existente do sistema. o o Os maiores benef cios obtidos atravs da utilizao de sistemas que eme ca pregam mecanismos de memria virtual so: o a Percepo por parte de programadores e usurios de que a quantidade ca a de memria potencialmente dispon o vel maior do que a realmente e existente no sistema. Abstrao de que a memria um vetor unidimensional, cont ca o e nuo, dotado de endereamento linear iniciado na posio zero. c ca Maior ecincia do sistema devido ` presena de um nmero maior e a c u de processos, permitindo uso equilibrado e sustentado dos recursos dispon veis. A memria f o sica tem seu tamanho usualmente limitado pela arquitetura do processador ou do sistema, ou seja, possui um tamanho mximo a que xo e conhecido. J a memria virtual tem seu tamanho limitado, e a o freqentemente, pela quantidade de espao livre existente nas unidade de u c disco do sistema possuindo, portanto, um valor varivel e mais ex (pois a vel mais fcil acrescentar novas unidades de disco a um sistema ou substituir e a as unidades do sistema por outras de maior capacidade). Do ponto de vista de velocidade, a velocidade de acesso da memria f o sica substancialmente maior do que da memria virtual, mas a velocidade da e o memria total do sistema tende a ser uma mdia ponderada das velocidao e des de acesso da memria f o sica e virtual cujos pesos so as quantidades a envolvidas. De qualquer modo, a velocidade mdia de acesso a memria do e o sistema torna-se uma valor intermedirio entre as velocidades de acesso da a memria f o sica e virtual sendo que quanto maior a quantidade de memria o virtual utilizada menor ser a velocidade mdia de acesso a memria. a e o V elM emF isica > V elM emT otal > V elM emV irtual A memria virtual pode ser implementada basicamente atravs de meo e canismos de: Paginao ca Tcnica em que o espao de endereamento virtual dividido em bloe c c e cos, denominados unidades de alocao, de tamanho e posio xas, ca ca

4.6. MEMORIA VIRTUAL

115

geralmente de pequeno tamanho, os quais se associa um nmero. O u sistema operacional efetua um mapeamento das unidades de alocao ca em endereos de memria, determinando tambm quais esto presenc o e a tes na memria f o sica e quais esto nos arquivos de troca. a Segmentao ca Tcnica em que o espao de endereamento virtual dividido em bloe c c e cos de tamanho xo ou varivel, denidos por um in e um tamanho, a cio cuja posio tambm pode ser xa ou varivel, mas identicados unica e a vocamente. O sistema operacional mapeia estes blocos em endereos c de memria, efetuando um controle de quais blocos esto presentes na o a memria f o sica e quais esto nos arquivos de troca. a Atualmente, os mecanismos mais populares de implementao de meca mria virtual so atravs da paginao. A segmentao um alternativa o a e ca ca e menos utilizada, embora mais adequada do ponto de vista de programao, ca de forma que em alguns poucos sistemas se usam ambas as tcnicas. e

Figura 4.16: MMU e Relocao dinmica ca a Estas duas tcnicas s podem ser implementadas se for poss a desase o vel sociao dos endereos referenciados pelos processos em execuo dos efetica c ca vamente utilizados na memria f o sica do sistema. Isto eqivale a dizer que o u binding deve se completar no momento da execuo de cada instruo, perca ca mitindo adiar at o ultimo momento o mapeamento do espao lgico de um e c o programa em seu espao f c sico denitivo de execuo, isto o que chamamos ca e de relocao dinmica. Para isto o processador deve dispor de mecanismos ca a de deslocamento dos endereos referenciados pelo programa para as regies c o bvio que tal tarefa s pode ser de memria que efetivamente sero usadas. E o o a o completada com um sosticado mecanismo de endereamento de memria, c o mantido pelo sistema operacional. Tais mecanismos so geralmente implea

116

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

mentados como uma unidade de gerenciamento de memria ou meo mory management unit (MMU) esquematizada na Figura 53. Alm dos mecanismos de paginao ou segmentao, a memria virtual e ca ca o exige a disponibilizao de espao nos dispositivos de armazenamento seca c cundrio para a criao de um (ou mais) arquivos de troca, os swap les. a ca Em funo da velocidade dos dispositivos de E/S, as unidades de disco so ca a quase sempre utilizadas, minimizando o impacto das transferncias entre e memria primria (memria f o a o sica do sistema) e memria secundria (unio a dades de disco). A memria total de um sistema , portanto, a soma de sua memria o e o f sica (de tamanho xo) com a memria virtual do sistema. O tamanho o da memria virtual do sistema denida por, basicamente, o menor valor o e dentre os seguintes: capacidade de endereamento do processador, c capacidade de administrao de endereos do sistema operacional e ca c capacidade de armazenamento dos dispositivos de armazenamento secundrio (unidades de disco). a Nos sistemas Win32 (Windows 95/98 e Windows NT) so oferecidas a funes espec co cas para o gerenciamento de memria virtual. Suas API o (Application Program Interface) oferecem, dentre outras, as importantes funes relacionadas na Tabela 4.3 [CAL96, p. 252-262]. co Tabela 4.3: Funes de gerenciamento de memria virtual da API Win32 co o Funo ca Utilizao ca VirtualAlloc Permite reservar ou alocar memria o para um programa. VirtualFree Libera memria alocada ou reservada o atravs de VirtualAlloc. e GetProcessHeap Obtm um handler para o heap atual. e CreateHeap Cria um novo heap. HeapAlloc Efetua uma alocao parcial no heap. ca HeapReAlloc Modica o tamanho de uma alocao ca parcial do heap. HeapSize Retorna o tamanho corrente do heap. HeapFree Libera uma alocao parcial do heap. ca HeapDestroy Destroy a rea de heap. a GlobalMemoryStatus Retorna informaes sobre utilizao co ca da memria do sistema. o Atravs destas funes o usurio pode administrar o uso da memria e co a o virtual do sistema, determinando a utilizao da memria f ca o sica, tamanho

4.6. MEMORIA VIRTUAL

117

e utilizao do arquivo de troca, tamanho do heap etc. Alm disso pode ca e efetuar a alocao de novas reas de memria para sua aplicao, o que perca a o ca mite a criao de um mecanismo particular de utilizao e controle do espao ca ca c de endereamento virtual que opera de forma transparente com relao aos c ca mecanismos de memria virtual implementados pelo sistema operacional. o Nos Exemplos 4.4 e 4.5 temos exemplos de utilizao de algumas destas ca funes. O Exemplo 4.4 utiliza a funo da API GlobalMemoryStatus para co ca determinar o tamanho da memria f o sica instalada, a quantidade de memria o f sica dispon vel, o tamanho do arquivo de troca e sua utilizao. ca { Para Borland Delphi 2.0 ou superior. procedure TForm1.UpdateMemStatus; var Status: TMemoryStatus; function ToKb(Value: DWORD): DWORD; begin result := Value div 1024; end; }

begin { Obt^m status da memria } e o Status.dwLength := sizeof(TMemoryStatus); GlobalMemoryStatus(Status); with Status do { Atualiza labels e gauges } begin Label1.Caption:=IntToStr(ToKb(dwTotalPhys))+ Kb; Label2.Caption:=IntToStr(ToKb(dwTotalPhys dwAvailPhys))+ Kb; Label3.Caption:=IntToStr(ToKb(dwTotalPageFile))+ Kb; Label4.Caption:=IntToStr(ToKb(dwTotalPageFile dwAvailPageFile))+ Kb; Gauge1.MaxValue:=dwTotalPhys; Gauge1.Progress:=dwTotalPhys - dwAvailPhys; Gauge2.MaxValue:=dwTotalPageFile; Gauge2.Progress:=dwTotalPageFile - dwAvailPageFile; end; end; Exemplo 4.4 Uso de GlobalMemoryStatus J no Exemplos 4.5 que aloca um bloco de memria de tamanho Size, a o permitindo seu uso atravs de um ponteiro para a rea alocada, efetuando e a sua liberao aps o uso. A rotina possui um tratamento m ca o nimo de erros.

118

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

{ Para Borland Delphi 2.0 ou superior. } P := VirtualAlloc(nil, Size, memCommit or mem Reserve, Page ReadWrite); if P = nil then ShowMessage("Aloca~o n~o foi possvel") ca a else begin { Uso da rea alocada atravs do ponteiro P. } a e . . . { Libera~o da area alocada aps uso. } ca o if not VirtualFree(P, 0, mem Release) then ShowMessage("Erro liberando memria."); o end; Exemplo 4.5 Alocao de bloco de memria com VirtualAlloc ca o

4.7

Modelos de gerenciamento de memria o

Como ilustrado na Figura 44, existem vrios diferentes modelos para a ora ganizao e o gerenciamento de memria os quais trataremos brevemente: ca o Monoprogramado com armazenamento real Multiprogramado com parties xas sem armazenamento virtual co Multiprogramado com parties variveis sem armazenamento virtual co a Multiprogramado com armazenamento virtual atravs de paginao e ca Multiprogramado com armazenamento virtual atravs de segmentao e ca Multiprogramado com armazenamento virtual atravs de paginao e e ca segmentao combinadas ca

4.7.1

Monoprogramado com armazenamento real

Neste modelo de gerenciamento a memria dividida em duas parties o e co distintas, de tamanhos diferentes, onde uma utilizada pelo sistema opee racional e a outra utilizada pelo processo do usurio conforme ilustrado e a na Figura 4.17. Este modelo, tambm chamado de modelo de alocao e ca cont nua, armazenamento direto ou monoprogramado com armazenamento real, era a forma mais comum de gerenciamento de memria at meados da o e dcada de 1960. Tambm era a tcnica mais comum usada pelos sistemas e e e operacionais das primeiras geraes de microcomputadores. co

4.7. MODELOS DE GERENCIAMENTO DE MEMORIA

119

Figura 4.17: Organizao da memria em modo monoprogramado real ca o Esta forma de gerenciamento de memria bastante simples e permite o e que apenas um processo seja executado de cada vez, o que limita a programao a construo de programas estritamente seqenciais. Na prtica ca ca u a este esquema de gerenciamento s est preparado para a execuo de um o a ca programa de cada vez, sendo que raramente a memria ser inteiramente o a utilizada, sendo freqente a existncia de uma rea livre ao nal da rea de u e a a programa destinada ao usurio. a Dado que o espao de endereamento corresponde a quantidade de mec c mria primria sicamente instalada no sistema, que no so utilizados meo a a a canismos de memria virtual e que usualmente apenas um processo (proo grama) era executado de cada vez, este modelo de organizao tambm ca e e conhecido como organizao monoprogramada real. ca Como exemplo o PC-DOS/MS-DOS (Disk Operating System), sistema operacionais dos microcomputadores IBM e seus compat veis, utiliza um esquema semelhante, onde o sistema operacional cava residente na primeira parte da memria e a rea de programa destinada aos usurios utilizava o o a a espao restante dos 640 Kbytes de espao de endereamento dispon c c c veis. O CP/M (Control Program/Monitor ), dos microcomputadores Apple e compat veis utilizava esquema semelhante. No caso do DOS, vrios outros esa quemas adicionais forma criados para estender as capacidades bsicas (e a bastante limitadas) de endereamento do sistema operacional, entre elas os c mecanismos de extenso de memria e os overlays. a o Os overlays (do termo recobrimento), so o resultado da estruturao a ca dos procedimentos de um programa em forma de rvore, onde no topo esto a a os procedimentos mais usados e nos extremos os menos utilizados. Esta estruturao deve ser feita pelo usurio, satisfazendo as restries do programa ca a co a ser desenvolvido e da memria dispon no sistema. Uma biblioteca de o vel controle dos overlays, que funcionava como um sistema de gerenciamento de memria virtual, deve ser adicionada ao programa e mantida na memria o o todo o tempo, procura manter apenas os procedimentos de uma seo verca tical da rvore, minimizando a quantidade necessria de memria f a a o sica e

120

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

assim superando as limitaes do DOS [GUI86, p. 184]. co

4.7.2

Particionamento xo

Dada as vantagens dos sistemas multiprogramados sobre os monoprogramados, necessrio que a memria seja dividida de forma tal a possibilitar a e a o presena de vrios processos simultaneamente. A maneira mais simples de c a realizar-se esta tarefa efetuar a diviso da memria primria do sistema em e a o a grandes blocos os quais so denominados parties. As parties, embora a co co de tamanho xo, no so necessariamente iguais, possibilitando diferentes a a conguraes para sua utilizao, como ilustrado na Figura 4.18. co ca

Figura 4.18: Organizao da memria em modo multiprogramado com ca o parties xas co Enquanto o sistema operacional utiliza permanentemente uma destas parties, usualmente a primeira ou a ultima, os processos dos usurios co a podem ocupar as demais parties, cujo nmero depender do tamanho co u a total da memria do sistema e dos tamanhos das parties realizadas. o co Geralmente as parties eram determinadas atravs da congurao do co e ca sistema operacional, o que poderia ser feito de tempos em tempos ou at e mesmo diariamente pelo operador do sistema. At uma nova denio dos e ca tamanhos das parties, os tamanhos e posies anteriormente denidos co co eram xos. Os processos podero ento ocupar as parties de memria a partir de a a co o uma la unica de processos que encaminhar o processo para a partio dis a ca pon vel. Tanto o modelo de endereamento absoluto como relocvel podem c a ser utilizados pois: Nos sistemas batch os programas eram compilados no instante da execuo possibilitando o uso de compiladores absolutos, dado que ca

4.7. MODELOS DE GERENCIAMENTO DE MEMORIA

121

a posio que o programa utilizaria na memria (partio) era conheca o ca cida; Se utilizado compiladores relocveis, um carregador relocvel poderia a a transpor o cdigo corretamente para a partio escolhida. o ca Quando do uso de parties iguais, uma unica la de processos poco deria atender a contento a tarefa de denir qual processo ocuparia uma certa partio, embora ocorresse perda signicativa de memria pela no ca o a utilizao integral das parties. O uso de parties xas de diferentes taca co co manhos permitia fazer melhor uso da memria, pois nesta situao poderiam o ca ser utilizadas las diferentes de processos para cada partio, baseadas no ca tamanho do processo/partio. Ainda assim poder ca amos ter uma situao ca de parties livres e uma, em especial, com uma la de processos. A melhor co soluo encontrada foi adotar uma unica la de processos e critrios de eleca e gibilidade para designao de parties para processos visando bom uso da ca co memria e um throughput adequado. o Torna-se evidente que a determinao da partio para a execuo de ca ca ca um dado processo inuencia no desempenho do sistema. Para esta tarefa podemos utilizar um dos seguintes critrios, que correspondem a estratgias e e de posicionamento (placement strategies): First t: Aloca-se o processo para a primeira partio encontrada que ca comporte o processo, minimizando o trabalho de procura. Best t: O processo alocado para a menor partio que o comporte, e ca produzindo o menor desperd de reas de memria, exige pesquisa cio a o em todas as parties livres. co Worst t: O processo alocado para a maior partio que o comporte, e ca produzindo o maior desperd de reas de memria, exige pesquisa cio a o em todas as parties livres. co Langsam et al. [LAT96, p. 625] sugerem alguns algoritmos em linguagem C para a alocao de blocos de memria utilizando o rst t e best t, bem ca o como para seleo da melhor partio a ser liberada. ca ca De qualquer forma, o espao de endereamento corresponde ao tamanho c c da memria primria do sistema, ou seja, a somatria dos tamanhos das o a o parties e, portanto, do tamanho mximo dos processos em execuo, co a ca e igual a memria f o sica instalada no sistema. Assim, o particionamento xo um esquema de organizao de memria que no utiliza memria virtual. e ca o a o Vrios sistemas comerciais de grande porte utilizavam este esquema de a gerenciamento de memria, onde o operador ou o administrador do sistema o denia o nmero e o tamanho das parties da memria principal. u co o

122

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

4.7.3

Particionamento varivel a

O particionamento varivel bastante semelhante ` organizao de mea e a ca mria em parties xas, exceto pelo fato de que agora o sistema operacioo co e nal efetua o particionamento da memria. A cada novo processo, a memria o o dividida, de forma que parties de diferentes tamanhos sejam posicionae co das na memria do sistema. A medida que os processos sejam nalizados, o suas parties tornam-se livres, podendo ser ocupadas no todo ou em parte co por novos processos como esquematizado na Figura 4.19. Este esquema de organizao de memria tambm denominado de particionamento por ca o e e demanda.

Figura 4.19: Organizao da memria em modo multiprogramado com ca o parties variveis co a Neste tipo de sistema, a estratgia de posicionamento worst t bastante e e util pois permite maximizar o tamanho das rea livres (buracos) obtidas a a cada alocao, aumentando as possibilidade de sucesso de transformao da ca ca a rea desocupada em uma nova partio livre para um novo processo. ca Mesmo utilizando-se o algoritmo worst t ainda poss que existam e vel regies livres de memria entre as parties efetivamente alocadas. Este o o co fenmeno, que tende a aumentar conforme a utilizao do sistema e nmero o ca u de processos presentes na memria, denominado fragmentao interna. o e ca Desta forma, uma certa poro da memria total do sistema pode continuar ca o permanecendo sem uso, anulando alguns dos benef cios do particionamento varivel e do algoritmo worst t. a Um estratgia poss para eliminar a fragmentao interna a da come vel ca e pactao de memria, onde todas as parties ocupadas so deslocadas em ca o co a direo ao in da memria, de forma que todas as pequenas reas livres ca cio o a componham uma unica rea livre maior no nal da memria, como indicado a o na Figura 4.20. A compactao de memria uma tcnica raramente utilizada devido ca o e e ao alto consumo de processador para o deslocamento de todas as parties e co

4.7. MODELOS DE GERENCIAMENTO DE MEMORIA

123

manuteno das estruturas de controle da memria. O trabalho despendido ca o no reposicionamento de uma partio pode ser suciente para nalizar o proca cesso que a ocupa ou outro presente na memria, tornando a movimentao o ca de parties um nus para os processos em execuo. co o ca

Figura 4.20: Compactao de memria ca o Da mesma forma que na organizao da memria atravs de parties ca o e co xas, no particionamento varivel o espao de endereamento igual ao a c c e tamanho da memria primria existente no sistema e, portanto, um esquema o a de organizao de memria que tambm no utiliza memria virtual. ca o e a o

4.7.4

Paginao ca

A paginao um esquema de organizao de memria que faz uso da ca e ca o memria virtual, ou seja, o espao de endereamento maior que o tao c c e manho da memria sicamente presente no sistema, como representado na o Figura 4.21. O espao de endereamento total do sistema, denominado de espao de c c c endereamento virtual dividido em pequenos blocos de igual tamanho chac e mados pginas virtuais (virtual pages) ou apenas pginas (pages). Cada a a pgina identicada por um nmero prprio. Da mesma forma a memria a e u o o f sica dividida em blocos iguais, do mesmo tamanho das pginas, denoe a minados molduras de pginas (page frames). Cada moldura de pgina a a tambm identicada por um nmero, sendo que para cada uma destas mole e u duras de pgina corresponde uma certa regio da memria f a a o sica do sistema, como mostra a Figura 4.22. Para que este esquema de diviso seja util, o sistema operacional deve a realizar um mapeamento de forma a identicar quais pginas esto presena a tes na memria f o sica, isto , deve determinar quais os page frames que e esto ocupados e quais pginas virtuais (virtual pages) esto nele armazea a a nados. O sistema operacional tambm deve controlar quais pginas virtuais e a esto localizadas nos arquivos de troca (swap les), que em conjunto com a a memria f o sica do sistema representam a memria virtual do sistema (vide o

124

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

Figura 4.21: Espaos de endereamento virtual e real na paginao c c ca

Figura 4.15). A medida que os programas vo sendo executados, o sistema operacioa nal vai relacionando quais pginas virtuais esto sendo alocadas para cada a a um destes programas, sem se preocupar com o posicionamento cont guo de partes de um mesmo programa. No instante efetivo da execuo a MMU ca (memory management unit) converte os endereos virtuais em endereos c c f sicos utilizando as tabelas de pginas, como esquematizado na Figura 61. a Neste mesmo momento a MMU detecta se uma dada pgina est ou no a a a presente na memria f o sica, realizando uma operao de page fault (falta de ca pgina) caso no esteja presente. a a Quando ocorre um page fault acionada uma rotina do sistema opee racional que busca na memria virtual (nos arquivos de troca) a pgina o a necessria, trazendo-a para a memria f a o sica. Esta operao particularca e mente complexa quando j no existe espao livre na memria f a a c o sica, sendo necessria a utilizao de um algoritmo de troca de pginas para proceder-se a ca a a substituio de pginas. ca a Os page faults so um decorrncia da existncia de um mecanismo de a e e memria virtual e embora sejam operaes relativamente lentas quando como co paradas ao processamento, propiciam grande exibilidade ao sistema. E comum a implementao de mecanismos de contabilizao dos page faults em ca ca sistemas de maior porte, onde pode existir at mesmo um limite, congurado e pelo administrador do sistema, para a ocorrncia de troca de pginas. e a A converso de endereos por parte da MMU necessria porque cada a c e a programa imagina possuir um espao de endereamento linear originado no c c zero quando na verdade compartilha blocos isolados da memria f o sica com

4.7. MODELOS DE GERENCIAMENTO DE MEMORIA

125

Figura 4.22: Endereamento Virtual e Real na Paginao c ca

outros programas que tambm esto em execuo. e a ca Outra implicao deste mecanismo que os blocos sicamente ocupados ca e na memria principal no necessitam estar continuamente nem ordenadao a mente posicionados. Isto permite tanto a execuo de um processo com ca apenas uma de suas pginas presente na memria f a o sica, como a execuo ca de um processo cujo tamanho total maior que o armazenamento primrio e a do sistema. Sendo assim, a paginao um esquema extremamente ex ca e vel. O mapeamento das pginas virtuais nos efetivos endereos de memria a c o e realizado pela MMU com o aux de tabelas de pginas, que determinam lio a a relao entre as pginas do espao de endereamento virtual e as molduras ca a c c de pginas do espao de endereamento f a c c sico, ou seja, oferendo suporte para as operaes de converso de endereos necessrias ao uso deste esquema de co a c a organizao de memria. ca o Num sistema de paginao pura, os endereos virtuais (veja a Figura 4.23 ca c so denominados v, tomando a forma de pares ordenados (p, d), onde p a representa o nmero da pgina virtual e d a posio desejada, ou seja, o u a ca deslocamento (displacement ou oset) a partir da origem desta pgina. a

Figura 4.23: Formato do endereo virtual para sistema de paginao pura c ca

126

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

J as posies das molduras de pginas (page frames), isto , seus ena co a e dereos iniciais so determinados da seguinte forma: como as molduras de c a pginas possuem o mesmo tamanho das pginas virtuais, os endereos inia a c ciais dos page frames so mltiplos integrais do tamanho das pginas, no a u a a podendo ser designadas de outra forma. A Tabela 4.4 exibe a relao entre ca as molduras de pginas e seu endereamento na memria f a c o sica. Tabela 4.4: Endereamento das c Nmero do Tamanho do u Page Frame Page Frame 0 p 1 p 2 p 3 p 4 p . . . . . . n1 p Molduras de Pginas a Endereamento c Real das Pginas a 0 : p 11 p : 2p 1 2p : 3p 1 3p : 4p 1 4p : 5p 1 . . . (n 1)p : np 1

O funcionamento da MMU, conforme esquematizado na Figura 4.24, pode ser descrito resumidamente nos passos relacionados abaixo: 1. MMU recebe o endereo virtual contido nas instrues do programa. c co 2. O nmero de pgina virtual usado como u a e ndice na tabela de pginas. a 3. Obtm-se o endereo f e c sico da moldura de pgina que contm o ena e dereo virtual solicitado ou ocorre um page fault. c 4. MMU compe o endereo nal usando o endereo da moldura de pgina o c c a e uma parte do endereo virtual (displacement). c Para o funcionamento apropriado da MMU necessria a existncia de e a e tabelas de pginas, mantidas total ou parcialmente na memria primria a o a pelo sistema operacional. Cada entrada da tabela de pginas contm, gerala e mente: um bit indicando presena ou ausncia da pgina na memria princic e a o pal; o nmero da moldura de pgina (page frame number ); e u a dependendo da implementao, o endereo da pgina no armazenaca c a mento secundrio (swap les) quando ausente da memria principal. a o

4.7. MODELOS DE GERENCIAMENTO DE MEMORIA

127

Figura 4.24: Converso de endereos pela MMU a c O mecanismo de converso de endereos depende da organizao das taa c ca belas de pginas (um, dois ou mltiplos n a u veis) e da forma do mapeamento (mapeamento direto, mapeamento associativo e mapeamento combinado associativo/direto). Em funo do tamanho do espao de endereamento virca c c tual, do tamanho da pgina e do tamanho da memria real, os arranjos das a o tabelas de pginas podem se tornar grandes e complexos. Diversos estudos a e estratgias j foram realizados para sugerir organizaes mais ecientes e a co para o mapeamento e a converso de endereos. a c Temos assim que a paginao permite a execuo de programas individuca ca almente maiores que a memria f o sica do sistema ou, no caso mais comum, a execuo de diversos programas cuja soma dos seus tamanhos exceda o ca tamanho da memria f o sica. Graas a MMU, implementada no hardware do c processador, as aplicaes podem ser desenvolvidas imaginando um espao co c de endereamento linear, cont c nuo e de grande tamanho, simplicando bastante o trabalho de programao. A paginao o sistema de organizao ca ca e ca de memria mais utilizado atualmente. o Exemplos de sistemas computacionais que utilizam a paginao pura so: ca a DEC PDP-11, minicomputador de 16 bits popular da dcada de 1970, e contando com um espao de endereamento virtual de 16 bits, pginas c c a de 8 KBytes e at 4 MBytes de memria f e o sica, utilizando tabelas de pginas de um unico n [TAN92, p. 97]. a vel

128

CAP ITULO 4. GERENCIAMENTO DE MEMORIA DEC VAX (Virtual Addresses eXtensions), sucessor do DEC PDP-11, minicomputador de 32 bits, possuindo um espao de endereamento c c virtual de 32 bits e pequenas pginas de 512 bytes. Os modelos de sua a fam contavam com no m lia nimo 2 MBytes de memria f o sica at 512 e MBytes. As tabelas de pginas possu a am dois n veis [TAN92, p. 98]. IBM OS/2 2.0 (Operating System/2), operando em plataforma Intel 80386 ou 80486, oferecia at 512 MBytes de espao lgico linear e c o por processo num esquema de endereamento de 32 bits, tamanho de c pgina de 4 KBytes com paginao por demanda [IBM92b, p. 11]. a ca IBM AS/400, minicomputador de 64 bits que utiliza um esquema de tabela de pginas invertidas (inverted page table) [STA96, p. 248]. a Microsoft Windows 95, dirigido para processadores 80386 ou superior, oferece espao de endereamento linear virtual de 2 GBytes (endereos c c c de 32 bits), pginas de 4 KBytes [PET96, p. 293]. a

4.7.5

Segmentao ca

Enquanto que a organizao da memria atravs da paginao um modelo ca o e ca e puramente unidimensional, isto , o espao de endereamento virtual ofee c c recido a cada um dos diversos processos unico e linear, a segmentao e ca prope um modelo bidimensional, onde cada processo pode utilizar-se de o diversos espaos de endereamento virtuais independentes. Este conceito foi c c introduzido nos sistemas Burroughs e Multics [GUI86, p. 137]. Num esquema de memria segmentada, o espao de endereamento viro c c tual dividido em blocos de tamanho varivel, onde cada bloco pode ase a sumir tambm um posicionamento varivel, isto , para um dado processo, e a e enquanto cada segmento deve ocupar um espao de endereamento cont c c nuo na memria f o sica, no existe necessidade dos diversos segmentos deste proa cesso estarem alocados de forma cont gua ou sequer ordenada. Estes blocos so denominados segmentos de memria ou simplesmente segmentos, a o como ilustrado na Figura 4.25. E comum que os segmentos possuam um tamanho mximo, limitado ao a tamanho da memria f o sica do sistema e um nmero mximo de segmentos u a distintos. Cada segmento representa um espao de endereamento linear c c independente dos demais segmentos, isto permite que cada segmento possa crescer ou diminuir conforme suas necessidades e livremente de outros segmentos. Uma situao poss e comum a de um processo que possui um ca vel e segmento de cdigo (o programa em si), um ou mais segmentos de dados e o um segmento para sua pilha (stack ), todos com diferentes tamanhos. Dado que um segmento uma unidade lgica, o programador deve exe o plicitamente determinar sua utilizao. Embora seja poss ter-se cdigo, ca vel o

4.7. MODELOS DE GERENCIAMENTO DE MEMORIA

129

Figura 4.25: Armazenamento primrio na segmentao a ca

dados e pilha num unico segmento, isto representa uma m utilizao desta a ca estrutura de organizao da memria, invalidando seus benef ca o cios. A organizao da memria em segmentos favorece e simplica a orgaca o nizao de estruturas de dados, principalmente as de tamanho varivel em ca a tempo de execuo. Alm disto oferece importantes facilidades do ponto ca e de vista de compartilhamento e proteo. Por exemplo, uma biblioteca ca de funes pode ser colocada num segmento e compartilhada pelas diverco sas aplicaes que as necessitem. A cada segmento podem ser associados co tipos de acesso que especiquem as operaes que podem ser executadas co no segmento, tais como leitura (read ), escrita (write), execuo (execute) e ca anexao (append ). Tais operaes podem ainda ser associadas a modos de ca co acesso espec cos, criando um amplo conjunto de possibilidades uteis para implantao de esquemas de segurana [DEI92, p. 233]. ca c Num sistema de segmentao pura, os endereos virtuais, cuja estrutura ca c se indica na Figura 4.26, so denominados v e tomam a forma de pares a ordenados (s, d), onde s representa o nmero do segmento e d a posio u ca desejada, ou seja, o deslocamento (displacement ou oset) a partir da origem deste segmento. Notamos que a formao dos endereos na segmentao ca c ca e semelhante a existente na paginao. ca

Figura 4.26: Formato do endereo virtual para sistema de segmentao c ca

130

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

Um processo somente pode ser executado se ao menos um de seus segmentos contendo cdigo estiver presente na memria f o o sica. Para isto segmentos devem ser transferidos da memria secundria para a memria prio a o mria da mesma forma que as pginas no esquema de paginao, ou seja, a a ca cada segmento deve ser transferido inteiramente e posicionado numa regio a cont nua de memria. o Isto indica que os segment faults so operaes mais lentas, dado que a co os segmentos so usualmente maiores do que as pginas, e tambm mea a e nos freqentes, pois o nmero de segmentos de um processo tipicamente u u e menor que o nmero de pginas equivalente. Outro ponto que deve ser u a e determinada qual regio de memria permite a colocao do novo segmento, a o ca operao que pode ser realizada atravs de algoritmos que apliquem as esca e tratgias de posicionamento (placement strategies). O segmento que deve e ser substitu do, em caso de um segment fault, deve ser obtido atravs de ale goritmos que implementem as estratgias de substituio (replacement strae ca tegies). O mapeamento dos endereos virtuais em endereos reais pertencentes c c aos segmentos corretos se faz de maneira idntica ` paginao, ou seja, e a ca utiliza um esquema de mapeamento e tabelas de mapeamento de segmentos (segment map tables): 1. MMU recebe o endereo virtual contido nas instrues do programa. c co 2. O nmero de segmento virtual usado como u e ndice na tabela de segmentos. 3. Obtm-se o endereo f e c sico de in do segmento ou ocorre um segment cio fault. 4. MMU compe o endereo nal usando o endereo de in do segmento o c c cio e uma parte do endereo virtual (displacement). c O mecanismo de converso de endereos depende da organizao das a c ca tabelas de segmentos e da forma do mapeamento (mapeamento direto ou mapeamento associativo). Exemplos de sistemas computacionais que utilizaram a segmentao pura ca so: a Burroughs B6700, computador do in da dcada de 60, com arquicio e tetura tipo pilha [GUI86, p.157]. HP 3000, minicomputador tipo pilha cujo espao lgico consistia de c o at 255 segmentos de cdigo executvel de 16 KBytes cada e um unico e o a segmento de dados de 64 KBytes manipulado por hardware [GUI86, p.172].

4.7. MODELOS DE GERENCIAMENTO DE MEMORIA

131

Intel 8086/8088, microprocessador de 8 bits, oferecia um espao de c endereamento lgico de 1 MByte, podendo efetuar o endereamento c o c f sico de no mximo 64 KBytes, tamanho mximo dos segmentos que a a administrava [BOR92, p. 342]. IBM OS/2 1.x (Operating System/2), voltado para o microprocessador Intel 80286, utilizava segmentao pura, onde o tamanho mximo ca a dos segmentos era 64 Kbytes, espao de endereamento virtual de c c 512 MBytes por aplicao e memria f ca o sica mxima de 16 MBytes a [IBM92b, p. 11][LET89, p. 142]. Microsoft Windows 3.x, tambm dirigido para o microprocessador Ine tel 80286, usava segmentao pura, segmentos de no mximo 64 KByca a tes, 48MBytes de espao de endereamento virtual e memria f c c o sica mxima de 16 MBytes [IBM92b, p. 14]. a Apesar de ser um esquema de organizao de memria que oferece uma ca o srie de vantagens, a segmentao apresenta uma grande desvantagem: cone ca forme os segmentos se tornam grandes, as operaes de posicionamento e co substituio tendem a se tornar lentas conduzindo o sistema a uma situao ca ca de inecincia. Existe ainda o problema maior de um segmento individual e se tornar maior que a memria f o sica dispon no sistema. A soluo desta vel ca desvantagem se d na utilizao conjunta dos esquemas de segmentao e a ca ca paginao, como veremos mais a frente. ca

4.7.6

Paginao versus Segmentao ca ca

Como visto, os esquemas de organizao de memria atravs de paginao ca o e ca e segmentao possuem vantagens e desvantagens. Na Tabela 4.5 temos um ca quadro comparativo, tal como proposto por Deitel [DEI92, p. 131], onde se avaliam estas formas de organizao do armazenamento primrio. ca a Podemos notar que a paginao um esquema de organizao de meca e ca mria mais simples, principalmente para o programador, enquanto que a o segmentao, a custo de uma maior complexidade, oferece mecanismos mais ca sosticados para organizao e compartilhamento de dados ou procedimenca tos. A razo para isto se encontra no porque destes esquemas terem sido a inventados. Enquanto a paginao foi desenvolvida para ser um esquema de orgaca nizao invis ao programador, proporcionando um grande espao de enca vel c dereamento linear, maior que a memria f c o sica e de uso simples, o propsito o da segmentao foi permitir que programas e dados pudessem ser logicaca mente divididos em espaos de endereamento independentes facilitando o c c compartilhamento e proteo [STA96, p. 249]. ca Enquanto o grande inconveniente da paginao pura sua excessiva simca e plicidade como modelo de programao, a segmentao pura impe diculca ca o

132

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

Tabela 4.5: Quadro comparativo paginao versus ca Considerao ca Programador precisa saber que esta tcnica e utilizada? e Quantos espaos de endereamento linear existem? c c O espao de endereamento virtual pode exceder c c o tamanho da memria f o sica? Dados e procedimentos podem ser distinguidos? Tabelas cujo tamanho varivel podem ser e a acomodadas facilmente? O compartilhamento de procedimentos ou dados entre usurios facilitado? a e

segmentao ca Pag. Seg. No a Sim 1 Sim No a No a No a Muitos Sim Sim Sim Sim

dades no gerenciamento da memria virtual, pois a troca de segmentos entre o o armazenamento primrio e secundrio se torna lento para segmentos de a a grande tamanho, penalizando o desempenho do sistema.

4.7.7

Paginao e segmentao combinadas ca ca

De forma que possam ser obtidas as maiores vantagens dos esquemas de paginao e segmentao, desenvolveu-se o uso combinado destas duas tcnicas ca ca e em sistemas com esquemas h bridos de gerenciamento de memria, mais coo nhecidos como sistemas multiprogramados com paginao e segmentao ca ca combinadas. A paginao proporciona grande espao de endereamento linear e facica c c lidade para o desenvolvimento embora no oferea mecanismos mais sosa c ticados de organizao de cdigo e dados bem como de compartilhamento, ca o segurana e proteo. Por sua vez, a segmentao oferece tais mecanismos c ca ca de organizao, compartilhamento e proteo, mas deixa de ser convenica ca ente quando os segmentos tornam-se grandes alm de impor um modelo e de desenvolvimento de software um pouco mais complexo. Combinando-se paginao e segmentao de forma que os segmentos tornem-se paginados, ca ca associam-se as vantagens de cada um destes esquemas eliminando suas maiores decincias as custas de uma organizao um pouco mais complexa mas e ca transparente para o desenvolvedor. Num sistema com paginao/segmentao combinadas, os segmentos deca ca vem necessariamente ter tamanho mltiplo do tamanho das pginas, no u a a mais necessitando ser armazenado inteiramente na memria e to pouco de o a forma cont gua e ordenada. Todos os benef cios da segmentao so manca a tidos, ou seja, os programas podem ser divididos em mltiplos espaos de u c endereamento virtuais que, ao serem paginados, no necessitam de armac a zenamento cont nuo na memria real. Se desejado, todo programa e dados o podem ser concentrados num unico segmento, fazendo que o resultado sejam

4.7. MODELOS DE GERENCIAMENTO DE MEMORIA

133

semelhante a um sistema paginado puro. Desta forma, num sistema de paginao/segmentao combinadas, os ca ca endereos virtuais, como indicado na Figura 4.27, denominados v, tomam c a forma de triplas ordenadas (s, p, d), onde s representa o nmero do u segmento, p representa o nmero da pgina virtual e d a posio desejada, u a ca ou seja, o deslocamento (displacement ou oset) a partir da origem da pgina a indicada dentro deste segmento.

Figura 4.27: Formato do endereo virtual para sistema de paginao e segc ca mentao combinadas ca Notamos que o espao de endereamento virtual oferecido tridimenc c e sional, tornando-se necessrio a existncia de uma estrutura de controle a e mais sosticada nestes sistemas. Geralmente o sistema operacional mantm e uma tabela de mapa de segmentos por processo, cuja indicao gura no ca PCB (Process Control Block abordado na seo 2.4.1), e uma tabela de ca pginas para cada segmento individual. Para se resolver um endereo vira c tual determinando-se o endereo real torna-se necessria a utilizao de inc a ca formaes em trs tabelas diferentes. co e O funcionamento da MMU nestes sistemas, se encontra esquematizado na Figura 4.28 e pode ser descrito, resumidamente, como segue: 1. MMU recebe o endereo virtual contido nas instrues do programa. c co 2. A partir da tabela de controle dos processos (tabela de PCB), selee cionada a tabela de mapa de segmentos pertencente ao processo. 3. O nmero de segmento virtual usado como u e ndice na tabela de segmentos obtendo-se o nmero de pgina virtual. u a 4. E utilizada a tabela de pginas relativa ao segmento em uso. a 5. O nmero de pgina virtual usado como u a e ndice na tabela de pginas. a 6. Obtm-se o endereo f e c sico da moldura de pgina que contm o ena e dereo virtual solicitado ou ocorre um page fault. c 7. MMU compe o endereo nal usando o endereo da moldura de pgina o c c a e uma parte do endereo virtual (displacement). c

134

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

A manuteno desta estrutura complexa requer cuidadoso projeto para ca que no consuma recursos excessivos e processamento signicativo nos sisa temas que as utilizam. Exemplos de sistemas computacionais que utilizam a paginao e segca mentao combinadas so: ca a Honeywell 6000, computadores das dcadas de 1960 e 1970, operando e com sistema operacional MULTICS suportando processos com at 218 e (262.144) segmentos cada um com at 64 KBytes de tamanho [TAN92, e p. 132]. IBM System/360, computador do nal da dcada de 1960, com espao e c lgico de 16 MBytes divididos em 16 segmentos de 1 MByte [GUI86, o p.154]. IBM MVS (Multiple Virtual Storage System), operando na arquitetura ESA/370, prov cada processo com at 2 GBytes de, nos quais e e poderiam existir 2048 segmentos de 256 pginas de 4096 bytes [DEI92, a p. 677]. Fam Intel P6, suportando at 64 TBytes de endereamento virtual lia e c e um mximo de 4 GBytes de memria f a o sica, oferecendo at 8192 e segmentos de at 4 GBytes cada um, compostos de pginas de 4096 e a bytes [STA96, p. 252].

4.7.8

Tabelas de pginas a

Como visto, tanto a organizao de memria atravs de paginao como ca o e ca de segmentao e os sistemas h ca bridos que utilizam a paginao combinada ca com segmentao, so implementadas tabelas para realizar a converso de ca a a endereos virtuais em endereos f c c sicos. Estas tabelas, suportadas diretamente pelo hardware do sistema e mantidas pelo sistema operacional so, a juntamente com os mecanismos de converso de endereos, o ponto central a c destes esquemas de organizao de memria. ca o A idia bsica que o endereo virtual composto de duas partes, um e a e c e nmero da pgina virtual e um deslocamento dentro da pgina. O nmero u a a u da pgina virtual usado como a e ndice numa tabela de pginas, ou seja, a e somado ao endereo de base da tabela de pginas, mantido num registrador c a qualquer do processador, obtendo-se uma referncia para uma entrada da e tabela que contm o endereo real da moldura de pgina desejada. Somandoe c a se o deslocamento contido no endereo virtual ao endereo da moldura de c c pgina obtido da tabela de pginas obtm-se o endereo real completo. a a e c Na Figura 4.29 temos uma ilustrao que esquematiza as operaes reca co alizadas na converso de um endereo virtual para um outro real. Este a c esquema de converso de endereos denominado converso ou traduo a c e a ca

4.7. MODELOS DE GERENCIAMENTO DE MEMORIA

135

Figura 4.28: Estrutura de tabelas para sistemas com paginao e segca mentao combinadas ca

136

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

de endereos por mapeamento direto, ou ainda, paginao com um n de c ca vel tabelas.

Figura 4.29: Converso de endereos por mapeamento direto a c Embora de relativa simplicidade e ecincia, o mapeamento indireto e pode apresentar dois problemas importantes a medida que o espao de enc dereamento virtual se torna relativamente muito maior que a memria f c o sica dispon ou poss de ser implementada no sistema [TAN92, p. 93]. vel vel Os problemas identicados so: a 1. A tabela de pginas pode se tornar extremamente grande. a Grandes espaos virtuais de endereamento requerem tabelas com muic c tas entradas. Se as tabelas so grandes, uma poro preciosa da a ca memria pode ser consumida para este m, reduzindo a memria diso o pon para os processos que podem ser executados pelo sistema. vel 2. Tabelas de pginas em memria versus troca de tabela de pginas. a o a Como cada processo possui suas tabelas de pginas, ao esgotar-se o a seu quantum, a sua execuo interrompida sendo substitu por ca e da outro processo. Se for realizada a troca das tabelas durante o chaveamento de processos, economiza-se memria primria embora tornando o a a operao de troca de contexto lenta. Se forem mantidas todas as ca tabelas de pginas em memria primria, a troca de contexto torna-se a o a rpida, mas isto pode exaurir a memria primria do sistema. a o a 3. O mapeamento pode se tornar lento para tabelas grandes ou complexos. Como cada referncia a memria deve necessariamente ter e o

4.7. MODELOS DE GERENCIAMENTO DE MEMORIA

137

seu endereo convertido, quanto maiores ou mais complexas as tabec las, mais numerosas e complicadas sero as operaes de converso e, a co a assim, ser maior o overhead imposto pela converso dos endereos, faa a c zendo que o maepamento se torne inconvenientemente lento, afetando de forma signicativa a performance do sistema. Para ilustrar esta situao, analisemos a seguinte situao: na arquiteca ca tura DEC VAX, cada processo pode possuir at 2 GBytes (231 bytes) de e espao de endereamento. Como as pginas deste sistema possuem apenas c c a 512 bytes (29 bytes), ento necessrio uma tabela de pginas contendo 222 a e a a entradas para cada processo existente no sistema, ou seja, 4.194.304 entradas. Se uma tabela desta magnitude j indesejvel, que tal um sistema a e a Pentium, que no modo segmentado/paginado oferece 64 TBytes (246 bytes) de memria virtual? Com pginas de 4096 bytes (212 bytes) e sabendo o a que metade do endereamento virtual oferecido individualmente para cada c e 34 processo, uma tabela simples por processo deveria conter 22 entradas, ou seja, 8.589.934.592 de entradas! Uma primeira soluo seria submeter a tabela de pginas ` paginao, ca a a ca como qualquer outra rea de memria, armazenando-a na memria vira o o tual, fazendo que apenas uma parte dela esteja necessariamente presente na memria primria. o a Outra soluo para evitar a presena de enormes tabelas na memria, ca c o conforme indicado por Tanembaum [TAN92, p. 94], diviso destas numa e a estrutura de mltiplos n u veis, como indicado na Figura 68. Um espao virc tual de 32 bits poderia ter seu endereo divido em trs partes: (1) um nmero c e u de tabela de pginas T P1 de 10 bits, (2) um nmero de pgina virtual T P2 a u a de 10 bits e (3) um deslocamento (oset) de 12 bits. O valor T P1 atua como ndice para a tabela de pginas de primeiro a n vel, selecionando uma das tabelas do segundo n vel. Na tabela de segundo n vel selecionada, o valor T P2 atua como outro ndice, obtendo-se assim o endereo real da moldura de pgina (page frame). A MMU compe o c a o endereo real nal a partir do endereo da moldura de pgina ,obtido na c c a tabela de segundo n vel, e do deslocamento (oset), retirado do endereo c virtual. Com a diviso de uma unica tabela (de primeiro n a vel) em uma tabela de entrada (de primeiro n vel) e tabelas de pginas auxiliares (de segundo a n vel) passa a ser poss administrar-se a paginao das tabelas de pginas vel ca a de maneira mais ex vel. Como regra geral, cada tabela de pginas nunca a e maior que o tamanho de uma pgina [STA96, p. 248]. a De forma anloga, um sistema de tabela de pginas de dois n a a veis pode ser expandido para trs, quatro ou mais n e vel, embora a exibilidade adicionada torna-se menos valiosa do que a complexidade inerente ao maior nmero de n u veis. Cada hardware espec co possui uma estrutura de tabelas particular, que leva em conta as peculiaridades da implementao tais ca

138

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

Figura 4.30: Estrutura multin para tabelas de pginas vel a como o tamanho do espao de endereamento virtual, a mxima quantidade c c a f sica de memria enderevel e o tamanho da pgina. o ca a Independentemente do nmero de n u veis e do layout das tabelas, as entradas t picas das tabelas de pginas possuem vrios campos utilizados para a a o controle adequado da memria: o nmero da moldura de pgina (page o u a frame number ) que indica o endereo real da pgina, o bit presente/ausente c a (present/absent) que sinaliza se a pgina est ou no na memria primria, a a a o a os bits de proteo (protection) que especicam as operaes que podem ser ca co realizadas na pgina, um bit de habilitao do cache (caching disabled ) usado a ca para evitar que a pgina seja colocada no cache e os bits de referncia (refea e renced ) e modicao (modied ) utilizados para controlar o uso e alterao ca ca do contedo da pgina. u a

Figura 4.31: Entrada T pica de uma Tabela de Pginas a Exemplos de sistemas que se utilizam de diferentes formas para a implementao e administrao de suas tabelas de pginas so: ca ca a a

4.7. MODELOS DE GERENCIAMENTO DE MEMORIA Paginao em um n ca vel: DEC PDP-11. Paginao em dois n ca veis: DEC VAX. Paginao em trs n ca e veis: Sun Spark. Paginao em quatro n ca veis: Motorola 68030. Paginao via memria associativa (n zero): MIPS R2000. ca o vel

139

Paginao via tabelas invertidas: IBM RS6000 (sistemas RISC), IBM ca PowerPC, IBM AS/400.

4.7.9

Algoritmos de troca de pginas a

Os mecanismos de memria virtual se baseiam no fato de que pores dos o co processos so armazenadas em arquivos especiais denominados arquivos de a troca. Quando um processo necessita acessar uma poro de seu cdigo ca o contida fora do espao de endereamento real, ocorre um page fault, ou seja, c c detectada a falta de uma pgina que dever ser trazida novamente para a e a a memria principal. o As operaes de substituio de pginas so lentas pois envolvem o acesso co ca a a a ` memria secundrio, ou seja, necessitam acessar dispositivos de entrada e o a o sa muito mais lentos do que a memria primria. E bvio que se a pgina da, o a a substitu for necessria em breve ou for preciso um nmero muito grande da a u de substituies para execuo dos programas ativos, ocorrer a hiperpaco ca a ginao (hiperpaging ou thrashing) ou seja, uma degradao signicativa da ca ca performance do sistema devido ao excesso de operaes de troca de pginas. co a Sendo assim estes algoritmos devem procurar substituir pginas pouco utilia zadas ou no utilizadas por aquelas que so freqentemente utilizadas pelos a a u processos ativos, minimizando as operaes de substituio de pginas. co ca a O grande problema consiste ento em determinar qual pgina ser subsa a a titu ou copiada para os arquivos de troca como forma de liberar espao da c para aquele pgina que se tornou necessria. Um algoritmo timo de troca a a o de pginas deveria ser capaz de identicar qual pgina no mais ser utia a a a lizada ou estabelecer aquela que demorar mais a ser novamente utilizada, a minimizando a ocorrncia de page faults e com isto as operaes de troca e co de pginas. Como no poss realizar tal previso, outras formas de se a a e vel a denir qual pgina ser substitu so empregadas [DEI92, p. 254]. a a da a Note que se uma pgina no tiver sido modicada ento no necessita a a a a ser copiada para a memria virtual (armazenamento secundrio), podendo o a ser simplesmente sobrescrita pela pgina que tomar seu lugar na memria a a o primria, ou seja, uma operao de substituio simples. Se a pgina foi a ca ca a modicada ento dever ser copiada para o armazenamento secundrio antes a a a da substituio pela nova pgina, numa operao mais lenta do que uma ca a ca substituio simples. ca

140

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

Os algoritmos que tratam deste problema so aqueles que implementam a as estratgias de substituio (replacement strategies) e so denominados e ca a algoritmos de troca ou algoritmos de substituio de pginas. Os algoritmos ca a de substituio de pginas mais comuns so: ca a a Random First In First Out (FIFO) Second Chance Clock Last Recently Used (LRU) Last Frequently Used (LFU) Not Recently Used (NRU) Troca de pginas aleatria a o Algoritmo de baixa sobrecarga que seleciona aleatoriamente qual pgina a dever ser substitu a da. Quanto maior o nmero de pginas existentes, maior u a so as chances de sucesso imediato deste algoritmo. Embora seja rpido e de a a implementao simples, raramente utilizado dado que a pgina substitu ca e a da pode ser a prxima a ser necessria. Tambm chamado de random page o a e e replacement. Troca de pginas FIFO a A idia central deste algoritmo que as pginas que esto a mais tempo e e a a na memria podem ser substitu o das, ou seja, as primeiras que entram so a as primeiras que saem (FIFO ou First In First Out). Para isto associa-se um marca de tempo (timestamp) para cada pgina, criando-se uma lista de a pginas por idade, permitindo a identicao das mais antigas. a ca Este mecanismo de substituio, embora provvel e lgico, no necessaca a o a riamente se traduz em verdade, pois processos de longa durao pode contica nuar necessitando de suas pginas mais do que processos de curta durao a ca que entram e saem rapidamente enquanto os outro permanecem. Dada esta razo no utilizado na forma pura, mas sim variaes deste algoritmo. a a e co Troca de pginas segunda chance a O algoritmo de troca de pginas segunda chance (second chance) uma a e variao da estratgia FIFO. Como visto, a decincia do algoritmo de troca ca e e de pginas FIFO que uma pgina de uso intenso, presente a muito tempo a e a na memria, pode ser indevidamente substitu o da.

4.7. MODELOS DE GERENCIAMENTO DE MEMORIA

141

No algoritmo de troca de pginas Segunda Chance a seleo primria da a ca a pgina a ser substitu e semelhante ao FIFO, ou seja, escolhe-se a pgina a da a mais antiga. Antes de proceder-se a substituio propriamente dita, vericaca se o bit de referncia da pgina. Se o bit estiver em 1, signica que a pgina e a a foi usada, da o algoritmo troca sua marca de tempo por uma nova e ajusta o bit de referncia para zero, simulando uma nova pgina na memria, ou seja, e a o uma segunda chance de permanncia na memria primria. Nesta situao e o a ca outra pgina deve ser escolhida para substituio. Se o bit de referncia a ca e estivesse em 0 a pgina seria substitu a da. Com este comportamento, se uma pgina antiga utilizada, seu bit de referncia sempre ser 1, fazendo com a e e a que permanea na memria primria a despeito de sua idade real. c o a Troca de pginas relgio a o O algoritmo de troca de pginas relgio (clock ) uma outra variao da a o e ca estratgia FIFO. Para superar a decincia do algoritmo de troca de pginas e e a FIFO, que a substituio de uma pgina de uso intenso em funo de sua e ca a ca idade na memria, o algoritmo segunda chance verica o bit de referncia o e mantendo na memria pginas em uso atravs da renovao de sua marca o a e ca de tempo. Tal comportamento eqivale a dizer que as pginas no in da u a cio lista (mais velhas) so reposicionadas no m da lista (mais novas). a A estratgia do relgio manter uma lista circular, onde se o bit de e o e referncia 1, seu valor trocado por 0 e a referncia da lista movida e e e e conforme os ponteiros de um relgio. Caso contrrio a pgina substitu o a a e da. Troca de pginas LRU a A atuao do algoritmo de troca de pginas LRU (least recently used ou ca a menos usada recentemente) se baseia em identicar a pgina que no foi a a utilizada pelo maior per odo de tempo, assumindo que o passado um bom e indicativo do futuro. Para isto necessrio que cada pgina possua uma marca de tempo e a a (timestamp) atualizada a cada referncia feita ` pgina, o que signica uma e a a sobrecarga substancial. A implementao pode ser feita atravs de listas ca e contendo uma entrada para cada page frame, sendo o elemento da lista correspondente a uma pgina utilizada sendo posicionado no nal da lista. a Este algoritmo no costuma ser usado sem otimizaes devido ` sobrea co a carga que impe. Alm disso, em laos longos ou chamadas com muitos o e c n veis de profundidade, a prxima pgina a ser usada pode ser exatamente o a uma das menos usadas recentemente, colocando o sistema numa situao de ca operaes desnecessrias devido a page faults. co a O sistema operacional MS Windows 95 utiliza esta estratgia de substie tuio de pginas [PET96, p. 725]. ca a

142

CAP ITULO 4. GERENCIAMENTO DE MEMORIA

Troca de pginas LFU a Uma variante do algoritmo LRU a estratgia conhecida como LFU (least e e frequently used ou menos freqentemente usada) ou ainda NFU (not frequenu tly used ou no usada freqentemente). Neste algoritmo pretende-se calcular a u a freqncia de uso das pginas, de forma a se identicar qual pgina foi ue a a menos intensivamente utilizada. Apesar de melhorar o desempenho do algoritmo LRU, ainda poss e vel que pginas pesadamente utilizadas durante uma certa etapa do processaa mento permaneam desnecessariamente na memria primria em relao a c o a ca outras etapas mais curtas cujas pginas no tero uso to intenso, levando a a a a a substituies inteis. co u Troca de pginas NRU a As entradas de cada pgina na tabela de pginas possuem geralmente bits a a de referncia e modicao (bits referenced e modied, conforme Figura 69) e ca cujos valores combinados denem quatro situaes ou grupos de pginas, co a como relacionado na Tabela 4.6. Tabela 4.6: Grupos de pginas a Bit Situao ca Modied 0 No referenciado e no modicado a a 1 No referenciado e modicado a 0 Referenciado e no modicado a 1 Referenciado e modicado

Bit Referenced 0 0 1 1

A atuao do algoritmo de troca de pginas NRU (not recently used ou ca a no recentemente usada) ou NUR (not used recently ou no usada recena a temente) se baseia em remover uma pgina, aleatoriamente escolhida, do a grupo de menor utilizao que contiver pginas nesta situao. Neste algoca a ca ritmo se d preferncia a remoo de uma pgina modicada sem uso no a e ca a ultimo ciclo do que uma sem modicao que tenha sido utilizada. ca Este algoritmo utilizado em vrios sistemas devido aos seus pontos e a fortes: simplicidade, fcil implementao e performance adequada. a ca

Cap tulo 5

Gerenciamento de I/O
O acrnimo I/O (Input/Output) ou E/S (Entrada/Sa o da) representa toda a sorte de dispositivos eletrnicos, eletromecnicos e pticos que so integrao a o a dos a um sistema computacional com o propsito de realizar a comunicao o ca do processador e memria com o meio externo. De certa forma, o compuo tador seria uma mquina intil caso no existissem meios de realizar-se as a u a operaes de entrada e sa co da. Os dispositivos de I/O, dispositivos perifricos ou apenas perifricos poe e dem ser classicados de forma ampla em trs categorias [STA96, p. 179]: e Human-Readable Dispositivos apropriados para serem utilizados por usua rios do computador tais como o teclado, o mouse ou o monitor de v deo. Machine-Readable So aqueles projetados para interligao do computaa ca dor com outros equipamentos, tais como unidades de disco, CD-ROM ou ta magntica. e Communication Destinados a realizar a comunicao do computador com ca outros dispositivos remotos, tais como placas de rede ou modems.

5.1

Mdulos de I/O o

A arquitetura de Von Neumann (Figura 1.2) dene o computador como o conjunto de processador, memria e dispositivos de entrada e sa intercoo da nectados atravs vrios barramentos (buses) especializados: o barramento e a de dados (data bus), o barramento de endereos (address bus) e o barrac mento de controle (control bus). Mas diferentemente do que poder amos pensar, os dispositivos perifricos e em si no so conectados diretamente ` tais barramentos, mas, ao invs a a a e disso, os perifricos so conectados a mdulos de I/O que por sua vez so e a o a ligados aos barramentos do sistema. As razes para isto so vrias: o a a 143

144

CAP ITULO 5. GERENCIAMENTO DE I/O Existem inmeros tipos de perifricos, com diferentes formas de opeu e rao, sendo impraticvel implantar no computador uma lgica que ca a o permitisse a operao com todos ou mesmo uma grande parte destes ca dispositivos. Como visto, a velocidade de operao dos dispositivos perifricos ca e e muito menor que a da memria ou do processador. o

Desta forma muito mais conveniente implementar-se mdulos de I/O e o que atuem como conexes mais genricas para os diferentes perifricos, poso e e sibilitando o uso de estruturas padronizadas para ligao com a memria e ca o processador. Por essa razo, os mdulos de IO so freqentemente chamados a o a u de interfaces. Um mdulo de I/O geralmente possui algumas linhas de controle ino ternas que servem para determinar as aes que devem ser executadas pelo co mdulo, linhas de status que servem para indicar o estado de funcionamento o do mdulo ou resultado de alguma operao, linhas de dados para conexo o ca a do mdulo de I/O com o barramento de dados do sistema e um conjunto o particular de linhas para conexo com o perifrico que efetivamente ser cona e a trolado pelo mdulo de I/O. Na Figura 5.1 temos um representao genrica o ca e do que pode ser um mdulo de I/O. o

Figura 5.1: Estrutura genrica de mdulo de I/O e o A conexo com o barramento do processador geralmente tende a ser a uma interface de alto n vel, isto , uma conexo orientada ` comandos, mais e a a adaptada ` operao com um processador e, portanto, dirigida ao trabalho a ca de programao de alto n ca vel. J a conexo com o perifrico propriamente a a e dito usualmente uma interface de baixo n e vel, contendo inmeros sinais u eltricos e um protocolo dedicado prprio, que exige tratamento mais espee o cializado. Desta forma, as particularidades de cada tipo de perifrico cam e isoladas do sistema principal, facilitando o desenvolvimento dos programas que utilizaro estes dispositivos. a

5.2. OPERACAO DE MODULOS DE I/O

145

Esta estrutura permite que um unico mdulo de I/O controle mais de o um perifrico, geralmente do mesmo tipo, tal como nos controladores de e unidades de disco IDE 1 que podem administrar de uma at quatro unidades e de disco deste padro. a Os mdulos de I/O geralmente executam algumas das seguintes funes: o co controle e temporizao, comunicao com o processador, comunicao com ca ca ca perifrico, armazenamento temporrio de dados e deteco de erros. e a ca Uma outra estrutura poss vel para os mdulos de I/O so os canais o a de I/O (I/O channels). Os canais de I/O so sistemas computacionais de a propsito especial destinados ao tratamento de entrada e sa de forma o da independente do processador do sistema computacional [DEI92, p. 27]. Esta alternativa estrutural, usada tipicamente em computadores de grande porte (mainframes), opera com mltiplos barramentos de alta velocidade, u podendo acessar o armazenamento primrio de forma independente, proa porcionando grande desempenho, pois as operaes de I/O so realizadas co a paralelamente ao processamento. Micro e minicomputadores utilizam geralmente um modelo de barramento interno simples para comunicao entre processador, memria e os deca o mais dispositivos do sistema. Compartilhando este barramento encontramse dispositivos especializados nas em funes mais importantes (unidades co de disco e monitor de v deo) chamados controladores, proporcionando considervel ganho de performance e ainda assim utilizando uma arquitetura a mais simples que os canais de I/O [TAN92, p. 207].

5.2

Operao de Mdulos de I/O ca o

Os mdulos de I/O podem ser operados de trs maneiras bsicas: o e a I/O Programado, I/O com Interrupes e co I/O com Acesso Direto ` Memria (DMA) a o De forma geral, o que distingue estas trs formas de operao a pare ca e ticipao do processador e a utilizao do mecanismo de interrupes, conca ca co duzindo a resultados bastante distintos.

5.2.1

I/O Programado

Com o I/O programado (programmed I/O) os dados so trocados diretaa mente entre o processador e o mdulo de I/O, ou seja, o processador deve o
1 O acrnimo IDE signica integrated device eletronics ou dispositivo eletrnico inteo o grado.

146

CAP ITULO 5. GERENCIAMENTO DE I/O

executar um programa que verique o estado do mdulo de I/O, preparandoo o para a operao se necessrio, enviando o comando que deve ser executado ca a e aguardando o resultado do comando para ento efetuar a transferncia ena e tre o mdulo de I/O e algum registrador do processador. o Portanto responsabilidade do processador vericar o estado do mdulo e o de I/O em todas as situaes, inclusive quando aguarda dados. Isto signica co que o processador no pode executar outras tarefas enquanto aguarda a a operao do mdulo de I/O. Veja na Figura 5.2 um esquema indicando o ca o funcionamento das operaes de I/O programadas. co

Figura 5.2: Funcionamento do I/O programado Como os comandos enviados ao mdulo de I/O podem signicar uma o operao com um dispositivo perifrico lento, digamos uma unidade de disco, ca e ento o processador dever permanecer em espera durante toda a operao a a ca executada no perifrico, por mais lento que possa ser, signicando um srio e e comprometimento da performance geral do sistema, dado que o processador ca ocupado com a monitorao da operao em andamento (veja Fica ca gura 5.3). O mdulo de I/O se relaciona com o processador atravs de comandos, o e ou seja, cdigos de controle transformados em sinais enviados ao mdulo o o que indica qual operao dever ser realizada, tais como controle (control ), ca a teste (test), escrita (write) ou leitura (read ). Geralmente os comandos do mdulo de I/O tem equivalncia direta com as instrues do processador, o e co facilitando sua operao integrada. ca Dado que poss para um mdulo de I/O controlar mais de um dise vel o positivo perifrico, ento necessrio que sejam associados endereos a cada e a e a c um destes perifricos, de forma a permitir sua operao individualizada. e ca Existem duas formas para a interpretao destes endereos por parte dos ca c mdulos de I/O quando existe o compartilhamento de barramentos do siso tema:

5.2. OPERACAO DE MODULOS DE I/O

147

Figura 5.3: Temporizao do I/O programado ca Mapeada em Memria (memory-mapped ) o Onde o mdulo de I/O opera dentro do espao de endereamento da o c c memria, usando um conjunto de endereos reservados. Desta forma o o c processador trata os registradores de status e dados do mdulo de I/O o como posies ordinrias de memria utilizando operaes comuns de co a o co leitura e escrita. Para o funcionamento neste modo o processador deve dispor de uma linha individual de leitura e outra para escrita. Mapeada em I/O (I/O mapped ) Tambm chamada de I/O isolado (isolated I/O), onde existe um espao e c de endereamento independente para os dispositivos de I/O. Para c tanto o processador deve dispor de uma linha de leitura/escrita e outra de entrada/sa da. As portas de I/O passam a ser acess veis apenas por operaes especiais de I/O. co Utilizando a forma de I/O mapeado em memria temos uma maior simo plicidade e a disponibilidade de um maior conjunto de instrues embora co reduzido espao em memria devido a reserva de endereos para portas de c o c I/O. Os computadores baseados nos processadores Motorola 680x0 utilizam este mtodo. e Com o I/O isolado temos maior segurana nas operaes envolvendo c co memria ou I/O e um maior espao de endereamento as custas de uma o c c organizao ligeiramente mais complexa e um reduzido nmero de instrues ca u co dedicadas. Os microcomputadores IBM PC compat veis so um exemplo a desta utilizao. No caso, para enviar-se dados ao monitor de v ca deo padro a do sistema devem ser utilizados os endereos de I/O na faixa de 03D0h a c 03DFh, enquanto que o acesso `s placas de som tipo SoundBlaster devem a

148 usar o endereo 0220h. c

CAP ITULO 5. GERENCIAMENTO DE I/O

5.2.2

I/O com interrupes co

Para superar o problema da espera do processador por operaes nos disco positivos perifricos, pode ser utilizado o mecanismo das interrupes, ou e co seja o I/O atravs de interrupes (interrupt driven I/O). Tecnicamente fae co lando, uma interrupo permite que uma unidade ganhe a ateno imediata ca ca de outra, de forma que a primeira unidade possa nalizar sua tarefa [DEI92, p. 25]. Assim sendo, quando o processador envia um comando para o mdulo o de I/O, o mesmo pode passar executar uma outra tarefa, sem a necessidade de monitorar o mdulo acionado. Quando a operao for conclu o ca da, o mdulo de I/O interrompe o processador, isto , aciona uma interrupo o e ca para requisitar o processamento dos dados (a troca de dados com o processador). O processador executa a troca de dados, liberando o mdulo de I/O o e retomando o processamento anterior. Conforme podemos observar na Figura 5.4, a operao de I/O com inca terrupes a seguinte: co e 1. O processador envia um comando ao mdulo de I/O (por exemplo, o uma operao read ), que a realiza de modo independente (i.e., em ca paralelo a atividade do processador). 2. O processador passa a executar outra tarefa, ou seja, um outro processo. 3. Ao nalizar a operao requisitada, o mdulo de I/O sinaliza uma ca o interrupo para o processador. ca 4. Ao trmino da instruo corrente, o processador verica a ocorrncia e ca e de uma interrupo, determinando qual dispositivo a originou e ento ca a sinalizando conhecimento (acknowledgment signal ). 5. O processador salva o contexto da tarefa atual na pilha (stack ), preservando assim o contedo do contador de programa e demais regisu tradores. 6. O processador carrega o endereo da rotina de servio no contador de c c programa para poder iniciar a execuo da rotina de tratamento da ca interrupo detectada. Tais endereos so armazenados numa regio ca c a a pr-determinada da memria, denominada vetor de interrupes. e o co 7. A rotina de tratamento da interrupo executada, ou seja, os dados ca e solicitados so lidos do mdulo de I/O para um registrador do procesa o sador e depois transferidos para uma rea de memria apropriada. a o

5.2. OPERACAO DE MODULOS DE I/O

149

8. Finalizada a rotina de tratamento da interrupo, o processador resca taura o contexto da tarefa interrompida, lendo o contedo do contador u de programa e demais registradores da pilha. 9. O processador retorna ao processamento da tarefa no ponto em que foi interrompida. 10. Mais um momento mais a frente, em seu quantum, o processo que solicitou a operao de I/O ser executado com os dados obtidos a sua ca a disposio. ca

Figura 5.4: Funcionamento do I/O com interrupes co A operao de dispositivos de I/O utilizando interrupes permite que ca co o processador permanea trabalhando enquanto o mdulo de I/O realiza c o a operao solicitada, melhorando o desempenho do sistema pois duas atica vidades so paralelizadas, embora os dados da operao continuem a ser a ca manipulados pelo processador, como mostra tambm a Figura 5.5. e O maior problema relacionado com o uso das interrupes que, usualco e mente, o processador dispe de poucas linhas de interrupo. Desta forma o ca surgem as seguintes questes: como o processador identicar o mdulo o a o que sinalizou uma interrupo e como sero tratadas mltiplas interrupes ca a u co simultneas? a Para resolver-se esta questes, podem ser empregadas vrias diferentes o a tcnicas [STA96, p. 194]: mltiplas linhas de interrupo, software poll, e u ca hardware poll vetorizado e bus arbitration vetorizada. Usualmente so assia nalados nmeros para as interrupes, onde as de menor nmero tem prioriu co u dade sobre as nmero maior. Isto signica que uma interrupo de nmero 4 u ca u ser processada primeiro do que uma interrupo de nmero maior (>= 5), a ca u sem ser interrompida por estas, mas podendo ser interrompida por uma interrupo de nmero menor (< 4). ca u

150

CAP ITULO 5. GERENCIAMENTO DE I/O

Figura 5.5: Temporizao do I/O com interrupes ca co Como exemplo, apresentamos a Tabela 5.1 que contm o mapeamento e das interrupes num sistema IBM-PC compat co vel. Alguns dos valores so a padronizados enquanto outros so particulares do sistema utilizado como a exemplo. Tabela 5.1: Mapa de interrupes de um IBM-PC compat co vel
Int 0 1 2 3 4 5 6 7 Dispositivo Cronmetro do sistema o Teclado Controlador de interrupo ca Placa de rede (*) Porta de comunicao COM1 ca Placa de som (*) Controlador de disco ex vel Porta de Impressora LPT1 Int 8 9 10 11 12 13 14 15 Dispositivo CMOS/Relgio do sistema o Porta de comunicao COM3 ca Porta de comunicao COM2 ca Ponte PCI (*) Mouse porta PS/2 (*) Coprocessador numrico e Controlador IDE/ESDI Controlador IDE/ESDI

(*) Opes no padronizadas co a

5.2.3

I/O com Acesso Direto ` Memria (DMA) a o

As tcnicas de I/O programado e I/O com interrupes possuem um grande e co inconveniente que a limitao da velocidade de transferncia de dados a e ca e capacidade do processador em movimentar tais dados a partir do mdulo o de I/O para o armazenamento primrio, pois isso envolve a execuo repea ca tida de vrias instrues. Alm disso o processador ca comprometido no a co e a

5.2. OPERACAO DE MODULOS DE I/O

151

apenas com a transferncia dos dados, mas com a monitorao do mdulo e ca o de I/O, no caso de I/O programado, ou com a sobrecarga imposta pelas operaes de interrupo, no caso de I/O via interrupo. Se um mdulo de co ca ca o I/O for utilizado para a movimentao de uma grande quantidade de dados, ca ambas as formas comprometero a performance do sistema. a Para solucionar-se este problema pode ser utilizada uma outra tcnica e denominada I/O atravs de acesso direto ` memria ou DMA (direct memory e a o access). A tcnica de DMA prope utilizar uma unica interrupo para efetuar e o ca a transferncia de um bloco de dados diretamente entre o perifrico e a e e memria primria, sem o envolvimento do processador e com isso reduzindo o a o nmero de operaes necessrias e assim acelerando o processo. u co a Para tanto, torna-se necessria a existncia de um mdulo adicional, a e o chamado de controlador de DMA, cuja operao, ilustrada na Figura 5.6, ca e descrita a seguir [STA96, p. 199]: 1. O processador envia comando (leitura ou escrita) para controlador de DMA. 2. O processador continua seu trabalho enquanto DMA efetua a transferncia com o dispositivo de I/O. e 3. Para acessar a memria o controlador de DMA rouba ciclos do proceso sador para acessar a memria principal, atrasando-o ligeiramente. o 4. Ao nal da operao o controlador de DMA aciona uma interrupo ca ca para sinalizar o trmino da operao. e ca 5. O processador pode executar a rotina de tratamento da interrupo ca processando os dados lidos ou produzindo novos dados para serem escritos. Este mtodo signicativamente mais rpido do que o I/O programado e e a ou I/O via interrupes pois utiliza apenas uma unica interrupo, o proco ca cessador ca liberada para executar outras tarefas e a transferncia dos e dados ocorre em bloco (e no byte a byte) diretamente entre o perifrico e a a e memria. o O controlador de DMA um dispositivo especializado nesta operao, e ca suportando tipicamente o trabalho com vrios perifricos diferentes, cada a e um utilizando um canal de DMA (DMA channel ). Outra grande vantagem da tcnica de DMA que ela pode ser implemene e tada no hardware de diversas formas diferentes, conforme a quantidade de dispositivos de I/O e performance pretendida, como ilustrado na Figura 5.7.

152

CAP ITULO 5. GERENCIAMENTO DE I/O

Figura 5.6: Funcionamento do I/O com DMA

5.3

Tipos de dispositivos de E/S

Os dispositivos de I/O e suas interfaces podem ser classicados de forma ampla quanto ao tipo de conexo e tipo de transferncia de dados. a e

5.3.1

Conexo de Dados dos I/O a

Conforme natureza do perifrico que ser conectado ao sistema e tambm e a e as condies desta ligao, as conexes dos dispositivos de I/O, do ponto de co ca o vista dos dados, so projetadas para operao serial ou paralela. a ca Numa conexo serial, uma unica linha de sinal utilizada para o esa e tabelecimento de toda a conexo, protocolo e transferncia de dados entre a e o mdulo de I/O e o perifrico, ou seja, todos os bits, sejam de dados ou o e controle, so transferidos um a um entre mdulo de I/O e perifrico. a o e Numa conexo paralela, vrias linhas de sinal so utilizadas de modo a a a que vrios bits de dados (bytes ou words tipicamente) sejam transferidos a em paralelo, ou seja, ao mesmo tempo, acelerando as transferncias, pois se e comportam como vrias linhas seriais atuando ao mesmo tempo. Tambm a e e comum que existam linhas independentes para o trfego de sinais de controle. a As conexes seriais so baratas, relativamente conveis, embora nomio a a nalmente mais lentas que as conexes paralelas, sendo usualmente utilizadas o para dispositivos baratos e lentos tais como impressoras e terminais. As conexes paralelas, devido a interface mais complexa, so mais caras, bastante o a conveis e de melhor desempenho, sendo utilizadas para conexo com disa a positivos mais velozes, tais como unidades de disco, unidades de ta ou mesmo impressoras rpidas. a Em ambas os tipos de conexo, o mdulo de I/O e o perifrico trocam a o e sinais de controle garantindo a permisso para o envio ou recebimento de a dados (protocolo de conexo ou handshaking). A transferncia dos dados a e

5.3. TIPOS DE DISPOSITIVOS DE E/S

153

Figura 5.7: Conguraes de DMA co feita, exigindo o envio de sinais de conrmao a cada byte ou bloco e ca dependendo do dispositivo, tipo de conexo e do protocolo de transferncia a e adotado.

5.3.2

Tipos de Transferncia de I/O e

Os dispositivos de I/O atuam usualmente como dispositivos orientados ` a caractere (character devices) e dispositivos orientados ` blocos (block a devices). Nos primeiros, orientados ` caractere, a transferncia de dados feita a e e byte a byte, sem a necessidade de alguma forma de estruturao dos dados ca por parte do mdulo de I/O e do perifrico, ou seja, o formato dos dao e dos recebidos e transmitidos responsabilidade da aplicao que utiliza o e ca dispositivo. Nos dispositivos de transferncia orientados ` blocos, a troca de dados e a e realizada em blocos de tamanho xo, cujo tamanho depende do dispositivo, usualmente entre 128 e 1024 bytes. Os blocos tambm possuem um fore mato particular, exigindo que a aplicao conhea tal formato tanto para a ca c construo de tais blocos destinados ` transmisso como para sua adequada ca a a recepo. ca

154

CAP ITULO 5. GERENCIAMENTO DE I/O

Temos portanto que a operao de dispositivos orientados ` caractere ca a e ` blocos bastante diferente. Unidades de disco e ta so dispositivos a e a orientados ` blocos enquanto que impressoras, terminais, teclados e portas a seriais so orientados ` caractere [PIT98, p. 68]. a a Nem todos os dispositivos se ajustam a esta classicao, tais como ca os temporizadores (timers) do sistema ou monitores de v deo de memria o [TAN92, p. 206]. Nos sistemas Unix esta distino bastante aparente, principalmente ca e durante os procedimento de instalao e congurao do sistema operacioca ca nal.

5.3.3

Conexes ponto a ponto e multiponto com I/Os o

A conexo mais simples entre um dispositivo perifrico e seu mdulo de I/O a e o do tipo , ou seja, as linhas de sinais existentes para a comunicao entre e ca estas unidades so dedicadas a este m. Desta forma, um mdulo de I/O a o deveria dispor de um conjunto de linhas para dispositivo de I/O com o qual pretende se comunicar. Por outro lado, poss que um mdulo de I/O compartilhe um cone vel o junto de linhas de sinais entre diversos dispositivos perifricos, desde que e dentre estas linhas existam algumas para realizar o endereamento ou seleo c ca do dispositivo com o qual deseja-se realizar a operao. A conexo multica a ponto como um conjunto de barramentos dedicado a comunicao entre e ca um mdulo de I/O e vrios dispositivos semelhantes. Uma representao o a ca das conexes ponto a ponto e multiponto se encontra na Figura 5.8. o

Figura 5.8: Conexes ponto-a-ponto e multiponto o A conexo ponto-a-ponto oferece melhor conabilidade, permite a operaa ca o simultnea de diversos perifricos simultaneamente (dependendo apenas a e das capacidades do mdulo de I/O) embora exigindo um maior nmero de o u conexes e, portanto linhas de sinal. E geralmente utilizada para a conexo o a de dispositivos mais simples, tais como modems, teclado e impressoras. Exemplos de conexes ponto-a-ponto padronizadas so os protocolos o a RTS/CTS (Request to Send e Clear to Send ) e Xon/Xo (Transmission

5.4. DISPOSITIVOS PERIFERICOS T IPICOS

155

On e Transmisson O ). O RTS/CTS e Xon/XO so considerados protoa colos de baixo n vel simples, bastante utilizados em comunicao de curta ca distncia entre computadores e perifricos de baixa velocidade, usualmente a e utilizando a interface padro RS-232C (equivalente ` standard CCITT V.24) a a [BLA87, p. 53]. Veja uma representao do funcionamento destes protocolos entre dois ca equipamentos DTE (data terminal equipment) na Figura 5.9.

Figura 5.9: Protocolos RTS/CTS e Xon/Xo Dado que so protocolos simples, sua implementao fcil, constituindo a ca e a uma alternativa ex e de baixo custo para interligao de equipamentos vel ca tais como multiplexadores, demultiplexadores, modems, impressoras, terminais de v deo, plotters, mesas digitalizadoras etc. A conexo multiponto bastante mais ex do que a conexo pontoa e vel a a-ponto pois permite maior escalabilidade, utilizando reduzido nmero total u de linhas, mas por outro lado no permite a operao simultnea dos pea ca a rifricos conectados. Tal conexo tipicamente utilizada para dispositivos e a e de armazenamento, tais como unidades de disco, ta, cartucho, CD-ROM, etc. Existem vrios padres para estas conexes, onde so exemplos: a o o a IDE (integrated device eletronics), EIDE (extended IDE ), SCSI (small computer system interface), USB (universal serial bus)

5.4

Dispositivos perifricos t e picos

Os dispositivos perifricos tem papel fundamental dentro de um sistema e computacional, pois como colocado anteriormente, o computador seria intil u

156

CAP ITULO 5. GERENCIAMENTO DE I/O

se fosse apenas composto de processador e memria. Existem muitos tipos o de dispositivos perifricos, dentre os mais comuns podemos citar: e Unidades de Disco R gido Unidades de Disco Flex vel Unidades de Fitas Magntica e Unidades de CD-R/RW Unidades de DVD-R/RW Mouse Trackball Mousepad Teclados Scanners Mesas digitalizadoras Impressoras Modems Portas de comunicao serial ca Portas de comunicao paralela Portas de comunicao USB ca ca Placas de Rede Monitores de v deo Portas de jogos Placas de som Placas de captura de v deo etc. Alm destes, a maioria voltados para uso em microcomputadores, exise tem dispositivos apropriados para sistemas computacionais de grande porte, tais como controladoras de terminais, terminais de v deo, subsistemas de armazenamento secundrio, subsistemas de comunicao etc. a ca Dentre todos estes dispositivos daremos destaque as unidades de disco e ta por representarem os perifricos mais importantes do ponto de vista de e armazenamento secundrio. Alm destes, faremos alguns comentrios sobre a e a os terminais de v deo, essenciais em sistemas multiusurio. a

5.4.1

Unidades de disco

Atualmente, praticamente todos os tipos de computadores dispe de unidao des de disco magntico. Estas unidades so compostas de um ou mais discos e a metlicos de ao ou alum a c nio recobertos de uma na pel cula magnetizvel. a Estes disco, montados verticalmente num mesmo eixo, giram em velocidade constante (2400 ou 3600 rpm, por exemplo). As unidades podem possuir cabeas de leitura e gravao xas (uma para cada trilha de cada disco) ou c ca cabeas mveis (uma para cada disco). Neste caso braos mecnicos, doc o c a tados de dispositivos de acionamento, so responsveis pela movimentao a a ca rpida e precisa de cabeas por praticamente toda a superf a c cies dos discos. Estas cabeas so capazes de gravar ou ler dados magneticamente armazenac a dos na pel cula que recobre os discos, dados estes que permanecem gravados mesmo que as unidades de disco permaneam desligadas por um razovel c a per odo de tempo. As tecnologias envolvidas no desenvolvimento e fabricao das unidades ca de disco vem sido aperfeioadas desde as primeiras geraes de computadoc co res e com isto, as unidades de disco magntico comuns, isto , instaladas em e e computadores destinados ao segmento SOHO2 , exibem as seguintes caracter sticas:
2 SOHO signica small oce or home oce, ou seja, micro e pequenas empresas alm e de escritrios domsticos caracterizando um grande segmento de mercado que utiliza mio e

5.4. DISPOSITIVOS PERIFERICOS T IPICOS

157

Grandes capacidades de armazenamento, tipicamente maiores que 1 GBytes (230 ), Dimenses reduzidas (discos de 3.5 ou menores), o Baixo consumo (apropriados para equipamentos portteis), a Tempos de acesso inferiores a 15 ms e Baixo custo por MByte. As unidades de disco so constru a das de forma modular por questes o de economia e modularidade, permitindo que vrias unidades possam ser a controladas por um mesmo mdulo de I/O, mais conhecido como controo ladora de disco, em arranjos ponto a ponto ou multiponto, como mostra a Figura 5.8. A congurao multiponto mais comum pois simplica o ca e projeto das controladoras de disco dada a reduo do nmero de conexes ca u o necessrias. Isto permite grande exibilidade aos sistemas computacionais a pois a capacidade do armazenamento secundrio pode ser aumentada pela a simples adio de novas unidades de disco. ca Outros sistemas tem duplicadas suas unidades de disco, utilizando tce nicas de espelhamento (mirroring), onde os dados so gravados de forma a idntica nas unidade espelhadas, permitindo a rpida recuperao do sistema e a ca em caso de falhas. Uma outra estratgia de alta conabilidade e disponibie lidade a utilizao de mltiplas unidades de disco num arranjo conhecido e ca u como RAID (redundant array of inexpensive disks), onde os dados so graa vados de forma distribu num grupo de unidades permitindo at mesmo da e a substituio de uma unidade de disco com o equipamento em funcionaca mento. Stallings traz maiores detalhes sobre as tcnicas de RAID [STA96, e p. 161]. As unidade de disco, que so dispositivos de acesso direto, isto , quala e quer setor contendo informao pode ser acessado atravs de uma simples ca e operao de pesquisa (seek ) sem necessidade da leitura de setores adicioca nais. Dispositivos desta natureza tambm so chamados de dispositivos de e a acesso aleatrio. A IBM tradicionalmente denomina suas unidades de disco o de DASD (direct access storage devices) numa clara aluso a forma com que a os dados pode serem lidos e gravados. Com tais caracter sticas, podemos perceber sua importncia para os coma putadores. Segundo Deitel [DEI92, p. 26], as unidades de disco magntico e so talvez o mais importante perifrico dentro de um sistema computacional. a e Organizao dos discos ca Do ponto de vista de organizao, uma unidade de disco pode possui um ca ou vrios discos (disks), `s vezes chamados de pratos (platters). Todo o a a
crocomputadores e equipamentos de pequeno porte.

158

CAP ITULO 5. GERENCIAMENTO DE I/O

conjunto de discos dividido em circunferncias concntricas denominadas e e e cilindros (cylinders). Para cada superf de disco equipada com cabea cie c de leitura (head ) se dene uma trilha (track ), que tambm dividida rae e dialmente em setores (sectors), tal como fatias de uma pizza. Entre as trilhas existe um espao livre (inter-track gap) tal como entre os setores c (inter-sector gap). Todo o espao livre existente entre trilhas e setores no c a utilizado por estes dispositivos. Na Figura 5.10 temos a estrutura de uma e unidade de disco magntico. e

Figura 5.10: Estrutura esquemtica de uma unidade de disco magntico a e Como forma de simplicao, todas as trilhas armazenam a mesma quanca tidade de dados, portanto a densidade de gravao maior nas trilhas inca e teriores dos discos. O hardware da unidade de disco dispe de meios para o identicar o setor inicial sendo que os demais setores so identicados cona forme o disco e trilha ao quais pertencem, recebendo uma numerao de ca referncia. O processo de diviso das superf e a cies em trilhas e setores o que e se denomina formatao f ca sica da unidade enquanto que sua adequao ca ao sistema de arquivos do sistema operacional chamada de formatao e ca lgica. Os dados so gravados nos setores de cada trilha podendo ser recuo a perados posteriormente se for conhecido o nmero do setor desejado. u Uma outra caracter stica fundamental das unidades de disco a possie bilidade de serem divididas em parties. Uma partio um conjunto de co ca e cilindros consecutivos, cujo tamanho determinado pelo usurio [NOR89, e a p. 103], permitindo que: uma unidade de disco f sica seja vista e tratada como vrias unidaa

5.4. DISPOSITIVOS PERIFERICOS T IPICOS

159

des de disco lgicas distintas, facilitando a organizao dos dados e o ca instalao de programas; e ca vrios sistemas operacionais diferentes sejam instalados nas diversas a parties, ampliando signicativamente as possibilidades de uso da co mquina. a No sistema operacional multiusurio IBM VM/SP (Virtual Machine/a System Product), usado em computadores IBM de grande porte, um procedimento comum para alocao de espao em disco para os usurios era ca c a a criao de mini-discos, na verdade, pequenas parties de uma das unica co dades de disco do sistema. Atravs de uma solicitao aos operadores do e ca sistema, o usurio recebia direitos de acesso ` um novo mini-disco, criado a a para seu uso particular. Para o usurio, cada mini-disco aparentava ser a uma unidade de disco de uso privativa e isolada das demais, onde os arquivos e programas eram criados e modicados, podendo o usurio dar direitos a de acesso de seu mini-disco para outros usurios do sistema. Quando nea cessrio, o usurio podia pedir uma ampliao de seu mini-disco ou requerer a a ca um novo mini-disco, de forma a possuir vrias mini-parties diferentes do a co sistema. Resumidamente, caracter sticas importantes que descrevem uma unidade de disco so: nmero de discos, nmero de superf a u u cies, nmero de cilindros, u nmero de setores, movimentao das cabeas (xas ou mveis), tipo de u ca c o cabeas (de contato, de espaamento xo ou aerodinmicas), tempo mdio c c a e de acesso, capacidade de transferncia da controladora e MTBF (Medium e Time Between Failures). A maioria dos detalhes de operao das unidades de disco magntica so ca e a tratadas pelas controladoras de disco, cujas interfaces padronizadas so de a fcil integrao com a maioria dos sistemas computacionais. Estas interfaces a ca padronizadas (por exemplo IDE, EIDE e SCSI) trabalham com comandos de alto n vel, facilitando o trabalho de programao. As controladoras geca ralmente possuem capacidade para tratar vrios discos simultaneamente, a embora a operao paralela se resuma ao acionamento das unidade de disca cos em busca de setores (overlapped seeks), pois a transferncia de dados de e uma unica unidade geralmente consome toda capacidade de processamento destas controladoras. Ainda assim, a habilidade de realizar acessos (seeks) aos discos melhora consideravelmente a performance destas unidades. Tempo de acesso Quando solicitada uma operao de leitura ou escrita numa unidade de e ca disco, necessrio mover-se a cabea de leitura e escrita at o setor desejado e a c e para o in da operao. Tal tempo determinado por trs fatores [TAN92, cio ca e e p. 217] [STA96, p. 160]:

160

CAP ITULO 5. GERENCIAMENTO DE I/O

1. o tempo necessrio para mover-se at o cilindro correto, ou seja , o a e tempo de acesso ` trilha ou tempo de pesquisa da trilha (seek time); a 2. o tempo necessrio para a cabea ser posicionada no in a c cio do setor desejado, chamado de atraso rotacional (rotational delay) e 3. o tempo de transferncia dos dados, isto , a leitura ou escrita e e dos dados (transfer time ou transmission time). A soma destes trs componentes de tempo o que se denomina tempo de e e acesso (access time), ou seja, o tempo necessrio para a leitura ou escrita de a um determinado setor, como indicado na Equao 5.1. Estes componentes ca do tempo de acesso tambm esto representados na Figura 5.11. e a taccess = tseek + trotationaldelay + ttransf er (5.1)

Dado que, para a maioria das unidades de disco, o tempo de movimentao entre trilhas (seek time) o maior dentro desta composio, sua ca e ca reduo colabora substancialmente com a performance destes dispositivos ca (esta razo pela qual existem unidades de disco com cabeas xas, pois e a c nelas o seek time zero). e

Figura 5.11: Componentes do tempo de acesso de uma unidade de disco

5.4.2

Escalonamento de disco

Uma das maiores questes relacionadas ao desempenho das unidades de o disco se relaciona a forma com que as cabeas de leitura so posicionadas c a em funo dos pedidos de leitura e escrita realizados. O controle deste atenca dimento feito por algoritmos de escalonamento de disco (disk scheduling e algorithms ou disk arm scheduling algorithms). Considerando um sistema multiprogramado onde existam inmeros prou cessos efetuando pedidos de leitura e escrita, em funo da maior velocidade ca

5.4. DISPOSITIVOS PERIFERICOS T IPICOS

161

de processamento em relao a capacidade de realizar a leitura e escrita dos ca dados por parte da unidade de disco, razovel considerar que os pedidos e a devero esperar para poderem ser atendidos, portanto os processos caro a a bloqueados at suas respectivas solicitaes serem completas. e co Quanto mais rpido a unidade de disco puder completar as solicitaes, a co menor o tempo de espera dos processos, beneciando o sistema. Como as operaes solicitadas provavelmente utilizaro setores distintos, a unidade co a dever efetuar uma srie de movimentaes da cabea de leitura para realia e co c zar o trabalho necessrio, assim sendo, quanto menor o tempo despendido a na movimentao da cabea de leitura melhor o desempenho da unidade. ca c Esta a justicativa da preocupao com o escalonamento das tarefas de e ca movimentao das cabeas de leitura [DEI92, p. 363]. ca c Um algoritmo para escalonamento do disco deve ento proporcionar boa a produtividade (throughput), oferecer baixo tempo de resposta e apresentar razovel previsibilidade (comportamento previs a vel nas diversas situaes co de carga). Existem vrios algoritmos para escalonamento do disco, onde a alguns preocupam-se em otimizar a movimentao entre trilhas e outros em ca aproveitar o percurso rotacional das cabeas de leitura: c FCFS (rst come rst served ) Neste algoritmo, a la de pedidos executada na ordem em que aparee cem, sem qualquer reordenao ou otimizao de movimentao. Esta ca ca ca forma de escalonamento pode resultar em longos tempos de espera em situaes de alta carga de trabalho, embora razovel para situaes de co a co baixo carregamento [DEI92, p. 366] [TAN92, p. 217]. SSTF (shortest seek time rst) A la de pedidos executada de forma que sejam atendidos primeiro e os pedidos que exigem a menor movimentao poss ca vel entre trilhas, qualquer que seja o sentido da movimentao (setores internos para ca centro ou setores externos para bordas). Pedidos destinados aos setores extremos geralmente recebem baixa qualidade de servio, podendo c ocorrer um adiamento indenido (starvation), alm disso proporcie ona grande varincia em termos de desempenho conforme a seqncia a ue um algoritmos orientado ` cilindros [DEI92, p. 366] de pedidos. E a [TAN92, p. 218]. SCAN E uma variao do SSTF, desenvolvida por Denning em 1967, que preca tendia corrigir sua varincia e a possibilidade de adiamento indenido. a O SCAN, tal como o SSTF, tambm trabalha escolhendo os pedidos e que exigem menor movimentao, mas apenas numa direo preferenca ca cial, ou seja, ele primeiro realiza os pedidos numa direo (p.e., do ca cilindro mais externo para o mais interno) para depois realizar uma mudana de direo (do cilindro mais interno para o mais externo) c ca

162

CAP ITULO 5. GERENCIAMENTO DE I/O completando as tarefas. Novos pedidos que vo surgindo durante a vara redura so atendidos se poss durante a varredura em andamento. a vel Por isso tambm conhecido como algoritmo do elevador (elevator ale e gorithm). Embora os setores externos continuem a ser menos visitados que os setores intermedirios, no existe a possibilidade de um adiaa a mento indenido e a qualidade do servio mais regular. Para baixa c e carga de trabalho este melhor algoritmo de escalonamento para disco e conhecido. Tambm um algoritmos orientado ` cilindros [DEI92, p. e e a 366]. C-SCAN O algoritmo C-SCAN (circular SCAN) uma variao do algoritmo e ca SCAN que elimina a questo de atendimento diferenciado para os cia lindros extremos. O C-SCAN atende os pedidos, na ordem em que exigem menor movimentao, seguindo uma direo pr-denida: do ca ca e cilindro mais externo para o mais interno. Ao nalizar os pedidos nesta direo, o brao deslocado para o pedido que necessita o setor mais ca c e externo sendo reiniciada a varredura. Para uma carga de trabalho mdia este algoritmo proporciona os melhores resultados. Se tambm e e otimizado para minimizar o atraso rotacional, torna-se o melhor algoritmo, inclusive para alta carga de trabalho [DEI92, p. 369]. N-SCAN O algoritmo N-SCAN (n step SCAN) uma outra variao do SCAN. e ca Sua movimentao semelhante ao SCAN, exceto pelo fato que apenas ca e os pedidos pendentes so atendidos ` cada varredura. Os pedidos que a a chegam durante uma varredura so agrupados e ordenados para serem a atendidos no retorno da varredura. Proporciona boa performance e bom tempo de resposta mdio com pequena varincia, no existindo e a a a possibilidade de adiamento innito para quaisquer pedidos [DEI92, p. 368]. Eschenbach A movimentao semelhante ao C-SCAN, mas cada cilindro tem ca e sua trilha percorrida por completo, sendo os pedidos reordenados durante este percurso. Para pedidos em setores sobrepostos apenas um e atendido na varredura corrente. E uma estratgia para otimizao do e ca atraso rotacional, embora o C-SCAN se prove melhor [DEI92, p. 365].

Em situaes de grande carga de trabalho, deve ser considerada a otico mizao rotacional, ou seja, dado que aumentam as possibilidades de dois ou ca mais pedidos se referenciarem a mesma trilha. Uma estratgia semelhante e ao SSTF para a otimizao rotacional o algoritmo SLTF (shortest latency ca e time rst) que procura atender os pedidos com menor atraso rotacional dentro da trilha corrente [DEI92, p. 370].

5.4. DISPOSITIVOS PERIFERICOS T IPICOS

163

Veja na Figura 5.12 uma comparao destes algoritmos de escalonamento ca de disco supondo um disco de 40 cilindros, com a cabea inicialmente sobre c o cilindro nmero 11, cujos pedidos indicam cilindros: 2, 36, 16, 34, 9 e 12. u Os grcos representam a movimentao da cabea de leitura segundo um a ca c algoritmo espec co para atender a srie dada de pedidos. e Se considerarmos que entre duas trilhas distintas existe um percurso que pode ser calculado por: P ercurso = |trilhaf inal trilhainicial | (5.2)

Ento o percurso total realizado para atendimento de n pedidos a a e somatria dos percursos individuais, ou seja: o P ercursototal = P ercursoi (5.3)

As unidades de discos ex veis (oppies comuns e ZIP disks) tambm e funcionam segundo os mesmos princ pios e possuem a mesma organizao, ca exceto pelo fato de possu rem cabeas de leitura/escrita de contato e que c utilizam o algoritmo de escalonamento de disco FCFS. Na Tabela 5.2 temos a organizao de um disco ex de 3.5 com qudrupla densidade [NOR89, ca vel a p. 100]. Tabela 5.2: Organizao de um oppy de 1.44 Mbytes ca Nmero de Superf u cies 2 Nmero de Cilindros u 80 Nmero de Trilhas por Cilindro u 2 Nmero de Setores por Trilha u 9 Tamanho do Setor (bytes) 512 Capacidade Total (bytes) 1.474.560 Na trilha 0 do lado 0 de um disquete de qudrupla densidade temos a 9 setores ocupados respectivamente por: um setor de boot, quatro setores destinados ` tabela de alocao de arquivos (FAT propriamente dita, como a ca veremos na seo ???) e quatro setores para a organizao do diretrio do ca ca o disquete. Na trilha 0 do lado 1 temos os trs ultimos setores destinados ` e a organizao do diretrio e seis setores destinados aos dados. Nas demais ca o trilhas do disquete teremos nove setores de dados cada. O registro de boot sempre est localizado na trilha 0 e setor 0 de disa quetes. Nele pode ser colocado um pequeno programa destinado a iniciar o processo de carregamento do sistema operacional, possibilitando que este disquete possa dar a partida do sistema. Cada sistema operacional possui um formato diferente para o contedo do registro de boot, mas a idia central u e sempre a mesma. e

164

CAP ITULO 5. GERENCIAMENTO DE I/O

Figura 5.12: Comparao dos algoritmos de escalonamento de disco ca

5.4. DISPOSITIVOS PERIFERICOS T IPICOS

165

5.4.3

Unidades de ta

As unidades de ta magntica so outro importante dispositivo de I/O tendo e a sido os primeiros perifricos utilizados para o armazenamento secundrio e a nos sistemas computacionais. Utiliza os mesmos princ pios f sicos para o armazenamento perene de dados: uma na ta plstica (de Mylar ou maa terial semelhante) recoberta com algum xido metlico cujas propriedae o a des magnticas possibilitam que atravs de uma cabea leitura se realize a e e c gravao ou leitura de dados na ta. ca As tas, acondicionadas em rolos ou cartuchos de vrios tipos e tamaa nhos, so movimentadas tal como gravadores de udio de ta em rolo ou a a cassete, embora tipicamente com maior velocidade. A cabea leitura, que c trabalha em contato direto com a ta plstica, grava simultaneamente vrios a a bits de informao na ta, paralelamente ao sentido do comprimento da ta, ca de forma que nesta sejam identicadas trilhas de gravao (tracks). O ca nmero de trilhas existente varivel, dependendo do tipo de unidade de ta u e a e da ta magntica que utiliza, mas valores usuais so 9, 18 ou 36 trilhas, e a para a gravao paralela de um byte, word ou double word por vez respecca tivamente, juntamente com alguns bits extras utilizados para o controle de paridade [STA96, p. 174]. Cada bloco de informao gravada, 128, 256 ou 512 bytes, identicado ca e como um registro f sico (physical record ), separado do registro anterior e posterior por espaos denominados espaos inter-registro (inter-record c c gaps). Veja na Figura 5.13 a representao esquemtica da organizao de ca a ca uma ta magntica contendo 9 trilhas. e

Figura 5.13: Formato esquemtico de ta magntica a e Diferentemente das unidade de disco, que so dispositivos de acesso dia reto, as unidades de ta magntica so conhecidas como dispositivos de e a acesso seq encial, pois para efetuar-se a leitura de um determinado regisu tro f sico, todos os registros existentes entre a posio inicial da cabea de ca c leitura e o registro desejado devem ser lidos. Se o registro desejado estiver localizado numa posio anterior a posio corrente, ento a ta ou cartucho ca ca a devero ser rebobinados at o seu in ou posio anterior adequada para a e cio ca que a pesquisa pelo registro desejado possa ser iniciada. Claramente temos que as unidades de ta so dispositivos mais lentos que as unidades de disco. a

166

CAP ITULO 5. GERENCIAMENTO DE I/O

O tempo de acesso (access time) para uma unidade de ta magntica e tambm dado pela soma de trs componentes de tempo, representados na e e e Figura 5.14: 1. o tempo necessrio para a cabea de leitura comear a ser movimena c c tada, chamado de tempo de atraso de movimentao (move deca lay); 2. o tempo necessrio para mover-se at o registro f a e sico, ou seja , o tempo de acesso ao registro (seek time) e 3. o tempo de transferncia dos dados, isto , o tempo decorrido nas e e operaes de leitura ou escrita dos dados no registro (transfer time ou co transmission time). Sendo assim, o tempo de acesso pode ser determinado como indicado na Equao 5.4. ca taccess = tmovedelay + tseek + ttransf er (5.4)

Devido ao fato das unidades de ta magntica terem cabeas de leitura e c de contato, isto , que para lerem os dados so mantidas em contato com e a a ta, a movimentao da ta s ocorre durante as operaes de leitura ou ca o co escrita minimizando tanto o desgaste da ta magntica como da cabea de e c leitura. Da a existncia do atraso de movimentao que corresponde ao e ca tempo necessrio para o acionamento do mecanismo de movimentao da a ca ta. Veja na Figura 5.14 uma representao esquemtica dos componentes ca a do tempo de acesso de uma unidade de ta.

Figura 5.14: Componentes do tempo de acesso de uma unidade de ta Nos discos ex veis ocorre o mesmo que nas unidades de ta: a movimentao s ocorre durante as operaes de leitura e escrita, pois a cabea ca o co c de leitura tambm do tipo de contato, sendo que depois da operao a e e ca

5.4. DISPOSITIVOS PERIFERICOS T IPICOS

167

movimentao interrompida. Nos discos r ca e gidos, o mecanismo de movimentao dos discos permanece ativo durante todo o tempo, exceto nos caca sos de economia de energia, onde o mecanismo de acionamento desativado e para reduo do consumo, t ca pico em computadores portteis ou pessoais. a Em sistemas computacionais de grande porte, podem existir procedimentos especiais para que unidades de ta magntica, geralmente prximas e o ao computador central, possam ser utilizadas pelos usurios do sistema. a Apesar da velocidade bastante mais baixa, as unidades de ta magntica e ainda so largamente utilizadas, pois a m a dia utilizada remov e barata. e vel Atualmente os formatos de ta em rolo esto caindo em desuso, sendo prea feridos os formatos tipo cartucho, cujas capacidades de gravao podem ser ca superiores a 1 GByte por cartucho, congurando um dispositivo de armazenamento secundrio compacto e de baix a ssimo custo por MByte. Devido ` a velocidade e custo, as aplicaes mais comuns das tas magnticas so a reco e a alizao de cpias de segurana (backups) e o transporte manual de grandes ca o c quantidades de dados (por exemplo, RAIS, IR, folha de pagamento, relao ca de recebimento para concessionrias de servios pblicos etc). a c u

5.4.4

Terminais

Todos os sistemas computacionais, de qualquer porte, que oferecem servios c interativos para vrios usurios simultneos, utilizam terminais para realizar a a a a comunicao entre os usurios e os computadores. Os terminais tambm ca a e so denominados TTY (teletype), devido a uma empresa de mesmo nome que a tornou-se conhecida pelo seus equipamentos. Existem vrios tipos diferentes a de terminais os quais empregam diferentes tecnologias e estratgias para e seu funcionamento. Na Figura 5.15 temos uma classicao dos terminais, ca semelhante a sugerida por Tanenbaum [TAN92, p. 227].

Figura 5.15: Tipos de terminais Os terminais baseados na interface RS-232 utilizam um protocolo de comunicao serial para a transmisso de dados entre o computador e o ca a terminal, onde um unico caractere transmitido por vez, a taxa de 1200 e a 9600 bps (bits por segundo), como ilustrado na Figura 5.16. Esta forma

168

CAP ITULO 5. GERENCIAMENTO DE I/O

de comunicao se tornou to comum que vrios fabricantes desenvolveram ca a a circuitos integrados (chips) especializados nesta tarefa, chamados de UARTs (Universal Asynchronous Receiver Transmitter), entre os quais citamos o popular Intel 8255. Apenas a transmisso de um unico caractere a 9600 bps a toma aproximadamente 1 ms, portanto uma tela de 25 linhas por 80 colunas (2000 caracteres), tomaria 2 segundos para ser preenchida completamente.

Figura 5.16: Protocolo de comunicao serial ca Os terminais que utilizam este protocolo so compostos por um teclado, a um monitor de v deo e alguns circuitos eletrnicos que implementam a lgica o o de controle necessria ao seu funcionamento, sendo portanto equipamentos a de custo relativamente baixo. A UART interna do terminal conectada e a ` interface RS-232 do computador via um cabo de trs os (terra, transe misso e recepo). A interface RS-232 do computador deve possuir tantas a ca conexes e UARTs quantos terminais a serem conectados, como ilustrado o na Figura 5.17. Tal forma de conexo, com o passar do anos, comeou a a c se tornar um inconveniente dado o nmero crescente de terminais de um u sistema computacional. O funcionamento desta conexo pode ser descrito a da seguinte maneira: 1. Quando o terminal deseja enviar um caractere ao computador (para estabelecer uma conexo com o sistema ou para enviar dados e comana dos do usurio), ele o envia para sua UART. a 2. Quando a UART efetua a transmisso do caractere, gera uma intera rupo indicando que pode transmitir outro caractere. ca 3. A UART do computador recebe o caractere, processando-o, enviando uma resposta quando devido. 4. A UART recebe o caractere, gerando uma interrupo para o procesca samento do caractere no terminal. Os terminais de cpia impressa (hardcopy), percursores dos terminais de o v deo, imprimem em papel todas as mensagens recebidas do computador. Atravs de seu teclado as mensagens so enviadas do terminal para o come a putador. Os terminais CRT (catodic ray tube) so os terminais que utilizam a monitores de v deo para exibio das mensagens, operando da mesma forma ca que os terminais hardcopy.

5.4. DISPOSITIVOS PERIFERICOS T IPICOS

169

Figura 5.17: Conexo computador e terminais RS-232 a

Os terminais inteligentes so pequenos computadores especializados na a transmisso e recepo de mensagens, possuindo inmeras funes de cona ca u co gurao, possibilitando sua congurao para o trabalho com diferentes ca ca computadores em situaes diversas. Dada sua capacidade interna de proco cessamento, podem armazenar seqncias de dados ou realizar tarefas mais ue complexas. Outra categoria dos terminais so aqueles que possuem memria maa o peada, isto , cuja interface com o computador principal se d atravs de e a e sua memria de v o deo (v deo RAM) e um controlador especial denominado controlador de v deo (v deo controller). Nesta situao, o terminal deve ca possuir capacidade interna de processamento, podendo se comunicar com o computador central atravs de outras formas mais ecientes tais como e os protocolos BSC (binary synchronous control ) introduzido pela IBM em 1961, o padro ISO HDLC (high-level data link control ) ou o SDLC (syncha ronous data link control ), verso IBM do protocolo HDLC. Black [BLA87] a traz detalhes destes protocolos, comparando-os e mostrando suas aplicaes. co A fam IBM 3270 um conjunto de terminais, impressoras e controlalia e doras de terminais tipicamente utilizados em sistemas de grande porte IBM, sendo bastante conhecidas em diversos segmentos corporativos. Os terminais de v deo IBM 3178 e 3278 so seus integrantes os mais conhecidos, com a alguns milhes de unidades vendidas [BLA87, p. 83]. Estes terminais, coneco tados atravs de cabos coaxiais, utilizam um protocolo proprietrio da IBM e a para comunicao com controladoras de terminais (IBM 3172 e 3174), que ca concentravam tal comunicao para um computador central, possibilitando ca inmeras conguraes, como ilustrado na Figura 5.18. u co O processador do terminal, tendo recebido as informaes do computador co central atravs de sua conexo dedicada, coloca as informaes que devem ser e a co exibidas na memria de v o deo enquanto o controlador de v deo gera o sinal correspondente ao contedo da memria de v u o deo, produzindo a imagem

170

CAP ITULO 5. GERENCIAMENTO DE I/O

Figura 5.18: Fam IBM 3270 lia

adequada, liberando o processador de tal tarefa. O princ o mesmo para pio e os terminais orientados ` caractere, onde a memria de v a o deo preenchida e com os caracteres e atributos para sua exibio; ou orientados ` bit, onde ca a a memria de v o deo preenchida com os pontos (pixels) que devem ser e renderizados. Nos terminais orientados ` caractere apenas telas constitu a das de caracteres e uma limitada quantidade de s mbolos grcos podem ser compostas a e exibidas, restringindo as suas possibilidades de utilizao. J os terminais ca a orientados ` mphbit permitem a exibio de grcos e imagens, caracteres a ca a usando mltiplos fontes, sistemas de janelas, u cones, cuja resoluo (quanca tidade total de pixels que podem ser apresentados numa unica imagem) de pendente da quantidade de memria de v o deo, das capacidades do monitor de v deo e do meio de transmisso. As telas so reproduzidas em ciclos de 20 a a ms (terminais monocromticos) e 17 ms (terminais coloridos) permitindo a a rpida exibio de caracteres. O teclado, nesta congurao tambm tornaa ca ca e se completamente independente, interrompendo o processador do terminal para enviar seqncias de caracteres. ue Os microcomputadores IBM PC e compat veis utilizam esta estratgia e para exibio de seus v ca deos, podendo possuir controladores de v deo bastante sosticados, destinados a reproduo de imagens em alta velocidade ca (v deo) ou renderizao em 2D e 3D. ca

5.5. SISTEMAS DE ARQUIVOS

171

5.5

Sistemas de arquivos

Como vimos na seo 4.3, os dispositivos de armazenamento secundrio so ca a a utilizados para armazenar dados de forma perene, isto , o armazenamento e feito de forma convel e e a ntegra, mesmo quando o sistema computacional permanece desligado por longos per odos de tempo. O armazenamento perene de informaes desejado pelas seguintes razes [TAN92, p. 145]: co e o Existem inmeros problemas prticos que requerem o armazenamento u a de grandes quantidades de informaes, as quais no sero utilizadas co a a totalmente por um certo processo, por exemplo, consultas a uma lista telefnica, movimentao de uma conta corrente, recuperao de um o ca ca histrico escolar, alterao de um cadastro mdico, atualizao de uma o ca e ca cha de estoque etc. E inadmiss vel que tais informaes sejam reco introduzidas no computador a cada uso. Existem uma outra innidade de problemas prticos que produzem a dados durante sua execuo, razo de sua existncia, que no podem ca a e a ser descartados pois sero utilizados por outros processos, tal como o a cruzamento de dados informados em declaraes de imposto de renda, co o resultado de simulaes f co sicas/qu micas/matemticas, a soluo de a ca problemas diversos etc. Certos conjuntos de dados no podem pertencer a um unico processo, a isto , serem dispostas no espao de endereamento de um simples e c c programa, devendo ser compartilhada por muitos outros processos, tal como os dados de lotao de avies de uma companhia area, as ca o e informaes de tarifao de uma companhia telefnica etc. co ca o Os sistemas computacionais esto sujeitos ` falhas ou situaes de a a co contingncia, onde importante que seus dados estejam preservados e e (duplicados) de forma segura, permitindo sua recuperao e uso em ca um outro sistema computacional. Todas estas razes justicam a necessidade do armazenamento de ino formaes em meios distintos da memria primria, que tem capacidade co o a limitada, e de forma independente dos processos, dada as questes de pero sistncia e compartilhamento, sem considerarmos as questes relacionadas e o a integridade e segurana dos dados. c Para que o armazenamento possa ser realizado de maneira tal a atender as razes enunciadas, necessria uma adequada organizao destes dados o e a ca nos dispositivos destinados ao armazenamento secundrio, tal como unidaa des de disco, unidades de ta magntica, CD-ROMs etc. e Dado que podem existir muitos processos num sistema computacional, cada um utilizando e produzindo diferentes conjuntos de dados, torna-se

172

CAP ITULO 5. GERENCIAMENTO DE I/O

necessrio distinguir tais conjuntos de dados. Os arquivos (les) so as a a unidades que contm estes conjuntos distintos de dados, de forma que estes e possam ser utilizados pelos processos. Como tudo mais num sistema computacional, o sistema operacional controla as operaes sobre os arquivos, organizando seu armazenamento no que co chamamos de sistema de arquivos (le system). Um sistema de arquivos geralmente contm [DEI92, p. 389]: e Mtodos de acesso: forma com que os dados so armazenados nos e a arquivos; Gerenciamento de arquivos: conjunto de mecanismos de armazenamento, referncia, compartilhamento e segurana; e c Mecanismos de integridade: que asseguram que os dados de um arquivo permanecem ntegros. Ainda segundo Deitel [DEI92, p. 391], um sistema de arquivos deve permitir, funcionalmente falando, que: os usurios possam criar, modicar e eliminar arquivos, bem com rea alizar sua duplicao ou a transferncia de dados entre arquivos; ca e seja poss o compartilhamento de arquivos atravs de mecanismos vel e controlados e bem denidos; as operaes de backup e sua restaurao sejam suportadas; co ca seja poss a adoo ou implementao de procedimentos de proteo vel ca ca ca e segurana; e c que a interface seja amigvel e consistente, admitindo a realizao de a ca operaes apenas atravs dos nomes simblicos dos arquivos, garanco e o tindo independncia do dispositivo utilizado. e Com isto percebemos que os sistemas de arquivos preocupam-se com a organizao e controle do armazenamento secundrio de um sistema compuca a tacional. Tambm necessrio destacar que um sistema operacional pode e e a suportar diversos sistemas de arquivos, isto , podem operar utilizando die ferentes formas de administrao dos dispositivos de armazenamento seca cundrio. A seguir, na Tabela 5.3, alguns exemplos de sistemas operacionais a e dos sistemas de arquivos suportados.

5.5. SISTEMAS DE ARQUIVOS

173

Tabela 5.3: Sistemas de arquivos de alguns sistemas operacionais


Sistema operacional MS-DOS MS-Windows 95/98 MS-Windows NT MS-Windows 2000 MS-Windows XP IBM OS/2 Linux Sistemas de arquivos suportados FAT (le allocation table) 12 e 16 bits FAT (le allocation table) 12 e 16 bits VFAT (virtual le allocation table) 32 bits FAT (le allocation table) 12 e 16 bits VFAT (virtual le allocation table) 32 bits NTFS (new technology le system) FAT (le allocation table) 12 e 16 bits HPFS (high performance le system) FAT (le allocation table) 12 e 16 bits VFAT (virtual le allocation table) 32 bits Minix (Mini Unix) Extended File System Ext2 (second extended le system - Nativo) Sun Solaris UFS

5.5.1

Arquivos

Existem vrias denies poss a co veis para o conceito de arquivos. Tanembaum arma que, de forma simplicada, os arquivos podem ser entendidos como seqncias de bytes no interpretadas pelo sistema, dependendo-se de ue a aplicaes apropriadas para sua correta utilizao [TAN95, p. 246]. Deitel co ca coloca que arquivos so uma coleo identicada de dados [DEI92, p. 389], a ca enquanto Guimares explica: a Um arquivo um conjunto de informaes relacionadas entre e co si e residentes no sistema de memria secundria: discos, tas, o a cartes, etc [GUI86, p. 211]. o Outras denies poderiam ser citadas, mas o que mais importante co e o conceito inerente ` utilizao dos arquivos. Arquivos so um poderoso e a ca a mecanismo de abstrao que permite ao usurio (e seus programas) utilizar ca a dados armazenados dentro do sistema computacional, ou seja, atravs da e manipulao dos arquivos so realizadas as operaes de escrita e leitura de ca a co dados, de forma transparente, evitando que sejam conhecidos detalhes do funcionamento com que estas operaes tratam e armazenam a informao co ca [TAN92, p. 146]. Os arquivos, dependendo do sistema operacional e do sistema de arquivos em uso, podem possuir uma identicao (le naming), atributos (attribuca tes), capacidades (capacities), lista de controle de acesso (control access list) e uma organizao ou tipo. ca Para que os dados possam ser corretamente identicados e utilizados, o sistema de arquivos deve prover um mecanismo de identicao dos arca quivos, isto , uma forma de distino simples dos arquivos, que permita e ca

174

CAP ITULO 5. GERENCIAMENTO DE I/O

sua adequada operao. Isto feito atravs da associao de um nome ao ca e e ca arquivo propriamente dito. Desta forma muitas das operaes que podem co ser realizadas sobre os arquivos so especicadas em termos de seus nomes, a simplicando muito tais tarefas. Diferentes sistemas operacionais usam formas de denominao distintas ca para a identicao de seus arquivos, como exemplicado na Tabela 5.4. ca Tabela 5.4: Denominao de arquivos em vrios sistemas ca a
Sistema operacional MS-DOS (FAT12 e FAT16) MS-Windows 95, 98, 2000, XP (VFAT) MS-Windows NT (NTFS) IBM OS/2 (HPFS) UNIX (genrico) e Composio ca do nome 1-8 char 1-255 char Composio ca da extenso a 1-3 char 1-255 char Outras caracter sticas Extenso opcional a Insens ao caixa vel Admite mltiplas exts u Comprimento total < 256 Insens ao caixa vel Admite mltiplas exts u Comprimento total < 256 Insens ao caixa vel Extenso opcional a Comprimento total < 256 Insens ao caixa vel No usa extenses a o Comprimento total < 256 Sens ao caixa vel

1-255 char

1-255 char

1-255 char

1-255 char

1-255 char

1-255 char

Note que o UNIX, dado possuir um sistema de arquivos com denominao sens ca vel ao caixa, trataria como sendo diferentes arquivos com os nomes ab, AB, Ab e aB. Tal caracter stica, embora util, pode se tornar um pesadelo em certas situaes quando no se percebe a sutileza de um co a unico caractere com o caixa errado. Nos sistemas que no utilizam ex a tenses ou admitem mltiplas extenses, podem surgir denominaes tais o u o co como names.dat.old ou source.c.gzip, indicando que diferentes aes co foram tomadas com os arquivos. Alm dos nomes os arquivos podem possuir atributos, isto , informaes e e co que no fazem parte dos arquivos, embora associadas aos mesmos, que poa dem ser utilizadas para indicar: criador (creator ), proprietrio (owner ), a tamanho (size), data de criao (creation date), data do ultimo acesso (last ca access date), data da ultima alterao (last modication date), ags diver ca sas (de sistema, ocultao, de arquivo, de leitura etc) permisses de acesso, ca o tamanho do registro, tamanho mximo, tipo etc. As permisses de acesso a o so usadas em conjunto com as capacidades ou listas de controle de acesso. a As capacidades so informaes que autorizam certos usurios ou proa co a cessos a realizarem certas operaes sobre os arquivos, tal como leitura e co escrita. As listas de controle de acesso so relaes de usurio que podem a co a realizar operaes espec co cas sobre um dado arquivo, tal como execuo ou ca

5.5. SISTEMAS DE ARQUIVOS

175

escrita. Enquanto as capacidades so associadas aos usurios ou processos a a as listas de acesso so associadas diretamente aos arquivos. a Os sistemas UNIX utilizam-se de uma lista de acesso simplicada baseada no conceito de grupos. Permisses so associadas a todos os arquivos e o a podem ser diferenciadas em trs n e veis: o do proprietrio, o do grupo ao qual a pertence seu proprietrio e dos demais usurios. Para cada n podem ser a a vel especicadas separadamente permisses para leitura, escrita e execuo, que o ca quando combinadas resultam em diferentes modos de acesso. J o MS-DOS a associa apenas um mphbit de permisso de escrita (Read-Only), ao qual se a associam os atributos Oculto (Hidden), Sistema (System) e Arquivo (Archive), que na prtica representam um precrio esquema de proteo contra a a ca eliminao indevida. ca Existem diversas estruturas poss veis para os arquivos tais como seqenu cial, por registros e em rvore [TAN92, p. 148], tal como ilustrado na a Figura 5.19.

Figura 5.19: Estruturas poss veis de arquivos Na estrutura seqencial, um arquivo uma seqncia de bytes, garanu e ue tindo a mxima exibilidade ao usurio do sistema operacional que oferece a a operaes bastante simples. Na estrutura de registro, um arquivo uma co e seqncia de registros, os quais podem ter diversos formatos. Esta estruue tura um pouco menos ex e depende de operaes um pouco mais soe vel co sticadas do SO. Existem diversos arranjos para arquivos organizados como seqncias de registros: registro de tamanho xo desbloqueados, registro ue de tamanho xo bloqueado, registro de tamanho varivel desbloqueados e a registro de tamanho varivel bloqueado [DEI92, p. 393]. a Sistemas operacionais como DOS, MS-Windows 95, 98 e NT e Unix estruturam seus arquivos como seqncias de bytes. Computadores de grande ue porte, tipicamente os sistemas IBM utilizam, como organizao mais comum, ca as seqncias de registro. A organizao em rvore raramente implemenue ca a e tada.

176

CAP ITULO 5. GERENCIAMENTO DE I/O

Dependendo do contedo do arquivo este pode ser entendido como de u um certo tipo. Muitos sistemas operacionais utilizam a extenso do nome do a arquivo como uma referncia para o tipo de seu contedo. Particularmente e u nos sistemas operacionais MS-Windows 95, 98, NT, 2000 ou XP podem ser associadas aplicaes a determinadas extenses, auxiliando o usurio. co o a Genericamente arquivos comuns, isto , aqueles utilizados pelos usurio para e a o armazenamento de informaes, podem ser considerados como do tipo co texto, quando seu contedo pode ser visualizado diretamente (via comandos u DOS type [IBM92a] ou Unix more [CON99, p. 132]); ou sendo binrio, a quando seu contedo precisa ser interpretado por uma aplicao para poder u ca ser visualizado. Os arquivos executveis tambm so arquivos binrios, cuja execuo a e a a ca realizada diretamente pelo sistema operacional. Vale ressaltar que um e arquivo binrio no simplesmente uma seqncia de instrues que podem a a e ue co ser executadas pelo processador, alm do cdigo executvel propriamente e o a dito o sistema operacional necessita conhecer informaes adicionais sobre co o tamanho do programa, sua rea de dados, o tamanho necessrio para sua a a pilha de retorno, etc.

Figura 5.20: Formato de arquivos executveis no Win-32 a Geralmente estas informaes so posicionadas num cabealho (header ) co a c do arquivo sendo que cada sistema operacional possui um formato prprio o de arquivo identicado como executvel. Na Figura 5.20 encontramos os fora matos de arquivos executveis do sistemas operacionais DOS, Windows 3.x a e Windows 95 enquanto que Figura 5.22 mostra a estrutura de um arquivo executvel no sistema Unix com detalhes de seu cabealho. Especicamente a c no sistema operacional Windows 95/98 e Windows NT poss visualizare vel se detalhes internos de arquivos executveis e bibliotecas de v a nculo dinmico a (DLLs ou dynamic link libraries) tais como cabealho da imagem, cabealho c c opcional, tabela de importao, tabela de sees e informaes do cabealho. ca co co c Isto poss atravs da opo de visualizao rpida oferecida pelo gerene vel e ca ca a ciador de arquivos nativo, como ilustrado na Figura 5.21.

5.5. SISTEMAS DE ARQUIVOS

177

Figura 5.21: Visualizao rpida de executveis no MS-Windows 98 ca a a Alm dos arquivos comuns, os sistemas de arquivos geralmente mantm e e arquivos especiais denominados diretrios (directories) que contm paro e tes da estrutura do sistema de arquivos. Em sistemas Unix ainda existem arquivos especiais utilizados para modelar certos dispositivos perifricos, poe dendo ser arquivos especiais de caracteres (character special les) ou arquivos especiais de blocos (block special les) que permitem o acesso terminais, impressoras e rede no primeiro caso, discos, tas e outros dispositivos de armazenamento secundrio no segundo. a Finalmente, do ponto de vista de armazenamento e acesso, os arquivos podem ser organizados das seguintes maneiras [DEI92, p. 392]: Seq encial Quando os registros ou bytes so posicionados em sua ordem u a f sica. Numa ta isto representa armazenamento cont guo, embora em discos magnticos isto no seja necessariamente verdade. e a Direto Quando os registro ou bytes so diretamente acessados no meio a em que so armazenados, usualmente um DASD. A aplicao deve a ca conhecer a localizao dos dados no dispositivo, sendo familiar com sua ca organizao. E um mtodo extremamente rpido, embora complexo. ca e a Seq encial Indexado Os registros bytes so organizados numa seqncia u a ue lgica conforme uma chave e o sistema mantm um o e ndice para acelerar

178

CAP ITULO 5. GERENCIAMENTO DE I/O

Figura 5.22: Formato de arquivos executveis (binaries) no Unix a o acesso a determinadas partes de um arquivo. Esta uma forma de e organizao comum em tabelas de bancos de dados. ca Particionado Quando o arquivo composto de subarquivos denominados e membros. Para acessar seus membros (members), o arquivo particionado possui um diretrio, que funciona como seu o ndice. So utilizados a para armazenar bibliotecas ou bancos de dados.

5.5.2

Diretrios o

Um diretrio (directory) nada mais que um arquivo mantido pelo siso e tema de arquivos que contm uma lista de arquivos e possivelmente outros e diretrios. Desta forma poss criar-se estruturas hierrquicas de arquio e vel a vos, onde os diretrios existentes dentro de outros so denominados subdio a retrios, tal como nos sistemas Unix, OS/2, DOS, Windows e outros. o O que motivou a criao dos diretrios o fato de que torna-se dif a ca o e cil organizao de um nmero grande de arquivos armazenados num determica u nado dispositivo sem qualquer forma de diviso. Os primeiros dispositivos a de armazenamento secundrio tinham pequena capacidade o que resultava a no armazenamento de um pequeno nmero de arquivos, catalogados num u diretrio unico associado ao prprio dispositivo. A medida que a capacio o dade de armazenamento destes dispositivos cresceu, as unidades de disco passaram a armazenar vrios milhares de arquivos, assim a apresentao a ca de uma simples listagem dos arquivos existentes signicaria para o usurio a visualizar muitas telas repletas de nomes. O sistema operacional DOS, em sua verso 1.0 lanada em 1981, supora c tava apenas um diretrio unico por dispositivo, usualmente discos ex o veis de limitada capacidade. Com a introduo de suporte para discos r ca gidos de maior capacidade na verso 2.0 liberada em 1983, foram adicionadas capaa cidades para criao e manuteno de diretrios e subdiretrios [JAM87, p. ca ca o o 25].

5.5. SISTEMAS DE ARQUIVOS

179

A criao de diretrios permite que os arquivos sejam divididos e organica o zados conforme seu tipo, proprietrio, utilizao ou qualquer outro critrio, a ca e possibilitando seu acesso de forma mais simples. Como mostra a Figura 5.23, existem vrias organizaes poss a co veis de diretrios, tais como em um n o vel, em dois n veis ou em mltiplos n u veis (ou em rvores). a

Figura 5.23: Organizaes Poss co veis de Diretrios o Tambm poss organizar-se os diretrios como grafos ac e e vel o clicos (acyclic graph directories) que permite que um arquivo ou mesmo um diretrio o seja apontado por mltiplas entradas presentes em diferentes diretrios, ou u o seja, que tal arquivo ou diretrio simultaneamente presentes como contedo o u de vrios diretrios ao mesmo tempo, permitindo seu compartilhamento a o [SG00, p. 356]. Isto comum em sistemas UNIX, onde podem ser criados e links apontando os arquivos ou diretrios compartilhados. o Internamente os diretrios so organizados como um conjunto de entrao a das, uma para cada arquivos ou subdiretrio que contm. A cada uma destas o e entradas so associados atributos que descrevem as permisses associadas a o aos arquivos, os endereos onde o arquivo est sicamente armazenado no c a dispositivo e outras informaes tais como tamanho do arquivo, data de co criao, etc. como visto na seo 5.5.1. ca ca No sistema de arquivos FAT (le allocation table) do MS-DOS e outros sistema operacionais, uma entrada t pica de diretrio possui a estrutura o ilustrada na Tabela 5.5 [JAM87, p. 266] [NOR89, p. 106] [TAN92, p. 167]. Nos sistemas Unix as entradas de diretrios so bem mais simples, como o a mostra a Tabela 5.6. Quando so solicitadas operaes sobre arquivos, tais como abertura ou a co criao de um arquivo, o sistema operacional consulta o diretrio corrente ca o

180

CAP ITULO 5. GERENCIAMENTO DE I/O

Tabela 5.5: Entrada de diretrio do sistema de arquivos FAT o Campo Tamanho (bytes) Nome do arquivo 8 Extenso a 3 Atributos 1 Reservado para DOS 10 Hora 2 Data 2 Nmero do Setor Inicial u 2 Tamanho do Arquivo 4 Total 32 Tabela 5.6: Entrada de diretrio de sistemas Unix o Campo Tamanho (bytes) Nmero do I-Node u 2 Nome do Arquivo 14 Total 16 (current directory), isto , o diretrio que est sendo consultado no momento, e o a vericando a existncia do arquivo desejado para abertura ou a possibilidade e de criao de um novo arquivo segundo as regras de identicao do sistema. ca ca A existncia de uma estrutura de diretrios traz como implicao direta a e o ca necessidade de uma forma de denominao unica dos arquivo considerandoca se o sistema como um todo. Da mesma forma que no poss a existncia a e vel e de dois arquivos de mesmo nome em um mesmo diretrio, dois arquivos o ou diretrios quaisquer no podem ter a mesma denominao do ponto de o a ca vista do sistema. Esta denominao sistmica dos arquivos chamada de ca e e especicao completa do caminho do arquivo ou apenas caminho do arquivo ca (pathname) e deve permitir a identicao unica de qualquer arquivo ou ca diretrio do sistema. o A especicao de caminho de arquivo pode ser absoluta (absolute pathca name) ou relativa (relative pathname) quando se refere a diretrio corrente. o Muitas vezes o diretrio corrente tratado como diretrio de trabalho (woro e o king directory). Os caminhos de arquivos para arquivos ou diretrios so formados pelo o a nome dos diretrios nos quais esto contidos, sendo que utiliza-se um cao a ractere especial, que no pode ser utilizado na denominao de arquivos e a ca diretrios, como o O sistemas operacionais DOS e Windows utilizam-se de uma estrutura de diretrios hierarquicamente organizada, tal como nos sistemas Unix, o

5.5. SISTEMAS DE ARQUIVOS

181

diferenciando-se pelo caractere de separao de nomes e principalmente pela ca forma de denominao de dispositivos. Enquanto que no Unix os disposica tivos so tratados como arquivos especiais e mapeados diretamente no sisa tema de arquivos a partir de diretrios arbitrrios, isto , especicados pelo o a e usurio durante a congurao ou operao do sistema atravs do comando a ca ca e mount [CON99, p. 224], tanto o DOS como o Windows do uma denoa minao espec ca ca para cada dispositivo f sico, chamando-os de unidades. Sendo assim, qualquer que seja o dispositivo de armazenamento, ou seja, para oppies, discos, CD-R/RWs etc., sempre temos um diretrio raiz para o cada unidade. Da a necessidade de adicionar-se a especicao da unidade ca ao caminho absoluto e tambm a impossibilidade de especicar-se caminhos e relativos envolvendo unidades distintas.

Figura 5.24: Estrutura de diretrio de um sistema Unix o Na maioria dos casos, os sistemas operacionais utilizam-se de diretrios o particulares para armazenamento de arquivos espec cos, como mostra a Tabela 5.7.

5.5.3

Servios do sistema operacional c

O sistema operacional, atravs de seu sistema de arquivo, deve prover um e conjunto de operaes para manipulao dos arquivos e de seu contedo e co ca u tambm dos diretrios. Do ponto de vista dos arquivos, visto como unidades, e o devem ser oferecidas as seguintes operaes [DEI92, p. 389] [TAN92, p. 153]: co Abertura (open) prepara arquivo para uso.

182

CAP ITULO 5. GERENCIAMENTO DE I/O

Tabela 5.7: Diretrios espec o cos


Sistema operacional DOS Windows 95/98 Diretrio o DOS TMP ou TEMP Windows Windows\System Windows\Temp Windows\Command Arquivos de Programa Meus Documentos usr home bin etc OS2 OS2\System OS2\MDOS Propsito o Arquivos do sistema Arquivos temporrios a Utilitrios do sistema a Arquivos do sistema Arquivos temporrios a Arquivos do DOS Produtos instalados Arquivos do usurio a Programas de usurios a Diretrios de usurios o a Arquivos binrios do sistema a Arquivos diversos de cong. Utilitrios do sistema a Arquivos do sistema Arquivos do DOS

Unix

OS/2

Fechamento (close) encerra o uso do arquivo evitando sua alterao. ca Criao (create) cria um novo arquivo. ca Eliminao (erase, delete ou destroy) remove um arquivo. ca Renomeao (rename) troca o nome de um arquivo. ca Cpia (copy) copia o contedo de um arquivo para outro. o u Exibio (type ou list) exibe o contedo de um arquivo. ca u Catalogao (cat ou dir ) lista os arquivos existentes num determica nado diretrio ou unidade. o Modicao de atributos (get ou set) obtm ou modica os atrica e butos de um arquivo. Do ponto de vista do contedo dos arquivos, isto , considerando a u e manipulao dos dados armazenados nos arquivos, devem tambm existir ca e operaes para: co Leitura (read ) possibilita a leitura de dados contidos nos arquivos. Escrita (write) efetua a gravao de dados em um arquivo. ca Pesquisa (seek ou nd ) para determinar uma posio para escrita ou ca leitura em um arquivo.

5.5. SISTEMAS DE ARQUIVOS

183

Anexao (append ) para adio de novos dados num arquivo exisca ca tente. Insero (insert) para incluso de um dado em um arquivo. ca a Atualizao (update) para modicao de um dado existente em um ca ca arquivo. Eliminao (delete) para remoo de um dado existente em um arca ca quivo. As operaes de insero, atualizao e eliminao de dados em arquivos co ca ca ca no so comuns, existindo em sistemas de grande porte onde os arquivos so a a a usualmente organizados em blocos ou registros formatados. Como muitos sistemas de arquivos suportam diretrios, operaes eso co pec cas deve ser supridas para sua utilizao [TAN92][p. 161] [SG00, p. ca 350] Criao (create) efetua a criao e preparo de um novo diretrio. ca ca o Remoo (delete ou remove) elimina um diretrio e opcionalmente ca o seu contedo. u Abertura (open) operao que permite a leitura de um diretrio. ca o Fechamento (close) operao que encerra o uso de um dado diretrio. ca o Leitura (read ) permite a leitura do contedo de um diretrio, ou seja, u o sua catalogao ou listagem. ca Pesquisa (search) para possibilitar a localizao de determinados arca quivos em um diretrio. o Renomeao (rename) troca o nome de um diretrio. ca o Navegao (traverse) permite a navegao entre diretrios do sisca ca o tema. Ainda podem ser poss veis outras operaes sobre arquivos e diretrios, co o tais como sua reorganizao sob algum critrio (ordenao), incluso ou ca e ca a remoo de ligaes (links no sistema Unix, atalhos nos sistemas Windows ca co ou shadows nos sistemas OS/2), obteno de informaes sobre arquivos ou ca co diretrios, associao com aplicativos etc. o ca Todas as operaes suportadas pelo sistema operacional para manipulaco ca o de arquivos e diretrios esto dispon o a veis para utilizao em programas ca atravs das chamadas do sistema (system calls), como no exemplo dado no e Exemplo 5.1 de algumas chamadas para um programa simples destinado ao sistema Unix.

184

CAP ITULO 5. GERENCIAMENTO DE I/O

// varivel para controle do arquivo a int arquivo; // cria~o de arquivo ca arquivo = create("nome do arquivo", modo); // abertura de arquivo apenas para leitura arquivo = open("nome do arquivo", O RDONLY); // leitura de arquivo read(arquivo, buffer, tamanho do buffer); // escrita em arquivo write(arquivo, buffer, tamanho do buffer); // fecha arquivo close(arquivo); Exemplo 5.1 Fragmentos de programa para sistema Unix

5.5.4

Implementao Lgica ca o

Como implementao lgica de um sistema de arquivos entende-se a metfoca o a ra que apresentada ao usurio do sistema para que o sistema de arquivos se e a torne compreens da maneira mais simples poss vel vel, isto , de modo que e os detalhes da implementao e funcionamento reais do sistema de arquivos ca sejam completamente ocultos do usurio do sistema. a Nos sistemas DOS, Windows e Unix, o usurio entende o sistema de a arquivos como uma estrutura hierrquica de diretrios que admite operaes a o co sobre arquivos e diretrios. Utilizando uma interface de modo texto que o oferece uma linha de comando, isto , uma interface tipo linha de comando e ou prompt do sistema, o usurio pode digitar comandos para realizar as a operaes desejadas imaginando a organizao hierrquica de diretrios e co ca a o arquivos que no diretamente vis atravs destas interfaces simples. Na a e vel e Tabela 5.8 a seguir temos alguns exemplos de comandos DOS, Windows e Unix para manipulao de arquivos e diretrios. ca o As interfaces em modo texto exigem maior abstrao do usurio, que ca a deve memorizar a sintaxe dos comandos que utiliza mais freqentemente, o u que evidentemente signica que tais usurios devem ter maior procincia a e tcnica para utilizao destes sistemas. e ca Esta diculdade motivou o desenvolvimento de interfaces grcas que, a entre outros benef cios, possibilitassem: uma abstrao mais simples do sistema de arquivos, ca

5.5. SISTEMAS DE ARQUIVOS

185

Tabela 5.8: Comandos DOS, Windows e Unix para manipulao de arquivos ca Propsito o DOS Windows Unix Copiar arquivo copy copy cp Renomear arquivo ren ren mv Apagar arquivo del del rm Mover arquivo N/D move mv Exibir arquivo type type more Listar arquivos dir dir ls Criar diretrio o md md mkdir Remover diretrio o rd rd rmdir Troca de diretrio o cd cd cd uma melhor visualizao da distribuio de arquivos atravs da estruca ca e tura de diretrios e unidades de armazenamento, o maior produtividade do usurio e a criao de um modelo de interface mais consistente que pudesse ser ca disponibilizada para outras aplicaes. co Para os sistemas Unix foi criado o padro grco de janelas Xwindows, a a que pode ser utilizado para desenvolvimento de aplicaes grcas, e tambm co a e o CDE (Common Desktop Environment), conduzido por um consrcio dos o maiores fabricantes de sistemas Unix num esforo de padronizao da interc ca face grca de seus sistemas. Outros fabricantes, tais como IBM, Microsoft a e Apple oferecem seus sistemas operacionais com interfaces grcas proa prietrias, todas baseadas em janelas. a O tratamento grco que especicamente os sistemas MS-Windows do a a a estrutura de diretrios, isto , uma organizao hierrquica de pastas nas o e ca a quais podem existir arquivos e outras pastas a idia central da metfora e e a apresentada. Mesmo sem o conhecimento de comandos de navegao na ca estrutura de diretrios ou de operaes sobre arquivos, o usurio dos sistemas o co a MS-Windows pode se movimentar pela estrutura de diretrios, pode copiar, o renomear, eliminar e criar arquivos ou diretrios apenas atravs da utilizao o e ca do sistema de menus oferecidos ou das operaes que podem ser realizadas co atravs do teclado ou mouse. Tambm poss e e e vel executar-se aplicaes e co criar-se atalhos (links). As operaes realizadas atravs dos menus, teclado e mouse so transco e a formadas pelo sistema operacional em chamadas do sistema que realizam as tarefas especicadas, evitando tanto o conhecimento da forma com que tais operaes so verdadeiramente realizadas como a memorizao dos comanco a ca dos de manipulao de arquivos e diretrios. ca o Nas Figuras 5.25 e 5.26 temos exemplos dos utilitrios de gerenciamento a

186

CAP ITULO 5. GERENCIAMENTO DE I/O

de arquivos que acompanham os sistemas MS-Windows 95/98/NT e XP respectivamente.

Figura 5.25: Gerenciador de arquivos do MS-Windows 95/98/NT Estas interfaces grcas facilitam muito a operao do sistema princia ca palmente para usurios menos experientes, alm disso proporcionam melhor a e visualizao da estrutura de diretrios e da distribuio de arquivos pelos ca o ca diretrios e unidades de armazenamento do sistema. o

5.5.5

Implementao F ca sica

A implementao f ca sica de um sistema de arquivos representa a forma com que efetivamente os dados so tratados nos dispositivos de armazenamento, a isto , corresponde a organizao f e ca sica dos dados nestes dispositivos e como se do as operaes de armazenamento e recuperao destes dados. Cona co ca forme Tanenbaum: Usurios esto preocupados em como os arquivos so denominaa a a dos, quais operaes so permitidas, a aparncia da estrutura de co a e diretrios e questes relacionadas a interface. Os implementadoo o res esto interessados em como arquivos e diretrios so armaa o a zenados, como o espao em disco gerenciado e como fazer que c e tudo funcione de forma eciente e convel [TAN92, p. 162]. a Como indicado por Deitel [DEI92, p. 394] e Tanenbaum [DEI92, p. 162], os arquivos podem ser armazenados basicamente de duas formas, ou seja, atravs da: e

5.5. SISTEMAS DE ARQUIVOS

187

Figura 5.26: Gerenciador de arquivos do MS-Windows XP Alocao cont ca gua e Alocao no cont ca a gua. O projeto de um sistema de arquivos exige o conhecimento de vrias a informaes, entre elas: o tipo e nmero de usurios; caracter co u a sticas das aplicaes que sero utilizadas; quantidade, tamanho e operaes sobre arco a co quivos. A considerao destes fatores permite determinar qual a melhor ca forma de organizao de seus arquivos e diretrios. ca o Alocao cont ca gua Uma forma de organizar-se os arquivos sicamente atravs da armazenae e gem dos dados em reas adjacentes dos dispositivos f a sicos, isto , em setores e consecutivos das unidades de disco [SG00, p. 373]. Sistemas de arquivos implementados desta forma so denominados de alocao cont a ca gua ou cont nua e neles o armazenamento f sico corresponde ` organizao lgica do arquivo, a ca o ou seja, o primeiro bloco de dados ocupa o primeiro setor alocado e assim sucessivamente (vide Figura 5.27). Este o esquema mais simples de organizao f e ca sica de arquivos que exibe algumas vantagens e desvantagens [DEI92, p. 395] [DEI92, p. 163]. As vantagens so: a o controle de armazenamento do arquivo, isto , a manuteno de e ca diretrios, se reduz ao tamanho do arquivo e ao setor inicial utilizado o e

188

CAP ITULO 5. GERENCIAMENTO DE I/O

Figura 5.27: Organizao f ca sica na alocao cont ca gua as operaes de leitura e escrita so as mais ecientes poss co a veis para qualquer tipo de dispositivo. Enquanto que as desvantagens so: a exige que o tamanho do arquivo seja conhecido no instante de sua criao e ca a ocorrncia de fragmentao (veja discusso na seo5.5.6) reduz a e ca a ca capacidade efetiva de armazenamento, pois novos arquivos s podem o ser criados em reas cont a guas. Sistemas que exigem maior performance nas operaes de leitura e escrita co e que no necessitem de modicaes freqentes no tamanho de seus arquivos a co u podem utilizar ecientemente este esquema de alocao, tal como o sistema ca operacional IBM Vm/CMS. Alocao no cont ca a gua A outra forma poss vel de organizar-se sicamente o armazenamento de arquivos atravs da alocao no cont e e ca a gua. Neste esquema cada bloco do arquivo pode estar armazenado num setor distinto da unidade de disco, de forma que o armazenamento f sico no corresponde ` organizao lgica do a a ca o arquivo, como mostra a Figura 5.28. O principal objetivo da alocao no-cont ca a gua proporcionar um mecae nismo mais apropriado para o armazenamento de arquivos que tendem a ter seus tamanhos aumentados ou diminu dos conforme so utilizados. a A alocao no-cont ca a gua pode ser implementada de vrias formas e dena tre estas as estratgias de alocao orientadas ` setores: e ca a Lista ligada de setores Lista ligada de setores indexada

5.5. SISTEMAS DE ARQUIVOS

189

Figura 5.28: Organizao f ca sica na alocao no cont ca a gua Indexao de ns (i-nodes) ca o Na lista ligada de setores (linked list allocation) cada setor do disco contm um ponteiro que pode ser utilizado para indicar um outro setor e [SG00, p. 376]. Desta forma uma arquivo pode ser armazenado atravs de e uma entrada simples no diretrio que indica o primeiro de uma seqncia de o ue setores, onde cada um destes setores aponta para o prximo. Um ponteiro o com valor nulo indica que o arquivo terminou (vide Figura 5.29). No existe a necessidade dos setores alocados estarem em posies adjacentes tal como na co alocao cont ca gua. O sistema pode manter uma lista de setores livres, que podem ser retirados para a criao e aumento de arquivos ou recuperados ca quando diminuem ou so eliminados. Isto permite um mecanismo de armaa zenamento que acomoda facilmente as variaes de tamanho dos arquivos, co usando integralmente a capacidade do disco, eliminando a necessidade de mecanismos de compactao embora promova a fragmentao da unidade ca ca de disco.

Figura 5.29: Alocao no cont ca a gua com lista ligada Conforme Tanenbaum [TAN92, p. 163] os maiores problemas encontrados no uso do mecanismo de uma lista ligada de setores so: a 1. As operaes de leitura e escrita tendem a ser inecientes devido a co fragmentao inerente deste mtodo. ca e

190

CAP ITULO 5. GERENCIAMENTO DE I/O

2. O acesso randmico deixa de existir pois torna-se necessrio ler cada o a setor alocado para se determinar o prximo at a posio desejada. o e ca 3. O posicionamento do ponteiro dentro de cada setor faz com que o bloco de dados deixe de ser uma potncia de 2, criando alguns inconvenientes e do ponto de vista de programao. ca A lista ligada de setores indexada utiliza o mesmo princ pio de armazenamento de setores interligados eliminando o inconveniente associado ao ponteiro existente em cada setor. E criada uma tabela contendo a relao ca de todos os setores do dispositivos sendo que para cada entrada se associa um ponteiro (retirado dos setores de dados). A entrada do diretrio correso pondente ao arquivo aponta para um setor desta tabela (o primeiro setor do arquivo) que tem associado um ponteiro para a prxima entrada e aso sim sucessivamente. Um ponteiro nulo indica o m do arquivo na tabela. Isto permite o acesso randmico do arquivo e mantm o bloco de dados o e do setor num tamanho que potncia de 2, embora a inecincia devido e e e a fragmentao permanea. Temos uma representao deste esquema de ca c ca organizao na Figura 5.30. ca

Figura 5.30: Alocao no cont ca a gua com lista ligada indexada A principal desvantagem deste mtodo o tamanho que da tabela de e e alocao pode ter em unidades de grande capacidade, por exemplo, uma ca

5.5. SISTEMAS DE ARQUIVOS

191

unidade de 1.2 Gbytes dividida em setores de 1 Kbytes possui uma tabela de alocao com mais de um milho de entradas, que pode consumir espao ca a c precioso para ser mantida integralmente em memria, pois cada entrada o da tabela tipicamente utiliza 3 ou 4 bytes dependendo de como se d a a otimizao do sistema [TAN92, p. 164]. ca O DOS e Windows utilizam esta estratgia para a organizao f e ca sica de oppies e unidades de disco. A tabela de setores chamada de Tabela de e Alocao de Arquivos (le allocation table) que d origem ao nome do ca a sistema de arquivos FAT. Na FAT o registro inicial armazena informaes co sobre a prpria unidade, existindo valores especiais para designao de m o ca de arquivo e setores defeituosos [NOR89, p. 112]. A numerao associada ao nome FAT, como FAT12, FAT16 e FAT32, ca indica o nmero de bits utilizado para numerao dos setores, representando u ca assim a quantidade mxima de setores que pode ser controlada, ou seja, 12 a bits permitem enderear 4.096 setores, 16 bits endeream 64K setores e c c 32 bits possibilitam 4G setores distintos. Isto exibe outra fraqueza desta estratgia, uma unidade de 1.2 GBytes de capacidade possuir setores de e a 512K (307,2K) e 32K (19,2K) com FAT de 12 e 16 bits respectivamente, o que um inconveniente devido a granularidade excessivamente grossa (um e arquivo de 1 byte ocupa sempre um setor). Outra forma comum de organizao de arquivos atravs da indexao ca e e ca de ns (index nodes ou i-nodes). Um n indexado uma pequena estrutura o o e de dados que contm um conjunto de atributos e umas poucas centenas de e entradas onde cada entrada um endereo de um bloco de dados na unidade e c de disco. Desta forma, um pequeno arquivo pode ser mapeado com um unico i-node, otimizando todas as operaes realizadas sobre ele. Se o arquivo no co a puder ser armazenado num unico i-node, alguns dos endereos de blocos c de dados so substitu a dos por endereos de outros i-nodes denominados de c bloco indireto simples (single indirect block ). Para arquivos ainda maiores podem ser usados blocos indiretos duplos ou triplos (double ou triple indirect block ). Este esquema tipicamente utilizado pelos sistemas Unix, como e tambm esquematizado na Figura 5.31. e Uma variao destas estratgias alocar grupos de setores, denominados ca e e blocos (blocks ou extents) ao invs de setores individuais, no que se denoe mina estratgias de alocao orientadas ` blocos. Estas estratgias visam e ca a e combinar algumas das vantagens da alocao cont ca gua e da alocao no ca a cont gua atravs da alocao de blocos ao invs de setores individuais, o e ca e que elimina parcialmente o problema da fragmentao alm de permitir a ca e otimizao da leitura ou escrita atravs de operaes com blocos inteiros ca e co (read ahead ou lazy write). Como indica Deitel [DEI92, p. 397], existem vrias maneiras de se implementar sistemas de alocao orientados ` blocos, a ca a semelhantes as existentes para setores: Lista ligada de blocos (block chaining)

192

CAP ITULO 5. GERENCIAMENTO DE I/O

Figura 5.31: Alocao no cont ca a gua com I-Nodes Lista ligada de blocos indexada (index block chaining) Mapeamento orientado ` blocos (block oriented le mapping) a Na lista ligada de blocos um nmero xo de setores alocado de cada u e vez, isto , os blocos possuem o mesmo tamanho, de modo que cada bloco e contenha um ponteiro para o prximo bloco tal como na lista ligada de o setores, apresentando vantagens e desvantagens idnticas. e Na lista ligada de blocos indexada, cujo princ tambm o mesmo pio e e da lista ligada de setores indexada, poss termos blocos de tamanho e vel xo ou varivel, num mecanismo mais ex a vel para o armazenamento de dados. No mapeamento orientado ` blocos, os ponteiros so substitu a a dos por um esquema de numerao que pode ser facilmente convertido para a ca numerao de setores de uma unidade de disco. As operaes de modicao ca co ca de tamanho de arquivos se tornam bastante geis neste esquema [DEI92, p. a 400].

5.5.6

Fragmentao ca

Sob certos aspectos, os problemas de que devem ser resolvidos para organizao do armazenamento secundrio so semelhantes aos encontrados no ca a a gerenciamento de memria. A forma de armazenamento mais simples a o e disposio dos dados em setores adjacentes das unidades de disco, mas os ca arquivos so freqentemente modicados e eliminados e com isto seus tamaa u

5.5. SISTEMAS DE ARQUIVOS

193

nhos so variveis. Este fato provoca o que se chama de fragmentao, isto a a ca , comeam a surgir setores livres entre setores ocupados. e c Se o armazenamento de arquivos feito atravs da alocao cont e e ca gua temos que uma alterao em seu tamanho impe algum grau de fragmentao, ca o ca pois se seu tamanho aumenta e a regio de armazenamento atual no pode a a ser expandida, a rea anteriormente utilizada provavelmente car livre ena a quanto o arquivo ser rearranjado numa outra rea. Na situao em que o a a ca arquivo tem seu tamanho reduzido, sobraro alguns setores livres no nal a de sua rea original que s podero ser ocupados por pequenos arquivos. a o a Na Figura 5.32 temos uma esquematizao da ocorrncia da fragmentaca e ca o em sistemas de arquivos com alocao cont ca gua e tambm com alocao e ca no cont a gua.

Figura 5.32: Ocorrncia de fragmentao com alocao cont e ca ca gua Na alocao cont ca gua temos que os arquivos so armazenados sempre em a setores consecutivos, assim o desempenho de operaes de leitura e escrita co no comprometido pela fragmentao, por outro lado a utilizao do disco a e ca ca ser comprometida pois setores fragmentados do disco podero permanecer a a livres no possibilitando o armazenamento de arquivos maiores. a Caso o armazenamento de arquivos seja feito atravs de alocao no e ca a cont gua, setores livres passam a ser ocupados de forma descontinua pelos arquivos a medida que seus tamanhos aumentam ou diminuem. Embora o aproveitamento do espao em disco seja integral, as operaes de leitura e c co escrita tero seu desempenho comprometido tanto mais fragmentado esteja a o arquivo sob uso. Notamos que em ambos os casos ocorre a fragmentao. Satyanarayanan ca (1981) efetuou um estudo sobre o tamanho dos arquivos e as operaes co realizadas sobre eles concluindo que:

194

CAP ITULO 5. GERENCIAMENTO DE I/O a maioria dos arquivos de pequeno tamanho, e as operaes de leitura so mais freqentes que as operaes de escrita, co a u co a maioria das operaes de leitura e escrita so seqenciais e co a u que grande parte dos arquivos tem vida curta.

Isto signica que a fragmentao ir ocorrer qualquer que seja a forma ca a de alocao. Como isto pode no ser admiss em certos sistemas, podem ca a vel ser implementados mecanismos de compactao ou desfragmentao que reca ca organizam o armazenamento nos dispositivos de armazenamento de forma a possibilitar a utilizao integral do espao dispon no caso da alocao ca c vel ca cont gua ou de otimizar as operaes de leitura e escrita quando a alocao co ca no-cont e a gua. Outros sistemas oferecem utilitrios que podem realizar esta operao, a ca permitindo ao usurio ou administrador maior controle sobre o armazenaa mento, como ilustrado na Figura 5.33.

Figura 5.33: Utilitrio de desfragmentao de disco do MS-Windows 98 a ca

Referncias Bibliogrcas e a
[BLA87] Uyless BLACK. Computer Networks: Protocols, Standards and Interfaces. Prentice Hall, Englewood Clis, NJ, 1987. [BOR92] BORLAND. Borland C++ 3.1 Programmers Guide. Borland International, Scotts Valey, CA, 1992. [CAL96] Charles CALVERT. Delphi 2 Unleashed, 2nd Edition. Sams Publishing, Indianapolis, IN, 1996. [CON99] CONECTIVA. Manual do Usurio do Conectiva Linux Guarani. a Conectiva, Curitiba, PR, 1999. [CRA04] CRAY. Cray X1 Product Overview. Cray Research Inc., Internet: http://www.cray.com/, recuperado em 01/2004, 2004. [DAV91] William S. DAVIS. Sistemas Operacionais: uma viso sisa temtica. Cmpus, Rio de Janeiro, RJ, 1991. a a [DEI92] [GUI86] Harvey M. DEITEL. An Introduction to Operating Systems, 2nd Edition. Addison-Wesley, Reading, MA, 1992. Clio Cardoso GUIMARAES. Princ e pios de Sistemas Operacioa Edio. Cmpus, Rio de Janeiro, RJ, 1986. nais, 5 ca a

[IBM92a] IBM. IBM DOS 5.02 Technical Reference. IBM, BocaRaton, FL, 1992. [IBM92b] IBM. A Technical Guide to OS/2 2.0. IBM, BocaRaton, FL, 1992. [JAM87] Kris JAMSA. DOS: The Complete Reference. Osborne McGrawHill, Berkeley, CA, 1987. [LAT96] Y. LANGSAM, M. J. AUGENSTAIN, and A. M. TENENBAUM. Data Structures Using C and C++, 2nd Edition. Prentice Hall, Upper Saddle River, NJ, 1996. Gordon LETWIN. Explorando o OS/2. Cmpus, Rio de Janeiro, a RJ, 1989. 195

[LET89]

196

REFERENCIAS BIBLIOGRAFICAS

[NCA04] NCAR. NCAR/SCD Supercomputer Gallery. National Center for Atmospheric Research - Scientic Computer Division, Internet: http://www.scd.ucar.edu/computers/gallery/, recuperado em 01/2004, 2004. [NOR89] Peter NORTON. Guia do Programador para IBM PC. Cmpus, a Rio de Janeiro, RJ, 1989. [PET96] Charles PETZOLD. Programming Windows 95. Microsoft Press, Redmond, WA, 1996. [PIT98] [SG94] David PITTS. Red Hat Linux Unleashed. Sams Publishing, Indianapolis, IN, 1998. Abraham SILBERSCHATZ and Peter Baer GALVIN. Operating System Concepts, 4th Edition. Addison-Wesley, Reading, MA, 1994. Abraham SILBERSCHATZ and Peter Baer GALVIN. Sistemas Operacionais: Conceitos, 5a Edio. Prentice Hall, So Paulo, ca a SP, 2000.

[SG00]

[SGG01] Abraham SILBERSCHATZ, Peter Baer GALVIN, and Greg GAGNE. Sistemas Operacionais: Conceitos e Aplicaes. co Cmpus, Rio de Janeiro, RJ, 2001. a [SHA96] William A. SHAY. Sistemas Operacionais. Makron Books, So a Paulo, SP, 1996. [STA92] [STA96] William STALLINGS. Operating Systems. Macmillan, New York, NY, 1992. William STALLINGS. Computer Organization and Architecture: Designing for Performance, 4th Edition. Prentice Hall, Upper Saddle River, NJ, 1996.

[TAN92] Andrew S. TANENBAUM. Modern Operating Systems. Prentice Hall, Upper Saddle River, NJ, 1992. [TAN95] Andrew S. TANENBAUM. Distributed Operating Systems. Prentice Hall, Upper Saddle River, NJ, 1995.

You might also like