P. 1
Livro de Sistemas Operacionais Excelente

Livro de Sistemas Operacionais Excelente

|Views: 114|Likes:
Publicado porAndré Machado

More info:

Published by: André Machado on Jan 25, 2011
Direitos Autorais:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

01/27/2013

pdf

text

original

Sections

  • Pref´acio
  • Introdu¸c˜ao
  • 1.1 Definindo os sistemas operacionais
  • 1.2 Objetivos de um sistema operacional
  • 1.3 Breve hist´orico
  • 1.3.1 O in´ıcio
  • 1.3.2 D´ecada de 1940
  • 1.3.3 D´ecada de 1950
  • 1.3.4 D´ecada de 1960
  • 1.3.5 D´ecada de 1970 e 1980
  • 1.3.6 D´ecada de 1990
  • 1.3.7 D´ecada de 2000
  • 1.4 Tipos de sistemas operacionais
  • 1.5. RECURSOS E AMBIENTE OPERACIONAL 17
  • 1.5 Recursos e ambiente operacional
  • Processos
  • 2.1 O que ´e um processo computacional
  • 2.1.1 Subdivis˜ao dos processos
  • 2.2 Ocorrˆencia de processos
  • 2.2.1 Processos seq¨uenciais
  • 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 Opera¸c˜oes sobre processos
  • 2.6 Fun¸c˜oes do n´ucleo de sistema operacional
  • 2.7 Competi¸c˜ao por recursos
  • 2.7.1 Regi˜oes cr´ıticas
  • 2.7.2 C´odigo reentrante
  • 2.8 Protocolos de acesso
  • 2.8.1 Solu¸c˜ao com instru¸c˜oes TST ou TSL
  • 2.8.2 Situa¸c˜oes de corrida
  • 2.8.3 Requisitos de um protocolo de acesso
  • 2.9 A solu¸c˜ao de Dekker
  • 2.10 A solu¸c˜ao de Peterson
  • 2.11 Deadlocks
  • 2.11.1 Diagramas de processos e recursos
  • 2.11.2 Condi¸c˜oes para ocorrˆencia de deadlocks
  • 2.11.3 Recupera¸c˜ao de deadlocks
  • 2.11.4 Preven¸c˜ao de deadlocks
  • 2.11.5 Estados seguros e inseguros
  • 2.11.6 Algoritmo do banqueiro
  • 2.12 Comunica¸c˜ao de processos
  • 2.12.1 Buffers e opera¸c˜oes de sleep e wakeup
  • 2.12.2 Sem´aforos
  • 2.12.3 Mem´oria compartilhada
  • 2.12.4 Outros mecanismos de IPC
  • 2.13 Threads
  • 2.13.1 Modelos de multithreading
  • 2.13.2 Benef´ıcios do uso
  • Escalonamento de Processos
  • 3.1 Objetivos do escalonamento
  • 3.2 N´ıveis de escalonamento
  • 3.3 Escalonamento preemptivo e n˜ao preemptivo
  • 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)
  • Figura 3.6: Escalonamento SJF (Shortest Job First)
  • 3.5.4 Escalonamento HRN (Highest Response-Ratio Next)
  • 3.5.5 Escalonamento SRT (Shortest Remaining Time)
  • Figura 3.8: 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 Compara¸c˜ao dos algoritmos de escalonamento
  • Gerenciamento de Mem´oria
  • 4.1 Primeiras considera¸c˜oes
  • 4.2 Multiprograma¸c˜ao
  • 4.3 Organiza¸c˜ao da mem´oria
  • 4.4 Defini¸c˜ao de gerenciamento de mem´oria
  • 4.5 Cria¸c˜ao de programas
  • 4.5.1 Espa¸cos l´ogicos e f´ısicos
  • 4.5.2 Compiladores (compilers)
  • 4.5.3 Ligadores (linkers)
  • 4.5.4 Carregadores (loaders)
  • 4.5.5 Relocadores (swappers)
  • 4.6 Mem´oria virtual
  • 4.7 Modelos de gerenciamento de mem´oria
  • • Monoprogramado com armazenamento real
  • 4.7.1 Monoprogramado com armazenamento real
  • 4.7.2 Particionamento fixo
  • 4.7.3 Particionamento vari´avel
  • 4.7.4 Pagina¸c˜ao
  • 4.7.5 Segmenta¸c˜ao
  • 4.7.6 Pagina¸c˜ao versus Segmenta¸c˜ao
  • 4.7.7 Pagina¸c˜ao e segmenta¸c˜ao combinadas
  • 4.7.8 Tabelas de p´aginas
  • 4.7.9 Algoritmos de troca de p´aginas
  • Gerenciamento de I/O
  • 5.1 M´odulos de I/O
  • 5.2 Opera¸c˜ao de M´odulos de I/O
  • 5.2.1 I/O Programado
  • 5.2.2 I/O com interrup¸c˜oes
  • 5.2.3 I/O com Acesso Direto `a Mem´oria (DMA)
  • 5.3 Tipos de dispositivos de E/S
  • 5.3.1 Conex˜ao de Dados dos I/O
  • 5.3.2 Tipos de Transferˆencia de I/O
  • 5.3.3 Conex˜oes ponto a ponto e multiponto com I/Os
  • 5.4 Dispositivos perif´ericos t´ıpicos
  • 5.4.1 Unidades de disco
  • 5.4.2 Escalonamento de disco
  • 5.4.3 Unidades de fita
  • 5.4.4 Terminais
  • 5.5 Sistemas de arquivos
  • 5.5.1 Arquivos
  • 5.5.2 Diret´orios
  • 5.5.3 Servi¸cos do sistema operacional
  • 5.5.4 Implementa¸c˜ao L´ogica
  • 5.5.5 Implementa¸c˜ao F´ısica
  • 5.5.6 Fragmenta¸c˜ao

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 Hist´rico o 1.1 Fev2004 Revis˜o Geral. Threads. Escalonamento por prioridades. Esa calonamento com m´ltiplas filas. u 1.0 Ago1999 Vers˜o Inicial. a

(C) 2004 Prof. Peter Jandl Jr. Vers˜o 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 s´bio o a pelas pr´prias experiˆncias.” o e ´ (Prov´rbio Arabe) e

iv

. . . . .1 Processos seq¨enciais . . 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 D´cada de 1940 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4. . . . . . . . . . . 1. 2. . . . . . . . . . . . . . . . . . . .2. . . . . . . . .5 Opera¸˜es sobre processos .3 Estado dos processos . . . . . . . . . . 1. 1. . . . . . . . . . . . ca 2. . . . . . . . . . . . .Sum´rio a Pref´cio a 1 Introdu¸˜o ca 1. .1.1 O in´ ıcio . . .3 D´cada de 1950 . . . . . . . . .3. . . 2.1 Solu¸˜o com instru¸˜es TST ou TSL ca co v . . . . . . . .3. . . . . . . . . . . . . . . . . . . .1 Subdivis˜o dos processos . .3. . . . . . . . . . . . . . . . . . . . . . . . . e 1. . .2. . . . . . e 1. . .2 Ocorrˆncia de processos . . . . . . . . .1 PCB . . .4 PCB e tabelas de processos . . . . . . . . . . . . . . . . . . . . . . . .7 D´cada de 2000 . . . . . .4 Tipos de sistemas operacionais . . . . . .7 Competi¸˜o por recursos . .6 Fun¸˜es do n´cleo de sistema operacional . . . . . .1 Regi˜es cr´ o ıticas . . . . .3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 Objetivos de um sistema operacional 1. . . . . . . . .7. . co u 2. . . . . . .1 Definindo os sistemas operacionais . e 1. . . . . e 1. . . . o 2. .8 Protocolos de acesso . . . . . . . a 2. . . . . . . . .1 O que ´ um processo computacional . . . .4 D´cada de 1960 . o 1. . . . 2. . . . . . . . . . . . . 2. . . . . . e 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3. . . . . . . . . . . . . . . . . . 2 Processos 2. . .2 Tabelas de processos . . . . . . .6 D´cada de 1990 . . e 2. . . e 1. . . . . . . . . . . . . . . . . .5 Recursos e ambiente operacional . . . . . . . . . . . 2. . . . . . . . . . . . . . . . . . . .4. .5 D´cada de 1970 e 1980 . . . u 2. . . . . . e 2. . . . . . . . co 2. . . . . . . . . 2. . . . . . . . . . . . . . . . .8. . . . . . . . .2 Processos Paralelos . . .2 C´digo reentrante . 2.3. . . . . . . . .7. . . . . . .3. . . .3 Breve hist´rico . .

.5. . . . . . .2 Multiprograma¸˜o . . . .5 Algoritmos de escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Qualidade do escalonamento . . . . . . . . . . .3 Mem´ria compartilhada . . . . . . . . . . . . . .4 Defini¸˜o de gerenciamento de mem´ria ca o 4. .5. . . 3. . . . . . . . . . . . ca A solu¸˜o de Peterson . 3. . . . .3 Recupera¸˜o de deadlocks . . . . . . .13. . . . . . . . . . .12 2. . . . . . . . 2. . . . 3. . . ca 4. . . .2 N´ ıveis de escalonamento . . . . . . . . .2 Situa¸˜es de corrida . . . . . . . . . .11. . co 4. . . . . . . . . . . . . . . . . . . . . . . . . a 3. . .5 Estados seguros e inseguros . . 3. . 2. . . . . . . .11. . . .6 Escalonamento RR (Round-Robin) . . . . . . .1 Objetivos do escalonamento .11. . . . . . . . .4 Escalonamento HRN (Highest Response-Ratio Next) 3. . . . ca o 4. 3. . . . . A solu¸˜o de Dekker . . . . . . . . . . .4 Preven¸˜o de deadlocks . . . . . .5 Cria¸˜o de programas . . . . .11. . . . . . . . . . .12. . . . . ca Deadlocks . . . . . . . . . .vi 2. . 3. . . . . ca 4 Gerenciamento de Mem´ria o 4. . . . . . . . . . . . . . . . . . . . . . . . ca 4. . . . . . . . .3 Escalonamento preemptivo e n˜o preemptivo . . .12. . . . . .1 Modelos de multithreading . . . .2 Compiladores (compilers) . . . . . . . .5.6 Compara¸˜o dos algoritmos de escalonamento .7 Escalonamento MQ (Multilevel Queues) . . . . . . . .5. . . . . . .13. . . .4 Outros mecanismos de IPC .13 3 Escalonamento de Processos 3. . . . . 3. . . . . . . . . . . . . . . .1 Buffers e opera¸˜es de sleep e wakeup . . . . . ca 2. . . . . . . . . . . . . . . . . . . . . . Threads . . . . . . . . . . . . .5. . . . . . . . . . . . . .10 2.12. . . .6 Algoritmo do banqueiro . . . . . . . . co 2. . . .5. . ca 2. 2. . . . .5. . . . . . o 2. .11. . a 2. . . .3 Requisitos de um protocolo de acesso . .11 2. . . . 3. .11. 3. . . . .9 2. . . . . . .2 Condi¸˜es para ocorrˆncia de deadlocks co e 2. . .5. . ca 2. .5. . . .3 Organiza¸˜o da mem´ria . .5 Escalonamento SRT (Shortest Remaining Time) . . . . . . . . . . . . . . . . .2 Sem´foros . . . . . . . . . . . . . . .5. . . . . . . . 2. . Comunica¸˜o de processos . . . . . .1 Primeiras considera¸˜es . . . . . . .8. 3. . .12. . . . . . . . . . . . . . . . .1 Escalonamento FIFO (First In First Out) . . 3. .3 Escalonamento SJF (Shortest Job First) . . 2. . . . .1 Diagramas de processos e recursos . . .2 Escalonamento HPF (Highest Priority First) . . . . . 4. . . ´ 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. . . . . . . . . . . . . . . . . . . . . . . .2 Benef´ ıcios do uso . . . . . . . . . . . . . . . . . . . . . .8. . . . . . . . . . . . . .8 Escalonamento MFQ (Multilevel Feedback Queues) . . . . . . . . . co 2. . . . . . .1 Espa¸os l´gicos e f´ c o ısicos . . .

. . .2 Opera¸˜o de M´dulos de I/O . . . . . . . o 5. . . . a 5. . . . . . . . . . .7. . . . . . . . . . .5.4. . . . . . . . . . ca 4. . . . 5. . . .1 M´dulos de I/O . real . . .3 Tipos de dispositivos de E/S . . .3 Servi¸os do sistema operacional . . . .7. . . . . . . . . . ca ca 4. . . a 4. . . . . . . . . . .3 Conex˜es ponto a ponto e multiponto com I/Os . . . .3. . . . . . . . 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. . . . . . . . . . . . . . . . .1 Unidades de disco .2 Particionamento fixo . . . . 5. . .5 Segmenta¸˜o . . . . . .4 Terminais . Mem´ria virtual . . . .1 I/O Programado . . . . . . . .7. . . . . . .2. .4. . . . . . . . . . . . . 5.3. . . . . . o 5. . . o 4. . .6 Fragmenta¸˜o . . . . . . . . . . . . . . . . . .4 Carregadores (loaders) . . . 5. . . . . . . . . . . . .3. . . . . . . . . . . .4 Dispositivos perif´ricos t´ e ıpicos . . . .5 Sistemas de arquivos . . . . . . . . . . . . . . . . . . . . 5. . . . . . . . . . . . . . . . c 5. . . . . . . . a 4. .9 Algoritmos de troca de p´ginas . . . . . . . . . . . . . . .7. . . . . . . . . . . .2 Escalonamento de disco . .2 Diret´rios . . . . . . . . . . . .5. a . . . .1 Monoprogramado com armazenamento 4. . . .1 Arquivos . . . .5. . . . . 4.5 Relocadores (swappers) . . . . . . . ca o 5. . . .3 I/O com Acesso Direto ` Mem´ria (DMA) . .3 Unidades de fita . . . . . . . . . . . . . . . . . . . . . . . . . . . .4. . . . . . . . co 5. . .4 Pagina¸˜o . . . . . . . . a o 5. ca Bibliografia . . . . .4. . . . .2 Tipos de Transferˆncia de I/O . . .7. .7. . . . . . . . 4. . . . . . . . . . .7 Pagina¸˜o e segmenta¸˜o combinadas ca ca 4. . . o Modelos de gerenciamento de mem´ria . . . . . .6 Pagina¸˜o versus Segmenta¸˜o . .2. . . . . . . . . . . . . . . . . e 5. . . . . . . . . . . . . . . . .6 4. . . . . . .5. .1 Conex˜o de Dados dos I/O . . . . . . . . . . .5. . . . . . . . . . . . . . .´ SUMARIO 4. . . . . .5 Implementa¸˜o F´ ca ısica . . . . . .5. . . . . . . . . . .3 Ligadores (linkers) . ca o 5. . 5. . . . . . . . .5. . . . . . . . . . . .4 Implementa¸˜o L´gica . .3 Particionamento vari´vel . . . . . . . . . 5. . . .5. .5. . . . . . . . . 5. . . . . . . . . . . .2 I/O com interrup¸˜es . . o 5. . . . . .7. . . . . . . . 5. . . . . . . . . . . . . . . . . . . . . .7 5 Gerenciamento de I/O 5. . . . . . . .2. . . .8 Tabelas de p´ginas . . . . . . . ca 4. . 5. . . . . . . . . . . 4. . . . . . . . . . . . . . . . .7. .7.

viii ´ SUMARIO .

alguns conceitos importantes. Desta forma. s˜o notas de aulas. o No Cap´ ıtulos 3 falamos sobre o escalonamento de processos enquanto que o Cap´ ıtulo 4 trata o gerenciamento de mem´ria. acompanhadas de diagramas. ca Como o pr´prio t´ o ıtulo indica. um breve hist´rico de sua evolu¸˜o e uma classifica¸˜o de seus o ca ca tipos. O Cap´ ıtulo 2 discute os processos computacionais. desenhos. tais como Engenharia da Computa¸˜o. e onde sempre que poss´ s˜o citadas outras fontes bibliogr´ficas. coment´rios e a exemplos que tem como objetivo maior facilitar o entendimento do tema. mas apenas oferecer um texto de referˆncia. t˜o pouco substituir a a vasta bibliografia existente. O Autor 1 . n˜o se pretendeu colocar como um ca a estudo completo e detalhado dos sistemas operacionais. des´ pertando o interesse no tema e principalmente motivando um estudo mais profundo e amplo.Pref´cio a Este texto representa a condensa¸˜o do material apresentado durante as ca aulas da disciplina Sistemas Operacionais. e Que este material possa ser util aos estudantes desta disciplina. An´lise de Sistemas e ca a Sistemas de Informa¸˜o. ministradas ao longo de meu trabalho no magist´rio nos cursos de gradua¸˜o em An´lise de Sistemas e e ca a Engenharia da Computa¸˜o. ıvel a a O Cap´ ıtulo 1 apresenta os Sistemas Operacionais. Finalmente o Cap´ o ıtulo 5 aborda o gerenciamento de dispositivos perif´ricos. sua ocorrˆncia e e as principais quest˜es associadas ao seu controle. organizadas num roteiro a bastante tradicional. t˜o a importante dentro da Ciˆncia da Computa¸˜o assim como em outros cursos e ca correlatos.

2 ´ PREFACIO .

O hardware oferece capacidade computacional bruta. 3] Nesta defini¸˜o surgem alguns novos termos explicados a seguir. implementados como software ou firmware. eletrˆnicos. determina as capacidades deste sistema. o O software ´ o conjunto de todos os programas de computador em opera¸˜o e ca num dado computador. acompanharam a pr´pria evolu¸˜o dos computadores. sua populariza¸˜o ainda esconde sua ca tremenda complexidade interna. O hardca ware ´ o conjunto de dispositivos el´tricos. em termos de suas origens e desenvolvimento. os sistemas operacionais.Cap´ ıtulo 1 Introdu¸˜o ca Neste cap´ ıtulo vamos apresentar os sistemas operacionais. embora tenham se tornado mais comuns e acess´ ıveis. gerenciando cuidadosamente o hardware a para que se obtenha uma performance adequada. sendo a m´quina f´ o a ısica propriamente dita. aparentemente identific´vel pelos dispositivos ou m´dulos que a o comp˜e um sistema computacional. que tornam o hardware utiliz´vel. ´pticos e eletromecˆe e o o a nicos que comp˜e o computador. p. Deitel o ca nos traz a seguinte defini¸˜o de sistema operacional: ca Vemos um sistema operacional como os programas. [DEI92. os computadores sempre foram sistemas de elevada sofistica ca¸˜o em rela¸˜o ao est´gio tecnol´gico de suas ´pocas de desenvolvimento.1 Definindo os sistemas operacionais Desde sua cria¸˜o. seus objetivos e um breve hist´rico de sua evolu¸˜o. 1. O hardware. Tamb´m proporemos uma forma o ca e simples para sua classifica¸˜o e forneceremos alguns outros conceitos imporca tantes. J´ o firmware ´ representado por programas espea e ciais armazenados de forma permanente no hardware do computador que 3 . Neste sentido. ca ca a o e Ao longo dos ultimos 50 anos evolu´ ´ ıram incrivelmente e. Os a sistemas operacionais disponibilizam convenientemente tais capacidades aos usu´rios.

aplicativos de comunica¸˜o e ferramentas ca de administra¸˜o e manuten¸˜o do sistema. exigindo grande conhecimento e esfor¸o para c execu¸˜o de tarefas muito simples. firmware e o SO Por si s´. o hardware do computador dificilmente poderia ser utilizado o diretamente e mesmos assim. programas gr´ficos. software. ´ O firmware geralmente vem acondicionado em circuitos de mem´ria n˜o o a vol´til (ROM. sendo este ultimo um dispositivo microprogramado. navegadores (browsers). ca Como exemplos de dispositivos existentes num sistema podemos citar os circuitos integrados de mem´ria. intera pretadores de comando (shells). compiladores. jogos. que s˜o utilizados num dado sistema computaa cional sob suporte e supervis˜o do sistema operacional. O software deste sistema ou os programas do sistema s˜o representados a pelo sistema operacional e todos os seus componentes (bibliotecas de fun¸˜es co e programas utilit´rios) al´m de todos os outros programas acess´rios do sisa e o tema. tais como editores de texto.1: Hardware. as unidades de disco flex´ ou r´ o ıvel ıgido e o processador do sistema. INTRODUCAO ¸˜ permitem o funcionamento elementar e a realiza¸˜o de opera¸˜es b´sicas ca co a em certos dispositivos do computador. tais como planilhas a eletrˆnicas. geralmente associadas a alguns perif´ricos e a execu¸˜o de outros programas tamb´m especiais. o o aplica¸˜es multim´ co ıdia etc. desenvolvidos ca a com finalidades particulares. Neste n´ ca ıvel.4 CAP´ ITULO 1. sua microprograma¸˜o e o firmware existente neste computador.1 podemos identificar o hardware como sendo os dispositivos f´ ısicos. PROM ou EPROM) sendo os programas ali gravados escritos a geralmente em linguagem de m´quina e destinados a execu¸˜o de opera¸˜es a ca co especiais tal como a auto-verifica¸˜o inicial do sistema (POST ou power on ca self test) e a carga do sistema operacional a partir de algum dispositivo adequado (bootstrap). o computador somente ´ cae . Figura 1. programas de correio eletrˆnico. ca ca Os programas de aplica¸˜o s˜o todos os demais softwares. e ca e Na Figura 1.

cada diferente tipo de computador possui uma arquitetura ine terna distinta que pode se utilizar de diferentes processadores que por sua vez requisitar˜o diferentes linguagens de m´quina. DEFININDO OS SISTEMAS OPERACIONAIS 5 paz de entender programas diretamente escritos em linguagem de m´quina. p. por sua vez. e especialmente desenvolvido para oferecer. a Al´m disso. e eficiˆncia. p. Davis [DAV91]. 1] Os sistemas operacionais s˜o uma camada de software que ”envolve” os a componentes f´ ısicos de um computador. os recursos de um sistema computacional aos seus usu´rios. ou conjunto de programas. pois pere mite que os recursos do sistema computacional sejam usados de maneira eficiente. ´ adequada a existˆncia de uma camada intermedi´ria entre e e a o hardware e os programas de aplica¸˜o que pudesse n˜o apenas oferecer ca a um ambiente de programa¸˜o mais adequado mas tamb´m um ambiente de ca e trabalho mais simples. [TAN92. p. tornando penosa e cana a sativa a tarefa dos programadores. a controlando e organizando o uso destes recursos de maneira que se obtenha um sistema eficiente e seguro. Um sisa tema operacional pode ser pensado como tendo dois objetivos ou desempenhando duas fun¸˜es: conveniˆncia. Shay [SHA96] e outros tamb´m apresentam id´ias semelhantes. Um sistema operacional ´ um programa. . Stallings. da forma mais simples e transparente poss´ ıvel. 222] Silberschatz utiliza praticamente a mesma defini¸˜o. [STA96. intermediando as intera¸˜es entre co estes componentes e os usu´rios ou os programas dos usu´rios. 23]. indicando que um ca sistema operacional ´ um ambiente intermedi´rio entre o usu´rio e o harde a a ware do computador no qual programas podem ser executados de forma conveniente e eficiente [SG00. pois faz o sistema co e computacional mais conveniente de usar.1. co afirma que: Um sistema operacional ´ um programa que controla a execu¸˜o e ca dos programas de aplica¸˜o e atua como uma interface entre o ca usu´rio do computador o hardware do computador. e e Tanenbaum. ao tratar dos objetivos e fun¸˜es dos sistemas operacionais. Neste sentido a a ´ apropriado considerar que os sistemas operacionais podem ser vistos como e uma extens˜o do pr´prio computador ou como gerenciadores dos recursos a o existentes neste computador. define um sistema operacional atrav´s 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 aplica¸˜o podem ser e ca escritos. seguro e eficiente.1. Desta forma.

Historicamente as primeiras interfaces dos sistemas operacionais a eram baseadas em um conjunto de palavras-chave (comandos) e mensagens de di´logo que permitiam a execu¸˜o de tarefas e a comunica¸˜o entre hoa ca ca mem (o operador) e m´quina. e e . assim sendo. mas tamb´m isolando o hardware a e e das aplica¸˜es. ca ca proporcionado n˜o apenas transparˆncia. erros ou omiss˜es. INTRODUCAO ¸˜ Ao inv´s de lidar com a complexidade inerente ao hardware. O sistema co c operacional deve se encarregar de controlar os recursos do computador. Atualmente as interfaces baseadas em modo texto est˜o em desuso. Gerenciar a utiliza¸˜o dos recursos existentes buscando seu uso eficica ente em termos do sistema. um sistema ca operacional deve atender aos seguintes princ´ ıpios: 1. o sistema e operacional oferece a funcionalidade dispon´ no hardware atrav´s de uma ıvel e interface de programa¸˜o orientada a opera¸˜o de cada tipo de recurso. Al´m destes objetivos. Assim temos que o comportamento do sistema operacional co ´ como uma extens˜o do pr´prio hardware ou como uma m´quina virtual. e 3. n˜o ´ razo´vel que o controle destes recursos a e a seja transferido aos programadores pois isto acrescentaria uma sobrecarga desnecess´ria a cada programa. poderiam e o a provocar erros de dimens˜es catastr´ficas. e a o a que possui caracter´ ısticas diferentes da m´quina f´ a ısica real. Estes comandos e mensagens definiam a a Interface Humano-Computador (IHC) daquele sistema. o sistema operacional se come porta como gerente dos recursos do computador. um sistema operacional tamb´m deve proporcie e onar uma interface adequada para que ele possa ser utilizado pelos seus usu´rios. garantindo seu uso adequado. 2. viola¸˜es importantes de seguran¸a etc. Oferecer os recursos do sistema de forma simples e transparente. sendo substitu´ a ıdas por interfaces gr´ficas mais modernas e simples que buscam facilitar a utiliza¸˜o a ca do computador atrav´s de sua aparˆncia atraente e uso intuitivo.2 Objetivos de um sistema operacional A despeito do tipo. mesmo que involunt´rias.6 CAP´ ITULO 1. Imaginando que m´ltiplos programas em execu¸˜o desejem fazer uso dos u ca diversos recursos do hardware. buscando tamb´m otimizar tal uso objetivando e um melhor eficiˆncia do sistema. sofistica¸˜o ou capacidades do computador. 1. sem que fosse poss´ otimizar o uso dos rea ıvel cursos. Al´m disso. acarretando perda de grandes o o quantidades de dados. Garantir a integridade e a seguran¸a dos dados armazenados e procesc sados no sistema e tamb´m de seus recursos f´ e ısicos.

prop˜e uma arquitetura a u o gen´rica para o computador. o o No breve resumo que segue pretende-se enfocar os principais eventos e movimentos relacionados ao desenvolvimento destas m´quinas.3 Breve hist´rico o O desenvolvimento dos sistemas operacionais pode ser melhor observado e compreendido quando acompanhamos a hist´ria do pr´prio computador. No final do s´culo XVIII. utilizada at´ hoje (veja Figura 1. em diferentes pontos do mundo. estas m´quinas eram muito grandes. e c projetos de m´quinas eletromecˆnicas e eletrˆnicas de calcular: a a o 1934 M´quina eletromecˆnica program´vel do engenheiro Konrad Zuse. sendo e ele hoje reconhecido como pai do computador moderno. Em 1870 ´ conse tru´ uma m´quina anal´gica para previs˜o de mar´s por Willian Thomson. consumiam muita a a . a a a 1935 In´ do projeto da m´quina eletrˆnica ABC. Joseph-Marie Jacquard constr´i um e e o tear que utiliza cart˜es de papel˜o perfurado para determinar o padr˜o a o a a ser desenhado no tecido. 1937 John Von Neumann.´ 1.2). a a Charles Babbage constr´i em 1822 a m´quina de diferen¸as e depois. a qual n˜o foi tera minada. Compostas por circuitos baseados em relˆs e outros dispositivos eletroe mecˆnicos. ıdo a o a e que origina os computadores anal´gicos. Na d´cada de 30 come¸am a surgir.3. a e o 1. proposta pelo f´ ca ısico John Vicent Atanasoft. Alguns anos depois esta companhia se transformaria na IBM (International Business Machines). paro a c tindo das id´ias de Jacquard. lentas. a 1.1 O in´ ıcio Por volta de 1643. criando a primeira m´quina program´vel. Em 1890 o Censo Americano utio liza com grande sucesso as m´quinas de tabular de Herman Hollerith. e e 1939 Desenvolvida a primeira calculadora eletromecˆnica dos laborat´rios a o Bell. BREVE HISTORICO 7 1. ıcio a o a para resolu¸˜o de sistemas. Blaise Pascal projeta e constr´i uma m´quina de calcular o a mecˆnica. que deu origem as calculadores mecˆnicas utilizadas at´ meados a a e do s´culo XX. Recentemente comprovou-se que suas id´ias eram corretas.3. As descobertas da ´poca motivaram cientistas de diversas especialidades e a trabalhar no desenvolvimento dos ent˜o chamados c´rebros eletrˆnicos.3. projeta a m´quina anal´ e a ıtica. matem´tico h´ngaro. baseada em v´lvulas. que a funda em 1896 a Tabulating Machine Company.2 D´cada de 1940 e Os primeiros computadores eram realmente grandes m´quinas de calcua lar.

de forma que a m´quina pudesse a o a ser energizada e os c´lculos realizados. o que representava uma tarefa complexa e delicada. co A seguir temos a Figura 3 representando o esquema b´sico de funcia onamento dos processadores.8 CAP´ ITULO 1. utilizado para c´lculos o a de bal´ ıstica externa. Um grupo de t´cnicos treinados. cujo bloco a e processador seria capaz de realizar um conjunto de opera¸˜es matem´ticas co a e l´gicas al´m de algumas opera¸˜es de movimenta¸˜o de dados entre os o e co ca blocos da m´quina.2) onde a seq¨ˆncia de passos a ser executada pela m´quina a ue a fosse armazenada nela pr´pria sem necessidade de modifica¸˜o de seu hardo ca ware. seriam armaa co co zenadas no bloco mem´ria enquanto o bloco de dispositivos de E/S (Entrada o e Sa´ ıda) ou I/O (Input and Output) seria respons´vel pela entrada e sa´ a ıda dos dados. e ca realizavam a conex˜o de tais m´dulos. Estas opera¸˜es. a qual ´ decodificada ca o e . O uso do computador era claramente experimental. determinando quais m´dulos deveriam ser interligados e em que o ordem. que vinha sendo utilizado a alguns anos.2: Arquitetura de Von Neumann O uso destes sistemas exigia um grande grau de conhecimento de sua arquitetura e funcionamento. projetado em conjunto pela IBM e pela Universia dade de Harvard. Os engenheiros exerciam o papel de programadores. Nesta ´poca o computador n˜o era a e a program´vel pois seu hardware era modificado para cada tipo de problema a diferente. embora muito mais caras. Ap´s ligado. chamadas de instru¸˜es. restringindo seu uso ` organismos militares. Esta tecnologia foi progressie ıcil ca vamente substitu´ pelas v´lvulas eletrˆnicas. Um dos primeiros sistemas program´veis constru´ a ıdos foi o computador eletromecˆnicos Mark I. o ENIAC. apresentado em 1944. instru¸˜es e controle do sistema. Com isso os computadores da ´poca a e eram car´ ıssimos. agˆncias goa e vernamentais e grandes universidades. INTRODUCAO ¸˜ energia el´trica e eram de dif´ opera¸˜o. um processador efetua um cio clo de busca por uma instru¸˜o na mem´ria (fetch). Figura 1. O computador de Von Neumann era uma m´quina gen´rica. um pouco mais confi´veis ıda a o a e r´pidas. Nesta d´cada o matem´tico Von Neumann propˆs a constru¸˜o de sise a o ca tema computacional baseada numa arquitetura composta por trˆs blocos e b´sicos (Figura 1. de posse de esquemas de liga¸˜o. Em 1946 o Ex´rcito Americano e revela seu computador eletrˆnico digital.

diretamente em linguagem ca de m´quina. j´ era poss´ a ıvel fabricar e vender computadores para grandes empresas e organismos governamentais. Tais exigˆncias fae ziam que os computadores s´ pudessem ser utilizados por especialistas em o eletrˆnica e programa¸˜o. Com ue co isto nascem os conceitos de programa. ca 1. as id´ias de Von Neumann revolucionaram a constru¸˜o dos come e ca putadores e ditaram a nova dire¸˜o a ser seguida. e Figura 1.3. o IBM 701. A programa¸˜o era feita em assembly. ca tais como acionar certos dispositivos em opera¸˜es repetitivas ou mesmo co . Para program´-los ainda era necess´rio conhecer detalhes sobre seus cira a cuitos e sobre o funcionamento de seus dispositivos. BREVE HISTORICO 9 do ciclo seguinte (decode). Mesmo tais especialistas tinham dificuldade em o ca lidar com diferentes computadores. ou seja. tanto que em 1951 surge o primeiro computador comercial. Ap´s a execu¸˜o repetem-se os cica ´ o ca clos de busca. que determina quais as a¸˜es necess´rias para co a sua execu¸˜o no ultimo ciclo (execute).3 D´cada de 1950 e A descoberta do transistor deu novo impulso ` eletrˆnica e aos computaa o dores.´ 1. Apesar de todas as restri¸˜es tecnol´gicas ca co o da ´poca. um mesmo hardware poderia resolver diferentes tipos de problemas sem necessidade de qualquer modifica¸˜o. Apesar de seu custo ainda alto.3: Funcionamento b´sico dos processadores a Assim sendo. tornou-se necess´rio criar a ca a pequenos programas que os controlassem na execu¸˜o de tarefas cotidianas. Com a evolu¸˜o dos computadores. A repeti¸˜o desta ca ca ca seq¨ˆncia s´ ´ interrompida atrav´s da execu¸˜o de uma instru¸˜o de parada ue oe e ca ca (halt) ou pela ocorrˆncia de um erro grave.3. dado que cada computador possu´ uma ıa estrutura e funcionamento particulares. decodifica¸˜o e execu¸˜o indefinidamente. o Univac-I (Universal Automatic Computer ) e em 1953 a IBM lan¸a seu primeiro computador c digital. bastando que uma ca seq¨ˆncia adequada de instru¸˜es fosse carregada no computador. computador program´vel e com eles a a programa¸˜o de computadores.

10

CAP´ ITULO 1. INTRODUCAO ¸˜

simplificar a execu¸˜o 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 pr´tica representava o computador parado. a Para otimizar a entrada de programas surgiram as m´quinas leitoras de a cart˜o perfurado (semelhantes as m´quinas de tabular constru´ a a ıdas por Herman Hollerith) que aceleravam muito a entrada de dados. Os programadores deveriam ent˜o escrever seus programas e transcrevˆ-los em cart˜es perfua e o rados. Cada programa e seus respectivos dados eram organizados em conjuntos denominados jobs que poderiam ser processados da seguinte forma: os v´rios jobs de diferentes usu´rios eram lidos por uma m´quina leitora de a a a cart˜es que gravava os dados numa fita magn´tica. Esta fita era levada para o e o computador propriamente dito que lia os jobs, um a um, gravando uma outra fita magn´tica com os resultados de cada job. Esta fita de sa´ era e ıda levada a outro m´quina que lia a fita e imprimia as listagens, devolvidas aos a usu´rio juntamente com seus cart˜es. a o

Figura 1.4: Sistema Univac, 1951 (processamento em lote - batch) Apesar da natureza seq¨encial do processamento, para os usu´rios 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 come¸am a surgir. c Ainda na d´cada de 50 surgiram a primeira linguagem de programa¸˜o 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 interrup¸˜o 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

D´cada de 1960 e

Buscando uma utiliza¸˜o mais eficiente 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 sofisticada. Ao mesmo tempo em que se buscava um uso mais eficiente e seguro do computador, estudavam-se alternativas para que pessoas menos especializadas nos aspectos construtivos da m´quina pudessem utilizar o computador, se a concentrando em suas verdadeiras tarefas e ampliando as possibilidades de uso dos computadores. Nesta d´cada aparece o COBOL (Commom Business Oriented Lane guage), linguagem de programa¸˜o especialmente desenvolvida para o Penca t´gono americano para auxiliar o desenvolvimento de sistemas comerciais. a Em 1961 a Farchild inicia a comercializa¸˜o 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 avan¸os ocorridos na d´cada de 60 foi a c e utiliza¸˜o da multiprograma¸˜o. Segundo Deitel: ca ca Multiprograma¸˜o ´ quando v´rios jobs est˜o na mem´ria princa e a a o cipal simultaneamente, enquanto o processador ´ chaveado de um e job para outro job fazendo-os avan¸arem enquanto os dispositic vos perif´ricos s˜o mantidos em uso quase constante. [DEI92, p. e a 4] Enquanto o processamento chamado cient´ ıfico era muito bem atendido pelo processamento em lote comum o mesmo n˜o acontecia com processaa mento dito comercial. No processamento cient´ ıfico ocorre a execu¸˜o de ca grande quantidade de c´lculos 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 insignificante, da´ este comı portamento ser chamado CPU Bounded. J´ no processamento comercial o a processador permanece bastante ocioso dado que os c´lculos s˜o relativaa a mente simples e o uso de I/O ´ freq¨ente dada a quantidade de dados a ser e u processada, temos um comportamento I/O Bounded. A multiprograma¸˜o permitiu uma solu¸˜o para este problema atrav´s ca ca e da divis˜o da mem´ria em partes, chamadas parti¸˜es, onde em cada divis˜o a o co a um job poderia ser mantido em execu¸˜o. Com v´rios jobs na mem´ria o ca a o processador permaneceria ocupado o suficiente para compensar o tempo das opera¸˜es mais lentas de I/O. co A utiliza¸˜o de circuitos integrados na constru¸˜o de computadores coca ca merciais e a cria¸˜o de fam´ ca ılias de computadores compat´ ıveis iniciadas com o IBM System/360 inaugurou uma nova era na computa¸˜o e a expans˜o de ca a sua utiliza¸˜o. Outra t´cnica utilizada era o spooling (simultaneous peripheca e ral operation on line), isto ´, a habilidade de certos sistemas operacionais em e ler novos jobs de cart˜es ou fitas armazenado-os em uma ´rea tempor´ria o a a

12

CAP´ ITULO 1. INTRODUCAO ¸˜

Figura 1.5: Parti¸˜es de mem´ria num sistema multiprogramado co o do disco r´ ıgido interno para uso posterior quando uma parti¸˜o de mem´ria ca o fosse liberada [TAN92, p. 9]. Apesar destas novas t´cnicas, os sistemas da ´poca operavam basicae e mente em lote. Assim, enquanto satisfaziam as necessidades mais comuns de processamento comercial e cient´ ıfico, n˜o ofereciam boas condi¸˜es para a co o desenvolvimento de novos programas. Num sistema em lote, a corre¸˜o de ca um problema simples de sintaxe poderia levar horas devido a rotina imposta: prepara¸˜o dos cart˜es, submiss˜o do job no pr´ximo lote e a retirada dos ca o a o resultados v´rias horas ou at´ mesmo dias depois. a e Tais problemas associados ao desenvolvimento de software motivaram a concep¸˜o de sistemas multiprogramados, isto ´, sistemas que permitissem o ca e uso simultˆneo do computador por diversos usu´rios atrav´s do pseudoparaa a e lelismo. O pseudoparalelismo poderia ser obtido com o chaveamento do processador entre v´rios processos que poderiam atender os usu´rios desde que a a fossem dotados de interfaces interativas. A id´ia central destes sistemas era e dividir o poder computacional de um computador entre seus v´rios usu´rios, a a fornecendo uma m´quina virtual para cada um destes. Esta m´quina vira a tual deveria passar a impress˜o de que o computador estava integralmente a dispon´ para cada usu´rio, mesmo que isto n˜o 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 seq¨encialmente enu tre os processos de cada usu´rio, de forma que a espera entre os intervalos a fosse impercept´ para os usu´rios. 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 necess´rio a mas apenas um a cada ciclo. Com isto, a capacidade de processamento da 1 m´quina ficava dividida entre os usu´rios do sistema a raz˜o de n , onde n ´ a a a e o n´mero de usu´rios do sistema. u a O mecanismo central de funcionamento destes sistemas ´ a interrup¸˜o. e ca Uma interrup¸˜o ´ uma forma de parar a execu¸˜o de um programa qualca e ca

´ 1.3. BREVE HISTORICO

13

quer, conduzindo o processador a execu¸˜o de uma outra rotina, previaca mente especificada que ap´s ser executada por completo, permite o retorno o ao programa original, sem preju´ para execu¸˜o do primeiro. ızo ca Os sistemas em tempo repartido tamnb´m criaram as necessidades dos e mecanismos de identifica¸˜o de usu´rio (userid e password ), dos mecanismos ca a de in´ e t´rmino de sess˜o de trabalho (login ou logon), da existˆncia de ıcio e a e contas de usu´rio, etc. a

Figura 1.6: Ciclo de trabalho em sistemas de tempo repartido Um dos processos de cada usu´rio poderia ser um interpretador de coa mandos (shell ) que representaria a interface do computador para o usu´rio. 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 tamb´m s˜o conhecidas como interfaces em modo e a texto. As maiores dificuldades que surgiram durante o desenvolvimento destes sistemas foram a solu¸˜o dos problemas associados ao compartilhamento ca dos recursos, ` organiza¸˜o dos usu´rios e das tarefas do sistema, al´m dos a ca a e mecanismos de seguran¸a e privacidade. c

1.3.5

D´cada de 1970 e 1980 e

Estas d´cadas s˜o marcadas especialmente pelo crescimento em tamanho, e a sofistica¸˜o 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 servi¸os para terceic ros. Surge o primeiro microprocessador comercial integrado em um unico ´ chip, o Intel 4004 em 1971. Na d´cada de 70 come¸am a surgir pequenos e c computadores destinados ao uso pessoal ou dom´stico, come¸ando 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 lan¸ado em 1976. Come¸am a ser desenvolvidas as primeiras c c aplica¸˜es comerciais dos microcomputadores. co A d´cada de 80 viu o surgimento da gera¸˜o do microcomputadores, o e ca boom dos sistemas desktop a partir do lan¸amento do IBM-PC (Personal c Computer) em 1981 e o desenvolvimento de uma enorme ind´stria de hardu

pela come e co puta¸˜o pessoal port´til e pela interoperabilidade. aplica¸˜o. fabricados quase que artesanale mente. processamento vetorial. software e servi¸os originadas nestes eventos. alguns milh˜es de linhas de programa s˜o necess´rias para a o a a cria¸˜o de um sistema operacional que atenda em parte tais necessidades. Sistemas de correio eletrˆnico.3. sistemas distribu´ ıdos. processamento paralelo etc. 1 . Corba. Na mesma d´cada de 80 c e surgem empresas especializadas em arquiteturas de alto desempenho e s˜o a desenvolvidos os primeiros supercomputadores tais como os modelos 1-A ou X-MP da Cray Research. Al´m disso a eletrˆnica embarcada come¸a a ser tore o c nar presente em autom´veis e utens´ o ılios dom´sticos.667 GFlops1 [NCA04]. educa¸˜o ` o a ca a distˆncia. Os notebooks. Disp˜e-se de microcomca a o putadores cujo poder de processamento ´ maior do que os mainframes da e d´cada de 1970. f´ ısica atˆmica. ferramentas CASE a sofisticadas para modelagem de dados e sistemas. vendedores e outros profissionais liberais. Internet. mesmo aqueles cuja atividade fim n˜o ´ a inform´tica. ca sendo necess´rio adapt´-los aos mais diversos tipos de aplica¸˜o e usu´rio. ATM. Engineering ou Manufacturing). u desenvolvimento.14 CAP´ ITULO 1. a e a Mesmo estes pequenos aparelhos possuem vers˜es simplificadas de sistemas o operacionais. In´meras tecnologias de projeto. novas necessidades e maior complexidade aos sistemas operacionais contemporˆneos. multim´ a ıdia. complexos sistemas de CAD-CAE-CAM (Computer Aided Design. come¸am a ser tornar m´quinas fant´sticas. INTRODUCAO ¸˜ ware. tais como as requerico das pela metereologia. Java. profissionais de design. grupos de discuss˜o. adicionando dica ca versidade.6 D´cada de 1990 e Esta d´cada ´ marcada pelas esta¸˜es de trabalho (workstations). palmtops e PDAs (personal digital assistents) representam o m´ximo em portabilidade e flexibilidade. farmacˆutica. permitindo que uma gama maior de servi¸os e funcionalidac des sejam oferecidas. E a a ca a para dar suporte a tremenda complexidade destes programas. Tais equipamentos s˜o free a quentemente empregados para simula¸˜es complexas. e est˜o grandemente incorporaa a dos no cotidiano de executivos. circuitos de mem´ria de maior capacidade o A capacidade de processamento computacional (computer power ) ´ usualmente mee dida em termos do n´mero de opera¸˜es em ponto flutuante completas por segundo u co (Flops). a ind´stria de u hardware vem continuamente desenvolvendo novos processadores tamb´m e com velocidade cada vez maior. Os supercomputadores. engenharia o e entre outras. astrof´ ısica. a Com isto. co Ferramentas de desenvolvimento r´pido (RAD tools). integra¸˜o e interoperabilidade. al´m das tradicionais e e aplica¸˜es industriais. tal como o Cray Y-MP c a a capaz de processar at´ 2. 1.

3. e o emprego de clusters (agrupamentos) de computadores geograficamente dispersos e interligados atrav´s da Internet ou conectados atrav´s de redes e e locais de alto desempenho tamb´m vem se tornando mais comum. Gra¸as ` pesquisa e a c a evolu¸˜o dos sistemas distribu´ ca ıdos. imprescind´ como ca e u ıvel ferramenta para o homem moderno. conhecidos como IBM BlueSky e Cray X1 (Figura 1. Exemplos disso s˜o os novos sisca a temas da IBM e da Cray Research.7 D´cada de 2000 e A supercomputa¸˜o se torna superlativa.4. workstation e notebook e velocidade bem como dispositivos perif´ricos cada vez mais sofisticados.8) que.1. respectivamente. O n´mero de usu´rios de computador tamb´m a u a e cresce vertiginosamente. e tudo atrav´s das novas tecnologias. servi¸os e solu¸˜es. TIPOS DE SISTEMAS OPERACIONAIS 15 Figura 1. como e alternativa mais econˆmica e de desempenho semelhante aos supercompuo tadores. e 1. O desenvolvimento e miniaturiza¸˜o de novos componentes eletrˆnicos ca o em adi¸˜o e a utiliza¸˜o de novos processos de fabrica¸˜o associados ` grande ca ca ca a expans˜o das redes digitais de telefonia m´vel permitem que muitos milh˜es a o o de usu´rios se beneficiem de equipamentos que somam as caracter´ a ısticas de telefones port´teis com PDAs cada vez mais sofisticados. c co Com tudo isso a computa¸˜o ´. os quais s˜o comparados segundo alguns aspectos a considerados importantes como pode ser visto na Tabela 1. 1. tornando o desenvolvimento cont´ ınuo dos sistemas operacionais uma tarefa essencial.4 TFlops [CRA04]. . tem capacidades de processamento de 6. tal como as t´cnicas de grid computing.4 Tipos de sistemas operacionais Identificamos atrav´s da hist´ria dos sistemas operacionais alguns tipos de e o sistemas operacionais. sem d´vida alguma. impulsionando os fabricantes a criarem novos produtos.1.7: Servidor.323 TFlops [NCA04] e 52. a Os computadores dedicados e os de uso gen´rico est˜o se tornando cada e a vez mais populares em contraste com as necessidades e exigˆncias mais soe fisticadas de seus usu´rios.

uma resposta produzida num intervalo de 30 segundos pode ser considerada normal levando-se em conta a natureza e complexidade da opera¸˜o solicitada. INTRODUCAO ¸˜ Figura 1. intervalos desta ordem de grandeza ou ca superiores tornam enfadonho e cansativo o trabalho com computadores. que representa o intervalo de tempo decorrido entre um pedido ou solitica¸˜o de processamento (por exemplos. Embora normal.16 CAP´ ITULO 1. desta forma. embora sejam admitidas esperas mais longas. Por exemplo. ca a O tempo de resposta (response time) ´. Tempos de resposta da ordem de alguns segundos conca figuram sistemas interativos. a entrada de um coca mando ou execu¸˜o de um programa) e a resposta produzida pelo sistema ca (realiza¸˜o das opera¸˜es solicitadas ou finaliza¸˜o do programa ap´s sua ca co ca o execu¸˜o completa). sem intermedia¸˜o e dentro de intervalos de tempo razo´veis. podendo receber as respostas deste.1: Tipos de sistemas operacionais Tipo de SO Interativo Tempo de Produtividade Multiusu´rio a Resposta (Throughput) Open Sim Baixo Baixa N˜o a Shop Irregular Batch N˜o a Alto M´dia Alta e Sim Simples Regular Batch com N˜o a Alto M´dia Alta e Sim Spooling Regular Tempo Sim Baixo M´dia e Sim Repartido Previs´ ıvel Tempo Sim Baixo M´dia e Sim Real Previs´ ıvel A interatividade ´ o aspecto que considera se o usu´rio utiliza diree a tamente o sistema computacional. uma medida e de interatividade. .8: Supercomputador Cray X1 Tabela 1.

enquanto outras s˜o orientadas ao sistema ca a em si. determina suas capacidades brutas. a A produtividade n˜o deve ser confundida com o desempenho bruto do a processador do sistema (sua capacidade de processamento). mas simultaneamente envolt´ria deste. atrav´s de sua interface. a a co Desta forma o sistema operacional. ou seja. J´ a produtividade (throughput) ´ uma medida de trabalho relativa do a e sistema. ou seja. Unidades poss´ ca ıveis do throughput s˜o: programas por hora. unidades de fita. Todos os elementos funcionais e do computador s˜o considerados recursos do sistema computacional e s˜o. expressa usualmente em tarefas completas por unidade de tempo. tal como a taxa de utiliza¸˜o do processador ou a produtividade ca [DEI92. tal como o tempo de a a resposta ou o tempo de rea¸˜o. seus verdadeiros limites. O sistema operacional o est´ sobre o hardware e firmware pois deles depende para sua pr´pria exea o cu¸˜o. 423]. ´ uma medida que relaciona o trabalho efetivamente produzido e e o tempo utilizado para realiza¸˜o deste trabalho. representados pelos dispositivos que o comp˜e e que podem ser o utilizados pelos usu´rios. sua parte f´ ısica. Ao mesmo tempo ´ uma camada envolt´ria pois pretende oferecer os ca e o recursos do computador ao usu´rio do sistema minimizando os aspectos de a como s˜o tais dispositivos ou como ser˜o feitas as opera¸˜es que os utilizam. impressoras. 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 gerˆncia do pr´prio sistema computacional. a a geralmente. 1. tarefas por hora. p.5 Recursos e ambiente operacional O hardware do computador. mouse. scanners. unidades leitoras/gravadoras de CD. algumas s˜o orientadas ao usu´rio. define uma e nova m´quina que ´ a combina¸˜o de um certo hardware com este sistema a e ca operacional. DVDs etc. ´ aparentemente capaz de realizar e tarefas de um modo espec´ ıfico ditado pela pr´pria interface. jobs por dia etc. RECURSOS E AMBIENTE OPERACIONAL 17 O tempo de rea¸˜o (reaction time) tamb´m ´ outra medida de interaca e e tividade a qual considera o tempo decorrido entre a solicita¸˜o de uma a¸˜o ca ca e seu efetivo processamento. placas de rede ca ou comunica¸˜o. e por si s´. Note que o amo biente operacional ´ distinto do hardware. O conjunto de hardware e sistema operacional. e o Podemos notar que dentre estas medidas de performance (existem ainda diversas outras). n˜o ´ capaz de copiar um determinado arquivo de uma unidade o a e . usualmente chamado de plataforma ou ambiente operacional. isto ´. ou seja: monitores de v´ a ıdeo. mesas digitalizadoras.5. unidades de disco flex´ ou r´ ca ıvel ıgido. portas de comunica¸˜o serial e paralela. pois o hardware do computador.1. teclado. O sistema operacional aparece como uma camada sobre o hardware e firmware.

Tais possibilidades s˜o bastante a atraentes. Para realizar esta c´pia. na verdade. enquanto o sistema operacional apenas intermedia esta opera¸˜o atrav´s de sua interface. passando pela localiza¸˜o das partes do arquivo origem ca e das ´reas dispon´ a ıveis no disquete de destino.18 CAP´ ITULO 1. uma o s´rie procedimentos devem ser executados. ca e Observamos que a cria¸˜o de uma interface. uma simplifica¸˜o obtida atrav´s da automatiza¸˜o da tarefa e ca e ca atrav´s de sua programa¸˜o no sistema operacional. pois se cada sistema operacional tem a capacidade de ”transformar”o hardware de um computador em um determinado ambiente operacional. sem a necessidade do ca conhecimento de detalhes de como a tarefa ´ verdadeiramente realizada.dvi a:\ ou. Atrav´s da interface do sistema operacional. INTRODUCAO ¸˜ de disco r´ ıgido para uma unidade de disquete. co Figura 1. para um sisca a a tema operacional ´ extremamente importante 2 . tal a¸˜o poderia ser poss´ e ca ıvel atrav´s de um comando fornecido dentro de um console (uma interface de e modo texto. e A aparentemente expans˜o das capacidades do hardware do computador a ´.10).9. se dispusermos de uma interface gr´fica (Figura 1. dotados de um mesmo u sistema operacional. O hardware ´ realmente e ca e o realizador da tarefa. atrav´s de uma a e opera¸˜o visual frequentemente denominada arrastar e soltar (drag and ca drop) devido as a¸˜es realizadas com o mouse. isto eq¨ivale a dizer que computadores diferentes. atrav´s do sistema operacional temos a impress˜o e a de que o computador se tornou capaz de realizar a tarefa desejada atrav´s e do comando dado ou da opera¸˜o visual efetuada. gr´fica ou n˜o. oferecer˜o transperentemente um ambiente operacional a .9: Interface em modo texto (linha de comando ou console) Enquanto o hardware isolado n˜o permitia a realiza¸˜o direta da tarefa a ca de copiar um arquivo. pois determinam a cria¸˜o e ca de um ambiente operacional consistente. at´ a transferˆncia efetiva e e dos dados. indo desde o acionamento das e unidades utilizadas. tal como mostra a Figura 1. por exemplo: copy so.

convenientes e uso simplificado. 3. Por exemplo. ca e . ca Para estudarmos os sistemas operacionais devemos primeiro no familiarizar com o conceito de processo. Esta possibilidade propicia as seguintes vantagens: 1. ou seja. ca 2. testados e utilizados em diferentes computadores dotados de um mesmo SO.5. Determina¸˜o de um ambiente de trabalho equivalente para os usu´ca a rios.10: Interface gr´fica a idˆntico. 2 O projeto de interfaces consistentes. Depois ser˜o estudadas co a a administra¸˜o da execu¸˜o dos programas no sistema. Redu¸˜o das necessidades de treinamento e acelera¸˜o do processo de ca ca familiariza¸˜o e aprendizado no novo ambiente. Cria¸˜o de um ambiente de desenvolvimento semelhante. que podem desconhecer as diferen¸as entre os diversos computac dores dotados de um mesmo sistema operacional (plataforma de opera¸˜o).1. onde outros ca programas podem ser desenvolvidos. RECURSOS E AMBIENTE OPERACIONAL 19 Figura 1. fundamental para uma compreens˜o mais a ampla dos problemas envolvidos e de suas solu¸˜es. se comportar˜o como se fossem m´quinas de um mesmo e a a tipo. bem como sua avalia¸˜o. o gerenciamento de ca ca mem´ria e tamb´m dos dispositivos de entrada e sa´ o e ıda. com a conseq¨ente cria¸˜o u ca de uma plataforma de desenvolvimento. o emprego de uma distribui¸˜o do Linux em microcomca putadores baseados em processadores na Intel oferece o mesmo ambiente que workstations IBM utilizando este mesmo sistema operacional. ´ uma disciplina compreendida como IHC ou Interface Humano-Computador.

20 CAP´ ITULO 1. INTRODUCAO ¸˜ .

os dados em uso. manuais ca ou autom´ticas. Simplificando. Al´m disso. o que envolve o c´digo do programa. usualmente possuindo um objetivo definido.Cap´ ıtulo 2 Processos O estudo e o desenvolvimento dos sistemas operacionais requer a compreens˜o de um conceito fundamental: processo computacional. Esta defini¸˜o traz algumas implica¸˜es: apenas as atividades que aconca co tecem num sistema computacional s˜o compreendidas como sendo processos a computacionais. surgem uma s´rie de e problemas que devem ser adequadamente equacionados dentro de qualquer sistema operacional. Outro ponto importante ´ a dura¸˜o finita. podemos entender um processo como um programa em execu¸˜o. que ocorrem dentro de um computador podem ser descritas a como processos computacionais. que junto deste importante conceito. tendo dura¸˜o finita e utilizando uma quanca tidade limitada de recursos computacionais. um processo utiliza ao menos um dos recursos a e computacionais existentes para caracterizar seu estado. pois isto ime ca plica que um processo computacional. a compila¸˜o de um proo ca grama ou a execu¸˜o de uma rotina qualquer. Todas as atividades. sua pilha (stack ) e o contador de programa al´m de e outras informa¸˜es relacionadas a sua execu¸˜o.1 O que ´ um processo computacional e Um processo computacional ou simplesmente processo pode ser entendido como uma atividade que ocorre em meio computacional. co ca Desta forma. n˜o existem processos ca a instantˆneos. temos que a impress˜o de um documento ´ um processo a e computacional assim como a c´pia de um arquivo. 2. ou seja. os registraca o dores do processador. Atualmente quase todos os computadores s˜o capazes de realizar diversas a 21 . Veremos que a os processos computacionais constituem a unidade b´sica de administra¸˜o a ca de um sistema e. por mais r´pido ou curto que possa a ser tem sempre uma dura¸˜o maior que zero.

podem ser decompostos em processos componentes mais simples que o processo como um todo. co a O termo processo (process) ´ muitas vezes substitu´ pelo termo tarefa e ıdo (task ) e pode assumir um dos seguintes significados: • um programa em execu¸˜o. para depois executar outro programa por outro pequeno intervalo de tempo e assim sucessivamente. o que permite um detalhamento da realiza¸˜o de sua tarefa ou do seu modo de opera¸˜o. O n´ co a ıvel adequado de divis˜o de um processo ´ aquele que permite um entendimento preciso a e dos eventos em estudo. PROCESSOS tarefas ao mesmo tempo. ou seja. A administra¸˜o de v´rios diferentes programas em execu¸˜o concomica a ca tante ´ o que permite o funcionamento eficiente dos computadores modernos.1 Subdivis˜o dos processos a Outro ponto importante ´ que os processos computacionais podem ser die vididos em sub-processos. • uma entidade que pode utilizar um processador ou • uma unidade que pode ser despachada para execu¸˜o. chamado de paralelismo virtual e ou pseudoparalelismo. mas durante um intervalo de tempo maior ele poder´ a ter executado trechos de muitos programas criando a ilus˜o de paralelismo. onde cada uma destas tarefas pode representar um ou mesmo mais processos. isto ´. depende do tipo de problema em quest˜o e a tamb´m da solu¸˜o pretendida. Num instante de tempo qualquer. • o esp´ ırito ativo de um procedimento. a Este comportamento ´.22 CAP´ ITULO 2. O processo e criador ´ chamado de processo-pai (parent process) enquanto os processos e . e ca Processos tipicamente tamb´m podem criar novos processos.1. em pequenos intervalos de tempo. algumas vezes. o processador executa um e programa durante um pequeno intervalo de tempo. ou seja. ca • uma atividade ass´ ıncrona. ca 2. Em computadores com dois ou mais processadores ´ e poss´ a existˆncia de paralelismo verdadeiro pois cada processador pode ıvel e executar um processo independentemente. o processador ´ chaveado de processo em a e processo. ou seja. e ao mesmo tempo conferindo-lhe complexa organiza¸˜o e estrutura pois tal ca administra¸˜o n˜o ´ simples e requer a considera¸˜o de muitos fatores e ca a e ca situa¸˜es diferentes. Esta ca ca an´lise aprofundada dos processos atrav´s de sua decomposi¸˜o em suba e ca processos pode ser feita quase que indefinidamente. mesmo que improv´veis. Para funcionarem desta forma tais computadores s˜o multiprogramados. o processador estar´ executando apenas a um dado programa. at´ o exagerado limite e das micro-instru¸˜es do processador que ser´ utilizado.

ˆ 2.2. OCORRENCIA DE PROCESSOS

23

criados s˜o denominados de processos filhos (child process). Um processoa filho tamb´m pode criar novos processos, permitindo a cria¸˜o de ´rvores de e ca a processos hierarquicamente relacionados, como exemplificado na Figura 2.1.

Figura 2.1: Subdivis˜o de um processo a

2.2

Ocorrˆncia de processos e

´ E importante estudarmos os processos computacionais porque a raz˜o de a ser dos computadores ´ a realiza¸˜o de certas atividades de maneira mais e ca r´pida e confi´vel do que seria poss´ para o homem. Como cada processo a a ıvel precisa de recursos para ser executado e conclu´ ıdo, a ocorrˆncia de processos e significa a utiliza¸˜o 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 exigˆncias dos e processos em termos de recursos. Um crit´rio muito importante de an´lise dos processos computacionais e a ´ aquele que considera os processos segundo sua ocorrˆncia, isto ´, a obe e e serva¸˜o de seu comportamento considerando o tempo. Neste caso ter´ ca ıamos os seguintes tipos de processos: Seq¨ enciais S˜o 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 s˜o aqueles que ocorrem um de cada u a vez no tempo, como numa s´rie de eventos (veja Figura 2.2), temos que para e um dado processo, todos os recursos computacionais est˜o dispon´ a ıveis, ou seja, como s´ ocorre um processo de cada vez, os recursos computacionais o podem ser usados livremente pelos processos, n˜o sendo disputados entre a processos diferentes, mas apenas utilizados da maneira necess´ria por cada a processo.

Figura 2.2: Diagrama-exemplo de processos seq¨enciais u Esta aparente situa¸˜o de simplicidade esconde um outro fato alarmante: ca como ´ muito improv´vel que um processo utilize mais do que alguns poucos e a recursos do sistema, todos os demais recursos n˜o utilizados ficar˜o ociosos a a por todo o tempo de execu¸˜o deste processo. No geral, com a execu¸˜o de ca ca um unico processo, temos que a ociosidade dos diversos recursos computa´ cionais ´ muito alta, sugerindo que sua utiliza¸˜o ´ pouco efetiva, ou, em e ca e outros termos, invi´vel economicamente. a

2.2.2

Processos Paralelos

Os processos paralelos s˜o aqueles que, durante um certo intervalo de a tempo, ocorrem simultaneamente, como mostra Figura 2.3. Se consideramos a existˆncia de processos paralelos, ent˜o 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 tamb´m sua e natureza, os processos paralelos podem ser classificados nos seguintes tipos:

2.3. ESTADO DOS PROCESSOS

25

Independentes Quando utilizam recursos completamente distintos, n˜o se a envolvendo em disputas com outros processos. Concorrentes Quando pretendem utilizar um mesmo recurso, dependendo de uma a¸˜o do sistema operacional para definir a ordem na qual os ca processos usar˜o o recurso. a Cooperantes Quando dois ou mais processos utilizam em conjunto um mesmo recurso para completarem uma dada tarefa. Como n˜o se pode prever quais os tipos de processos que existir˜o num a a sistema computacional, o sistema operacional deve estar preparado para administrar a ocorrˆncia de processos paralelos concorrentes em quantidade, e ou seja, dever´ assumir a complexidade de administrar e organizar a coa existˆncia de in´meros processos diferentes disputando todos os tipos de e u recursos instalados no sistema. Apesar da maior complexidade, a existˆncia de processos paralelos pere mitem o melhor aproveitamento dos sistemas computacionais e mais, atrav´s e do suporte oferecido pelo sistema operacional passa a ser poss´ ıvel a explora¸˜o do processamento paralelo e da computa¸˜o distribu´ ca ca ıda.

2.3

Estado dos processos

Dado que um processo pode ser considerado como um programa em execu¸˜o, num sistema computacional multiprogramado poder´ ca ıamos identificar trˆs estados b´sicos de existˆncia de um processo: e a e Pronto (Ready ) Situa¸˜o em que o processo est´ apto a utilizar o proca a cessador quando este estiver dispon´ ıvel. Isto significa que o processo pode ser executado quando o processador estiver dispon´ ıvel. Execu¸˜o (Running ) Quando o processo est´ utilizando um processador ca a para seu processamento. Neste estado o processo tem suas instru¸˜es 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 opera¸˜o de entrada ou sa´ a ca ıda, seu processamento fica suspenso at´ que tal opera¸˜o 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 transi¸˜es entre os estados relacionaco dos, como ilustra a Figura 2.4. Devemos observar que entre os trˆs estae dos b´sicos existem quatro transi¸˜es poss´ a co ıveis, isto ´, quatro situa¸˜es de e co modifica¸˜o de estado que correspondem ` a¸˜es espec´ ca a co ıficas do sistema operacional com rela¸˜o ao processos: Despachar (Dispatch), Esgotamento ca

26

CAP´ ITULO 2. PROCESSOS

(TimeRunOut), Bloqueio (Block ) e Reativar (Awake). Al´m destas quae tro transi¸˜es existe outras duas correspondentes a Cria¸˜o (Create) e Fico ca naliza¸˜o (Terminate) do processo. ca

Figura 2.4: Diagrama-exemplo de processos paralelos Quando solicitamos a execu¸˜o de um programa, o sistema operacional ca cria (Create) um processo atribuindo a este um n´ mero de identifica¸˜o u ca ou seu PID (Process Identifier ), um valor inteiro que servir´ para distinguir a este processo dos demais. Ap´s a cria¸˜o, o processo ´ colocado no final de uma fila onde existem o ca e apenas processos prontos, ou seja, o estado inicial de um processo ´ definido e como sendo o estado Pronto (Ready). Quando todos os processos existentes nesta fila, ou seja, criados anteriormente, j´ tiverem utilizado seu quantum a (fra¸˜o 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 execu¸˜o. Nesta situa¸˜o ocorrer´ uma transi¸˜o do ca ca a ca estado do processo de Pronto para Execu¸˜o (Running). Quando a fra¸˜o ca ca de tempo destinada ao processo se esgotar, ocorrer´ uma interrup¸˜o 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 fila de processos prontos. Esta ´ transi¸˜o do estado Execu¸˜o 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 opera¸˜o de I/O, na solicita¸˜o deste ca ca recurso o pr´prio processo sair´ do estado de Execu¸˜o entrando voluno a ca tariamente no estado Bloqueado (Blocked ) para utilizar ou esperar pela disponibilidade do recurso solicitado. Ao finalizar o uso do recurso, o sistema operacional recolocar´ o processo na lista de processos prontos, atrav´s a e da transi¸˜o denominada Reativa¸˜o ou Awake, que faz com que o processo ca ca passe do estados Bloqueado para Pronto. A Tabela 2.1 mostra resumidamente as opera¸˜es de transi¸˜o de estado co ca dos processos, indicando os respectivos estados inicial e final.

e Num sistema em tempo repartido a entidade que coordena a utiliza¸˜o ca do processador por parte dos processos ´ o escalonador (scheduler ). ESTADO DOS PROCESSOS 27 Tabela 2. Sendo assim est´ intimamente a e a a ligada ao hardware do computador. Praticamente todas as outras fun¸˜es do sistema operacional s˜o acioco a nadas por chamadas expl´ ıcitas ou impl´ ıcitas de suas pr´prias fun¸˜es (chao co madas de sistema ou system calls) enquanto outras entidades do pr´prio o sistema operacional assumem a forma de processos que tamb´m compartie lham o processamento. Neste sentido. Regularmente. caracterizando a execu¸˜o de atividades em paralelo ca num sistema computacional. Esta rotina realiza algumas opera¸˜es com os registradores do processador co que forma que o resultado seja o chaveamento do processador para o pr´ximo o processo na fila de processos em estado Pronto (Ready). isto ´. este tempoa rizador dispara uma interrup¸˜o (um mecanismo especial de chamada de ca rotinas) que ativa uma rotina que corresponde ao escalonador do sistema. voe ´ o e lunt´ria. em ultima a ´ instˆncia ´ uma mera divis˜o de tempo.2.3. Outro ponto importante ´ que os estados Pronto e (Ready) e Execu¸˜o (Running) s˜o estados considerados ativos enquanto ca a que o estado Bloqueado (Blocked ) ´ tido como inativo. pois permitem que perif´ricos do sistema possam trabalhar de e forma independente. . O e scheduler ´ uma fun¸˜o de baixo n´ e ca ıvel. De forma simplificada podemos dizer que o escalonador e a interrup¸˜o ca do temporizador do sistema se relacionam da seguinte maneira: 1.1: Opera¸˜es de transi¸˜o de estado dos processos co ca Opera¸˜o de ca Estado Estado Transi¸˜o 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 transi¸˜o do estado Execu¸˜o (Running) para ca ca Bloqueado (Blocked ) ´ a unica causada pelo pr´prio processo. enquanto as demais s˜o causadas por agentes externos (entidades a a do sistema operacional). a cada intervalo de tempo fixo ou vari´vel. Ao encerrar-se esta interrup¸˜o o novo processo em execu¸˜o ´ aquele preparado pelo escalonaca ca e dor. as interrup¸˜es s˜o um mecanismo co a important´ ıssimo para que os sistemas possa alcan¸ar melhores n´ c ıveis de produtividade. O processador empilha o program counter e tamb´m o conte´do dos e u regsitradores do processador. que se utiliza de um temporizador (timer ) do sistema para efetuar a divis˜o de processamento que.

Rotina consulta escalonador para determinar qual ser´ o pr´ximo proa o cesso a ser executado (qual o processo que utilizar´ processador). ca 3. a 6. 2. ´ comum a cria¸˜o e manuten¸˜o de uma tabela para e ca ca a organiza¸˜o das informa¸˜es relativas aos processos chamada de tabela ca co . a ca preservando o contexto do processo interrompido. PROCESSOS Figura 2. para que este possa efetivamente controlar os processos existentes em um sistema. 4. como veremos na se¸˜o 2.1).4 PCB e tabelas de processos Quando o modelo de administra¸˜o de processos ´ adotado em um sistema ca e operacional. e ca 9. O processador carrega um novo valor para o program counter a partir do vetor de interrup¸˜o onde existe uma rotina que realizar´ a troca ca a de processos em execu¸˜o. e 8. Rotina modifica estado do processo cuja execu¸˜o foi interrompida (o ca processo atual) para Pronto (Ready). O conte´do dos registradores e o program counter empilhados s˜o cou a piados para uma ´rea de controle pr´pria do processo interrompido a o (cada processo tem tal ´rea de controle. com isso. assim. ca 7. Rotina copia o conte´do dos registradores e do program counter aru mazenado na ´rea de controle do processo para a pilha. O temporizador ´ reprogramado.28 CAP´ ITULO 2. restaurando o a contexto deste processo e.4. encerrando a interrup¸˜o.5: Representa¸˜o do escalonamento de processos ca 2. passando a continuar a execu¸˜o de um processo u ca que tinha sido interrompido em um momento anterior. A rotina ´ finalizada e. 5. Processador restaura seus registradores e o program counter com base nos conte´do da pilha. alterando a seq¨ˆncia de retorno da ue interrup¸˜o..

2. PCB E TABELAS DE PROCESSOS 29 de processos. geralmente o PCB cont´m as seguintes informa¸˜es: e co • identifica¸˜o do processo (PID). um elemento da estrutura destinado a armazenar os dados relativos ao respectivo processo. recebe o nome de PCB. co o • informa¸˜es sobre arquivos em uso. • estat´ ısticas sobre uso de mem´ria e perif´ricos. como mostra a Figura 2. sem preju´ para o processo. o u • identificador do processador sendo utilizado. • lista de ponteiros para os processos filho (child processes). o e • c´pia do conte´do do contador de programa (program counter ). o o • informa¸˜es sobre hor´rio de in´ co a ıcio.6.1 PCB O PCB (Process Control Block ou Process Descriptor ) ´ uma estrutura de e dados que mantˆm a representa¸˜o de um processo para o sistema operae ca cional. tempo utilizado do processador.6 ilustra uma tabela de processos e os PCB associados. co 2. ızo Apesar de ser dependente do projeto e implementa¸˜o particulares do ca sistema operacional. • lista de ponteiros para as regi˜es alocadas de mem´ria. projetada para armazenar as informa¸˜es. Esta tabela ´ usualmente implementada sob a forma de um e vetor de estruturas ou uma lista ligada de estruturas. Tal estrutura. co • permiss˜es e direitos. • informa¸˜es sobre diret´rios raiz e de trabalho. o u • c´pia do conte´do dos registradores do processador. interrompida e retomada conforme determina¸˜o ca do sistema operacional. O PCB contˆm todas as informa¸˜es necess´rias para a execu¸˜o do e co a ca mesmo possa ser iniciada. o A Figura 2. • prioridade do processo. . Para cada processo existente existe uma entrada correspondente nesta tabela. ca • estado corrente do processo.4. ou seja.4. • ponteiro para o processo pai (parent process).

PROCESSOS Figura 2.2 Tabelas de processos 2.5 Opera¸˜es sobre processos co Considerando os estados poss´ ıveis dos processos e as necessidades dos sistema operacional.30 CAP´ ITULO 2.6: Organiza¸˜o de uma tabela de processos ca 2.4. temos que dispor das seguintes opera¸˜es a serem realico zadas sobre os processos: • cria¸˜o (create) ca • destrui¸˜o (destroy) ca • suspens˜o (suspend ou wait) a • retomada (resume) • troca de prioridade • bloqueio (block ) • ativa¸˜o (activate) ca • execu¸˜o (execute ou dispatch) ca • comunica¸˜o inter-processo ca A cria¸˜o de um processo envolve algumas outras opera¸˜es particulares: ca co • identifica¸˜o do processo (determina¸˜o do PID) ca ca .

a O n´cleo de um sistema operacional constr´i. onde cada a m´quina virtual ´ designada para um processo. dentro de cera e tos limites impostos pelo sistema operacional.6. FUNCOES DO NUCLEO DE SISTEMA OPERACIONAL ¸˜ • inser¸˜o do processo na lista de processos conhecidos do sistema ca • determina¸˜o da prioridade inicial do processo ca • cria¸˜o do PCB ca • aloca¸˜o inicial dos recursos necess´rios ca a 31 2. destrui¸˜o. a partir de uma m´quina u o a f´ ısica dotada de um ou mais processadores. tanto que fica permanentemente alocada na mem´ria prim´ria do sistema. o a Uma das mais importantes fun¸˜es do n´cleo do sistema operacional co u ´ o gerenciamento das interrup¸˜es. Resumidamente. retomada ca ca ca a etc. n m´quinas virtuais. pois em grandes sistemas. Apesar do u n´cleo n˜o representar a maior parte do sistema operacional. ´ a parcela mais u a e importante e mais intensivamente utilizada. o n´cleo de um sistema operacional deve conter rotinas u para que sejam desempenhadas as seguintes fun¸˜es: co • gerenciamento de interrup¸˜es co • manipula¸˜o de processos (cria¸˜o.6 Fun¸˜es do n´ cleo de sistema operacional co u Todas as opera¸˜es que envolvem os processos s˜o controladas por uma parte co a do sistema operacional denominada n´ cleo (core ou kernel ). controla sua m´quina virtual a de modo a realizar suas tarefas. Tal processo.) • manipula¸˜o dos PCBs (Process Control Blocks) ca • troca de estados dos processos (execu¸˜o. a a consequentemente.´ 2. um grande e co n´mero delas ´ constantemente dirigida ao processador e seu efetivo prou e cessamento determina qu˜o bem ser˜o utilizados os recursos do sistema e. suspens˜o. como ser˜o os tempos de resposta para os processos dos a usu´rios. timerunout e ativa¸˜o) ca ca • intercomunica¸˜o de processos ca • sincroniza¸˜o de processos ca • gerenciamento de mem´ria o • gerenciamento de dispositivos de E/S • suporte a um ou mais sistemas de arquivos .

´ comum que boa parte delas e sejam programadas diretamente em assembly. portanto. ca e ıvel ca 2.7: Representa¸˜o de uma regi˜o cr´ ca a ıtica Segundo Guimar˜es: a . Sendo assim uma regi˜o 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. Obviamente o processo que recebe o direito de usar primeiramente o recurso ´ favorecido em rela¸˜o e ca aos demais. a co 2.32 CAP´ ITULO 2. que seja exie gido o uso individual e organizado de recurso.1 Regi˜es cr´ o ıticas Quando um dado recurso computacional s´ pode ser utilizado por um unico o ´ processo de cada vez. PROCESSOS • suporte ` fun¸˜es de administra¸˜o do sistema a co ca Devido ao uso intensivo destas rotinas. A exigˆncia de uso individual ou a possibilidade de compartilhamento e caracterizam duas situa¸˜es importantes: o c´digo reentrante e as regi˜es co o o cr´ ıticas. permitindo assim grande otimiza¸˜o e. Figura 2. a maior eficiˆncia poss´ em sua execu¸˜o. que ser˜o tratadas nas se¸˜es seguintes. como ´ mais frequente.7.7. ´ desej´vel que ocorra e co e a o compartilhamento de tal recurso ou. transformando tal situa¸˜o numa competi¸˜o pelos recursos ca ca do sistema. Conforme o tipo de reca curso requisitado e tamb´m as opera¸˜es pretendidas. como representado na Figura 2. dizemos que este recurso determina uma regi˜o a cr´ ıtica (ou critical section).7 Competi¸˜o por recursos ca Quando afirmamos que existir˜o dois ou mais processos em execu¸˜o paralela a ca estamos admitindo a possibilidade de que alguns destes processos solicitem a utiliza¸˜o de um mesmo recurso simultaneamente.

s˜o exclu´ a ıdos. o comprometimento da estabilidade do sistema como um todo. como ilustrado na Figura 2.8.8 Protocolos de acesso Um protocolo de acesso (access protocol ) ´ composto por uma rotina de e entrada e uma outra de sa´ ıda. pois representa o e ca a um compartilhamento ben´fico para o sistema.8) que. todos os demais. aumentando a eficiˆncia do sistema como e um todo. A rotina de sa´ ´ executada ap´s o uso do recurso. a Assim. onde um mesmo recurso ´ e e utilizado por diversos processos.2.2 C´digo reentrante o Em contrante com as regi˜es cr´ o ıticas.7. 2. uma forma de administrar a e concess˜o e devolu¸˜o de um recurso comum. as vezes. A rotina de entrada determina se um processo pode ou n˜o utilizar o recurso. sinalizando que este se encontra ıda e o . quando um ca e a u processo qualquer utiliza a regi˜o cr´ a ıtica. dizemos estar ocorrendo um acesso simultˆneo. Tal situa¸˜o geralmente conduz a perda de dados de um ou a ca mais dos processos participantes e. Os processos de desejam utilizar uma regi˜o e a cr´ ıtica s˜o. ficam impossibilitados de utiliz´-la. dizemos que esta rotina ´ um bloco de c´digo reentrante ou c´digo e o o p´ blico (ou ainda public code). portanto. p. PROTOCOLOS DE ACESSO Uma regi˜o cr´ a ıtica ´. 2. n˜o ´ razo´vel que tal controle seja realizado pelos pr´prios processos. organizando um fila de espera (espera inativa) a ou apenas bloqueando a entrada do processo (espera ativa). pois a e a o erros de programa¸˜o ou a¸˜es mal intencionadas poderiam provocar preca co ju´ ızos aos usu´rios ou comprometer a estabilidade do sistema. u O c´digo reentrante ´ uma situa¸˜o bastante desej´vel.8. no fundo. al´m de determinar ca e os crit´rios de utiliza¸˜o do recurso. a Quando acidentalmente acontece o acesso de um ou mais processos enquanto regi˜o cr´ a ıtica est´ ocupada ou quando dois ou mais processo adena tram a regi˜o cr´ a ıtica simultaneamente. resolve as situa¸˜es de competi¸˜o bem e ca co ca como a organiza¸˜o de uma eventual lista de espera no caso de disputa do ca recurso por processos concorrentes. o sistema operacional implementa uma rotina de tratamento especial denominada protocolo de acesso (se¸˜o 2. isto ´. processos paralelos concorrentes. quando uma certa rotina de software pode ser utilizada simultaneamente por uma quantidade qualquer de processos. [GUI86. 81] a ca 33 A situa¸˜o que se deseja ´ a exclus˜o m´ tua. Para prevenir que mais de um processo fa¸a uso de uma regi˜o cr´ c a ıtica. Apenas quando a e a regi˜o cr´ a ıtica for liberada ´ que um outro processo ter´ acesso a mesma e e a tamb´m de forma exclusiva. ou seja. sejam quais forem.

as quais deo vem ser respeitadas durente sua utiliza¸˜o. principalmente utiliza¸˜o. portas de comunica¸˜o e outros dispositivos que podem ser interligados a um sistema ca computacional. Acontece o mesmo quando avaliamos o a funcionalidade de unidades de disco e fita.34 CAP´ ITULO 2. a a Torna-se ´bvio que o controle destes diferentes dispositivos por si s´ o o adiciona uma razo´vel complexidade aos sistemas operacionais. exigindo especial aten¸˜o durente o projeto do ca sistema. co e a a Devemos ainda considerar que o sistema operacional gerencia diferentes tipos de recursos computacionais.8: Representa¸˜o de c´digo reentrante ca o desocupado. Todas estas situa¸˜es tamb´m s˜o inaceit´veis. N˜o se pode definir o acesso ` recursos unicamente pela atribui¸˜o de pria a ca oridades fixas. mas quando a consideramos que diferentes processos computacionais far˜o uso distinto e a imprevis´ ıvel destes recursos. Desta forma o tratamento ideal que deve ser dado a uma impressora n˜o pode ser aceit´vel para um outro tipo de dispositivo. onde um processo ´ sistem´tica e indefinidamente bloqueado de utilizar o e a recurso. Quando tais caracter´ ca ısticas s˜o a . impressoras. pois podem ocorrer situa¸˜es onde um processo de prioridade co mais baixa n˜o consegue utilizar a regi˜o cr´ a a ıtica dado que sempre existem processos de maior prioridade. O processador possui certas caracter´ ca ısticas enquanto a mem´ria possui outras. isto ´. tal complexidade e as inerentes dificuldades aumentam tremendamente. O sistema operacional deve dispor de um protocolo de acesso diferente para cada tipo de recurso devido suas caracter´ ısticas pr´prias. ou seja. causando a libera¸˜o do recurso para outro processo ca em espera ou bloqueado. configurando um problema de prioridade est´tica. onde os a e co a v´rios processos que est˜o em disputa pelo uso recurso s˜o bloqueados de a a a modo tal que o recurso continue sem uso. ou ainda de adiamento infinito. controla dispositivos com cae racter´ ısticas bastante diferenciadas em termos de velocidade. PROCESSOS Figura 2. capacidade e. Existem tamb´m as situa¸˜es de bloqueio simultˆneo.

pode ocorrer uma viola¸˜o do desejado acesso exclusivo: se o ca dois processos executarem o teste da vari´vel de controle X antes que um a deles consiga fazer com que X = 0.2: Fun¸˜es de um protocolo de acesso co Garantir Evitar Exclus˜o M´tua Acesso Simultˆneo a u a Bloqueio M´tuo ou Simultˆneo u a Adiamento Indefinido Prioridade Est´tica a Na Figura 2. pois j´ realizou o teste da vari´vel de controle. na verdade.8. c De modo resumido.2. mas e o antes da altera¸˜o da vari´vel de controle. Aparentemente o problema parece resolvido. ent˜o ambos utilizar˜o a regi˜o cr´ a a a ıtica. Quando o primeiro tem retomada sua execu¸˜o. portanto pode a ocorrer uma interrup¸˜o de um dos processos durante a execu¸˜o do trecho ca ca antes da atualiza¸˜o da vari´vel X. com destaque as suas partes de entrada e sa´ ıda. isto ´. mesmo que esteja ocupada. se o primeiro deles ´ interrompido ap´s o teste. Mesmo considerando que. os processos n˜o est˜o sendo exea a cutados paralelamente.9 temos um exemplo simplificado de um protocolo de acesso.9: Protocolo de acesso simples O protocolo exemplificado necessita de 2 a 4 instru¸˜es para ser impleco mentado numa m´quina convencional (vide Exemplo 2. nas situa¸˜es onde dois co e co ou mais processos procuram acessar um recurso simultaneamente (ou algo pr´ximo a isto). PROTOCOLOS DE ACESSO 35 entendidas e tratadas da forma adequada podemos obter situa¸˜es que faco vore¸am o desempenho global do sistema. ca ele continuar´ seu processamento usando a regi˜o cr´ a a ıtica. ent˜o qualquer outro poder´ ca a a a adentrar a regi˜o cr´ a ıtica. ca a . Figura 2. provocando os a a problemas descritos.2 a Tabela 2.1). mas em situa¸˜es de corrida. as caracter´ ısticas desej´veis de um protocolo de a acesso est˜o relacioandas na Tabela 2.

Se zero repete o teste . Troca acumulador com X . Entra na RC . Tais instru¸˜es realizavam e co duas opera¸˜es atomicamente. La¸o: c CLR A EXA X BZ La¸o c . permitindo assim resolver os problemas ca de exclus˜o m´tua encontrados at´ ent˜o. uma vari´vel comum aos proa a cessos. isto ´. . tamb´m conse e titui uma regi˜o cr´ a ıtica e. seta valor de x para 1 Com isto poder´ ıamos implementar um protocolo de acesso eficiente atrav´s da constru¸˜o de duas primitivas de exclus˜o m´tua como indicado e ca a u .1 . Carrega o acumulador com X . . CAP´ ITULO 2. como ilustrado no Exemplo 2. permite resolver o problema. A modifica¸˜o do protocolo exemplificado utilizando-se uma instru¸˜o de ca ca troca. Troca acumulador com X Exemplo 2. . copia valor de x para v . n˜o podendo ser a interrompida durante sua execu¸˜o. assim. uma instru¸˜o que efetua a movimenta¸˜o de conte´do entre e ca ca u dois registradores distintos.2 Protocolo de acesso funcional com instru¸˜o EXA ca 2. isto ´. de forma indivis´ co e ıvel. ca As instru¸˜es TST ou TSL foram primeiramente implementadas no final da co d´cada de 1950 e introduzidas na linha IBM/360. Sai da RC MVI A. Zera vari´vel X a . As opera¸˜es realizadas atrav´s a u e a co e de uma instru¸˜o TST s˜o ilustradas abaixo: ca a TST(v. . apenas adiou-se o problema de um n´ ıvel. . x) Equivale `: a v ? x ? x 1 . . PROCESSOS . . Entra na RC Exemplo 2. Coloca um no acumulador EXA X . . ou seja.8. Se zero repete o teste . tamb´m deveria ser usada de forma exclusiva. .1 C´digo assembly de protocolo de acesso ineficiente o Uma an´lise cuidadosa permite ver que X.1 Solu¸˜o com instru¸˜es TST ou TSL ca co O uso de instru¸˜es de troca levou alguns fabricantes a criarem uma insco tru¸˜o especial denominada TST (Test and Set) ou TSL (Test and Set Lock ).36 La¸o: c LDA X BZ La¸o c CLR X . . . Zera o acumulador .2.

que tais processos solicitam o uso de uma a regi˜o cr´ a ıtica simultaneamente ou praticamente nesta condi¸˜o.8. pois tais instru¸˜es s´ resolvem u a co o tal quest˜o em sistemas dotados de um unico processador. armazena zero na flag . percebia-se que tais instru¸˜es eram apenas um solu¸˜o parcial e co ca tempor´ria. Se um segundo . entrou na RC . retorna. a u Para ilustrar o que s˜o as situa¸˜es de corrida.3 Protocolo de acesso eficiente com instru¸˜o TST ca Apesar da solu¸˜o oferecida pelas instru¸˜es TST. A contagem do total das linhas de texto a ´ mantida atrav´s de uma vari´vel global de nome linesEntered. .8. de tal forma. . #0 RET . i. sendo interrompido pelo sistema co operacional e.4 a qual atualiza o n´mero de o u linhas de texto enviadas por cada terminal: LOAD linesEntered ADD 1 STORE linesEntered Exemplo 2. deixando a valor 21688 no acumulador.. #0 JNZ Enter Region RET Leave Region: MOV flag. PROTOCOLOS DE ACESSO abaixo: Enter Region: TSL reg. . Assumae e a mos que cada terminal em uso seja representado por um processo que possui uma c´pia da rotina exibida no Exemplo 2.e. assim.. As situa¸˜es ca co de corrida exigem protocolos de acesso extremamente bem elaborados para evitarmos o acesso simultˆneo ou o bloqueio m´tuo.2 Situa¸˜es de corrida co Dizemos existir uma situa¸˜o de corrida quando a execu¸˜o de dois ou mais ca ca processos se d´. 37 copia flag p/ reg e a seta para 1 compara flag com zero se n~o zero loop (travado) a retorna. saiu da RC Exemplo 2.4 Rotina local de contagem de linhas Imaginando que o valor corrente de linesEntered ´ 21687 quando um e processo executa as instru¸˜es LOAD e ADD. onde cada terminal ´ monia o a e torado por um processo especial que necessita efetuar a contagem das linhas de texto enviadas pelos usu´rios. imaginemos um sistema a co multiusu´rio que disp˜e de v´rios de terminais. i. Embora na ´poca a ´ e n˜o se pretendesse construir computadores dotados de m´ltiplos processaa u dores. flag CMP reg.2. a 2.e. o problema da exclus˜o ca co a m´tua n˜o estava completamente resolvido.

Embora o problema de controle de linhas de texto enviadas pare¸a in´til. Numa institui¸˜o financeira. ca Torna-se claro que todas estas s˜o situa¸˜es inadmiss´ a co ıveis. Se a opera¸˜o de ca a ca retirada n˜o ´ contabilizada corretamente torna-se prov´vel que a produ¸˜o a e a ca seja interrompida por falta de pe¸as. como o valor 21688 ainda n˜o foi armazenado em mem´ria. O mesmo vale para um sistema de controle de estoque. c u imagine que a contagem se refira a pe¸as produzidas numa f´brica que conta c a com diversas linhas de produ¸˜o: ao final de um per´ ca ıodo n˜o se saberia a com certeza quantas pe¸as foram produzidas. Tais primitivas poderiam ser utilizadas como mostra o Exemplo 2. a Concluimos que o sistema perdeu o controle do n´mero de linhas enviado u pois o valor correto deveria ser 21689! Isto ocorreu porque dois processos acessaram simultaneamente a regi˜o cr´ a ıtica delimitada pelas opera¸˜es reaco lizadas sobre a vari´vel global linesEntered. ca ca .5. num problema semelhante envolvendo a contagem da retirada de pe¸as. sendo necess´rio cont´-las no c a a estoque. Para evitar-se este problema a cada processo deveria ter recebido acesso exclusivo `s opera¸˜es sobre a a co vari´vel linesEntered que ´ uma regi˜o cr´ a e a ıtica. tal tarefa. um d´bito ou um cr´dito ca e e poderiam deixar de ser efetuados. onde dependendo da ordena¸˜o dos eventos. Quando o primeiro processo retomar sua execu¸˜o o ca valor 21688. que resolve o problema de acesso ` vari´vel a a global linesEntered.38 CAP´ ITULO 2. presente no acumulador ser´ armazenado novamente. c Tais primitivas de programa¸˜o poderiam ser EnterMutualExclusion e ca ExitMutualExclusion. com seguran¸a. tais como a de ca co Dekker (se¸˜o 2. o valor 21697 ser´ utilizado novamente a o a resultando em 21688. PROCESSOS processo executa a rotina de forma completa. prejudicando a institui¸˜o ou o cliente. que respectivamente significam a indica¸˜o de enca trada e sa´ de uma regi˜o cr´ ıda a ıtica.9) ou de Peterson (se¸˜o 2. As primitivas EnterMutualExclusion e ExitMutualExclusion correspondem a implementa¸˜o das regi˜es de entrada e sa´ de um protocolo de ca o ıda acesso gen´rico. Como o problema do acesso co exclusivo tamb´m pode surgir em decorrˆncia de aplica¸˜es com m´ltiplos e e co u usu´rios ou que apenas compartilhem dados de maneira especial. Quando um c n´mero m´ u ınimo ´ atingido. se faz necess´ria a compra de pe¸as para que a e a c produ¸˜o n˜o seja interrompida pela falta das mesmas. Tamb´m poderiam ser utilizadas as instru¸˜es TST nesta e e co implementa¸˜o ou usadas outras solu¸˜es mais elegantes.10). Percebemos ser muito importante que um sistema operacional ofere¸a c mecanismos de controle adequado para seus recursos e tamb´m oferecendo e suporte para o desenvolvimento de aplica¸˜es. o mesmo c ca tipo de problema poderia se refletir no saldo da conta corrente de um cliente. seria cona veniente dispor-se de primitivas de controle para que os pr´prios programao dores realizassem.

EnterMutualExclusion. end. begin while true do begin LeProximaLinhaDoTerminal. ExitMutualExclusion. ProcessaALinha.5 Uso de primitivas de exclus˜o m´tua a u . end. end. { Procedimento correspondente ao segundo terminal } procedure ProcessoDois. parbegin ProcessoUm. { Programa principal: ativa¸~o dos terminais } ca begin linesEntered := 0. { Procedimento correspondente ao primeiro terminal } procedure ProcessoUm. ExitMutualExclusion.2.8. ProcessaALinha. { Vari´vel global para contagem das linhas } a var linesEntered: integer. linesEntered := linesEntered + 1. end. parend. Exemplo 2. PROTOCOLOS DE ACESSO 39 program ExclusaoMutua. end. linesEntered := linesEntered + 1. begin while true do begin LeProximaLinhaDoTerminal. ProcessoDois. EnterMutualExclusion.

no caso Avez e Bvez. 2.8. isto n˜o deve ima pedir que outros processos acessarem a regi˜o cr´ a ıtica. a o a Al´m destas vari´veis de controle individual.10 representa apenas o algoritmo da solu¸˜o de Dekker correspondente ao processo A. ´ interessante analisar os requisitos desej´veis para um protocolo de u e a acesso eficiente. os quais podem ser expressos atrav´s dos postulados de e Dijkstra [GUI86. Mesmo em improv´veis situa¸˜es de corrida. 4. PROCESSOS 2. Cada processo possui uma vers˜o a ligeiramente diferente do algoritmo do protocolo de acesso. Dekker propˆs uma solu¸˜o para o problema de exclus˜o e o ca a m´tua de dois processos. quando e e a um processo acessa um regi˜o cr´ a ıtica ele sempre a libera depois de um tempo finito. em particular. J. A unica hip´tese que pode ser feita quanto a velocidade de execu¸˜o ´ o ca dos processos paralelos ´ que ela ´ n˜o nula e. 2.40 CAP´ ITULO 2. e O fluxograma ilustrado na Figura 2.10. Se um processo ´ bloqueado fora da regi˜o cr´ e a ıtica. excetuando-se os mecanismos de hardware a u implementados pelas instru¸˜es de troca e TTST. que pode ser manipulada por todos os processos ca envolvidos mas apenas ap´s o uso da regi˜o cr´ o a ıtica.3 Requisitos de um protocolo de acesso Antes de nos concentrarmos em outras solu¸˜es para o problema da exclus˜o co a m´tua. ca A engenhosa solu¸˜o baseia-se em uma vari´vel de controle para cada ca a processo envolvido. 3. Esta elegante solu¸˜o ca tornou-se conhecida como solu¸˜o de Dekker para exclus˜o m´tua de dois ca a u processos e ´ ilustrada na Figura 2. pois cada uma das vari´veis de controle s´ s˜o alteradas pelos processos as quais pertencem. p. A solu¸˜o n˜o deve impor uma prioridade est´tica entre os processos ca a a que desejem acessar a regi˜o cr´ a ıtica. devemos substituir as ocorrˆncias da vari´vel Avez por Bvez e vice-versa e depois as ocorrˆncias de e a e B por A e vice-versa. Para obtermos a vers˜o ca a deste fluxograma correspondente ao processo B. Neste ano o matem´tico co a holandˆs T. O funcionamento correto desta solu¸˜o implica na ca . 78]: 1. uma solu¸˜o que utilizava apenas os ca recursos comuns das linguagens de programa¸˜o. a qual n˜o necessitava instru¸˜es especiais imu a co plementadas pelo hardware. s˜o inaceit´veis as situaa co a a co ¸˜es de bloqueio m´tuo ou acesso simultˆneo de processos em uma u a regi˜o cr´ a ıtica.9 A solu¸˜o de Dekker ca At´ 1964 n˜o se conhecia uma solu¸˜o geral considerada satisfat´ria para e a ca o o problema de exclus˜o m´tua. existe uma outra para detere a mina¸˜o de prioridade (Pr). ou seja.

temos no ca ca Exemplo 2. a Para demonstrarmos uma aplica¸˜o da solu¸˜o de Dekker.9. cada um destinado a um dos processos ca envolvidos. a solu¸˜o garante a exclus˜o co ca a m´tua. evitando o adiamento indefinido. ca A solu¸˜o proposta por Dekker apresenta as seguintes vantagens: ca • ´ particularmente elegante. o processo bloqueo e ado continua consumido tempo do processador na ´rea de entrada do a protocolo de acesso para verificar a possibilidade de entrada na regi˜o a cr´ ıtica. • um processo fora de sua regi˜o cr´ a ıtica n˜o impede (n˜o bloqueia) outro a a processo de adentr´-la. a prioridade est´tica e o acesso u a simultˆneo.2. A SOLUCAO DE DEKKER ¸˜ 41 Figura 2. e a • um processo que deseja entrar na regi˜o cr´ a ıtica o far´ sem a possibilia dade de adiamento infinito. ca co • ´ de dif´ implementa¸˜o pois necessita uma rotina diferente para e ıcil ca cada processo. e • imp˜e uma espera ativa ou espera ocupada. isto ´.10: Algoritmo de Dekker para exclus˜o m´tua de 2 processos a u utiliza¸˜o destes dois algoritmos. Mesmo em situa¸˜es de corrida. pois n˜o necessita de instru¸˜es especiais e a co no hardware. Em contrapartida esta solu¸˜o possui algumas desvantagens que s˜o: ca a • torna-se complexa para um n´mero maior de processos pois exige a u introdu¸˜o de novas opera¸˜es de teste a cada processo adicionado. .6 uma sugest˜o para a resolu¸˜o do problema de contagem das a ca linhas enviadas pelos terminais usando a nota¸˜o de paralelismo Pascal.

processo := 1. { espera RC livre } { Regi~o Cr´tica } a ı linesEntered := linesEntered + 1. { Primeiro terminal } begin while true do begin LeProximaLinhaDoTerminal. { Fim da Regi~o Cr´tica } a ı processo := 2. end. ProcessaALinha. Exemplo 2. { Globais para contagem das linhas e prioridade } var linesEntered: integer.42 CAP´ ITULO 2. PROCESSOS program ExclusaoMutuaDekker. procedure ProcessoDois. end. end. while processo = 1 do. { Programa principal: ativa¸~o dos terminais } ca begin linesEntered := 0. { valor arbitrariamente escolhido } parbegin ProcessoUm. ProcessoDois. while processo = 2 do. { espera RC livre } { Regi~o Cr´tica } a ı linesEntered := linesEntered + 1. { Segundo terminal } begin while true do begin LeProximaLinhaDoTerminal. end. { Fim da Regi~o Cr´tica } a ı processo := 1. ProcessaALinha. parend. procedure ProcessoUm. processo: integer.6 Solu¸˜o do problema dos terminais atrav´s de Dekker ca e . end.

ca ca A solu¸˜o de Peterson. se baseia na ca defini¸˜o de duas primitivas de exclus˜o m´tua. interested[process] = TRUE.2. #define FALSE 0 #define TRUE 1 #define N 2 int turn. Visto a introdu¸˜o de insca tru¸˜es tipo TST o interesse nestas solu¸˜es ´ apenas hist´rico. publicado em 1981. Peterson. Tais primitivas s˜o as fun¸˜es a co enter region() e leave region() que. ca como era de se esperar. No exemplo ´ dado a solu¸˜o para dois e ca processos. que simplifica a determina¸˜o de interesse por parte dos demais ca processos.10 A solu¸˜o de Peterson ca Outras maneiras de implementar-se primitivas de exclus˜o m´tua seria aa u trav´s da utiliza¸˜o do algoritmo de G. como colocado na Listagem 9. respectivamente.process. A SOLUCAO DE PETERSON ¸˜ 43 Dijkstra generalizou a solu¸˜o de Dekker para n processos em 1965 e. utilizadas pelos procesca a u sos que desejam utilizar a regi˜o cr´ a ıtica. a generaliza¸˜o mostrou-se bem mais complicada. co co e o 2. void enter region(int process) { int other = 1 . que e ca representa uma solu¸˜o mais simples que a solu¸˜o de Dekker. } Exemplo 2.10. while (turn==process && interested[other]==TRUE). devem ser utilizadas para sinalizar a entrada do processo na regi˜o cr´ a ıtica e sua sa´ da ıda mesma. int interested[N]. ca Donald Knuth aperfei¸oou ainda mais a solu¸˜o geral de Dijkstra. turn = process. Na solu¸˜o proposta por Peterson temos que as fun¸˜es enter region() ca co e leave region() s˜o equivalentes as primitivas EnterMutualExclusion e a .7 Solu¸˜o de Peterson para exclus˜o m´tua de 2 processos ca a u Note tamb´m o uso de um vetor contendo a sinaliza¸˜o de interesse dos e ca processo em utilizar a regi˜o cr´ a ıtica. elimic ca nando a possibilidade de adiamento infinito. L. } void leave region(int process) { interested[process] = FALSE.

• EnterCriticalSection. que corresponde a finaliza¸˜o do uso da reca gi˜o cr´ a ıtica (regi˜o de sa´ do protocolo de acesso). a • LeaveCriticalSection. 224]: • InitializeCriticalSection.44 CAP´ ITULO 2. PROCESSOS ExitMutualExclusion respectivamente. Tal mecanismo pode ser utilizado como sugerido no Exemplo 2. enquanto ca a que a inicializa¸˜o e libera¸˜o desta vari´vel deve ocorrer respectivamente ca ca a . tal como na solu¸˜o de Dekker ou atrav´s do uso de insca e tru¸˜es TST. a { declara¸~o da vari´vel especial de controle } ca a Section: TRTLCriticalSection. baseado numa estrutura especial designada Critical Section e algumas primitivas de controle [CAL96. Exemplo 2. que elimina as estruturas de controle declaradas para uma regi˜o cr´ a ıtica. que corresponde a solicita¸˜o de uso da reca gi˜o cr´ a ıtica (regi˜o de entrada do protocolo de acesso). Tal solu¸˜o ´ bastante simples e ca e pode ser facilmente implementada para n processos diferentes pois a mesma rotina serve a todos os processos.8.8 Mecanismo de exclus˜o m´tua no MS-Windows 9x/2000 a u A declara¸˜o da vari´vel especial de controle deve ser global. co Os sistemas operacionais Microsoft Windows 9x/2000 oferecem um mecanismo eficiente e relativamente simples para o controle de acesso ` regi˜es a o cr´ ıticas. { libera¸~o da vari´vel de controle } ca a DeleteCriticalSection(Section). Sua unica desvantagem ´ que imp˜e uma ´ e o espera ocupada. que prepara o uso de uma regi˜o cr´ a ıtica. { inicializa¸~o da vari´vel de controle } ca a InitializeCriticalSection(Section). { sinaliza¸~o de entrada na regi~o cr´tica } ca a ı EnterCriticalSection(Section). { c´digo da regi~o cr´tica ´ posicionado aqui } o a ı e { sinaliza¸~o de sa´da na regi~o cr´tica } ca ı a ı LeaveCriticalSection(Section). e a ıda • DeleteCriticalSection. p. o qual est´ expresso na linguagem ObjectPascal do Borland Delphi.

sendo utilizado por todos as rotinas que possam estar em execu¸˜o concomitante. • Quando se forma uma cadeia sucessiva de solicita¸˜es de recursos que co culminam num arranjo circular. bloqueio perp´e tuo ou impasse. a SGG01]. quando tratarmos da a comunica¸˜o inter-processos (se¸˜o 2.12. ca Esta solu¸˜o resolve problemas de exclus˜o m´tua originados por procesca a u sos de uma mesma aplica¸˜o. significa um evento que jamais ir´ ocorrer [DEI92. voluntariamente. a a ca Segundo Tanenbaum: Um conjunto de processos est´ num bloqueio perp´tuo quando a e cada processo do conjunto est´ esperando por um evento que apea nas outro processo do conjunto pode causar. configura-se uma situa¸˜o de bloqueio perp´tuo.11. o termo deadlock. a Como nenhum processo de disp˜e a.11. ca e . Dizemos que um processo est´ em deadlock quando espera por a um evento particular que jamais acontecer´. TAN92. ca ca 2. solicita um recurso R2 alocado para um processo B. a o Um bloqueio perp´tuo pode ocorrer de diferentes maneiras: e • Quando um processo ´ colocado em espera por algo e o sistema opee racional n˜o inclui qualquer previs˜o para o atendimento desta espera a a dizemos que ocorreu o bloqueio perp´tuo de um processo unico (onee ´ process deadlock ). Para ca sincroniza¸˜o de rotinas de programas diferentes deve ser utilizado outro meca canismo. que detˆm um e recurso R1. 242] Observemos a Figura 2. denominado Mutexes no MS-Windows 9x. a ca Sem´foros. onde um processo A.12).2). ou seja.2. Sem´foros Contadores e Contadores de eventos s˜o outros a a a tipos de solu¸˜o de podem solucionar problemas de exclus˜o m´tua.15). ou seja. [TAN92. que por sua vez est´ solicitando o recurso R1. onde temos ilustrado um deadlock que pode ocorrer em duas linhas de trens cujas interse¸˜es n˜o s˜o compartilh´veis. DEADLOCKS 45 antes de qualquer uso da regi˜o cr´ a ıtica e ap´s a finaliza¸˜o de tal uso por o ca diferentes processos da aplica¸˜o (no caso threads da aplica¸˜o). threads de um mesmo programa. cujo funcionamento ´ e semelhante aos sem´foros (veja a se¸˜o 2. p. em uso por A (veja a Figura 2. co a a a Problemas semelhantes podem ocorrer no trˆnsito de uma metr´pole. liberar o recurso o que aloca. O c´digo ca ca o reconhecido como regi˜o cr´ a ıtica deve ser posicionado entre as primitivas de sinaliza¸˜o de entrada e sa´ da regi˜o cr´ ca ıda a ıtica. Alca a u gumas destas alternativas ser˜o vistas mais a frente. Igualmente dizemos que um a sistema est´ em deadlock quando um ou mais processos est˜o nesta situa¸˜o.11 Deadlocks Em sistema multiprogramado.

ficando em espera por e um recurso. estagnado).11.1 Diagramas de processos e recursos O estudo dos bloqueios perp´tuos pode ser bastante facilitado atrav´s da e e utiliza¸˜o de diagramas especiais denominados diagramas de aloca¸˜o de reca ca cursos ou diagramas de processo versus recursos ou ainda grafos de aloca¸˜o ca de recursos [SGG01. dizemos que est´ ocorrendo um adiamento indefinido ou bloa queio indefinido (respectivamente indefinite postponement. indefinite blocking). tamb´m dizemos que ele est´ em ca e e a starvation (isto ´. por um processo de cada vez [DEI92. isto ´. Nos deadlocks circulares. Na Figura 2. al´m da aloca¸˜o desnecess´ria de ree ca a cursos. Quando um processo ´ bloqueado indefinidamente. ou seja. p.12 temos os elementos construtivos poss´ ıveis deste tipo de . recursos ficam alocados desnecessariamente. e A maioria dos problemas que culminam com os deadlocks est˜o relacioa nados com recursos dedicados. PROCESSOS Figura 2. p.46 CAP´ ITULO 2. 156]. Os processos s˜o representados atrav´s a e de quadrados ou retˆngulos. interligadas por arcos direcionados. podendo at´ causar situa¸˜es de e co instabilidade ou crash do sistema operacional.11: Representa¸˜o de um deadlock ca Independentemente do tipo. os deadlocks causam preju´ ızos s´rios ao sise tema. 2. podem ser formadas filas de esperas pelos recursos envolvidos. com recursos que devem ser utilizados e serialmente. o que significa que restar˜o menos recursos para os demais a processos. Nestes diagramas existem apenas duas entidades. deteriorando o tempo de resposta do sistema. Como um processo nessa situa¸˜o n˜o pode prosseguir com sua a ca a execu¸˜o devido a ausˆncia de recursos. pois mesmo num one-process deadlock. processos e recursos. Os arcos direcionados unindo processos e recursos s˜o usados e a com dois significados distintos: requisi¸˜o de recursos e aloca¸˜o de recurca ca sos. Os recursos s˜o representados atrav´s de cira a e cunferˆncias. 162].

Com Z livre. processos requisitando ou alocando outros processos e. Figura 2. circunferˆncias e arcos) podemos represene a e tar uma infinidade de diferentes situa¸˜es envolvendo processos. seus pedico dos de recursos (requests) e a aloca¸˜o de recursos determinada pelo sistema ca operacional (grants).2. e da mesma forma. 2.14. Ao mesmo tempo. isto a ´.11. recursos requisitando ou alocando outros recursos. os processos alocados a os processos requisitantes destes recursos. a n˜o existe qualquer deadlock. DEADLOCKS diagrama.13. processos que n˜o estejam utilizando algum outro tipo de recurso.13: Situa¸˜es proibidas no diagrama de processos e recursos co Usualmente n˜o se ilustram o uso de mem´ria e processador por parte a o dos processos.12: Elementos do Diagrama de Processos x Recursos Recursos capazes de ser compartilhados podem ser representados por pequenas circunferˆncias. ou seja. Neste exemplo. temos que s˜o proibidas as constru¸˜es ilustradas na a co Figura 2. isto ´. dispostas dentro do recurso compartilh´vel.3 est˜o relacionados os recursos do sistema. . atrav´s e destes trˆs elementos (retˆngulos. uma e a para cada unidade de sua capacidade de compartilhamento. sendo assim este diagrama pode ser reduzido: a 1. embora exista disputa por recursos (processos B e E requisitam o uso do recurso W). 47 Figura 2. n˜o existe nenhum caminho fechado. Assim. de modo que passam a n˜o existir processos isolados. C libera W para alocar Z. Atrav´s da Tabela 2.3 podemos construir o diagrama de processos e e recursos ilustrado na Figura 2. D finaliza o uso de Z. Na e a Tabela 2.

embora E permane¸a em espera.48 CAP´ ITULO 2. esta a situa¸˜o desej´vel em um sistema. como ilustra a Figura 2. a 6. ou B ou E poder˜o aloc´-lo. independentemente do tempo que os processos utilizar˜o os ca a recursos alocados.14: Diagrama de processos e recursos da Tabela 2. mostra que tais processos ser˜o atendidos dentro de um a intervalo de tempo menor ou maior. Utilizando o diagrama de aloca¸˜o de recursos. Atrav´s destes diagramas. E pode prosseguir sua execu¸˜o. alocando W. N˜o surgindo novos processos. ca A redu¸˜o. 5. Se B for favorecido nesta a a disputa.3: Exemplo de aloca¸˜o e requisi¸˜o de recursos ca ca Recurso Processo Processo(s) Alocado Requisitante X A Y B A W C B. E Z D C Figura 2. PROCESSOS Tabela 2. ca a Diferentemente. co .3 3. A despeito de quest˜es relacionadas o com desempenho. Com W livre. a aloca¸˜o e requisi¸˜o de recursos em um sistema pode ca ca configurar um deadlock. Com W livre. fica clara a situa¸˜o da forma¸˜o de uma e ca ca cadeia circular (um caminho fechado) ligando uma sequˆncia de requisi¸˜es e co e aloca¸˜es de recursos do sistema por parte de um grupo de processos. Y ser´ liberado. Com Y livre. A libera X para alocar Y. c a 4. poca der´ ıamos representar um deadlock envolvendo dois processos e dois recursos.15. B libera W.

15: Representa¸˜o de deadlock envolvendo 2 processos ca 2. Os processos exigem controle exclusivo dos recursos que solicitam (condi¸˜o de exclus˜o m´tua). A alternativa mais simples realmente ´ ignorar o problema e conviver com a possibilidade de sua e ocorrˆncia. Detec¸˜o e recupera¸˜o dos deadlocks ca ca Outra alternativa ´ permitir que os bloqueios ocorram. devem ser cona ca sideradas a possibilidade de ocorrˆncia dos deadlocks e os custos come putacionais associados ao seu tratamento. p. 245] existem basicamente quatro alternativas para o tratamento dos bloqueios perp´tuos.2. Os sistemas UNIX utilizam esta aproxima¸˜o favorecendo e ca aspectos de performance em situa¸˜es mais comuns. Ignorar o problema (algoritmo da avestruz) Apesar de n˜o parecer uma solu¸˜o para o problema. ca a u 2. procurandoe se detect´-los e recuper´-los. e 4. onde cada processo solicita um recurso alocado pelo pr´ximo processo na cadeia (condi¸˜o de o ca espera circular). Forma-se uma cadeia circular de processos.2 Condi¸˜es para ocorrˆncia de deadlocks co e Coffman. ou seja. quatro ese trat´gias b´sicas para resolvermos os problemas dos deadlocks: e a 1. DEADLOCKS 49 Figura 2. Os processos mantˆm alocados recursos enquanto solicitam novos ree cursos (condi¸˜o de espera por recurso) ca 3.11. Elphick e Shoshani (1971) afirmam que existem quatro condi¸˜es co para a ocorrˆncia de um deadlock : e 1.11. co 2. Deve-se utilizar algum algoritmo que a a produza um diagrama de aloca¸˜o de recursos. Segundo Tanenbaum [TAN92. Os recursos n˜o podem ser retirados dos processos que os mantˆm a e alocados enquanto estes processos n˜o finalizam seu uso (condi¸˜o de a ca ausˆncia de preemptividade). analisando em busca ca .

11.4 abaixo. o que ´ co e resumidamente apresentado na Tabela 2. Recupera¸˜o atrav´s de preemp¸˜o ca e ca Retirando-se algum recurso envolvido no bloqueio perp´tuo do proe cesso que o aloca permite a quebra do caminho fechado e conseq¨ente u solu¸˜o do deadlock. isto ´. dentro de certas circunstˆncias ´ poss´ a e ıvel resolvˆ-los. podem evitar maiores transtornos no sistema possibilitando que na ocorrˆncia dos deadlocks estes sejam descobertos e eliminados. ca e Circular 2. e 3. que apesar da sobrecarga que ca provocam. O problema reside que nem sempre um recurso ca pode ser retirado de um processo sem efeitos colaterais prejudiciais a este processo. Estes algoritmos especiais.3 Recupera¸˜o de deadlocks ca Ainda que os deadlocks ocorram. recuper´-los ou elimin´-los. 2.4: Condi¸˜es de Coffman et al. Preemptividade Espera Ordena¸˜o num´rica dos pedidos de recursos. isto ´.. Tais algoritmos tamb´m s˜o complexos ca e a e acabam por onerar o sistema computacional.50 CAP´ ITULO 2. Preven¸˜o estrutural ca Os deadlocks podem ser estruturalmente eliminados de um sistema atrav´s da nega¸˜o de uma ou mais das quatro condi¸˜es de ocorrˆncia. Preven¸˜o dinˆmica ca a Os deadlocks podem ser prevenido atrav´s de procedimentos cuidae dosos de aloca¸˜o que analisam constantemente a possibilidade de ca forma¸˜o de cadeias circulares. 4. M´tua u Reten¸˜o ca Exigir a aloca¸˜o inicial de todos os recursos ca e Espera necess´rios. utilizando algumas t´cnicas: e e a a e 1. a Ausˆncia de e Retirada de recursos dos processos. PROCESSOS de caminhos fechados (deadlocks) utilizando alguma t´cnica de recue pera¸˜o. Tabela 2. um mecanismo de armaca e zenamento de estados seguros do sistema atrav´s da c´pia dos estados e o . para preven¸˜o de deadlocks co ca Condi¸˜o ca Aproxima¸˜o ca Exclus˜o a Colocar todos os recursos do sistema em spool. Recupera¸˜o atrav´s de opera¸˜es de rollback ca e co Exige a implementa¸˜o de checkpoints. e ca co e Para isto devem ser tratadas as condi¸˜es de Coffman et al.

adotando-se uma pol´ ıtica que assume o custo da preven¸˜o como alternativa aos preju´ ca ızos poss´ ıveis da ocorrˆncia dos deadlocks e e de sua elimina¸˜o. embora tamb´m a mais dr´stica. Um processo s´ pode solicitar um recurso se liberar o recurso que o detˆm. p. Se a solicita¸˜o de recursos ocorrer em ordem linear ascendente.11. ca al´m da dif´ implementa¸˜o. embora resolva bem o problema. e 2. uma compila¸˜o). de modo que o bloqueio seja resolvido. Recupera¸˜o atrav´s de elimina¸˜o de processos ca e ca Esta ´ maneira mais simples. a ca espera circular n˜o consegue se formar. 166] [TAN92.16). 3. procedimentos de atualiza¸˜o em bancos de ca ca dados nem sempre podem ser interrompidos e reiniciados.4 Preven¸˜o de deadlocks ca A preven¸˜o de deadlocks ´ a estrat´gia preferencialmente adotada pelos ca e e projetistas de sistemas. ´ poss´ evitar-se a co e ıvel ocorrˆncia dos deadlocks utilizando-se o algoritmo do banqueiro de Dijkstra e (65). Um processo que tˆm negado o pedido de recurso adicional deve liberar e o recursos que atualmente detˆm. Isto possibilita que tais estados sejam retomados a partir daquele ponto. 2.11.2. Antes disto devemos diferenciar estados seguros e inseguros. Um estado seguro ´ aquele em que existe e garantia que todos os processos poder˜o ser finalizados considerando (1) suas a necessidades em termos de recursos e (2) os recursos efetivamente dispon´ ıveis no sistema [DEI92. exige muitos recursos e tem elevado e ıcil ca custo computacional. 254].11. p.. Desta forma os recursos cedidos aos processos ser˜o devolvidos ao sistema para serem alocados para outros a processos. 2. ue . Para prevenir-se a ocorrˆncia dos deadlocks podem ca e ser adotadas uma ou mais das seguintes estrat´gias. numa seq¨ˆncia de estados seguros (veja a Figura 2. DEADLOCKS 51 individuais dos processos em arquivos especiais. e 3. a Mesmo com as quatro condi¸˜es estando presentes. Um ou e e a mais dos processos identificados como envolvidos no bloqueio perp´tuo e podem ser sumariamente eliminados. Enquanto alguns processos podem ser seguramente reiniciados (p. A elimina¸˜o de processos que n˜o podem ser simplesmente reiniciados pode ca a provocar preju´ ızos ao sistema. tal como proposto por e Havender (1968): 1.e.5 Estados seguros e inseguros A maioria dos algoritmos conhecidos para preven¸˜o de deadlocks se baseia ca no conceito de estado seguro. Esta solu¸˜o.

PROCESSOS Figura 2.52 CAP´ ITULO 2.17: Seq¨ˆncia de estados inseguros ue A ocorrˆncia de um estado inseguro. A maior conseq¨ˆncia de um estado inseguro ´ que existem ue e grandes chances de ocorrer um deadlock a partir desta situa¸˜o sendo por ca isso necess´rio evit´-lo. Esta situa¸˜o a ca ´ ilustrada na Figura 2. 254]. 166] [TAN92. bem como de um estado seguro. O sistema operacional.17. p. p. um estado considerado como inseguro ´ aquele em n˜o e a existe a garantia de devolu¸˜o dos recursos devidos pois o processo n˜o ca a recebe todos os recursos de que necessita n˜o devolvendo ao sistema aqueles a eventualmente j´ alocados [DEI92. deve analisar se pode ou n˜o atender plenamente as necessidades de um processo a antes de ceder recursos que n˜o poder˜o ser devolvidos. partindo da mesma situa¸˜o inicial colocada na e ca Figura 25. e depende estritamente da ordem com os recursos dispon´ ıveis s˜o alocados e a liberados pelos processos envolvidos. a a Figura 2.16: Seq¨ˆncia de estados seguros ue Por outro lado. a a . portanto.

a quantidade m´xima de cada recurso que pretenda a utilizar. p. p. A comunica¸˜o entre processos pode ocorrer em v´rias situa¸˜es ca a co diferentes tais como: • redirecionamento da sa´ (dos resultados) de um comando para outro.2. a e • transferˆncia de dados entre perif´ricos. a quantidade de processos varia a cada instante em sise temas reais. atrav´s da utiliza¸˜o de recursos coca a e ca muns aos processos envolvidos na pr´pria comunica¸˜o. e e Tal comunica¸˜o se d´. o problema desta solu¸˜o ´ que cada processo deve espea ca e cificar. Veremos alguns mecanismos a poss´ ıveis para a comunica¸˜o de processos destacando-se: ca • Buffers . ´ uma solu¸˜o e ca cl´ssica no estudo dos sistemas operacionais que visa ilustrar as quest˜es a o associadas a concess˜o de recursos aos processos e as conseq¨ˆncias poss´ a ue ıveis destas concess˜es [DEI92. a cada pedido de uso de um recurso. ca e e Na pr´tica. Se o estado seguinte ´ seguro. as interrup¸˜es s˜o reservadas para co co a a administra¸˜o do sistema em si. ıda • envio de arquivos para impress˜o. Como n˜o ´ razo´vel o ca a e a que tal comunica¸˜o envolva mecanismos de interrup¸˜o devido a sua comca ca plexidade e limita¸˜es de performance. a • transmiss˜o de dados atrav´s da rede. 167] [TAN92. Se um novo processo conduzir a um estado inseguro. quando os processos devem compartilhar ou trocar dados e entre si. geralmente. Al´m disso. Para a comunica¸˜o inter-processo ´ neca ca e cess´rio algum mecanismo bem estruturado. sua cria¸˜o ca dever´ ser adiada. isto ´. o que tamb´m pode gerar um deadlock. o pedido ´ concedido. sua ca aplica¸˜o pr´tica. caso contr´rio tal a e e a solicita¸˜o ´ adiada at´ que possa conduzir a um estado seguro. ca a 2. Este algoritmo efetua o um mapeamento dos recursos e processos de forma a considerar. 256]. COMUNICACAO DE PROCESSOS ¸˜ 53 2.12 Comunica¸˜o de processos ca A comunica¸˜o entre processos ou comunica¸˜o inter-processo (IPC ou Inca ca ter Process Communication) ´ uma situa¸˜o comum dentro dos sistemas e ca computacionais que ocorre quando dois ou mais processos precisam se comunicar. se tal aloca¸˜o leva a um estado seguro ou ca n˜o. portanto.11.6 Algoritmo do banqueiro O algoritmo do banqueiro.12. inicialmente. etc. Outro ponto ´ a e e que a quantidade de recursos pode variar (geralmente diminuir com falhas no sistema) aumentado muito a complexidade desta solu¸˜o e. proposto por Dijkstra em 1965.

o a 39]. p. p. PROCESSOS 2. direcionando-as para uma ou mais impressoras existentes quando estas se tornam ociosas. Este ´ um problema cl´ssico de comunica¸˜o inter-processo.12. tais e a ca como os problemas do jantar dos fil´sofos e do barbeiro dorminhoco discuo tidos em detalhes por Tanenbaum [TAN92. a Os processos s˜o os produtores. E claro que a ´rea reservada para o spool ´ finita 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). temos ca a uma forte limita¸˜o na forma que a placa consegue consumir (transmitir) ca os dados produzidos pelos programas e colocados no buffer de transmiss˜o. A mesma situa¸˜o pode ocorrer quando diversos processos utilizam uma ca placa de rede para efetuar a transmiss˜o de dados para outros computadores. denominada de printer spool.54 • Sem´foros a • Mem´ria Compartilhada o CAP´ ITULO 2. 90] [TAN92.18 temos a um esquema do problema produtor-consumidor. mas caso sejam processos paralelos passa a existir uma e situa¸˜o de concorrˆncia. desde que isto n˜o impusesse e a u a esperas demasiadamente longas aos processos envolvidos. a Se o produtor e o consumidor s˜o processos seq¨enciais. portanto deveriam ter seu acesso limitado atrav´s de primitivas de exclus˜o m´tua. Tanto o buffer como a vari´vel que controla a quantidade de dados que a o buffer cont´m s˜o regi˜es cr´ e a o ıticas. com isto retirando as entradas ´ da ´rea de spool. 56]. onde dois processos dise tintos compartilham um buffer. Um outro a processo (tipicamente um daemon de impress˜o) verifica continuamente a a entrada de entradas no spool. a Existem outras situa¸˜es semelhantes. o que torna este problema um co cl´ssico dentro do estudo dos sistemas operacionais. Em fun¸˜o do tipo de rede e do tr´fego. a solu¸˜o do a u ca problema ´ simples. O processo produtor coloca informa¸˜es no buffer enquanto o processo co consumidor as retira de l´. Mesmo nos casos onde existam m´ltiplos produca e u tores ou m´ltiplos consumidores o problema encontrado ´ basicamente o u e mesmo. Na Figura 2. enquanto o hardware da placa e seu c´digo a o representam o consumidor. uma ´rea de dados de tamanho fixo que a se comporta como um reservat´rio tempor´rio [DEI92. p. Dado que o buffer tem um tamanho limitado e fixo podem ocorrer problemas tais como: . Programas que desejam imprimir podem colocar suas entradas (nomes dos arquivos a serem impressos ou os arquivos de impress˜o propriamente a ditos) em uma ´rea de spooling.1 Buffers e opera¸˜es de sleep e wakeup co Um problema t´ ıpico ´ o do produtor-consumidor.

Nestes casos tanto o produtor como o consumidor poderiam ser adormecidos. ter sua execu¸˜o suspensa. 8. continuando execu¸˜o.2. 7. O consumidor se coloca como inativo atrav´s de um sleep. O produtor envia sinal wakeup para consumidor pois contador=1. O consumidor lˆ contador=0. pois considera que e ca contador=0. a 6. 9. O sinal de wakeup ´ perdido pois o consumidor n˜o est´ logicamente e a a inativo. Uma tentativa de solu¸˜o deste problema utia ca lizando as primitivas sleep (semelhante a uma opera¸˜o suspend ) e wakeup ca (semelhante a uma opera¸˜o resume) pode ser vista no Exemplo 2.9. 5. O produtor produz novo item e o coloca no buffer. at´ que existisse espa¸o no buffer e ca e c para que o produtor coloque novos dados ou existam dados no buffer para o consumidor possa retir´-los. 4. 2. a conduzindo os dois processos a um estado de suspens˜o que permanecer´ a a indefinidamente. isto ´.18: Problema do produtor-consumidor • o produtor n˜o pode colocar novas informa¸˜es no buffer porque ele a co j´ est´ cheio. ue 1. O escalonador interrompe o consumidor. O buffer se torna vazio. e . O consumidor ´ ativado. COMUNICACAO DE PROCESSOS ¸˜ 55 Figura 2. ca A solu¸˜o dada ´ considerada parcial pois pode ocorrer que um sinal de ca e wakeup seja enviado a um processo que n˜o esteja logicamente adormecido. como indicado na seq¨ˆncia de etapas a seguir. O produtor atualiza vari´vel contador=1. e 3. ou a a • o consumidor n˜o pode retirar informa¸˜es do buffer porque ele est´ a co a vazio.12.

consumir item(item). e . } } Exemplo 2. PROCESSOS void produtor(void) { int item. O produtor continuar´ produzindo. colocar item(item). while (TRUE) { produzir item(&item). Tal flag se denomina (wakeup waiting flag). if (contador == N) sleep(). ocorrendo o seguinte: • se flag=0. a A perda de um sinal wakeup acontece devido ao uso irrestrito da vari´vel a contador. O buffer ficar´ cheio pois consumidor est´ inativo. contador--. Ambos os processos permanecer˜o para sempre inativos.56 #define FALSE 0 #define TRUE 1 #define N 100 int contador = 0. if (contador == 1) wakeup(consumidor). if (contador == N-1) wakeup(produtor). 12. A primeira solu¸˜o encontrada para este problema foi adicionar ca uma flag que sinalizasse a situa¸˜o de envio de um sinal wakeup para um ca processo ativo. CAP´ ITULO 2. remover item(&item). o processo adormece. while (TRUE) { if (contador == 0) sleep(). Em qualquer tentativa de adormecer. contador++. o processo deve antes verificar esta flag.9 Solu¸˜o parcial do problema produtor-consumidor ca 10. } } void consumidor (void) { int item. a 11. fazendo que o proa a dutor se coloque como inativo com outro sleep.

. 2. de forma indivis´ e ıvel. e sobre elas estabeleceu-se duas diferentes opera¸˜es: P (coa co nhecida tamb´m como Down) e V (conhecida tamb´m como Up). e representam uma solu¸˜o para ca . Estas vari´veis foram denominadas a sem´foros. nenhuma outra seja efetuada. num ambiente onde existem diversos processos paralelos competindo por recursos. a Existindo processos inativos. Dijkstra propˆs tamb´m em o e 1965 a utiliza¸˜o de vari´veis inteiras para controlar o n´mero de sinais waca a u keup para uso futuro [DEI92. e ca um deles ´ escolhido aleatoriamente pelo sistema para ser ativado e (sem´foro retornar´ a zero. X=0). o processo permanece ativo e faz flag=0. a e Caso afirmativo decrementa X de uma unidade (ou seja. Ambas a opera¸˜es devem ser realizadas como transa¸˜es atˆmicas. Caso negativo envia sinal de sleep. apenas de maneira mais sutil.12. consome um sinal de wakeup). o uso de sem´foros garante que um dado recurso seja utilizado a de forma seq¨encial. COMUNICACAO DE PROCESSOS ¸˜ • se flag=1.12. mas ´ necess´rio destacar que o problema e a continua a existir. a a A implementa¸˜o de sem´foros em linguagem C poderia ser realizada ca a como esquematizada no Exemplo 2. u Os sem´foros e as opera¸˜es sobre eles s˜o usualmente implementadas a co a como chamadas do sistema operacional. ou seja. de forma que enquanto uma opera¸˜o esteja em andaca mento com um dado sem´foro. i.5: Opera¸˜es P() e V() sobre sem´foros co a Opera¸˜o ca P(X) ou Down(X) Verifica se o valor do sem´foro X ´ positivo (X>0). garantindo-se a a consistˆncia dos valores das vari´veis sem´foro. que s˜o e e a generaliza¸˜es das opera¸˜es sleep e wakeup e funcionam como mostra a co co Tabela 2. fazendo inativo o processo. de forma exclusiva.5. isto co co o ´. Tabela 2. e a a A utiliza¸˜o de sem´foros permite a sincroniza¸˜o de v´rios processos. Opera¸˜o ca V(X) ou Up(X) Incrementa o valor do sem´foro X de uma unidade. na ocorrˆncia uma opera¸˜o down.10. 57 Esta improvisada solu¸˜o resolve o problema as custas de uma flag para ca processo envolvido no problema.2 Sem´foros a Para resolver o problema produtor-consumidor. p. 89]. ou ca a ca a seja.2.e.

1. e ca A ´rea de mem´ria reservada para os processo ´ semelhante a um buffer. a u Os sem´foros s˜o freq¨entemente utilizados para sincroniza¸˜o de proa a u ca cessos. garantem o uso individual deste recurso atrav´s da e exclus˜o m´tua. ou seja. ou seja. } } CAP´ ITULO 2. que permitem que apenas um dentre n processos utilize um dado recurso. Sendo regi˜es cr´ o ıticas. } else { s = *s + 1. 42]. muito mais eficientes que o uso de outras solu¸˜es que utilizem tais a co instru¸˜es ou as solu¸˜es de Dekker ou Peterson. } else { sleep(). sua implementa¸˜o utiliza instru¸˜es ca co tipo TST e. Consideramos que as opera¸˜es P() a co e V() foram implementadas como ilustrado no Exemplo 2. a o e mas nesta situa¸˜o todos os processos envolvidos podem escrever e ler neste ca .10 Implementa¸˜o de opera¸˜es P() e V() sobre sem´foros ca co a o problema de perda de sinais de wakeup visto no problema produtorconsumidor.12.10 e inclu´ ıdas no programa atrav´s do cabe¸alho declarado. void P(semaforo *s) { if(*s > 0) { s = *s . PROCESSOS Exemplo 2.11 temos uma poss´ solu¸˜o para o problema do proıvel ca dutor consumidor utilizando sem´foros. No Exemplo 2. embora provocando um espera ativa. s˜o utilizados para garantir a ocorrˆncia de certas seq¨ˆncias a e ue de eventos ou para impedir que outras seq¨ˆncias nunca ocorram ou para ue que ocorram de uma forma espec´ ıfica. } } void V(semaforo *s) { if (ExisteProcessoEsperando(s)) { AtivaProcessoEsperando(s).3 Mem´ria compartilhada o A mem´ria compartilhada ´ um mecanismo freq¨entemente utilizado o e u para a comunica¸˜o entre processos diferentes onde uma regi˜o de mem´ria ca a o ´ reservada para uso comum dos processos envolvidos na comunica¸˜o. p. s˜o opera¸˜es extremamente a co r´pidas. e c 2. co co Sem´foros iniciados com valor 1 s˜o conhecidos como sem´foros bin´rios a a a a [TAN92.58 typedef int semaforo.

p(&mutex). v(&mutex). remover item(&item). void produtor(void) { int item. colocar item(item). } } Exemplo 2. while (TRUE) { produzir item(&item).12. p(&mutex). v(&vazio). p(&vazio). v(&cheio).11 Solu¸˜o do problema produtor-consumidor com sem´foros ca a . COMUNICACAO DE PROCESSOS ¸˜ 59 #include "semforos.2. semaforo cheio = 0.h" #define FALSE 0 #define TRUE 1 #define N 100 typedef int semaforo. v(&mutex). } } void consumidor(void) { int item. semaforo vazio = N. consumir item(item). semaforo mutex = 1. while (TRUE) { p(&cheio).

garantindo seu uso exclusivo. await(E. advance(E) Incrementa. degradando o sistema e podendo causar at´ mesmo e sua instabilidade. ou seja. Segundo Guimar˜es: a . vari´veis e estruturas agrupados num m´dulo ou pacote a o especial. faz com que uma dada tarefa e pare de ser executada. A invers˜o de dois sem´foros. associa-se um sem´foro com ca a valor inicial 1 ` regi˜o de mem´ria.60 CAP´ ITULO 2. a u tal como na solu¸˜o que utiliza sem´foros. v) Espera que E tenha valor igual ou superior a v. PROCESSOS buffer. Para que tais problemas pudessem ser resolvidos mais facilmente Hoare (1974) e Hansem (1975) propuseram o conceito demonitor: uma cole¸˜o ca de procedimentos. sendo freq¨entemente utilizada para passagem u de mensagens entre processos. a ca De forma geral. Esta solu¸˜o utiliza uma vari´vel ca a ca a especial denominada contador de eventos (event counters) que possui trˆs e opera¸˜es definidas como mostra a Tabela 2. a solu¸˜o ´ semelhante aquela do problema de produtores ca e e consumidores. aplicada a n processos que podem tanto ler ou escrever numa regi˜o de mem´ria espec´ a o ıfica. Como dois processo n˜o podem acessar simultaneamente esta regi˜o a a de mem´ria. ou seja. co a Monitores Tanto os sem´foros como os contadores de eventos podem resolver uma a s´rie de problemas.6: Opera¸˜es sobre contadores de eventos co Opera¸˜o ca Descri¸˜o ca read(E) Retorna o valor corrente de E. de forma semelhante ao uso de sem´foros. (por exemplo. mas seu uso deve ser cuidadoso para que n˜o provoque e a situa¸˜es desastrosas. o valor de E de uma unidade. antes de usarem a a o a ´rea de mem´ria devem acionar uma opera¸˜o P().6 co Tabela 2. 2.12.4 Outros mecanismos de IPC Contadores de eventos Reed e Kanodia propuseram em 1979 uma outra solu¸˜o para o problema ca de produtor-consumidor sem a necessidade de obter-se a exclus˜o m´tua. atomicamente. Ao finalizar o uso a o ca dever˜o acionar uma opera¸˜o V(). mutex co a a e vazio na solu¸˜o do problema produtor-consumidor usando sem´foros) ca a pode provocar um bloqueio perp´tuo. o um processo de cada vez deve utilizar a regi˜o de mem´ria destinada a a o comunica¸˜o entre eles. Para obter-se isso. embora compartilhada seu uso deve ser serializado. Todo os processos. ´ E poss´ solucionar-se o problema utilizando os contadores de eventos ıvel e suas opera¸˜es.

88] a 61 Processos podem acessar os procedimentos e fun¸˜es de um monitor co embora n˜o possam utilizar diretamente a estrutura interna de seus dados a [TAN92. procedure AlocaRecurso. saindo ca a ca imediatamente do monitor. end monitor. procedure LiberaRecurso. end. begin emUso := false. p. signal(livre). anteriormente bloqueado utilize o recurso. 45]. ao ca ser ativado pelo escalonador poder´ ent˜o prosseguir com o trabalho. No Exemplo 2.12 Exemplo de monitor Esta solu¸˜o se baseia na introdu¸˜o de vari´veis de condi¸˜o e de duas ca ca a ca opera¸˜es especiais sobre elas: AlocaRecurso e LiberaRecurso. [GUI86. a um conjunto de regi˜es cr´ o ıticas operando sobre as mesmas vari´veis comuns. p. Um procedimento do monia a tor corresponde a uma regi˜o cr´ a ıtica. livre : condition. Exemplo 2. begin if emUso then wait(livre). { inicializa¸~o } ca end.12. end. provocando o bloqueio ca a ca do processo que utilizou o monitor. temos a declara¸˜o de um monitor numa nota¸˜o semelhante ao Pascal. Quando co um monitor descobre que uma opera¸˜o n˜o ´ poss´ ca a e ıvel. begin emUso := false. ele efetua uma opera¸˜o wait sobre uma certa vari´vel de condi¸˜o. ca ca Monitor Exemplo. a a . emUso := true.12. portanto. Um monitor corresponde. ou ainda outro. Isto permite que outro processo.2. { declara¸~o de vari´veis } ca a emUso : boolean. num arranjo muito semelhante a utiliza¸˜o da interface de ca um objeto. Um dos processos em espera pela condi¸˜o. pode efetuar uma opera¸˜o de signal sobre aquela vari´vel de condi¸˜o. COMUNICACAO DE PROCESSOS ¸˜ Monitor ´ um conjunto de procedimentos que operam sobre vae ri´veis comuns a v´rios processos. sem acesso aos seus campos privativos. Este processo.

62

CAP´ ITULO 2. PROCESSOS

Apesar de serem semelhantes as opera¸˜es de sleep e wakeup, vistas na co se¸˜o 2.12.1, atrav´s dos monitores os problemas ocorridos em situa¸˜es ca e co de corrida n˜o se repetem dado a garantia de exclus˜o m´tua sobre as a a u opera¸˜es nas vari´veis de condi¸˜o internas dos pr´prios monitores. Al´m co a ca o e disso, as opera¸˜es wait e signal s´ podem ser utilizadas internamente aos co o procedimentos e fun¸˜es dos monitores. Os monitores s˜o um conceito de co a programa¸˜o. Enquanto que os sem´foros podem ser implementados direca a tamente em C ou Pascal, com uso de algumas rotinas assembly, a implementa¸˜o de monitores ´ um pouco mais complexa, exigindo do compilador ca e primitivas de exclus˜o m´tua. a u

2.13

Threads

Como vimos, cada processo conta com uma estrutura de controle razoavelmente sofisticada. Nos casos onde se deseja realizar duas ou mais tarefas simultaneamente, o solu¸˜o trivial a disposi¸˜o do programador ´ dividir as ca ca e tarefas a serem realizadas em dois ou mais processos. Isto implica na cria¸˜o ca de manuten¸˜o de duas estruturas de controle distintas para tais processos, ca onerando o sistema, e complicando tamb´m 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 fluxo de execu¸˜o, ou seja, s´ recebe ´ ca o a aten¸˜o do processador de forma individual, quando um processo ´ divido ca e em threads, cada uma das threads componentes recebe a aten¸˜o do procesca sador como um processo comum. No entanto, s´ existe uma estrutura de o controle de processo para tal grupo, o espa¸o de mem´ria ´ 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 combina¸˜o de paralelismo com exeu¸˜o seq¨encial e chamadas de sistema bloca ca u queantes” [TAN92, p. 509]. Na Figura 2.19 representamos os fluxos de execu¸˜o 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 fluxos independentes de execu¸˜o pertencentes a um mesmo processo, que requerem menos ca recursos de controle por parte do sistema operacional. Assim, as threads s˜o o que consideramos processos leves (lightweight processes) e constituem a uma unidade b´sica de utiliza¸˜o do processador [TAN92, p. 508] [SGG01, a ca p. 82]. Sistemas computacionais que oferecem suporte para as threads s˜o 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 usu´rio s˜o aquelas oferecidas atrav´s de bia a e bliotecas espec´ ıficas e adicionais ao sistema operacional, ou seja, s˜o a implementadas acima do kernel (n´cleo do sistema) utilizando um mou delo de controle que pode ser distinto do sistema operacional, pois n˜o a s˜o nativas neste sistema. a Kernel threads As threads do sistema s˜o aquelas suportadas diretamente a pelo sistema operacional e, portanto, nativas.

Figura 2.20: Threads de usu´rio e de kernel a Em sistemas n˜o dotados de suporte a threads nativamente, o uso de a bibliotecas de extens˜o permite a utiliza¸˜o de pseudo-threads. Exemplos a ca de bibliotecas de suporte threads de usu´rio s˜o o PThreads do POSIX ou a a o C-threads do sistema operacional Mach. Atrav´s de tais biblioteca s˜o oferecidos todos os recursos necess´rios e a a para a cria¸˜o e controle das threads. Usualmente os mecanimos de cria¸˜o ca ca de threads de usu´rio s˜o bastante r´pidos 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 freq¨entemente tamb´m s˜o devido u e a ao suporte n˜o nativo. Quando o suporte ´ nativo, a cria¸˜o das threads ´ a e ca e usualmente mais demorada, mas n˜o ocorrem os inconveniente decorrentes a do bloqueio de uma ou mais threads em rela¸˜o `s demais. ca a

64

CAP´ ITULO 2. PROCESSOS

2.13.1

Modelos de multithreading

A forma com que as threads s˜o disponibilizadas para os usu´rios ´ o que a a e denominamos modelos de multithreading. Como mostra a Figura 2.21, s˜o a comuns trˆs modelos distintos: e • Modelo n para um. Este modelo ´ empregado geralmente pelas bibliotecas de suporte de e threads de usu´rio, onde as v´rias threads do usu´rio (n) s˜o associadas a a a a a um unico processo suportado diretamente pelo sistema operacional. ´ • Modelo um para um. Modelo simplificado de multithreading verdadeiro, onde cada threads do usu´rio ´ 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 sofisticado de multithreading verdadeiro, onde um conjunto de threads do usu´rio n ´ associado a um conjunto de threads a e nativas do sistema, n˜o necess´riamente 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 utiliza¸˜o 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 cria¸˜o de uma nova thread e ca substancialmente mais r´pida do a cria¸˜o de um novo processo. a ca • Compartilhamento de recursos simplificado entre as threads de um mesmo processo, que ´ a situa¸˜o mais comum de compartilhamento e ca e comunica¸˜o inter-processos. ca

2.13. THREADS

65

• Economia, pois o uso de estruturas de controle reduzidas em compara¸˜o ao controle t´ ca ıpico dos processos, desoneramos o sistema. Al´m e disso o compartilhamento de recursos simplificado leva tamb´m a ecoe nomia de outros recursos. • Permitem explorar mais adequadamente as arquiteturas computacionais que disp˜em de m´ltiplos processadores. o u

PROCESSOS .66 CAP´ ITULO 2.

podemos afirmar que num sistema onde s´ exista um unico o ´ processador. 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. p. [TAN92. 62] Por sua vez. Isto ´ chamado ese calonamento do processador ( processor scheduling). 287] Simplificando.Cap´ ıtulo 3 Escalonamento de Processos O escalonamento de processadores ´ a forma com os processadores e existentes num sistema computacional s˜o utilizados para efetuar o proa cessamento. Deitel coloca que: A designa¸˜o de processadores f´ ca ısicos para processos permite aos processos a realiza¸˜o de trabalho. [DEI92. Esta designa¸˜o ´ uma tarefa ca ca e complexa realizada pelo sistema operacional. respons´vel a e a pela produtividade e eficiˆncia atingidas por um sistema computacional. em grande parte. isto ´. Tanenbaum prop˜e a seguinte defini¸˜o: o ca Quando mais de um processo ´ execut´vel. A forma com que se d´ o escalonamento ´. o sistema operacioe a nal deve decidir qual ser´ executado primeiro. A parte do sisa tema operacional dedicada a esta decis˜o ´ chamada escalonador a e ( scheduler) e o algoritmo utilizado ´ chamado algoritmo de ese calonamento ( scheduling algorithm). p. 67 . o escalonamento representa a ordem em que os processos ser˜o a executados. ´ como os processos s˜o distribu´ e e a ıdos para execu¸˜o nos ca processadores.

Como pode ser visto facilmente. ESCALONAMENTO DE PROCESSOS 3. e • Favorecer processos bem comportados: processos que tenham comportamento adequado poderiam receber um servi¸o melhor. pois dado que a quantidade de tempo dispon´ de processamento o ıvel (tempo do processador) ´ finita. u ıvel a • Minimizar a sobrecarga (overhead ): recursos n˜o devem ser desperdia c ¸ados embora algum investimento em termos de recursos para o sistema pode permitir maior eficiˆncia. • Exibir degrada¸˜o previs´ ca ıvel e progressiva em situa¸˜es de intensa co carga de trabalho. • Ser previs´ ıvel: uma tarefa deveria ser sempre executada com aproximadamente o mesmo tempo e custo computacional. O maior problema existente no projeto de algoritmos de escalonamento est´ associado a natureza imprevis´ a ıvel dos processos. a • Maximizar o n´mero poss´ de usu´rios interativos. tendo possibilidades idˆnticas de uso do processador. alguns destes objetivos s˜o contraa dit´rios. o projeto de uma pol´ ıtica de escalonamento deve contemplar os seguintes objetivos: • Ser justo: todos os processos devem ser tratados igualmente. • Minimizar o tempo de resposta para usu´rios interativos. c • Balancear o uso de recursos: o escalonador deve manter todos os recursos ocupados. • Maximizar a produtividade (throughput): procurar maximizar o n´u mero de tarefas processadas por unidade de tempo. pois n˜o ´ poss´ a e ıvel prevermos se um dado processo utilizar´ intensamente o processador. assim como os demais recursos computacie onais. ou seja. devendo ser evitado o e adiamento indefinido. . ou a se precisar´ grandes quantidades de mem´ria ou se necessitar´ numerosos a o a acessos aos dispositivos de E/S. ou seja.1 Objetivos do escalonamento O projeto de um escalonador adequado deve levar em conta uma s´rie de e diferentes necessidades. para que um processo seja favorecido outro deve ser prejudicado. processos que usam recursos sub-utilizados deveriam ser favorecidos.68 CAP´ ITULO 3.

3. . O escalonamento de alto n´ ıvel ou de longo prazo ocorre menos freq¨entemente num sistema enquanto o escalonamento de u baixo n´ ou de curto prazo ocorre constantemente. Este n´ ıvel de escalonamento ´ respons´vel por administrar a carga do sistema. m´dio e prazo e curto prazo. corresponde a ade miss˜o de processos. usualmente uma rotina esa crita diretamente em linguagem de m´quina que se encontra permaa nentemente na mem´ria principal. utilizando-se e a de primitivas de suspens˜o (suspend ) e ativa¸˜o (resume ou activate). Esa o a tas tarefa s˜o executadas pelo dispatcher.2 N´ ıveis de escalonamento Existem trˆs n´ e ıveis distintos de escalonamento em um sistema computacional quando se considera a freq¨ˆncia e complexidade das opera¸˜es envolvidas. N´ IVEIS DE ESCALONAMENTO 69 3. Correspondem a rotinas de alto n´ ıvel oferecidas pelas APIs do sistema operacional.2 3. Uma vez admitidas. Considerando assim os n´ ıveis de escalonamento e as opera¸˜es de susco pens˜o (suspend ou sleep) e ativa¸˜o (resume. a ca Correspondem a rotinas internas do sistema operacional. intermedi´rio e baixo tamb´m s˜o a e a conhecidos respectivamente como escalonamento de longo prazo. dado que representa a ıvel troca de contexto e o chaveamento do processador entre os processos ativos. • Escalonamento de n´ ıvel intermedi´rio a Corresponde a determina¸˜o de quais processos existentes competir˜o ca a pelo uso do processador (processos ativos). • Escalonamento de baixo n´ ıvel Rotinas que determinam qual processos. isto ´.3 Escalonamento preemptivo e n˜o preemptivo a Um algoritmo de escalonamento ´ dito n˜o preemptivo quando temos que e a o processador designado para um certo processo n˜o pode ser retirado deste a at´ que o processo seja finalizado (completion).2. dentre os processos ativos. ser´ o pr´ximo processo que efetivamente utilizar´ o processador. ue co • Escalonamento de alto n´ ıvel Chamado tamb´m de escalonamento de tarefas. o Os n´ ıveis de escalonamento alto. as tarefas transformam-se em processos. a determina¸˜o de quais tarefas passar˜o a e ca a a competir pelos recursos do sistema. Analogamente. o mapa a ca de estados dos processos pode ser representado de maneira mais completa como ilustrado na Figura 3. 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. wakeup ou activate).

representando ca uma sobrecarga computacional para realiza¸˜o desta troca e armazenagem ca de tais dados. para que o processador seja retirado de ca um processo.70 CAP´ ITULO 3. Nestes casos. Tal troca exige que todo o estado de execu¸˜o de um processo seja ca adequadamente armazenado para sua posterior recupera¸˜o. ıvel Por sua vez. os algoritmos n˜o preemptivos s˜o mais simples e adea a quados para o processamento n˜o interativo. a preemptividade representa a troca do processo em execu¸˜o. Embora n˜o proporcionando ina teratividade. . no caso de sistemas ca multiusu´rio interativos (sistemas em tempo repartido) ou em sistema de a tempo real.1: N´ ıveis de escalonamento Algoritmos preemptivos s˜o mais adequados para sistemas em que m´la u tiplos processos requerem aten¸˜o do sistema. interrompendo seu trabalho. semelhante aos esquemas de a processamento em lote dos sistemas batch. s˜o geralmente mais eficientes e previs´ a ıveis quanto ao tempo de entrega de suas tarefas. ou seja. ´ fundamental que ocorra a troca de contexto dos e processos. Usualmente os algoritmos preemptivos s˜o mais complexos a dada a natureza imprevis´ dos processos. assim sendo. ESCALONAMENTO DE PROCESSOS Figura 3. e designado a outro processo. anteriormente interrompido.

tempo de resposta e tempo de permanˆncia. outros tipos de recursos o n˜o podem sofrer preemp¸˜o. Tamb´m ´ poss´ que um processo e e e ıvel ceda o processador. A preemptividade de certos algoritmos se baseia no fato de que o processador ´. naturalmente. throughput. tempo de retorno ou turnaround time. e ´ um crit´rio simples dado pela soma do tempo de espera com o tempo e e de servi¸o ou tempo de execu¸˜o: c ca . volunt´riamente. em favor de outros processos.3. 97]. 98]: uso do processador. nem sempre dispon´ ıvel. QUALIDADE DO ESCALONAMENTO 71 Figura 3. e O tempo de permanˆncia. a ca e dado que muitas vezes n˜o podem ser retirados de um processo sem que a ocorra preju´ para este. um recurso que e pode ser retirado de um processo e posteriormente devolvido sem preju´ ızo. um recurso preemptivo. ızo 3. p. mas conta com a generosidade do programador. mas a preemp¸˜o ocorre em duas situa¸˜es a a ca co bem definidas: quando o processo efetua uma opera¸˜o de I/O e quando o ca processo ´ finalizado [SGG01. o processo educado poderia executar uma chamada a uma fun¸˜o yeld ca (dar preferˆncia). onde os proe cessos n˜o s˜o interrompidos. p. ou seja.1. tais como impressoras e at´ mesmo arquivos. Por outro lado.4 Qualidade do escalonamento Existem v´rias crit´rios que permitem a avalia¸˜o da qualidade do servi¸o a e ca c oferecido por um algoritmo de escalonamento [SGG01.4. Neste a caso.2: Mapa de estados dos processos Existem tamb´m algoritmos de escalonamento cooperativo. como no caso do MS-Windows 3. A preemp¸˜o voe ca lunt´ria pode auxiliar numa distribui¸˜o mais equitativa da capacidade de a ca processamento do sistema. O mesmo acontece com a mem´ria.

teremos que o tempo de permanˆncia normalizado de um processo ser´ 1 (um). o principal objetivo ´ ıvel e designar o processador para um certo processo dentre v´rios processos exisa tentes.3: Representa¸˜o gr´fica do tempo de permanˆncia ca a e Uma outra forma de avaliar-se o escalonamento ´ utilizando-se o tempo e de permanˆncia normalizado (tpn). Ser˜o abordados os seguintes algoritmos de escalonamento: a • First In First Out . Em todos eles. e e 2. Assim e a sendo. ou seja. o que constitui o melhor caso poss´ ıvel. valores maiores do que este indicam um pior servi¸o oferecido pelo c algoritmo de escalonamento. 3. 356]: 1. ca a e Figura 3.3 temos uma representa¸˜o gr´fica do tempo de permanˆncia. Stallings categoriza os escalonadores como [STA92. ESCALONAMENTO DE PROCESSOS tp = tpermanencia = tespera + tservico (3. Orientados ao usu´rio: quando procuram otimizar os tempos de a resposta e permanˆncia al´m da previsibilidade. o tratamento justo e o balanceamento do ca uso de recursos. a raz˜o entre o tempo de e a permanˆncia (tp) e o tempo de servi¸o (ts): e c tpn = tpermanencia tespera + tservico = tservico tservico (3. Na Figura 3.1) Em geral deseja-se que o tempo de permanˆncia seja o menor poss´ e ıvel. otimizando um ou mais aspectos do comportamento geral do sistema.5 Algoritmos de escalonamento Existem v´rios algoritmos que s˜o utilizados para a realiza¸˜o do escalonaa a ca mento de baixo n´ ou de curto prazo.72 CAP´ ITULO 3.2) Se a espera for zero. Orientados ao sistema: quando enfatizam a produtividade. a taxa de utiliza¸˜o da processador. p.

e ca Outro ponto ´ que processos importantes podem ficar a espera devido ` e a execu¸˜o de outros processos menos importantes dado que o escalonamento ca . No escalonamento FIFO os processos prontos (ou jobs) s˜o colocado numa fila a organizada por ordem de chegada.4.1 Escalonamento FIFO (First In First Out) ´ E a forma mais simples de escalonamento tamb´m conhecido como FCFS e (First Come First Served ). Tal processo recebe o uso do processador at´ que seja completado (completion).5.5. como mostra a Figura 3. o escalonamento FIFO ´ um algoritmo n˜o preemptivo. ou seja. ocorre que processos e de pequena dura¸˜o n˜o s˜o favorecidos pois tem seu tempo de resposta forca a a temente influenciado pelos processos a serem processados primeiramente. ca e Com esta fun¸˜o de sele¸˜o. ou primeiro a chegar. ca a a Figura 3. o processo e permanece em execu¸˜o at´ que seja finalizado. Assim sendo. de forma que os demais ca e processos na fila fiquem esperando por sua oportunidade de processamento. o que corresponde dizer que sua fun¸˜o ca de sele¸˜o ´ min(tchegada ). seleciona-se dentre os processos na fila de ca ca espera aquele com menor tempo de chegada. primeiro a ser servido. o tempo de resposta aumenta consideravelmente em fun¸˜o da quantica dade de processos posicionados a frente e tamb´m pela dura¸˜o destes.4: Escalonamento FIFO (First In First Out) Embora dˆ igual tratamento a todos os processos. 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. pois e a os processos em execu¸˜o n˜o s˜o interrompidos. ou seja.3.

C e D com tempos de processamento distintos.06 C 2 12 36 48 4. ou seja.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 s˜o organizados numa fila segundo sua prioridade. sendo a colocados a frente os processos jobs de maior prioridade.00 B 1 35 2 37 1. em fun¸˜o de como ocorreu o escalonamento. semelhante aos sistemas de processamento em lote (batch systems) n˜o ´ utilizada como esquema a e principal de escalonamento. 105].7 Podemos perceber que. Na e a Figura 3. 64] [SGG01. ESCALONAMENTO DE PROCESSOS FIFO n˜o concebe qualquer mecanismo de distin¸˜o entre processos (por a ca exemplo.5: Escalonamento HPF (Highest Priority First) .00 D 3 4 47 51 12.74 CAP´ ITULO 3. ´ uma forma o a a e de escalonamento n˜o preemptivo. 12 e 4 segundos. num esquema de escalonamento que c tende a ter tempos m´dios de resposta maiores quanto maior o n´mero de e u processos em espera.5.75 e 4. ca Figura 3.75 M´dias 21. p. Esta forma de escalonamento. sua fun¸˜o e ca de sele¸˜o ´ max(prioridade). p. processos com diferentes n´ ıveis de prioridade). Ap´s iniciados. onde quatro processos A. favorecendo os processos considerados mais ca e importantes [TAN92.1: Exemplo de fila de processos sob escalonamento FIFO Processo tchegada tservico tespera tperm tpn A 0 3 0 3 1. isto ´.5 temos uma representa¸˜o deste tipo de escalonamento. o ca menor processo obteve o pior servi¸o. respectivamente 3.25 34. os processos n˜o s˜o interrompidos. 3. s˜o escalonados conforme sua chegada pelo sistema operacional. a Tabela 3. oferecendo como a vantagem de propora cionar tempos m´dios de espera menores para processos priorit´rio.1. 35. B. mas como forma auxiliar de escalonamento para processamento de filas batch. Avaliemos o exemplo ilustrado pela Tabela 3.

5. respectivamente 3. as quais s˜o com freq¨ˆncia pouco precisas. dado o escalonamento ordenar os processos segundo sua prioridade.00 C 2 1 12 1 13 1. Quando determinada internamente. devemos a e considerar tamb´m que um processo de prioridade relativamente baixa pode e ter sua execu¸˜o adiada indefinidamente pela chegada cont´ ca ınua de processos de maior prioridade (indefinite postponement). ALGORITMOS DE ESCALONAMENTO 75 A prioridade ´. ou seja. a definidas externamente.5 29. Por outro lado.3. B. em geral. no ene u tanto n˜o existe consenso em definir prioridade maiores como n´meros maia u ores (indicando sua maior importˆncia) ou o inverso (indicando sua ordem a preferencial). 103]. ca Observe tamb´m que o processo A. come¸ou a ser executado antes devido ao seu tempo de chec gada. relativamente simples. a mesma ´ simplesmente atribu´ ao processo e ıda pelo operador ou pelo programador. C e D com tempos de processamento distintos. pois este algoritmo n˜o ´ preemptivo. tais como quantidade de mem´ria necess´ria. ca No caso do HPF. para a ca solu¸˜o do problema da estagna¸˜o denominada aging (envelhecimento). alguns processos podem ser prejudicados em fun¸˜o ca de outros de maior prioridade. 12 e 4 segundos. onde quatro processos A. p.2: Exemplo de fila de processos sob escalonamento HPF Processo tchegada prio tservico tespera tperm tpn A 0 4 3 0 3 1.08 B 1 2 35 14 49 1. Avaliemos o mesmo exemplo utilizado para o escalonamento FIFO. sendo necess´rio o uso de estimativas feitas pelo usu´rio ou a a pelo programador. de maneira emp´ ırica. embora tenha prioridade mais baixa e que os demais. como mostra a Tabela 3. A prioridade pode ser definida interna ou externamente ao sistema. o sistema pode utilizar diversos fatores. ou seja pode sofrer de estagna¸˜o (starvation). n˜o sendo interrompido com a chegada de processos de maior pria oridade.2. ca ca Tal solu¸˜o consistem em progressivamente aumentar a prioridade dos proca cessos que aguardam na fila a medida que o tempo passa. como forma de compensar a espera e evitar a estagna¸˜o. e . existe uma solu¸˜o.06 Podemos perceber que. Tabela 3. representada por um n´mero inteiro. Notemos que o c tempo de processamento de um job n˜o pode ser determinado antes de seu a processamento.75 M´dias e 15. pois se processos grande s˜o executados pria meiro ocorre uma degrada¸˜o significativa para os demais processos. estimativas do tempo o a de servi¸o e outros elementos para calcular a prioridade. No caso a ue de prioridade externamente. processos poderiam ter ca sua prioridade incrementada at´ que sejam executados [SGG01. s˜o escalonados conforme suas prioridades.00 4. 35.4 D 3 3 4 47 51 12.

76 CAP´ ITULO 3. mas como forma a e auxiliar de escalonamento para processamento de filas batch.3 Escalonamento SJF (Shortest Job First) O escalonamento SJF (Shortest Job First) ou menor job primeiro. sendo colocados a frente os menores proca cessos jobs. isto ´. tamb´m e ´ conhecido como SPF (Shortest Process First) ou menor processo primeiro.6 temos uma representa¸˜o deste tipo de escaca lonamento. Para evitar abua ue sos por parte dos usu´rios (que podem indicar estimativas mais baixas que a os tempos esperados). o escalonamento HPF n˜o ´ utilizado como esquema principal de escalonamento. os processos em espera pelo processador s˜o organizados numa a fila segundo seu tempo de execu¸˜o. mas isto n˜o resolve uma s´rie de problemas. ou seja.5. sua fun¸˜o de sele¸˜o ´ min(tservico ). onde o tempo de servi¸o ´ tomado como prioric e dade. Na Figura 3. Uma outra quest˜o ´ a possibilidade deste algoritmos provocar a esa e tagna¸˜o (starvation) de processos grandes os quais podem permanecer inca . prejudicando outros jobs. Da mesma forma que no escalonamento FIFO.6: Escalonamento SJF (Shortest Job First) O grande problema deste esquema de escalonamento ´ que o tempo de e processamento de um job n˜o pode ser determinado antes de seu procesa samento. ´ uma forma o a a e de escalonamento n˜o preemptivo. as quais s˜o com freq¨ˆncia pouco precisas. Na verdade sua maior qualidade est´ na execu¸˜o a ca seletiva de jobs conforme sua prioridade calculada ou atribu´ ıda. e ´ E um caso especial do HPF. os processos n˜o s˜o interrompidos. entre a e os quais o incorreto posicionamento de um job pelo sistema devido a uma estimativa incorreta. favorecendo os e ca ca e processos que podem ser finalizados intervalos de tempo menores. sendo necess´rio o uso de estimativas feitas pelo usu´rio ou pelo a a programador. os resultados apresentados por este algoritmo poderiam tanto aproxim´-lo do escalonamento FIFO como a apresentar resultados de qualidade melhores. mas mesmo assim oferece a vantagem a de proporcionar tempos m´dios de espera menores do aqueles obtidos num e esquema FIFO. ESCALONAMENTO DE PROCESSOS Conforme as prioridades e os processos. os resultados exibidos foram um pouco melhores. Ap´s iniciados. podem ser adotadas pol´ ıticas de premia¸˜o em fun¸˜o ca ca do acerto das estimativas. ou seja. Figura 3. No caso. 3.

75 18. o ca de forma a compensar a espera excessiva de tarefas de maior dura¸˜o.4 Escalonamento HRN (Highest Response-Ratio Next) Para corrigir algumas das deficiˆncias do escalonamento SJF. max(prioridade). ou seja. Observe atentamente a rela¸˜o que determina a prioridade.5. mas como forma auxiliar de escalonamento para processamento de filas batch.42 B 1 35 18 51 1.00 D 3 4 0 4 1. Da mesma forma que os demais esquemas de escalonamento vistos. ca Avaliemos o mesmo exemplo utilizado para o escalonamento FIFO. B. os menores processos obtiveram o meca lhor servi¸o sem que isso resultasse numa degrada¸˜o significativa para os c ca processos maiores. evidenciando as qualidades do escalonamento SJF. a partir a c do qual tais processos seriam executados.1) ou mesmo o HPF (Tabela 3. tal como mostra e prioridade = . o escalonamento SJF n˜o ´ utilizado como esquema principal de escalonaa e mento. em fun¸˜o do escalonamento ordenar ca os processos segundo sua dura¸˜o.22 Podemos perceber que neste caso.75 1. Tabela 3.3.3. Uma solu¸˜o para este problema seria impor um ca tempo m´ximo de espera fixo ou proporcional ao tempo de servi¸o.3: Exemplo de fila de processos sob escalonamento SJF Processo tchegada tservico tespera tperm tpn A 0 3 0 3 1. 3. este ca valor corresponde ao tempo de permanˆncia normalizado.46 M´dias e 5.3) tservico A fun¸˜o de sele¸˜o escolhe o job de maior a prioridade para faca ca zer uso do processador. como mostra a Tabela 3. s˜o escalonados em conforme suas dura¸˜es a co e tempo de chegada pelo sistema operacional. ALGORITMOS DE ESCALONAMENTO 77 definidamente na fila de espera caso processos de menor dura¸˜o cheguem ca continuamente ao sistema. Tanto o tempo m´dio de espera como os tempos m´dios e e de permanˆncia e de permanˆncia normalizado apresentam valores bastante e e inferiores aos obtidos com o escalonamento FIFO (Tabela 3. 35. na verdade. para evitar a estagna¸˜o. onde quatro processos A. C e D com tempos de processamento distintos.00 C 2 12 5 17 1. Hansen (1971) e propˆs um balanceamento entre a dura¸˜o do job e seu tempo de espera.2). podemos notar que. respectivamente 3. 12 e 4 segundos.5. Para ca tanto idealizou uma forma dinˆmica de organiza¸˜o da fila de processos a ca atrav´s do c´lculo de suas taxas de resposta (response ratio) ou prioridades e a como dado a seguir: tespera + tservico (3.

35.78 CAP´ ITULO 3. onde quatro processos A. ca c A medida que a espera vai se tornando maior. como mostra a Tabela 3.7: Escalonamento HRN (Highest Response-Ratio Next) Uma vez encaminhados a CPU. Da mesma forma que no escalonamento SJF e SRT. o escalonamento HRN pressup˜e a disponibilidade dos tempos de execu¸˜o de cada job. os jobs s˜o processados at´ sua finaa e liza¸˜o. 12 e 4 segundos. s˜o escalonados em conforme a suas prioridades pelo sistema operacional. ca Figura 3.25 1. num primeiro momento.90 Podemos observar que os resultados apresentados pelo HRN foram bas- . determinando a pr´xima tarefa a e o ser processada.00 B 1 35 18 53 1. Temos assim que.4. at´ mesmo os jobs de maior e dura¸˜o v˜o tendo suas prioridades aumentadas at´ que estas superem as prica a e oridades de processos curtos rec´m-chegados. ca Novamente tomemos o exemplo utilizado para o escalonamento FIFO e SJF.75 21.4: Exemplo de fila de processos sob escalonamento HRN Processo tchegada tservico tespera tperm tpn A 0 3 0 3 1.7 temos uma ilustra¸˜o deste esquema de escalonamento. os jobs de curta ca dura¸˜o s˜o favorecidos. sendo assim.00 C 2 12 1 13 1. Tabela 3. proporcionando um equil´ e ıbrio bastante positivo a medida que os processos v˜o sendo selecionados e exea cutados. Na Figura 3. ESCALONAMENTO DE PROCESSOS a Equa¸˜o 3. C e D com tempos de processamento distintos. B. o o ca que pode inviabilizar seu uso pr´tico.08 D 3 4 12 16 4. respectivamente 3.2. Note que as prioridades s˜o reaa valiadas ao final do t´rmino de cada job. este um algoritmo n˜o preemptivo de escalonamento ca a apesar da forma dinˆmica com que a fila de processos em espera ´ adminisa e trada. pois o tempo de permanˆncia figura no numeraca a e dor da fra¸˜o enquanto apenas o tempo de servi¸o aparece no denominador. tal como o de outros algoritmos de a escalonamento baseados em estimativas do tempo de execu¸˜o.51 M´dias e 7.

5.8 esquematiza ca o funcionamento de algoritmo. Assim. ALGORITMOS DE ESCALONAMENTO 79 tante superiores ao FIFO (Tabela 3.1).8: Escalonamento SRT (Shortest Remaining Time) A sobrecarga imposta pelo registro dos tempos decorridos de execu¸˜o e ca pela troca de contexto ´ justificada pelo fato de pequenos processos serem e executados praticamente de imediato. o HRN n˜o apresenta o risco do adiaa amento infinito. caso a estimativa de seu tempo de execu¸˜o seja menor que o ca ca do processo correntemente em execu¸˜o. ou seja. mas um pouco inferiores ao algoritmo SJF (Tabela 3. 3. sendo mais equilibrado para o processamento de jobs de tamanhos diversos. permitindo oferecer tempos m´dios e de espera baixos. tornando-se necess´rio registrar os tempos ca a decorridos de execu¸˜o de cada processo suspenso. Figura 3. Sendo assim. a Cada processo suspenso pelo SRT dever´ ser recolocado na fila em uma a posi¸˜o correspondente apenas ao seu tempo restante de execu¸˜o e n˜o ca ca a mais o tempo de execu¸˜o total. este algoritmo tamb´m se baseia nas estimativas de e tempo de execu¸˜o dos processos. tornando este algoritmo util para sistemas em tempo re´ partido. o algoritmo de escalonamento avalia seu tempo de execu¸˜o incluindo o job ca em execu¸˜o. Na entrada de um novo processo. e A fila de processos a serem executados pelo SRT ´ organizada conforme o e tempo estimado de execu¸˜o. de forma semelhante ao SJF. a fun¸˜o de sele¸˜o do SRT ca ca ca ca corresponde ` min(tservicorestante ). ou seja. ocorre a substitui¸˜o do processo ca ca em execu¸˜o pelo rec´m chegado. Por outro lado.3). devem tamb´m ser consideradas as a e seguintes quest˜es: o .5. ocorre a ca e ca preemp¸˜o do processo em execu¸˜o. de dura¸˜o mais curta. possui as mesmas deficiˆncias ca e dos escalonamentos SJF e HRN quanto ` precis˜o das estimativas e abusos a a por parte dos usu´rios. ou seja. sendo ca processados primeiro os menores jobs.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. A Figura 3. Por outro lado.3.

5.75 1. o escalonamento SRT deveria oferecer um melhor situa¸˜o ca de performance do que o escalonamento SJF.5: Exemplo de fila de processos sob escalonamento SRT Processo tchegada tservico tespera tperm tpn A 0 3 0 3 1. c Teoricamente.00 D 3 4 0 4 1.22 Dada a ordem de chegada particular deste caso. Jobs de maior dura¸˜o tem seus tempos de espera vari´veis em fun¸˜o ca a ca de jobs menores que venham a ser executados primeiramente. como teoricamente previsto.5. Dado que a preemp¸˜o poderia. ESCALONAMENTO DE PROCESSOS 1. ca 3.75 18.3). embora a sobrecarga existente possa equiparar os resultados obtidos em situa¸˜es particulares. ocorre a preemp¸˜o do e ca processador.46 M´dias e 5. ou seja. de seu quantum. Isto significa que ao final de seu intervalo de tempo. os resultados deveriam ser ligeiramente melhores que o SJF. Existe um risco potencial de processos grandes acabarem sendo adiados por um tempo indeterminado (starvation) devido ao excessivo favorecimento de jobs de curta dura¸˜o. sendo o processo em execu¸˜o interrompido e novamente ca colocado na fila de processos prontos. Mas devemos observar que para outros conjuntos de processos. Caso o processo n˜o seja finalizado neste a intervalo de tempo.00 C 2 12 5 17 1.42 B 1 35 18 51 1. o processador ´ designado para outro processo. ocorre sua substitui¸˜o pelo pr´ximo processo na fila de ca o processos ativos. 3. teoricamente. co Podemos aplicar o exemplo utilizado anteriormente para os algoritmos de escalonamento estudados ao SRT. como mostra a Tabela 3.80 CAP´ ITULO 3. Tabela 3. 2. mas em seu fim. a cada processo ´ concedido apenas um pequeno intervalo de e tempo (time slice ou quantum). sendo ent˜o despaa chados para execu¸˜o. podemos perceber que os resultados obtidos pelo SRT s˜o exatamente os mesmos do algoritmos a SJF Tabela 3. algum mecanismo extra deve ser adicionado para evitar que esta preemp¸˜o inoportuna acabe impondo ca um servi¸o pior. isto ´.6 Escalonamento RR (Round-Robin) No escalonamento RR (Round Robin) ou circular os processos tamb´m s˜o e a organizados numa fila segundo sua ordem de chegada. ao inv´s de serem executados at´ o fim ca e e (completion). No entanto. sendo e . ocorrer quando um proca cesso esta prestes a ser finalizado.

onde ilustramos o escalonamento de processos.5.5. Para cada processo despachado ca ca para execu¸˜o ocorre: ca 1. 2. pois ıvel e com diversos processos em execu¸˜o simultˆnea (pseudoparalelismo) ´ posca a e s´ manter ocupados todos os recursos do sistema.9: Escalonamento RR (Round Robin) O escalonamento RR se baseia na utiliza¸˜o de temporizadores. em sistemas em tempo repartido onde coexistem m´ltiplos u usu´rios simultˆneos sendo. podemos observar o quantum de processamento concedido para cada processo e os tempos de preserva¸˜o de ca recupera¸˜o de contexto a cada preemp¸˜o. pois relaciona-se com a sobrecarga imposta ao sistema pelas trocas de contexto dos processos ativos. temos que para cada a janela de tempo concedida aos processos a troca de contexto representa uma sobrecarga.9. ou seja. que toma um tempo que deca nominaremos (trc ). ıvel A determina¸˜o do tamanho do intervalo de tempo (quantum) ´ extreca e mamente importante. a qual ca o e tamb´m toma um intervalo de tempo denotado por (tpc ). A sobrecarga (overhead ) imposta pela troca de contexto a representa um investimento para atingir-se um bom n´ de eficiˆncia. pois somente o quantum de processamento ´ efetivamente util.4) . e ´ Dado que a troca de contexto toma um tempo aproximadamente constante temos que a sobrecarga pode ser calculada atrav´s da rela¸˜o a seguir: e ca ttc = trc + tpc (3. portanto. ALGORITMOS DE ESCALONAMENTO 81 salvo o contexto do processo interrompido para permitir a continuidade da sua execu¸˜o quando sua vez chegar novamente. constica tuindo um algoritmo preemptivo bastante adequado para ambiente interativos. Tal situa¸˜o ´ ilustrada na ca ca e Figura 3. necess´rio garantir-se tempos de resa a a posta razo´veis. a recupera¸˜o do contexto do processo. Figura 3. a preserva¸˜o do processo ap´s o t´rmino de seu quantum. e Como o tempo tomado para a troca de contexto (ttc ) n˜o ´ util do ponto a e´ de vista de processamento de processos dos usu´rios. Na Figura 2. a execu¸˜o do processo pela dura¸˜o do quantum e ca ca 3.3.

Com ou aumento da velocidade dos processadores. a rela¸˜o entre o quantum ca (usado para o processamento) e a soma deste com o tempo para troca de contexto (tomada para cada processo). Na Tabela 3.6) quantum + ttc ttc + quantum rendimento = Ao aumentarmos o quantum diminu´ ımos a sobrecarga percentual da troca de contexto. Tomaremos como quantum um valor c de 100 ms. Assim teremos os resultados apontados pela Tabela 3. tr = nu ∗ (quantum + ttc ) ou tr (3. C e D. conforme a Tabela 3. com os ue mesmos tempos de chegada e servi¸o. e Na Figura 3. nu = (3. se o tempo para troca de contexto (ttc ) toma 2 ms e o quantum ´ de 8 ms.10 podemos ver o comportamento do rendimento e n´mero u de usu´rios do sistema em fun¸˜o do quantum para um tempo de resposta a ca fixo.7.5) Por exemplo.82 CAP´ ITULO 3. diminuindo a sobrecarga e aumentando a ligeiramente a quantidade de usu´rios poss´ a ıveis para um mesmo limite de tempo de resposta. Nestes c´lculos consideramos um tempo de resposta a fixo de tr = 1s e tamb´m um tempo troca de contexto constante ttc = 2ms.6 temos um exemplo hipot´tico do comportamento poss´ e ıvel do rendimento e do n´mero de usu´rios em fun¸˜o da varia¸˜o do quantum u a ca ca usado pelo sistema. Diminuindo o quantum temos uma situa¸˜o inversa de maior sobrecarga e ca tamb´m de um maior n´mero poss´ de usu´rios sem degrada¸˜o sens´ e u ıvel a ca ıvel dos tempos de resposta. podemos verificar o comportamento do algoritmo de escalonamento RR para uma seq¨ˆncia de quatro processos A. a sobrecarga imposta pela troca de contexto representa 20% ´ do processamento. B.8) quantum + ttc Usualmente o tamanho do quantum utilizado ´ tipicamente algo em torno e de 20ms. ou seja. Podemos tamb´m medir o rendimento proporcionado pelo escalonamento e RR considerando quanto do tempo alocado para cada processo ´ efetivae mente usado para o processamento.7) . ou seja. ESCALONAMENTO DE PROCESSOS sobrecarga = ttc ttc + quantum (3. mas um n´mero menor de usu´rios (nu) ser´ necess´rio u a a a para que os tempos de resposta (tr ) se tornem maiores e percept´ ıveis. como na rela¸˜o que segue: ca quantum ttc = 1−sobrecarga = 1− (3.6 Como antes. temos que apenas 80% do tempo de processamento ´ e e util. a troca de contexto se d´ mais rapidamente.

8 Tabela 3. compensando largamente seu emprego.2 100 10 98.7 Escalonamento MQ (Multilevel Queues) Quando ´ poss´ dividir os processos em diferentes categorias. 64] [SGG01.6: Rendimento e n´mero de usu´rios em fun¸˜o do quantum u a ca quantum n´mero de rend. 105]. u (ms) usu´rios a (%) 1 333 33. p. como ilustrado ca a na Figura 3.6 1000 1 99. uma para cada tipo de a processo.7: Exemplo de fila de processos sob Processo tchegada tservico tespera A 0 3 4. Deste modo.0 1.3 20 45 90.5.3.0 500 2 99. processos interativos.46 N˜o surpreendentemente. ALGORITMOS DE ESCALONAMENTO 83 Tabela 3.5 2.85 2. processos batch e processos secund´rios. prioridade e consumo de recursos. p. ou seja.5 D 3 4 9.11.3 2 250 50.53 53. o algumas filas pode ser preemptivas enquanto outras n˜o.0 200 5 99.6 2. quando poss´ ca ca ca ıvel. onde a fila de processos do sistema teria a maior prioridade enquanto a fila de processos secund´rios teria a menor prioridade. conforme seu e ıvel tipo.32 25.5. apresenta um grau de interatividade muito superior a todos os algoritmos citados. pode-se empregar o escalonamento em m´ltiplas filas [TAN92. ´ podem ser distintos de uma fila para outra. HRN e SRT. E um arranjo comum que a fila de processos do sistema e batch usem um algoritmo tal como o FIFO .35 e escalonamento RR tperm tpn 7.6 B 1 35 18. processos de edi¸˜o interativa. a Cada fila pode possuir seu pr´prio algoritmo de escalonamento.51 29. tais como processos do sistema.3 3. sendo que os crit´a e rios de sele¸˜o dos processos para execu¸˜o e da preemp¸˜o. 3.0 5 143 71.3 M´dias 12. o algoritmo RR apresenta resultados bastante a melhores que o escalonamento FIFO e pouco inferiores aos algoritmos SJF. a fila u de processos prontos seria separada em v´rias filas.4 10 83 83.0 C 2 12 17.9 50 19 96. Por outro lado.46 13.

12. ESCALONAMENTO DE PROCESSOS Figura 3. possibilitando at´ mesmo a ese tagna¸˜o de processos nas filas de prioridades inferiores.84 CAP´ ITULO 3. 15%.8 Escalonamento MFQ (Multilevel Feedback Queues) O escalonamento MFQ (Multilevel Feedback Queues) ou filas multin´ reaıvel limentadas ´ um interessante esquema de divis˜o de trabalho do processador e a que ´ baseado em v´rias filas encadeadas. de modo que as duas filas utilizam um algoritmo round robin convencional e a divis˜o do procesa samento entre as filas utilizasse um round robin assim´trico que dedicasse e 80% do processamento para a fila de primeiro plano e os 20% restantes para fila de segundo plano. a e fila de processos de sistema poderia receber uma janela de processamento de 50% enquanto as demais receberiam janelas progressivamente menores. por exemplo. como mostra a Figura 3.5.10: Comportamento do rendimento e n´mero de usu´rios em fun¸˜o u a ca do quantum enquanto que as demais utilizem algoritmos semelhantes ao round robin. onde a fila de maior prioridade tem seus processos executados at´ que esteja vazia. Entre as diferentes filas a divis˜o do processamento tamb´m pode ocora e ´ rer de diversas maneiras. E poss´ ıvel realizar tal divis˜o considerando um a algoritmo de prioridade simples. todos os novos processos s˜o colocados iniciala . Outra solu¸˜o seria ca ca o emprego de um algoritmo round robim assim´trico. uma para processos em primeiro plano (foreground ) e outra para processos em segundo plano (background ). Uma alternativa simplificada de emprego deste algoritmos ´ o uso de e apenas duas filas. tais como 25%. que disp˜e de filas distintas para proo cessos de tipos diferentes. 3. Isto pode comprometer o n´ e ıvel de resposta dos processos nas demais filas. e a Diferentemente do algoritmo MQ. onde. 10% e 5%.

o processo solicita o uso de dispositivos de E/S. e 3. Quando novos processos aparecem em filas superiores ocorre ıvel a preemp¸˜o dos processos nas filas n´ inferior.3. ıvel Nas filas seguintes o mecanismo ´ o mesmo. de forma a atender-se os ca ıvel processos existentes nas filas superiores.11: Escalonamento MQ (Multiple queues) mente na fila de n´ ıvel 1. ıvel . ou seja. tendo esgotado seu quantum inicial de tempo. e onde os processos permanecem at´ que seja finalizados. ca Ao utilizar o processador podem ocorrer trˆs situa¸˜es: e co 1. ou seja.5. o processo aguarda sua vez para execu¸˜o conforme sua ordem de chegada. de escalonamento round robin. A ultima fila apresenta um comportamento um pouco diferente: ela n˜o ´ a ´ uma FIFO e sim uma fila circular. ALGORITMOS DE ESCALONAMENTO 85 Figura 3. o processo ´ colocado e no final da fila de n´ 2. voltando para a mesma fila at´ que e seu quantum de tempo se esgote. embora os processos s´ e o utilizem o processador na sua vez e na ausˆncia de processos nas filas de e n´ superior. e a 2. o processo ´ finalizado e ent˜o retirado das filas. sendo bloqueado at´ e que o pedido de E/S seja atendido. e Neste esquema de escalonamento temos que: • processos curtos s˜o favorecidos pois recebem tratamento priorit´rio a a enquanto permanecem nas filas de n´ superior. que tem um comportamento FIFO.

e a • processos de processamento maior tamb´m s˜o favorecidos pois os e a quanta de tempo s˜o progressivamente maiores nas filas de n´ infea ıvel rior.12: Escalonamento MFQ (Multiple feedback queues) • processos com utiliza¸˜o intensa de E/S s˜o favorecidos pois o uso de ca a E/S n˜o os desloca para filas inferiores. pois pode ser considerado um algoritmo adaptativo. ca e Notamos que o MFQ constitui uma alternativa bastante atraente. de escalonamento ´ round robin corresponde ao n´ de prioridade mais baixo. e • processos que demandem dispositivos de E/S para obter adequada utiliza¸˜o dos perif´ricos do sistema.86 CAP´ ITULO 3. ou seja. ESCALONAMENTO DE PROCESSOS Figura 3. O esquema de m´ltiplas filas encadeadas tem comportamento semelhante u a ` um esquema de prioridades. ´ capaz de perceber e . onde as filas de n´ superior eq¨ivalem aos ıvel u n´ ıveis de prioridade mais altos do sistema e a ultima fila. ıvel Considerando que um algoritmo de escalonamento deveria avalar a natureza dos processos em execu¸˜o promovendo um escalonamento adequado ca de modo que. minimamente. fossem favorecidos: • processos de curta dura¸˜o de forma a minimizar os tempos m´dios de ca e resposta.

throughput ca ca (produtividade).8: Algoritmos de escalonamento n˜o preemptivos a Caracter´ ıstica Fun¸˜o de ca Sele¸˜o ca Preemptividade Throughput Tresposta Sobrecarga Adiamento Indefinido FIFO min(tchegada ) n˜o a m´dia e alto baixa HPF max(prio) n˜o a m´dia e baixo:m´dio e baixa:alta SJF min(tservico ) n˜o a alta baixo:m´dio e baixa:alta HRN max(tpn ) n˜o a alta baixo:m´dio e baixa:alta n˜o a sim sim n˜o a Dentre os algoritmos n˜o preemptivos (Tabela 3. Tabela 3. penalizando o sistema como um todo. Por outro lado. No entanto os resultados do escalonamento tendem a se aproximar do FIFO quando ocorrem v´rios processos com o mesmo n´ de a ıvel prioridade. sendo poss´ ıvel o adiamento indefinido destes.8) temos que apresena tam o seguinte comportamento geral: • O algoritmo FIFO ´ o mais simples e tamb´m o mais ineficiente. ıvel separando-os em categorias (os v´rios n´ a ıveis das filas). O crit´rio de recoloca¸˜o de processos nas e ca mesmas filas ap´s uso de dispositivos de E/S influencia grandemente no o quanto este esquema de escalonamento ´ adaptativo. • O escalonamento SJF penaliza os processos longos. permitindo a avalia¸˜o co ca comparativa em termos de sua fun¸˜o de sele¸˜o. e 3. possibilitando ganho de eficiˆncia. • O algoritmo HPF ´ relativamente simples e permite implantar uma e pol´ ıtica diferencida de escalonamento atrav´s da defini¸˜o de prioridae ca des. tempo de resposta e sobrecarga apresentados. isto ´. o sistema torna-se mais sens´ ao comportamento dos processos. no quanto ele e e ´ capaz de atender aos diferentes padr˜es de comportamento dos processos. preemptividade.8 e 3. e o Embora a sobrecarga para administra¸˜o deste esquema de escalonamento ca seja maior. pois e e acaba penalizando processos pequenos que ocorram entre processos maiores e tamb´m n˜o trata o uso de dispositivos de E/S da maneira e a adequada.9 agrupamos as principais carater´ ısticas dos algoritmos de escalonamento estudados nas se¸˜es anteriores. COMPARACAO DOS ALGORITMOS DE ESCALONAMENTO 87 ¸˜ o comportamento de um processo. proporciona uma alta . favorecendo-o atrav´s da recoloca¸˜o em e ca uma fila de n´ ıvel adequado.6 Compara¸˜o dos algoritmos de escalonamento ca Nas Tabelas 3.6.3.

Por outro lado se mostra mais eficiente em situa¸˜es que os co processos exibem comportamento I/O bounded. A sobrecarga ´ um de seus aspectos negativos. Al´m disso n˜o possibilita a ocorrˆncia de adiamento indefinido. e • O algoritmo MQ ´ uma solu¸˜o que pode ser ligeiramente mais come ca plexa que o round robin ou t˜o complexa como o MFQ. pois sua eficiˆncia e e se acha bastante associada ao tamanho do quantum. tempos de resposta adequados e bom equil´ ıbrio entre atendimento de processos grandes e pequenos. todos possuem implementa¸˜o mais sofisticada que os algoritmos n˜o preemptivos ca a • A solu¸˜o round robin ´ uma alternativa geral simples. oferecendo o mesmo n´ de produtividade do round ıvel robin.88 CAP´ ITULO 3. e • O HRN ´ um dos melhores algoritmos de escalonamento n˜o preemptie a vos. mas desfavorece processos longos al´m de possibilitar e o adiamento indefinido.9). e a e Tabela 3. implicando em e maior sobrecarga. • O algoritmo MFQ ´ razoavelmente mais complexo. • O escalonamento SRT apresenta produtividade alta e tempos de resposta adequado. ESCALONAMENTO DE PROCESSOS produtividade as custas de uma maior sobrecarga e tempos de resposta m´dios. que proporciona ca e tratamento justo e ´ ainda razoavelmente produtivo. . t´ ıpico de aplica¸˜es co comerciais com processamento simples de grandes quantidades de dados.9: Algoritmos de escalonamento preemptivos Caracter´ ıstica RR SRT MQ MFQ Fun¸˜o de ca constante min(tservrest ) complexa complexa Sele¸˜o ca Preemptividade sim sim sim sim (quantum) (chegada) alta baixo:m´dio e m´dia:alta e (quantum) m´dia e baixo:m´dio e m´dia:alta e (quantum) m´dia e baixo:m´dio e m´dia:alta e Throughput Tresposta Sobrecarga Adiamento Indefinido m´dia e baixo:m´dio e baixa n˜o a sim sim sim Analisando agora os algoritmos preemptivos (Tabela 3. pois apresenta alta produtividade. Permite obter a bons resultados quando a categoriza¸˜o dos processos ´ poss´ ca e ıvel.

Cap´ ıtulo 4

Gerenciamento de Mem´ria o
Neste cap´ ıtulo vamos tratar do gerenciamento de mem´ria e de suas imo plica¸˜es para com as funcionalidades oferecidas pelos sistemas operacionais. co Para isto veremos como as diferentes formas de endere¸amento influenciam c as capacidades de um sistema e as diferentes estrat´gias de organiza¸˜o e e ca controle da mem´ria. o

4.1

Primeiras considera¸˜es co

Antes de definirmos o que ´ o gerenciamento de mem´ria, devemos primeiro e o considerar a estrutura dos computadores, tal como proposta no final da d´cada de 1930 por John Von Neumann, matem´tico h´ngaro erradicado e a u nos EUA, que trabalhava na Universidade de Princeton: Um computador ´ composto de trˆs partes fundamentais: o proe e cessador, os dispositivos de entrada/sa´ e a mem´ria. ıda o Atrav´s desta estrutura, ilustrada na Figura 4.1, Von Neumann mudou e radicalmente o conceito do computador, afirmando que o programa deveria ser armazenado na mem´ria junto com os dados, transformando as sofiso ticadas m´quinas de calcular existentes em uma nova esp´cie de m´quina, a e a completamente diferente, mais gen´rica e capaz de lembrar seq¨ˆncias de e ue comandos previamente fornecidas, executando-as fielmente. Este novo conceito permitiu construir-se computadores capazes de executar diferentes seq¨ˆncias de instru¸˜es sem a altera¸˜o de seu hardware, ue co ca o que n˜o acontecia com as antigas m´quinas de calcular gigantes. Mas a a duas vertentes surgiram praticamente na mesma ´poca, direcionando difee rentemente a arquitetura de sistemas computacionais baseados em mem´ria. 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 mem´ria 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 transferˆncia de dados e ins´ e tru¸˜es entre mem´ria e processador enquanto que a arquitetura de Harvard co o possui dois barramentos, cada um ligando o processador aos dispositivos de mem´ria de dados e programas respectivamente. Apesar da arquitetura de o Harvard ser potencialmente mais eficiente, a simplicidade da arquitetura Princeton predominou com o passar dos anos.

Figura 4.2: Arquitetura Harvard Apesar destas duas arquiteturas serem conceitos revolucion´rios para a a ´poca, existia um grave problema: n˜o se dispunha de tecnologia suficiente e a para constru¸˜o de dispositivos eletro-eletrˆnicos que funcionassem como ca o mem´rias. o Quando Von Neumann propˆs o computador como uma m´quina capaz o a de memorizar e executar seq¨ˆncias de comandos, j´ existia tecnologia para ue a implementar-se os primeiros circuitos processadores e tamb´m os dispositie vos b´sicos de entrada e sa´ a ıda, mas n˜o se sabia como construir circuitos a de mem´ria. Se passaram v´rios anos at´ que uma primeira implementa¸˜o o a e ca satisfat´ria de um circuito de mem´ria permitisse construir um computador o o conforme sugerido por Von Neumann. Isto explica a origem de um defasagem tecnol´gica, at´ hoje n˜o superada por completo, entre mem´rias e o e a o

4.1. PRIMEIRAS CONSIDERACOES ¸˜

91

processadores. O pr´prio termo core memory, utilizado para designar a mem´ria prio o m´ria ou principal, tem sua origem nos primeiros dispositivos de mem´ria a o constru´ ıdos com pequenos n´cleos magnetiz´veis de ferrite interligados mau a tricialmente por uma delicada fia¸˜o de cobre, onde cada n´cleo armazenava ca u um unico bit. ´ Tipicamente tem-se que os processadores s˜o capazes de ler e princia palmente escrever mais r´pido do que os circuitos de mem´ria do mesmo a o n´ tecnol´gico. Isto usualmente for¸a uma determinada espera por parte ıvel o c dos processadores quando ocorre a troca de informa¸˜es com a mem´ria. co o Estes tempos de espera s˜o conhecidos como wait states. Este problema a n˜o seria t˜o grave se a intera¸˜o entre processador e mem´ria n˜o consa a ca o a titu´ a pr´pria essˆncia 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 s˜o repetidas a as a¸˜es seguintes: co • busca de uma instru¸˜o (ciclo de fetch ou opcode fetch); ca • decodifica¸˜o da instru¸˜o (ciclo de instruction decode); e ca ca • execu¸˜o da instru¸˜o (ciclo de instruction execution). ca ca Notamos que o ciclo de fetch ´ basicamente uma opera¸˜o de leitura da e ca mem´ria, sendo o ciclo de decodifica¸˜o interno ao processador, enquanto o ca o ciclo de execu¸˜o pode realizar tanto opera¸˜es internas ao processador ca co como tamb´m opera¸˜es de leitura ou escrita na mem´ria. e co o Apesar das dificuldades encontradas, a arquitetura computacional baseada nos trˆs elementos b´sicos (processador, mem´ria e dispositivos de e a o entrada/sa´ ıda) ainda se mostra a melhor que existe, principalmente quando se inclui nela todos os avan¸os tecnol´gicos destes ultimos 1950 anos. c o ´ Hoje temos que, em conseq¨ˆncia da mencionada defasagem tecnol´gica ue o e dos problemas inerentes a constru¸˜o de dispositivos de mem´ria, o custo ca o relativo entre mem´ria e principalmente o processador faz com que a mem´o o ria represente uma parcela bastante significativa de um sistema computacional, parcela esta que se torna ainda mais significativa quanto mais sofisticado ´ tal sistema (usualmente s˜o sistemas de alto desempenho). e a ´ E muito importante ressaltarmos que, quando se fala em mem´ria, eso tamos nos referindo aos circuitos que trocam dados diretamente com o processador durante o ciclo de execu¸˜o de seus comandos mais b´sicos, ou ca a seja, a mem´ria prim´ria ou armazenamento prim´rio. Os dispositivos de o a a armazenamento secund´rio, isto ´, os dispositivos de mem´ria de massa tal a e o como fitas, cartuchos e disco magn´ticos (fixos ou remov´ e ıveis) n˜o devem a ser confundidos com a mem´ria b´sica do computador. o a

92

´ CAP´ ITULO 4. GERENCIAMENTO DE MEMORIA

A mem´ria dita prim´ria possui intera¸˜o direta com o processador, isto o a ca ´, fica diretamente conectada aos seus barramentos. J´ os dispositivos chae a mados de mem´ria secund´ria necessitam de alguma circuitaria ou memos o a mecˆnica 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 mem´ria secund´ria ter´ papel fundamental dentro do gerenciamento da o a a mem´ria prim´ria, mas isto deve ser tratado com cautela, pois apesar de seu o a custo ser bastante inferior ao da mem´ria prim´ria b´sica, sua velocidade ´ o a a e milhares de vezes menor, como indicado na Tabela 4.1. Tabela 4.1: Valores M´dios de Tempo de Acesso e Pre¸o por MByte para e c Dispositivos de Microcomputadores PC Compat´ ıveis em 1998 Dispositivo Tempo de Acesso Pre¸o/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 an´lise de custo versus benef´ a ıcio, que leve em conta outros fatores inerentes ao gerenciamento de mem´ria, o poder´ diagnosticar com precis˜o como e quando utilizar-se da mem´ria a a o secund´ria ao inv´s da mem´ria prim´ria. a e o a Resumidamente, justificamos a necessidade do gerenciamento de mem´o ria pelos trˆs fatores relacionados a seguir: e • A mem´ria prim´ria ´ um dos elementos b´sicos da arquitetura como a e a putacional atual. • Dado que a velocidade de suas opera¸˜es 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 mem´ria prim´ria, ao gerenciarmos meo a m´ria estamos indiretamente gerenciando os processos. o

4.2

Multiprograma¸˜o ca

Como j´ vimos, a multiprograma¸˜o ´ uma importante t´cnica utilizada a ca e e para o projeto e constru¸˜o de sistemas operacionais. Segundo Guimar˜es: ca a A maioria do computadores modernos opera em regime de multiprograma¸˜o, isto ´, mais de um programa em execu¸˜o ”sica e ca multˆnea” na mem´ria. A existˆncia nesses sistemas de pea o e

onde tanto a ca e o processador como os dispositivos perif´ricos permanecem ociosos por boa e parte do tempo de funcionamento do equipamento. p.2. a multiprograma¸˜o visa alcan¸ar melhores ca c ´ ındices de produtividade num sistema computacional.2: An´lise de ociosidade a Tempo Total 32 s Tempo de Proc 8s Tempo de I/O 24 s Ociosidade do Proc. Em computadores de pequeno porte ou destinados ao uso pessoal ´ toe ler´vel uma situa¸˜o de baixa eficiˆncia ou baixa produtividade.2. portanto. 100 % A ociosidade do processador exibida neste exemplo representa um desperd´ de sua capacidade equivalente a execu¸˜o de outros trˆs programas ıcio ca e idˆnticos. e Basicamente. ´ executado e utilizando 8 segundos da atividade do processador (a convers˜o 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. Para isto ´ nee cess´rio a presen¸a de v´rios programas ativos. Tomemos como exemplo um programa (ou rotina) conversor de imagens de formato BMP para GIF que. de ca a e ıvel maior custo de aquisi¸˜o e propriedade. Tabela 4. as custas de um sistema de maior complexidade. 75 % Ociosidade do Disco 25 % Ociosidade de Outros Disp. Em suma. o objetivo da multiprograma¸˜o ´ maximizar a produca e tividade (throughput) e minimizar os tempos de resposta.4. reduzindo o tempo total de processamento. [GUI86. ca e . MULTIPROGRAMACAO ¸˜ rif´ricos ass´ e ıncronos e com velocidades de opera¸˜o as mais dica versas tornou economicamente necess´rio introduzir a multiproa grama¸˜o a fim de utilizar de maneira mais eficiente os recursos ca do sistema. obter ´ ındices adequados de produtividade e eficiˆncia. simultaneamente na mem´ria a c a o principal do sistema de maneira a obter-se a melhor utiliza¸˜o poss´ dos ca ıvel recursos do sistema. O maior problema da multiprograma¸˜o ´. As possibilidades oferecidas por sisca temas monoprogramados impedem que melhores ´ ındices de produtividade e eficiˆncia sejam atingidos. num sistema monoprogramado. Tal situa¸˜o n˜o ´ admiss´ em sistemas de maior porte e. a multiprograma¸˜o ´ a alternativa e ca e que permite. isto tamb´m permite que uma tarefa seja dividida em e partes. 71] [grifos do autor] 93 Da mesma forma. as quais podem ser executadas paralelamente. A execu¸˜o deste programa imp˜e a situa¸˜o ıda ca o ca relacionada na Tabela 4. portanto. neste sentido. Constata¸˜o an´loga pode ser feita para os dispositivos de E/S e ca a deste sistema.

Nestes casos a taxa de ociosidade e utiliza¸˜o do processador podem ser ca dadas respectivamente pelas seguintes rela¸˜es: co ociosidade = tp io utilizacao = 1 − ociosidade = 1 − tp io (4.94 ´ CAP´ ITULO 4. • os processos sejam totalmente independentes. GERENCIAMENTO DE MEMORIA tornar compat´ ıveis os tempos de execu¸˜o dos programas e o atendimento ca dos usu´rios junto das diferentes velocidades de opera¸˜o dos perif´ricos do a ca e sistema. Figura 4. e • existe capacidade de efetuar-se processamento verdadeiramente paralelo. Atrav´s desta rela¸˜o.1) (4.2) Nestas equa¸˜es p ´ o n´mero de processos ativos existentes no sistema co e u e tio representa a taxa m´dia de utiliza¸˜o de dispositivos de E/S por parte e ca destes processos. considerando-se diferentes taxas m´dias de utiliza¸˜o a e ca de E/S. Se partirmos de um modelo bastante simplificado de sistema onde possamos supor verdadeiras as seguintes condi¸˜es: co • a sobrecarga imposta pelos mecanismos de administra¸˜o do sistema ca operacional ´ desprez´ e ıvel.3: Comportamento da taxa de utiliza¸˜o do processador ca . podemos obter as seguintes curvas e ca ilustrando o comportamento da utiliza¸˜o do processador para um n´mero ca u vari´vel de processos.

• Armazenamento secund´rio a S˜o as posi¸˜es de mem´ria externa que n˜o podem ser acessadas a co o a .3 Organiza¸˜o da mem´ria ca o Num sistema computacional o armazenamento de dados ocorre hierarquicamente. o comportamento esperado em sistemas reais ´ o mesmo a despeito e dos valores absolutos obtidos.´ 4. utilizacao > 85%. tais valores tem valor indicativo. ORGANIZACAO DA MEMORIA ¸˜ 95 Notamos que conforme aumenta a taxa m´dia de utiliza¸˜o de disposie ca tivos de E/S (tio ) por parte dos processos. PROM ou ROM. Tipicamente s˜o circuitos eletrˆnicos integrados do tipo a o RAM. Isto pode ser entendido de outra forma: quanto maior a taxa m´dia de utiliza¸˜o de dispositivos de E/S. a Em virtude das dificuldades tecnol´gicas associadas a constru¸˜o de diso ca positivos eficientes de mem´ria e seu custo. diretamente acess´ a co o ıveis pelo processador. maior ´ o n´mero p de processos e u necess´rio para que a utiliza¸˜o do processador se mantenha em n´ a ca ıveis adequados. o projetista de um sistema operacional determina quanto de cada tipo de mem´ria ser´ necess´rio para que o sistema seja ao o a a mesmo tempo eficiente e economicamente vi´vel.3. ou seja. em diversos n´ ıveis dado que ´ realizado em diferentes tipos e de dispositivos devido ` quatro fatores b´sicos: a a • tempo de acesso • velocidade de opera¸˜o ca • custo por unidade de armazenamento • capacidade de armazenamento Com isto em mente. ou ca seja. • Armazenamento prim´rio a S˜o as posi¸˜es de mem´ria externa. ou seja. u a Apesar de ser uma simplifica¸˜o. Com isto justifica-se a necessidade de ambientes multiprogramados como unica forma de obter-se sistemas de alta ´ produtividade e eficiˆncia. EPROM. maior ´ o e ca e n´mero de usu´rio suportado pelo sistema. EEPROM. o armazenamento de dados aso sumiu historicamente a seguinte organiza¸˜o: ca • Armazenamento interno S˜o posi¸˜es de mem´ria dispon´ a co o ıveis internamente ao processador para permitir ou agilizar sua opera¸˜o. e 4. Constitui-se dos registradores do ca processador e de seu cache interno.

a atual organiza¸˜o conta com outros ca ca elementos adicionados para otimizar a performance do sistema e ainda assim reduzir seu custo. GERENCIAMENTO DE MEMORIA Figura 4. e Com a evolu¸˜o do computadores. embora sendo os mais caros. onde a velocio a a dade e tempo de acesso s˜o adequadas ` opera¸˜o direta com o processador. Em conca trapartida.96 ´ CAP´ ITULO 4. os dispositivos de armazenamento secund´rio s˜o os de maior a a capacidade e de melhor rela¸˜o custo por byte. Note que o armazenamento interno ´ aquele que possui as maiores vee locidades de acesso. devendo ser movidas para o armazenamento prim´rio antes de sua utiliza¸˜o. ou seja. Tipicamente dispositivos de a ca armazenamento de massa tais como unidades de disco e fita.4: Organiza¸˜o da mem´ria em n´ ca o ıveis diretamente pelo processador. A mem´ria prim´ria representa um caso intermedi´rio. mas significativamente mais ca lentos. conforme a figura a seguir: Figura 4. a a ca mas cujo custo ainda assim ´ elevado. os menores tempos de acesso representando os melhores dispositivos em termos de performance.5: Organiza¸˜o t´ ca ıpica de armazenamento . Disto decorre sua implementa¸˜o em quantidades menores.

Estrat´gias de busca e As estrat´gias de busca (fetch strategies) preocupam-se em determinar e qual o pr´ximo bloco de programa ou dados que deve ser transferido da o mem´ria secund´ria para a mem´ria prim´ria. a o e o resultado da aplica¸˜o de duas pr´ticas distintas dentro de um sistema ca a computacional: 1. s˜o transferidos os blocos determinae a dos como necess´rios para a continua¸˜o do processamento. ou o uma por¸˜o de dados (evitando-se uso da mem´ria principal) e com isto ca o aumentando o desempenho do sistema [DEI92. ou seja.4 Defini¸˜o de gerenciamento de mem´ria ca o A necessidade de manter m´ltiplos programas ativos na mem´ria do sistema u o imp˜e outra. s˜o usados para manter uma por¸˜o do programa (que pode a ca assim ser executada mais rapidamente do que na mem´ria principal). s˜o geralmente utilizados para manter dentro do processador dados a freq¨entemente utilizados. p. como pode ser utilizada pelos o e e processos existentes neste sistema. a ca 2. Como os processos s˜o tratados pelo sistema operacional quanto `s a a suas necessidades de uso de mem´ria. DEFINICAO DE GERENCIAMENTO DE MEMORIA ¸˜ 97 Os registradores. isto ´. devido sua maior u velocidade. Usualmente se utilizam o a o a estrat´gias de demanda. A mem´ria prim´ria armazena os programas e dados em execu¸˜o no o a ca sistema. embora tamb´m possam ser usados ca e para expandir as capacidades da mem´ria prim´ria.4. Os cache interno e externo. 2. a necessidade de controlarmos como esta mem´ria ´ utilizada o o e por estes v´rios programas. implementados em n´mero limitado devido ao seu u custo. O cache de disco ´ utio a e lizado para acelerar a opera¸˜o das unidades de disco. ´ e e necess´rio considerar-se trˆs estrat´gias para sua utiliza¸˜o: a e e ca 1. Os dispositivos de armazenamento secund´rio s˜o usados para prea a serva¸˜o dos dados de forma perene. ou seja. Estrat´gias de posicionamento e S˜o as estrat´gias relacionadas com a determina¸˜o das regi˜es da a e ca o mem´ria prim´ria (f´ o a ısica) que ser˜o efetivamente utilizados pelos proa gramas e dados. podendo esta t´cnica ca e ser utilizada para outros tipos de perif´ricos. pela determina¸˜o do espa¸o de endere¸aca c c mento utilizado (placement strategies). O gerenciamento de mem´ria ´. 30]. cuja administra¸˜o influencia proo e ca fundamente na eficiˆncia e performance de um sistema computacional. e 4. portanto.´ 4. o Como a mem´ria ´ um recurso caro. . Como a mem´ria principal ´ vista.

de particionamento vari´vel a • multiprogramados com armazenamento virtual paginado • multiprogramados com armazenamento virtual segmentado • multiprogramados com armazenamento virtual combinado Na Figura 4. Para maximizar-se as capacidades dos sistemas computacionais s˜o necess´rias as estrat´gias de reposi¸˜o. particionamento fixo e endere¸amento absoluto c • multiprogramados com armazenamento real. sua evolu¸˜o. particionamento fixo e endere¸amento reloc´vel c a • multiprogramados com armazenamento real. para ca a e o entendermos como os processos enxergam a mem´ria. as quais comp˜em o modelo de adminiso o tra¸˜o de mem´ria empregado pelo sistema. e o os programas tamb´m devem se comportar dentro de regras estabelecidas e pelo pr´prio sistema operacional. Os modos b´sicos de orgaca a niza¸˜o da mem´ria dos sistemas s˜o: ca o a • monoprogramado • multiprogramados com armazenamento real. O aumento da soe a fistica¸˜o dos sistemas computacionais exige a utiliza¸˜o de estrat´gias de ca ca e busca posicionamento mais sofisticadas. ca o Para sabermos como se comporta um programa durante sua execu¸˜o e ca quais s˜o suas limita¸˜es quanto a utiliza¸˜o da mem´ria. ca . a ca o ca Com rela¸˜o ao primeiro aspecto b´sico da gerˆncia de mem´ria. o desenvolvimento da organiza¸˜o e gerenciamento de ca mem´ria foi grandemente afetado pelo pr´prio desenvolvimento dos compuo o tadores e evolu¸˜o dos sistemas operacionais. ou seja. de certa forma. GERENCIAMENTO DE MEMORIA 3.98 ´ CAP´ ITULO 4. todo sistema computacional possui alguma estrat´gia de e busca e alguma estrat´gia b´sica de posicionamento. devemos analisar a co ca o todo o processo de cria¸˜o dos programas. ´ necess´rio conhecer o e a em detalhe como os programas se comportam durante sua execu¸˜o. ca O comportamento exibido pelos programas durante sua execu¸˜o cria ca determinadas limita¸˜es que devem ser observadas cuidadosamente pelo sisco tema operacional atrav´s de seu gerenciamento de mem´ria. Minimamente.6 temos um quadro onde se ilustra o relacionamento dos modelos b´sicos de organiza¸˜o da mem´ria e. a a e ca Historicamente. determinam ca quais blocos de mem´ria ser˜o substitu´ o a ıdos por outros (replacement strategies). Por outro lado. Estrat´gias de reposi¸˜o ou substitui¸˜o e ca ca S˜o as estrat´gias preocupadas em determinar qual bloco ser´ enviado a e a a mem´ria secund´ria para disponibiliza¸˜o de espa¸o na mem´ria o a ca c o principal para execu¸˜o de outros programas.

Existem entidades especiais respons´veis pela transforma¸˜o a ca do arquivo-fonte do programa em uma forma pass´ de execu¸˜o pelo comıvel ca putador. sujeito ` regras de sintaxe a a ca a e de contexto..4. m´dio ou baixo n´ e ıvel.6: Evolu¸˜o da organiza¸˜o da mem´ria ca ca o 4. Estes passos e a¸˜es est˜o descritos dentro do co a arquivo-texto atrav´s de uma linguagem de programa¸˜o e por isso s˜o e ca a usualmente chamados de arquivo-fonte do programa (resumidamente arquivo-fonte ou fonte). estas m´quina t˜o pouco entendem as linguagens de programa¸˜o ca a a ca diretamente.5. a O compilador (compiler ) ´ um programa especial que traduz o are quivo fonte em um arquivo bin´rio que contˆm instru¸˜es. o arquivo-fonte continua a ser ca simplesmente um texto. ou seja. an´logo ` uma reda¸˜o. CRIACAO DE PROGRAMAS ¸˜ 99 Figura 4. estes arquivos-texto s˜o uma representa¸˜o dos algoritmos a ca que se desejam programar. As linguagens de programa¸˜o utilizadas podem ca ser de alto. dados e endere¸os a e co c (representados binariamente) que permitem executar as a¸˜es necess´rias co a atrav´s das instru¸˜es em linguagem de m´quina do processador existente e co a . ou seja a linguagem que naturalmente utilizamos para nossa comunica¸˜o. Estas entidades est˜o ilustradas na Figura 4. seu tipo e a forma de estrutura¸˜o do programa.5 Cria¸˜o de programas ca Os programas s˜o criados a partir de arquivos-texto. Da mesma forma que os computadores n˜o entendem a nossa linguaa gem. que contˆm um roa e teiro estruturado de passos e a¸˜es a serem executadas pelo programa que se co deseja. mas qualquer que seja a linguagem.7.

respons´vel por controlar eficientemente as estruturas de mem´ria a o prim´ria. Devemos ressaltar que at´ agora os arquivos fonte. GERENCIAMENTO DE MEMORIA Figura 4. fitas. objeto e execut´vel e a constituem arquivos. e ´ ca O ligador (linker ). o ligador tamb´m ´ uma entidade deste proe e cesso de gera¸˜o de programas e tamb´m est´ sujeito a operar com arquivos ca e a objeto produzidos apenas por determinados compiladores. respons´vel por transportar os e a arquivos de programa execut´vel da mem´ria secund´ria para a mem´ria a o a o principal. que ´ parte integrante do sistema operacional. a ca Os carregadores constituem uma parte do sistema operacional porque a coloca¸˜o de programas na mem´ria e a execu¸˜o dos mesmos s˜o fun¸˜es ca o ca a co deste. de armazenamento secund´rio e o processamento do sistema coma a .100 ´ CAP´ ITULO 4. o Existe uma outra entidade especial. o ca Assim como os compiladores. O arquivo-execut´vel ´ aquele que pode ser transfea a e rido para a mem´ria do computador possibilitando a execu¸˜o do programa. apenas encadeia dois ou mais ara quivos objeto sob a forma de um unico arquivo de programa execut´vel ou ´ a arquivo-execut´vel. ou seja. discos flex´ ıveis. cartuchos ou discos ´pticos). Note que cada a compilador ´ apropriado para uma unica linguagem de programa¸˜o. onde se dar´ a execu¸˜o do programa carregado. quando necess´rio. chamada carregador (loader ).7: Esquema de cria¸˜o de programas ca no computador em quest˜o. est˜o armazenados nas estruturas de mem´ria a o secund´ria (unidades de disco r´ a ıgido. Os arquivos bin´rios produzidos pelo compia a lador s˜o os arquivos-objeto ou resumidamente objeto.

4.1 Espa¸os l´gicos e f´ c o ısicos Retomemos os conceitos envolvidos com os arquivos de programa fonte. O espa¸o l´gico ´ a representa¸˜o abstrata da solu¸˜o do ca c o e ca ca problema. Tais abstra¸˜es s˜o os objetos l´gicos do programa. e Durante a implementa¸˜o dos programas utilizam-se. onde ele mesmo se transforma numa imagem ıvel ca execut´vel. sejam elas de natureza estrutural ou procedural/funcional. ´reas de mem´ria reservadas para a o a a o vari´veis do programa. O co a o espa¸o l´gico cont´m todas as defini¸˜es necess´rias para o programa. ue ca Seja qual for o computador e a particulariza¸˜o da arquitetura de seu ca hardware. tamb´m abstrata. Num outro extremo. pilha retorno e ´rea extra para aloca¸˜o dinˆmica a a ca a por parte do programa. Qual ´ o objetivo b´sico de um programa? A resposta ´: ensinar o come a e putador a executar um seq¨ˆncia de passos. CRIACAO DE PROGRAMAS ¸˜ 101 putacional. 4. por mais simples ou complexo que ele seja. mas c o e co a sem qualquer v´ ınculo com as linguagens de programa¸˜o ou com os proca cessadores e computadores que executar˜o os programas criados a partir a desta concep¸˜o. antes da carga do m´dulo de c´digo. Tais informa¸˜es o a co residem geralmente num cabe¸alho (header ) localizado no in´ do arquivo c ıcio de programa execut´vel. deve conhecer de antem˜o seu tamanho o o a total e a quantidade m´ ınima de mem´ria extra necess´ria. dentro do computador a c o execu¸˜o do programa tem que ocorrer dentro da mem´ria principal. Ap´s o transporte do arquivo execut´vel para a mem´ria principal ´ o a o e poss´ iniciar sua execu¸˜o. manuseando dados de forma ue interativa ou n˜o. como ca o conseq¨ˆncia e limita¸˜o da arquitetura de Von Neumann. o sistema operacional. o unidimensional. Pode-se dizer assim ca co c o que os programas fonte representam. com o objetivo final de realizar c´lculos ou transforma¸˜es a a co com os dados fornecidos durante a execu¸˜o do programa. de posi¸˜es de mem´ria que se iniciam num determinado co o . numa dada linguagem de programa¸˜o. que representa a expans˜o do c´digo de programa contido no a a o arquivo execut´vel em c´digo execut´vel. ca o espa¸o l´gico do programa. ap´s o entendimento do problema. ca Para isto.5. ca Notem que ao projetar-se um programa. as linguagens de programa¸˜o que possibilitam expressar de maa ca neira concreta (apesar das limita¸˜es impostas por qualquer linguagem de co programa¸˜o) as formula¸˜es contidas no espa¸o l´gico. A bem da verdade. mas apenas lido a a e o pelo sistema operacional. a mem´ria principal pode sempre ser expressa como um vetor. define-se um espa¸o l´gico que re´ne todas as abstra¸˜es c o u co feitas para criar-se o programa. que n˜o ´ copiado para mem´ria.5. como meios de ca express˜o. idealiza-se conceitualmente o uma forma de representa¸˜o do dados a serem manipulados e depois disso ca um conjunto de opera¸˜es especiais que manipular˜o as estruturas criadas co a possibilitando a obten¸˜o dos resultados esperados do programa.

Do outro lado. De um lado a concep¸˜o do programa. a mem´ria est´ organizada em nibo a bles. A liga¸˜o entre o espa¸o l´gico e f´ ca c o ısico representa. No nosso contexto ca binding significa o mapeamento do espa¸o l´gico de um programa no espa¸o c o c f´ ısico que possibilita sua execu¸˜o dentro do sistema computacional em uso. por exemplo. a Se a palavra de dados tem 4 bits . words e double words. organiza¸˜es de mem´ria em bytes. podendo armazenar o que se chama de o e e palavra de dados do computador. respectivamente. 16 e 32 bits representam. em algum instante o espa¸o l´gico do programa foi c o transformado e ligado a organiza¸˜o de mem´ria do sistema computacional ca o em uso.102 ´ CAP´ ITULO 4. ou seja. A este processo de liga¸˜o se d´ o nome de mapeamento ou ca a binding (amarra¸˜o).8: Representa¸˜o do binding ca Veremos a seguir que o binding tem que ser realizado por uma das entidades envolvidas no processo de cria¸˜o de programas. na pr´tica um conjunto de bits. como representado na Figura 4. dizemos que os endere¸os de o a c mem´ria representam fisicamente a organiza¸˜o de mem´ria de um compuo ca o tador. Palavras de dados de 8. Ao conjunto de posi¸˜es a o co de mem´ria utilizado por uma imagem se d´ o nome de espa¸o f´ o a c ısico desta imagem. usualmente o zero. Sabemos que um programa quando em execu¸˜o na mem´ria principal ca o de um computador se chama imagem execut´vel e que esta imagem ocupa a um regi˜o de mem´ria finita e bem determinada. em alguns insca . De alguma forma. acabando por definir um ´ ca o espa¸o f´ c ısico. ca Figura 4. 536. Tipicamente se orco o ganizam as mem´rias dos microcomputadores em bytes. durante a execu¸˜o da imagem temos que c o ca as posi¸˜es de mem´ria usadas constituem o espa¸o f´ co o c ısico deste mesmo programa.912 para um computador com 512 Mbytes de mem´ria. onde cada elemento do espa¸o l´gico ´ unido de forma c o e unica a uma posi¸˜o de mem´ria do computador. e terminam em outro.870.8. assim cada posi¸˜o o ca de mem´ria poderia armazenar um byte de informa¸˜o. os quais co o u ca s˜o chamados de endere¸os. representada e contida pelo seu ca espa¸o l´gico. constituindo o espa¸o f´ c ısico deste mesmo programa. fisicamente palp´vel. sendo que nos refeo ca renciamos as posi¸˜es de mem´ria pelos seus n´meros de posi¸˜o. GERENCIAMENTO DE MEMORIA ponto. Cada posi¸˜o desta o ca estrutura de mem´ria ´ idˆntica. na verdade. a um processo de mapeamento. Como a mem´ria de um computador ´ um a c o e componente eletrˆnico.

dados e endere¸os que possibico c litam a execu¸˜o do programa por um processador particular. carregamento ou mesmo execu¸˜o. liga¸˜o. tem apenas o local de chamada mara cado em tabelas de s´ ımbolos externos para liga¸˜o posterior com bibliotecas ca ou outros m´dulos de c´digo. isto ´. portanto. E poss´ ca ca ca ´ ıvel tamb´m que o binding seja realizado por mais de uma destas entidades. CRIACAO DE PROGRAMAS ¸˜ 103 tante da compila¸˜o.4. c a Quando no modo de endere¸amento absoluto.9: Compilador e cross-compilador Todas as defini¸˜es internas s˜o transformadas em c´digo. o compilador associa a o ca diretamente posi¸˜es de mem´ria a estruturas de dados. durante a compila¸˜o. ıvel ıvel ca Os compiladores podem gerar c´digo de duas maneiras b´sicas. ´ No Exemplo 4. um compilador ´ um programa especial capaz de a e traduzir um arquivo escrito em uma linguagem de programa¸˜o espec´ ca ıfica em um outro arquivo contendo as instru¸˜es.5. onde e cada uma realiza uma parcela deste processo de mapeamento. o a e empregando dois modos de endere¸amento: o absoluto e o reloc´vel. convertendo-o nas instru¸˜es necess´rias para ca co a sua execu¸˜o por um processador particular (vide Figura 4. o compilador imac gina que o programa ser´ sempre executado numa unica e bem determinada a ´ regi˜o de mem´ria. Fun¸˜es.1 temos um trecho de c´digo escrito em linguagem de alto o n´ e um poss´ resultado de compila¸˜o. vari´veis. esco a o co truturas de dados e vari´veis externas. O compilador ca ´. Em outras palavras. Sendo assim.5. ca Figura 4. capaz de entender um algoritmo expresso em termos de uma e linguagem de programa¸˜o. o compilador fixa co . endere¸os co o a c de rotinas e fun¸˜es do programa. alguns aspectos da arquitetura e do sistema operacional a co devem ser observados pelos compiladores como forma de produzir c´digo o verdadeiramente util para uma dada arquitetura computacional. 4.9). Al´m de considerar o processador que execuo o e tar´ tais instru¸˜es.2 Compiladores (compilers) Como j´ foi definido.

. co Os arquivos objeto produzidos tem seus endere¸os calculados a partir c de um endere¸o de origem padronizado ou informado antes da compila¸˜o. c ca tornando-se assim compiladores absolutos. . E o o gerado da mesma forma que na compila¸˜o absoluta. .10. realizando por completo o binding. . .. c ca Este endere¸o de origem. ca TSE A tabela de s´ ımbolos externos ´ o local onde s˜o listadas as e a posi¸˜es de chamada de s´ co ımbolos externos (vari´veis. Tamb´m conhecido como header. mas como conseq¨ˆncia direta ca ue disto temos que: . GERENCIAMENTO DE MEMORIA trecho de c´digo compilado o 0200: .1 Resultado da compila¸˜o ca os endere¸os de execu¸˜o do programa. . a = a + 1. LOAD 500 .. JNZ 0200 // trecho de c´digo fonte. printf("%d\n". . . . .) { . CALL printf . .10: Arquivo objeto gerado atrav´s de compila¸˜o absoluta e ca Na Figura 4. a). . a partir do qual os demais s˜o definidos. o while (. . Desta c ca c maneira a compila¸˜o se torna mais simples. estruturas ou a fun¸˜es). temos os elementos seguintes: e ca Cabe¸alho Regi˜o onde s˜o colocadas informa¸˜es gerais sobre o arquivo c a a co objeto e suas partes. Figura 4.104 ´ CAP´ ITULO 4. propriamente dito. onde se apresenta a estrutura interna de arquivos gerados atrav´s de compila¸˜o absoluta. e ´ C´digo Segmento onde reside o c´digo do programa. } Exemplo 4. ´ chamado c a e de endere¸o base de compila¸˜o ou apenas de endere¸o base. .

como no caso da compila¸˜o absoluta.4. pois o binding se tornou irrevers´ ca ıvel. c o • uma imagem execut´vel deve sempre ocupar uma regi˜o cont´ a a ınua de mem´ria. Quando no modo de endere¸amento reloc´vel. o • n˜o podem existir duas ou mais instˆncias do mesmo programa exea a cut´vel na mem´ria. tornando praticae ca co c mente imposs´ ıvel: • reverter a compila¸˜o. o c . lista todos os endere¸os relativos existentes. n˜o u a a ´ trivial a distin¸˜o entre instru¸˜es. ıvel c o • modificar o endere¸amento do programa pois n˜o se pode distinguir c a que s˜o os endere¸os dentro dos arquivos objeto gerados pelos compia c ladores absolutos. o • a soma das imagens poss´ ıveis de serem carregadas em mem´ria para o execu¸˜o paralela tem que ser menor ou igual a quantidade total de ca mem´ria dispon´ o ıvel. a n˜o ser que se realizem compila¸˜es adicioa o a co nais for¸ando a gera¸˜o do c´digo para uso em diferentes regi˜es de c ca o o mem´ria. n˜o sendo a poss´ reconstituir-se o espa¸o l´gico que originou o programa. o • dois ou mais diferentes programas execut´veis n˜o podem ser carregaa a dos na mem´ria a n˜o ser que tenham sido compilados prevendo exao a tamente a ordem de carregamento e as ´reas adicionais de mem´ria a o que venham a utilizar. • duas ou mais imagens execut´veis n˜o podem se sobrepor na mem´ria a a o (ocupar os mesmos endere¸os de mem´ria) total ou parcialmente. dados e endere¸os. Tais n´meros o u a u representam tanto os c´digos das instru¸˜es do processador como os dados o co constantes do programa e tamb´m os endere¸os determinados pelo compilae c dor.5. mas al´m de gerar o c ca ca e c´digo o compilador reloc´vel monta o arquivo objeto da seguinte forma: o a O unico elemento novo no arquivo objeto ´ a TER (tabela de en´ e dere¸os reloc´veis) onde s˜o relacionadas as posi¸˜es de todos os enc a a co dere¸os existentes dentro do bloco de c´digo cujo valor depende da posi¸˜o c o ca inicial do c´digo. o compilador contic a nua realizando todas as suas tarefas. As raz˜es para estas limita¸˜es s˜o simples e todas baseadas no fato de o co a que dentro do arquivo objeto s´ existem n´meros bin´rios. CRIACAO DE PROGRAMAS ¸˜ 105 • um arquivo de programa execut´vel s´ pode ser executado numa regi˜o a o a fixa de mem´ria. Como existem apenas n´meros bin´rios em todo o arquivo objeto. ca fixando os endere¸os de execu¸˜o durante a compila¸˜o. ou seja.

c o . o que corresponde dizer que o binding n˜o se realizou por a a completo. • ´ poss´ que outra entidade venha a modificar o atual endere¸amento e ıvel c do programa. ca o De qualquer forma o uso de compiladores reloc´veis proporcionar´ as a a seguintes situa¸˜es: co • um arquivo de programa execut´vel poder´ ser executado em diversas a a regi˜es de mem´ria. pois ´ atrav´s desta tabela que o binding torna-se revers´ a e e ıvel. sendo que c a tal modifica¸˜o possibilita determinar o espa¸o f´ ca c ısico do programa em fun¸˜o da disponibilidade de mem´ria do sistema. a TER relaciona onde est˜o os endere¸os que deveriam a c ser modificados para permitir a transposi¸˜o da imagem execut´vel de uma ca a regi˜o de mem´ria para outra.106 ´ CAP´ ITULO 4. sem a necessidade da realiza¸˜o de compila¸˜es adicionais o ca co para for¸ar a gera¸˜o do c´digo para uso em diferentes regi˜es de c ca o o mem´ria.11: Arquivo objeto gerado atrav´s de compila¸˜o reloc´vel e ca a Desta forma. pois os endere¸os est˜o evidenciados na TER. • duas ou mais imagens execut´veis n˜o podem se sobrepor na mem´ria a a o (ocupar os mesmos endere¸os de mem´ria) total ou parcialmente. constituindo o segredo dos compiladores rea o loc´veis. o o • poder˜o existir duas ou mais instˆncias do mesmo programa execut´vel a a a na mem´ria. Portanto temos as seguintes implica¸˜es: co • ainda n˜o ´ poss´ a e ıvel reverter-se a compila¸˜o em si pois apesar do ca binding ser alter´vel. ou melhor. alter´vel. a serem determinadas pelo sistema operacional. ainda ´ imposs´ reconstituir-se o espa¸o l´gico a e ıvel c o original do programa. GERENCIAMENTO DE MEMORIA Figura 4. o • dois ou mais diferentes programas execut´veis poder˜o ser carregaa a dos na mem´ria sem que seja necess´ria a previs˜o da ordem exata o a a de carregamento e as ´reas adicionais de mem´ria que venham a ser a o utilizadas.

5. Atrav´s de s´ ´ a e ımbolos e posi¸˜es relacionados em tabelas de s´ co ımbolos geradas pelos compiladores. // Exporta¸~o de estruturas e vari´veis em linguagem C ca a // estrutura de dados typedef struct { char FuncName[ID LEN]. int Loc. // vari´vel inteira exportada a extern int CallStack[NUM FUNC]. co bastando a indica¸˜o adequada de sua existˆncia no exterior destes arquivos ca e fontes. dentro de certas regras. // vetor de estruturas exportado extern FuncType FuncTable[]. Vemos que uma parte das limita¸˜es provocadas pelo uso de compiladoco res absolutos podem ser contornadas com o uso do modelo de compila¸˜o ca reloc´vel. ´ a Os s´ ımbolos destas tabelas representam fun¸˜es ou estruturas de dados co que podem. os ligadores s˜o capazes de unir trechos de c´digo existentes em diferentes a o arquivos objeto em um unico arquivo execut´vel. o • a soma das imagens poss´ ıveis de serem carregadas em mem´ria para o execu¸˜o paralela tem que ser menor ou igual a quantidade total de ca mem´ria dispon´ o ıvel. Exemplo 4. Como os ligadores n˜o exercem participa¸˜o no binding no toa a ca cante a modifica¸˜o ou finaliza¸˜o do binding. a 4.2 Declara¸˜es de exporta¸˜o co ca . } FuncType. o em um unico arquivo de programa execut´vel. Segundo estas mesmas regras.5. ser definidas e criadas em certos arquivos. CRIACAO DE PROGRAMAS ¸˜ 107 • uma imagem execut´vel deve sempre ocupar uma regi˜o cont´ a a ınua de mem´ria. Utilizam varia¸˜es de cl´usulas a o co a extern ou export. temos que os carregadores ca ca s˜o os candidatos naturais a finaliza¸˜o do binding no caso da compila¸˜o a ca ca reloc´vel. compiladas separadamente. Assim sendo temos: • M´dulos exportadores o Aqueles onde s˜o indicadas fun¸˜es.3 Ligadores (linkers) Programas capazes de unir parcelas de c´digo.4. outros arquivos de programa fonte podem utilizar-se destas fun¸˜es e estruturas sem a necessidade de redefini-las. estruturas de dados e vari´veis que a co a ser˜o utilizadas por m´dulos externos.

h> Exemplo 4.hpp> #include <vcl\ Windows.3 Declara¸˜es de importa¸˜o co ca Cabe ao ligador a tarefa de unir os arquivos que cont´m estas defini¸˜es e co aos arquivos que as utilizam. GERENCIAMENTO DE MEMORIA • M´dulos importadores o Aqueles onde s˜o indicadas quais fun¸˜es. c Os ligadores participam do binding efetuando a uni˜o dos espa¸os f´ a c ısicos dos m´dulos a serem ligados como o programa execut´vel.12: Esquema de compila¸˜o em separado e uso de ligador ca A compila¸˜o em separado. Os ligadores n˜o exercem papel de modifica¸˜o ou a ca finaliza¸˜o do binding. co a // Importa¸~o de m´dulos em linguagem C ca o #include <vcl\Forms. com a conseq¨ente uni˜o posterior dos m´ca u a o dulos produzidos atrav´s de um ligador. tarefa que fica a cargo das entidades anteriores (os ca compiladores) ou posteriores (os carregadores e relocadores). Figura 4. que determina o o a espa¸o f´ c ısico definitivo.hpp> #include <dos. tem os seguintes objetivos: e 1. Reduzir o tempo de desenvolvimento diminuindo os tempos consumidos durante a compila¸˜o atrav´s da parti¸˜o do programa fonte em ca e ca . constituindo um elemento neutro dentro a da cria¸˜o dos programas quando analisada sob o aspecto de modelo de ca endere¸amento. o Utilizam varia¸˜es de cl´usulas import ou include.108 ´ CAP´ ITULO 4. A liga¸˜o nunca afeta a maneira com que ca o binding foi ou ser´ realizado. ´ como ilustrado na Figura 4. estruturas de dados e vari´a co a veis encontram-se declaradas e implementadas em m´dulos externos.12. gerando disto um unico arquivo de programa.hpp> #include <vcl\Classes.

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. as diversas compila¸˜es intermedi´rias durante co a o desenvolvimento totalizam um menor tempo quando feita por partes do que quando o programa era manuseado por inteiro. se v´rios compiladores. devem ser observaca o das as conven¸˜es de chamada para rotinas externas escritas em ouco tras linguagens espec´ ıficas para cada linguagem. Assim os totais gastos s˜o os mesmos quando se consideram a soma dos tempos gastos a por cada elemento da equipe ou o custo de tal trabalho. ent˜o um ligador apropriado ser´ capaz de unir estes dio a a ferentes m´dulos num unico arquivo de programa execut´vel. 4. mesmo que de diferentes linguagens de proa grama¸˜o. s˜o capazes de gerar um formato compat´ de informa¸˜o ca a ıvel ca simb´lica.4. Atrav´s destas t´cnicas. Outros programadores poder˜o utilizar este m´o a o dulo em seus programas. podem ser e e melhor exploradas certas carater´ ısticas das linguagens em programas . Na vero dade. Para que isto ca co seja poss´ basta seguir as regras de compila¸˜o por partes e acompaıvel ca nhar o m´dulo objeto de uma descri¸˜o das suas fun¸˜es (parˆmetros o ca co a de entrada.5. CRIACAO DE PROGRAMAS ¸˜ 109 peda¸os (logicamente divididos e encadeados). Permitir a padroniza¸˜o de c´digo e a constru¸˜o de bibliotecas de ca o ca fun¸˜es e estruturas de dados. ou seja co um m´dulo objeto. Quando se consica dera o resultado final. Seguindo o mesmo princ´ ıpio que o da redu¸˜o do tempo ca de desenvolvimento. que a por ser menor toma um menor tempo de compila¸˜o. mas n˜o poder˜o alter´-lo. Permitir a divis˜o do trabalho dado que o programa pode ser dividido a em partes. 3. por exemplo) em programas escritos em a outras linguagens (C ou PASCAL). Dado que ´ poss´ co e ıvel a compila¸˜o ca de uma parte de um programa contendo apenas fun¸˜es (de uso geco ral ou espec´ ıfico) e estruturas de dados associadas. pode-se com isto distribuir-se esta fun¸˜es e estruturas sob a forma compilada. Considerando a capacidade limitada dos Ligadores em interpretar as tabelas de s´ ımbolos geradas pelos compiladores. da´ obt´m-se a a a a ı e padroniza¸˜o segura de fun¸˜es e estruturas de dados. Pode-se a partir desta c divis˜o concentrar-se o trabalho em uma das partes de cada vez. durante a implementa¸˜o destes m´dulos. Permitir o uso de diferentes linguagens de programa¸˜o dentro de um ca mesmo programa. Com isto podem ser aproveitadas bibliotecas escritas numa certa linguagem (as bibliotecas matem´ticas do FORTRAN. 2. as diversas partes podem ser implementadas paralelamente por equipes de 2 ou mais programadores. mesmo o ´ a que os m´dulos tenham sido escrito em diferentes linguagens. Tal divis˜o requer cuidadoso projeto e especifica¸˜o a ca detalhada e consistente das partes do programa. resultados retornados) criando-se assim bibliotecas.

resultando geralmente na interrup¸˜o abrupta do programa pelo sistema ca operacional. os carregadores apropriados para esta situa¸˜o apenas realizam uma c´pia do arquivo de ca o programa execut´vel. na invas˜o da ´rea de dados/c´digo de outros programas. a o o o Se o endere¸o de carga for o mesmo que o endere¸o base da compila¸˜o. que determina qual m´dulo co o execut´vel deve ser carregado e em que regi˜o de mem´ria isto deve ocorrer a a o (endere¸o base de execu¸˜o). GERENCIAMENTO DE MEMORIA envolvendo v´rias linguagens (C e Clipper. Os carregadores tem o suas a¸˜es dirigidas pelo sistema operacional. carregadores capaa zes de interpretar o conte´do da TER (tabela de endere¸os reloc´veis) de u c a forma a transpor a imagem execut´vel da ´rea original (iniciada/definida a a pelo endere¸o base de compila¸˜o) para uma outra ´rea de mem´ria. neste ponto o sistema operacional determinar´ quando se iniciar´ a execu¸˜o a a ca do programa.5. no a a o c´lculo impr´prio dos resultados ou na perda de controle do sistema. VisualBasic e C. Cada vez que o carregador reloc´vel lˆ um endere¸o dentro do o a e c c´digo. c ca a o A transposi¸˜o da ´rea de mem´ria se baseia no fato de que durante a ca a o transferˆncia do programa execut´vel para a mem´ria principal o carregador e a o reloc´vel.4 Carregadores (loaders) Os carregadores s˜o os programas respons´veis pelo transporte dos arquia a vos de programa execut´veis das estruturas de armazenamento secund´rio a a (unidades de disco ou fita) para a mem´ria principal.110 ´ CAP´ ITULO 4. transferindo dados do dispositivo de armazenamento a secund´rio (unidades de disco ou fita) para a mem´ria principal. ca Quando o arquivo objeto foi gerado em modo absoluto. C e a PASCAL . a o Quando temos que o arquivo objeto foi gerado em modo reloc´vel. que se transforma em uma imagem execut´vel ao iniciar sua a execu¸˜o efetivamente. c c ca a imagem resultante ser´ executada sem problemas. de acordo com o que a foi programado no fonte. Ap´s o t´rmino do processo de carregamento. C e SQL. tais carregadores s˜o chamados de carregadores absolutos e ca a recebem do sistema operacional apenas as informa¸˜es do nome do arquivo co execut´vel a ser carregado e o endere¸o de carga (endere¸o a partir de onde a c c se iniciar´ a c´pia do c´digo na mem´ria principal). atrav´s da TER identifica quem s˜o os endere¸os componente do a e a c c´digo. determinada pelo sistema operacional e n˜o pelo compilador. Caso contr´rio as conseq¨ˆncias s˜o imprevis´ a ue a ıveis. o a . ele soma ao endere¸o lido (endere¸o original da compila¸˜o) o valor o c c ca do endere¸o de carga fornecido pelo sistema operacional e com isto se realiza c o modifica¸˜o do binding (iniciado pelo compilador reloc´vel) finalizandoca a se o mapeamento com a transposi¸˜o da imagem para uma nova regi˜o de ca a mem´ria. 4. c ca o e o carregador sinaliza ao sistema operacional que o programa foi carregado. Nesta a o situa¸˜o. ou seja. a devem ser utilizados carregadores reloc´veis. C e DBase. etc).

5 Relocadores (swappers) Os relocadores s˜o rotinas especiais do sistema operacional respons´veis a a pela movimenta¸˜o do conte´do de certas ´reas de mem´ria prim´ria para ca u a o a mem´ria secund´ria (especificamente dispositivos de armazenamento como o a unidades de disco) e vice-versa. No entanto a ´rea ocupada pelo programa n˜o corresponde apenas ao a a segmento de c´digo contido no arquivo execut´vel. Antes de verificarmos quais modelos . Por essa raz˜o. ap´s a transferˆncia do o a a o e c´digo do armazenamento secund´rio para mem´ria. Caso tais m´dulos sejam usados globalmente.13 Figura 4. compartilhados o e por v´rios programas (como as DLLs dos sistemas MS-Windows 95/98). A existˆncia e de relocadores num sistema depende do tipo de gerenciamento de mem´ria o oferecido pelo sistema operacional. como ilustrado na Figura 4.3) A TSE (tabela de s´ ımbolos externos) ´ lida pelo sistema operacional para e que os m´dulos externos necess´rios ao programa sejam carregados previao a mente. como ilustrado na Figura 4.5. a o sistema operacional s´ realiza o carregamento quando tais m´dulos n˜o o o a est˜o presentes na mem´ria. isto ´. tais como vari´veis locais e blocos u a a de mem´ria alocados dinˆmicamente.5.13: Estrutura t´ ıpica de imagem execut´vel a Tal expans˜o do c´digo ocorre devido as necessidades dos programas de a o possuirem uma ´rea adicional de mem´ria para armazenamento da pilha a o dos endere¸os de retorno (stack ) e outra ´rea extra para armazenamento de c a conte´do dinˆmico do programa (heap). CRIACAO DE PROGRAMAS ¸˜ 111 Endnovo = Endoriginal + (Endbasecompilacao − Endbasecarregamento ) (4. a o Finalmente devemos observar que tanto o cabe¸alho existente no arquivo c de programa execut´vel como a TSE n˜o s˜o transferidas para mem´ria prina a a o cipal.4. chamamos tal conte´do o a o u de mem´ria de imagem execut´vel ou simplesmente imagem. sendo substancialmente o a maior.14. o a 4.

ca Seguindo instru¸˜es do sistema operacional. novamente disponibilizar espa¸o. estas s˜o assinaladas como livres. isto ´. Figura 4. Quando a estes processos. O que geralmente ocorre ´ que o relocador realiza uma c´pia das ´rea de e o a mem´ria movimentadas para o disco em um arquivo especial denominado o arquivo de troca ou swap file. isto ´. ca o ca Com isto. a necessitarem de tais conte´dos. Ao copiar tais ´reas de mem´ria para o a o disco. sabemos que apenas um processo est´ efetivamente a em execu¸˜o. Estes pedidos de aloca¸˜o de mem´ria podem ser o ca o atendidos de duas formas: ´reas efetivamente livres s˜o cedidas ao processo a a ou aciona-se o relocador para libera¸˜o de ´reas de mem´ria pertencentes aos ca a o demais processos ativos e inativos atrav´s da remo¸˜o de seu conte´do para e ca u os arquivos de troca. GERENCIAMENTO DE MEMORIA de gerenciamento de mem´ria podem fazer uso dos relocadores. a meca e a dida de suas necessidades. bloqueados (em estado blocked ) e suspensos (em estado suspended ). que det´m o gerenciamento co e da mem´ria e dos processos. partes de alguns processos ser˜o transferidas para o disco. utilizando o processador (estado running). processos nos estados de running e tamb´m e e . Todas estas opera¸˜es ocorrem sob orienta¸˜o do o co ca sistema operacional. uma nova opera¸˜o de reloca¸˜o pode ser u ca ca efetuada para. devemos o compreender melhor a natureza de seu trabalho. O espa¸o em u a o c mem´ria disponibilizado atrav´s desta opera¸˜o ´ pode ser usado para ateno e ca e der pedidos de aloca¸˜o de mem´ria do processo correntemente em execu¸˜o. de modo que este seja agora c usado para que o conte´do das partes anteriormente copiadas em disco. um relocador pode ser comandado para retirar o o conte´do de uma ´rea de mem´ria armazenado-a em disco. seja u recolocada na mem´ria. u a Nesta situa¸˜o. tornando-se dispon´ a ıveis para outros processos.112 ´ CAP´ ITULO 4. no que se denomina opera¸˜o de troca ou swapping. este processo em execu¸˜o poder´ solicitar ´reas ca a a adicionais de mem´ria. Tamb´m se efetua um registro do que foi copiado para mem´ria e o possibilitando recuperar este conte´do quando necess´rio. ent˜o.14: Conceito de reloca¸˜o ca Considerando que num sistema multiprogramado existem v´rios procesa sos ativos (em estado ready). cuja algumas de suas partes est˜o armazenadas no disco. se avaliarmos a soma total de mem´ria utilizada por ca o todos os processos ativos.

15 temos uma representa¸˜o da mem´ria ca o real e virtual. p.6. ca 4. Figura 4. constru´ e ıdo pela Universidade de Manchester (Inglaterra). embora sua utiliza¸˜o mais ca ampla s´ tenha acontecido muitos anos depois.6). MEMORIA VIRTUAL 113 em ready. Este conceito ´ antigo: surgiu em 1960 no computador Atlas. dados e pilha podem exceder a quantidade de mem´ria o f´ ısica dispon´ para o mesmo [TAN92. Este ´ o princ´ b´sico a ca e ıpio a que possibilita a implementa¸˜o de mem´ria virtual como ser´ tratado a ca o a seguir (se¸˜o 4. 89]. Silberschatz e Galvin prop˜em as seguintes defini¸˜es: o co . ıvel Outra defini¸˜o poss´ de mem´ria virtual ´ a quantidade de mem´ria ca ıvel o e o excedente a mem´ria f´ o ısica instalada em um sistema computacional que esta aparentemente em uso quando se consideram a soma das quantidades totais de mem´ria utilizadas por todos os processos existentes num dado momento o dentro deste sistema. Segundo Deitel: o O termo mem´ria virtual ´ normalmente associado com a habio e lidade de um sistema endere¸ar muito mais mem´ria do que a c o fisicamente dispon´ ıvel [DEI92. pois alguns destes processos tiveram suas ´rea de mem´ria transferidas para a a o unidade de disco quando n˜o estavam em execu¸˜o.6 Mem´ria virtual o O conceito de reloca¸˜o de mem´ria possibilitou o desenvolvimento de um ca o mecanismo mais sofisticado de utiliza¸˜o de mem´ria que se denominou ca o mem´ria virtual ou virtual memory. 215]. p.´ 4. Tanenbaum simplifica a o defini¸˜o do termo: ca A id´ia b´sica da mem´ria virtual ´ que o tamanho combinado do e a o e programa. temos que a quantidade de mem´ria utilizada por eles pode ser o significativamente maior do que a mem´ria f´ o ısica instalada no sistema.15: Representa¸˜o da mem´ria real e virtual ca o Por sua vez. Na Figura 4.

de tamanho e posi¸˜o fixas. ou seja. A mem´ria f´ o ısica tem seu tamanho usualmente limitado pela arquitetura do processador ou do sistema. c ca • Maior eficiˆncia do sistema devido ` presen¸a de um n´mero maior e a c u de processos. De qualquer modo. portanto. possui um tamanho m´ximo a que ´ fixo e conhecido.114 ´ CAP´ ITULO 4. a velocidade m´dia de acesso a mem´ria do e o sistema torna-se uma valor intermedi´rio entre as velocidades de acesso da a mem´ria f´ o ısica e virtual sendo que quanto maior a quantidade de mem´ria o virtual utilizada menor ser´ a velocidade m´dia de acesso a mem´ria. permitindo uso equilibrado e sustentado dos recursos dispon´ ıveis. cont´ ca o e ınuo. pela quantidade de espa¸o livre existente nas unidade de u c disco do sistema possuindo. GERENCIAMENTO DE MEMORIA Mem´ria Virtual ´ uma t´cnica que permite a execu¸˜o de proo e e ca cessos que podem n˜o estar completamente na mem´ria [SG94. Mem´ria Virtual ´ a separa¸˜o da mem´ria l´gica vista pelo o e ca o o usu´rio da mem´ria f´ a o ısica [SG94. De qualquer forma. a e o V elM emF isica > V elM emT otal > V elM emV irtual A mem´ria virtual pode ser implementada basicamente atrav´s de meo e canismos de: • Pagina¸˜o ca T´cnica em que o espa¸o de endere¸amento virtual ´ dividido em bloe c c e cos. a velocidade de acesso da mem´ria f´ o ısica ´ substancialmente maior do que da mem´ria virtual. mas a velocidade da e o mem´ria total do sistema tende a ser uma m´dia ponderada das velocidao e des de acesso da mem´ria f´ o ısica e virtual cujos pesos s˜o as quantidades a envolvidas. ´ capaz de disponibilizar uma quantidade aparente e de mem´ria maior do que a mem´ria de fato (real) existente do sistema. • Abstra¸˜o de que a mem´ria ´ um vetor unidimensional. denominados unidades de aloca¸˜o. ou seja. Do ponto de vista de velocidade. um valor vari´vel e mais flex´ (pois a ıvel ´ mais f´cil acrescentar novas unidades de disco a um sistema ou substituir e a as unidades do sistema por outras de maior capacidade). dotado de endere¸amento linear iniciado na posi¸˜o zero. ca ca . 302]. p. e a o freq¨entemente. J´ a mem´ria virtual tem seu tamanho limitado. a o p. 301]. o termo mem´ria virtual indica que o sistema o computacional possui a capacidade de oferecer mais mem´ria do que a fisicao mente instalada. o o Os maiores benef´ ıcios obtidos atrav´s da utiliza¸˜o de sistemas que eme ca pregam mecanismos de mem´ria virtual s˜o: o a • Percep¸˜o por parte de programadores e usu´rios de que a quantidade ca a de mem´ria potencialmente dispon´ o ıvel ´ maior do que a realmente e existente no sistema.

E o o a o completada com um sofisticado mecanismo de endere¸amento de mem´ria. perca ca mitindo adiar at´ o ultimo momento o mapeamento do espa¸o l´gico de um e ´ c o programa em seu espa¸o f´ c ısico definitivo de execu¸˜o. c o mantido pelo sistema operacional. isto ´ o que chamamos ca e de reloca¸˜o dinˆmica. A segmenta¸˜o ´ um alternativa o a e ca ca e menos utilizada. Isto eq¨ivale a dizer que o u binding deve se completar no momento da execu¸˜o de cada instru¸˜o. os quais se associa um n´mero. ca de forma que em alguns poucos sistemas se usam ambas as t´cnicas. a • Segmenta¸˜o ca T´cnica em que o espa¸o de endere¸amento virtual ´ dividido em bloe c c e cos de tamanho fixo ou vari´vel.´ 4. MEMORIA VIRTUAL 115 geralmente de pequeno tamanho.16: MMU e Reloca¸˜o dinˆmica ca a Estas duas t´cnicas s´ podem ser implementadas se for poss´ a desase o ıvel socia¸˜o dos endere¸os referenciados pelos processos em execu¸˜o dos efetica c ca vamente utilizados na mem´ria f´ o ısica do sistema. efetuando um controle de quais blocos est˜o presentes na o a mem´ria f´ o ısica e quais est˜o nos arquivos de troca. os mecanismos mais populares de implementa¸˜o de meca m´ria virtual s˜o atrav´s da pagina¸˜o. determinando tamb´m quais est˜o presenc o e a tes na mem´ria f´ o ısica e quais est˜o nos arquivos de troca.6. mas identificados unica e a vocamente. e Figura 4. O sistema operacional mapeia estes blocos em endere¸os c de mem´ria. a ıcio cuja posi¸˜o tamb´m pode ser fixa ou vari´vel. a Atualmente. Para isto o processador deve dispor de mecanismos ca a de deslocamento dos endere¸os referenciados pelo programa para as regi˜es c o ´ ´bvio que tal tarefa s´ pode ser de mem´ria que efetivamente ser˜o usadas. embora mais adequada do ponto de vista de programa¸˜o. O u sistema operacional efetua um mapeamento das unidades de aloca¸˜o ca em endere¸os de mem´ria. definidos por um in´ e um tamanho. Tais mecanismos s˜o geralmente implea .

GERENCIAMENTO DE MEMORIA mentados como uma unidade de gerenciamento de mem´ria ou meo mory management unit (MMU) esquematizada na Figura 53. portanto. a Nos sistemas Win32 (Windows 95/98 e Windows NT) s˜o oferecidas a fun¸˜es espec´ co ıficas para o gerenciamento de mem´ria virtual. HeapSize Retorna o tamanho corrente do heap. VirtualFree Libera mem´ria alocada ou reservada o atrav´s de VirtualAlloc. a GlobalMemoryStatus Retorna informa¸˜es sobre utiliza¸˜o co ca da mem´ria do sistema. a soma de sua mem´ria o e o f´ ısica (de tamanho fixo) com a mem´ria virtual do sistema. HeapAlloc Efetua uma aloca¸˜o parcial no heap. ca HeapDestroy Destroy a ´rea de heap. p. a ca Em fun¸˜o da velocidade dos dispositivos de E/S. basicamente. determinando a utiliza¸˜o da mem´ria f´ ca o ısica. e CreateHeap Cria um novo heap. HeapFree Libera uma aloca¸˜o parcial do heap. as importantes fun¸˜es relacionadas na Tabela 4. 252-262].116 ´ CAP´ ITULO 4. c • capacidade de administra¸˜o de endere¸os do sistema operacional e ca c • capacidade de armazenamento dos dispositivos de armazenamento secund´rio (unidades de disco). dentre outras. Al´m dos mecanismos de pagina¸˜o ou segmenta¸˜o. tamanho . e GetProcessHeap Obtˆm um handler para o heap atual. minimizando o impacto das transferˆncias entre e mem´ria prim´ria (mem´ria f´ o a o ısica do sistema) e mem´ria secund´ria (unio a dades de disco). a mem´ria virtual e ca ca o exige a disponibiliza¸˜o de espa¸o nos dispositivos de armazenamento seca c cund´rio para a cria¸˜o de um (ou mais) arquivos de troca. o Atrav´s destas fun¸˜es o usu´rio pode administrar o uso da mem´ria e co a o virtual do sistema.3 [CAL96. os swap files. o menor valor o e dentre os seguintes: • capacidade de endere¸amento do processador. Suas API o (Application Program Interface) oferecem. O tamanho o da mem´ria virtual do sistema ´ definida por. ca HeapReAlloc Modifica o tamanho de uma aloca¸˜o ca parcial do heap. as unidades de disco s˜o ca a quase sempre utilizadas.3: Fun¸˜es de gerenciamento de mem´ria virtual da API Win32 co o Fun¸˜o ca Utiliza¸˜o ca VirtualAlloc Permite reservar ou alocar mem´ria o para um programa. co Tabela 4. A mem´ria total de um sistema ´.

UpdateMemStatus. } begin { Obt^m status da mem´ria } e o Status. end. GlobalMemoryStatus(Status). a quantidade de mem´ria o f´ ısica dispon´ ıvel. end.4 Uso de GlobalMemoryStatus J´ no Exemplos 4. with Status do { Atualiza labels e gauges } begin Label1.Caption:=IntToStr(ToKb(dwTotalPhys))+’ Kb’. A rotina possui um tratamento m´ ca o ınimo de erros.0 ou superior.MaxValue:=dwTotalPageFile.´ 4.Caption:=IntToStr(ToKb(dwTotalPageFile))+’ Kb’. o que perca a o ca mite a cria¸˜o de um mecanismo particular de utiliza¸˜o e controle do espa¸o ca ca c de endere¸amento virtual que opera de forma transparente com rela¸˜o aos c ca mecanismos de mem´ria virtual implementados pelo sistema operacional.4 utiliza a fun¸˜o da API GlobalMemoryStatus para co ca determinar o tamanho da mem´ria f´ o ısica instalada. a o permitindo seu uso atrav´s de um ponteiro para a ´rea alocada.dwLength := sizeof(TMemoryStatus).dwAvailPageFile. o tamanho do arquivo de troca e sua utiliza¸˜o. ca { Para Borland Delphi 2.Caption:=IntToStr(ToKb(dwTotalPageFile dwAvailPageFile))+’ Kb’. var Status: TMemoryStatus. Label2. Label4. Gauge2. . MEMORIA VIRTUAL 117 e utiliza¸˜o do arquivo de troca. o Nos Exemplos 4.Caption:=IntToStr(ToKb(dwTotalPhys dwAvailPhys))+’ Kb’. O Exemplo 4. Label3.Progress:=dwTotalPageFile . Gauge1. efetuando e a sua libera¸˜o ap´s o uso.Progress:=dwTotalPhys .4 e 4.5 que aloca um bloco de mem´ria de tamanho Size.dwAvailPhys.5 temos exemplos de utiliza¸˜o de algumas destas ca fun¸˜es. tamanho do heap etc. Al´m disso pode ca e efetuar a aloca¸˜o de novas ´reas de mem´ria para sua aplica¸˜o. Gauge2. Gauge1. function ToKb(Value: DWORD): DWORD. end. begin result := Value div 1024.6.MaxValue:=dwTotalPhys. procedure TForm1. Exemplo 4.

17. 0.0 ou superior."). if P = nil then ShowMessage("Aloca¸~o n~o foi poss´vel") ca a ı else begin { Uso da ´rea alocada atrav´s do ponteiro P. existem v´rios diferentes modelos para a ora ganiza¸˜o e o gerenciamento de mem´ria os quais trataremos brevemente: ca o • Monoprogramado com armazenamento real • Multiprogramado com parti¸˜es fixas sem armazenamento virtual co • Multiprogramado com parti¸˜es vari´veis sem armazenamento virtual co a • Multiprogramado com armazenamento virtual atrav´s de pagina¸˜o e ca • Multiprogramado com armazenamento virtual atrav´s de segmenta¸˜o e ca • Multiprogramado com armazenamento virtual atrav´s de pagina¸˜o e e ca segmenta¸˜o combinadas ca 4. Tamb´m era a t´cnica mais comum usada pelos sistemas e e e operacionais das primeiras gera¸˜es de microcomputadores. } a e .118 ´ CAP´ ITULO 4. { Libera¸~o da area alocada ap´s uso. Este modelo. . era a forma mais comum de gerenciamento de mem´ria at´ meados da o e d´cada de 1960.7. mem Release) then ShowMessage("Erro liberando mem´ria. de tamanhos diferentes. memCommit or mem Reserve.5 Aloca¸˜o de bloco de mem´ria com VirtualAlloc ca o 4. tamb´m chamado de modelo de aloca¸˜o e ca cont´ ınua. Exemplo 4. GERENCIAMENTO DE MEMORIA { Para Borland Delphi 2.7 Modelos de gerenciamento de mem´ria o Como ilustrado na Figura 44. armazenamento direto ou monoprogramado com armazenamento real. Size. . } ca ´ o if not VirtualFree(P. co . Page ReadWrite). o end. } P := VirtualAlloc(nil.1 Monoprogramado com armazenamento real Neste modelo de gerenciamento a mem´ria ´ dividida em duas parti¸˜es o e co distintas. onde uma ´ utilizada pelo sistema opee racional e a outra ´ utilizada pelo processo do usu´rio conforme ilustrado e a na Figura 4.

o que limita a programa¸˜o a constru¸˜o de programas estritamente seq¨enciais. v´rios outros esa quemas adicionais forma criados para estender as capacidades b´sicas (e a bastante limitadas) de endere¸amento do sistema operacional. ca Como exemplo o PC-DOS/MS-DOS (Disk Operating System).17: Organiza¸˜o da mem´ria em modo monoprogramado real ca o Esta forma de gerenciamento de mem´ria ´ bastante simples e permite o e que apenas um processo seja executado de cada vez. a o Os overlays (do termo recobrimento). MODELOS DE GERENCIAMENTO DE MEMORIA 119 Figura 4. entre elas os c mecanismos de extens˜o de mem´ria e os overlays. procura manter apenas os procedimentos de uma se¸˜o verca tical da ´rvore. este modelo de organiza¸˜o tamb´m ´ ca e e conhecido como organiza¸˜o monoprogramada real. sistema operacionais dos microcomputadores IBM e seus compat´ ıveis. deve ser adicionada ao programa e mantida na mem´ria o o todo o tempo. utiliza um esquema semelhante. onde o sistema operacional ficava residente na primeira parte da mem´ria e a ´rea de programa destinada aos usu´rios utilizava o o a a espa¸o restante dos 640 Kbytes de espa¸o de endere¸amento dispon´ c c c ıveis. que funcionava como um sistema de gerenciamento de mem´ria virtual. que n˜o s˜o utilizados meo a a a canismos de mem´ria virtual e que usualmente apenas um processo (proo grama) era executado de cada vez. Uma biblioteca de o ıvel controle dos overlays. s˜o o resultado da estrutura¸˜o a ca dos procedimentos de um programa em forma de ´rvore. a Dado que o espa¸o de endere¸amento corresponde a quantidade de mec c m´ria prim´ria fisicamente instalada no sistema. sendo que raramente a mem´ria ser´ inteiramente o a utilizada.7. satisfazendo as restri¸˜es do programa ca a co a ser desenvolvido e da mem´ria dispon´ no sistema. onde no topo est˜o a a os procedimentos mais usados e nos extremos os menos utilizados. O CP/M (Control Program/Monitor ). No caso do DOS. sendo freq¨ente a existˆncia de uma ´rea livre ao final da ´rea de u e a a programa destinada ao usu´rio. dos microcomputadores Apple e compat´ ıveis utilizava esquema semelhante.´ 4. minimizando a quantidade necess´ria de mem´ria f´ a a o ısica e . Na pr´tica ca ca u a este esquema de gerenciamento s´ est´ preparado para a execu¸˜o de um o a ca programa de cada vez. Esta estrutura¸˜o deve ser feita pelo usu´rio.

o que poderia ser feito de tempos em tempos ou at´ e mesmo diariamente pelo operador do sistema.120 ´ CAP´ ITULO 4. A maneira mais simples de c a realizar-se esta tarefa ´ efetuar a divis˜o da mem´ria prim´ria do sistema em e a o a grandes blocos os quais s˜o denominados parti¸˜es. As parti¸˜es.2 Particionamento fixo Dada as vantagens dos sistemas multiprogramados sobre os monoprogramados. GERENCIAMENTO DE MEMORIA assim superando as limita¸˜es do DOS [GUI86. usualmente a primeira ou a ultima. como ilustrado na Figura 4.18: Organiza¸˜o da mem´ria em modo multiprogramado com ca o parti¸˜es fixas co Enquanto o sistema operacional utiliza permanentemente uma destas parti¸˜es. n˜o s˜o necessariamente iguais. embora a co co de tamanho fixo.7. p. dado que ca .18. os tamanhos e posi¸˜es anteriormente definidos co co eram fixos. 184]. co ca Figura 4. possibilitando diferentes a a configura¸˜es para sua utiliza¸˜o. ´ necess´rio que a mem´ria seja dividida de forma tal a possibilitar a e a o presen¸a de v´rios processos simultaneamente. os processos dos usu´rios co ´ a podem ocupar as demais parti¸˜es. co 4. Tanto o modelo de endere¸amento absoluto como reloc´vel podem c a ser utilizados pois: • Nos sistemas batch os programas eram compilados no instante da execu¸˜o possibilitando o uso de compiladores absolutos. o co Geralmente as parti¸˜es eram determinadas atrav´s da configura¸˜o do co e ca sistema operacional. Os processos poder˜o ent˜o ocupar as parti¸˜es de mem´ria a partir de a a co o uma fila unica de processos que encaminhar´ o processo para a parti¸˜o dis´ a ca pon´ ıvel. At´ uma nova defini¸˜o dos e ca tamanhos das parti¸˜es. cujo n´mero depender´ do tamanho co u a total da mem´ria do sistema e dos tamanhos das parti¸˜es realizadas.

exige pesquisa ıcio a o em todas as parti¸˜es livres. embora ocorresse perda significativa de mem´ria pela n˜o ca o a utiliza¸˜o integral das parti¸˜es. em especial. e ca o a o V´rios sistemas comerciais de grande porte utilizavam este esquema de a gerenciamento de mem´ria. A melhor co solu¸˜o encontrada foi adotar uma unica fila de processos e crit´rios de eleca ´ e gibilidade para designa¸˜o de parti¸˜es para processos visando bom uso da ca co mem´ria e um throughput adequado. O uso de parti¸˜es fixas de diferentes taca co co manhos permitia fazer melhor uso da mem´ria. • Best fit: O processo ´ alocado para a menor parti¸˜o que o comporte. e ca produzindo o menor desperd´ de ´reas de mem´ria. u co o .´ 4.7. minimizando o trabalho de procura. 625] sugerem alguns algoritmos em linguagem C para a aloca¸˜o de blocos de mem´ria utilizando o first fit e best fit. baseadas no ca tamanho do processo/parti¸˜o. Para esta tarefa podemos utilizar um dos seguintes crit´rios. [LAT96. onde o operador ou o administrador do sistema o definia o n´mero e o tamanho das parti¸˜es da mem´ria principal. do tamanho m´ximo dos processos em execu¸˜o. MODELOS DE GERENCIAMENTO DE MEMORIA 121 a posi¸˜o que o programa utilizaria na mem´ria (parti¸˜o) era conheca o ca cida. exige pesquisa ıcio a o em todas as parti¸˜es livres. ca ca De qualquer forma. o Torna-se evidente que a determina¸˜o da parti¸˜o para a execu¸˜o de ca ca ca um dado processo influencia no desempenho do sistema. co • Worst fit: O processo ´ alocado para a maior parti¸˜o que o comporte. Assim. ´ co a ca e igual a mem´ria f´ o ısica instalada no sistema. a somat´ria dos tamanhos das o a o parti¸˜es e. co Langsam et al. o espa¸o de endere¸amento corresponde ao tamanho c c da mem´ria prim´ria do sistema. portanto. que correspondem a estrat´gias e e de posicionamento (placement strategies): • First fit: Aloca-se o processo para a primeira parti¸˜o encontrada que ca comporte o processo. o particionamento fixo ´ um esquema de organiza¸˜o de mem´ria que n˜o utiliza mem´ria virtual. e ca produzindo o maior desperd´ de ´reas de mem´ria. uma unica fila de processos poco ´ deria atender a contento a tarefa de definir qual processo ocuparia uma certa parti¸˜o. um carregador reloc´vel poderia a a transpor o c´digo corretamente para a parti¸˜o escolhida. o ca Quando do uso de parti¸˜es iguais. bem ca o como para sele¸˜o da melhor parti¸˜o a ser liberada. pois nesta situa¸˜o poderiam o ca ser utilizadas filas diferentes de processos para cada parti¸˜o. com uma fila de processos. • Se utilizado compiladores reloc´veis. Ainda assim poder´ ca ıamos ter uma situa¸˜o ca de parti¸˜es livres e uma. p. ou seja.

como indicado ´ a o na Figura 4. de forma que parti¸˜es de diferentes tamanhos sejam posicionae co das na mem´ria do sistema. a estrat´gia de posicionamento worst fit ´ bastante e e util pois permite maximizar o tamanho das ´rea livres (buracos) obtidas a ´ a cada aloca¸˜o. uma certa por¸˜o da mem´ria total do sistema pode continuar ca o permanecendo sem uso.19: Organiza¸˜o da mem´ria em modo multiprogramado com ca o parti¸˜es vari´veis co a Neste tipo de sistema. de forma que todas as pequenas ´reas livres ca ıcio o a componham uma unica ´rea livre maior no final da mem´ria.19. GERENCIAMENTO DE MEMORIA 4. exceto pelo fato de que agora ´ o sistema operacioo co e nal efetua o particionamento da mem´ria. A compacta¸˜o de mem´ria ´ uma t´cnica raramente utilizada devido ca o e e ao alto consumo de processador para o deslocamento de todas as parti¸˜es e co . anulando alguns dos benef´ ıcios do particionamento vari´vel e do algoritmo worst fit. Este o o co fenˆmeno. A cada novo processo. a Um estrat´gia poss´ para eliminar a fragmenta¸˜o interna ´ a da come ıvel ca e pacta¸˜o de mem´ria. Figura 4.122 ´ CAP´ ITULO 4. o e ca Desta forma. Este esquema de organiza¸˜o de mem´ria tamb´m ´ denominado de particionamento por ca o e e demanda. aumentando as possibilidade de sucesso de transforma¸˜o da ca ca a ´rea desocupada em uma nova parti¸˜o livre para um novo processo.20. ca Mesmo utilizando-se o algoritmo worst fit ainda ´ poss´ que existam e ıvel regi˜es livres de mem´ria entre as parti¸˜es efetivamente alocadas. onde todas as parti¸˜es ocupadas s˜o deslocadas em ca o co a dire¸˜o ao in´ da mem´ria. podendo ser ocupadas no todo ou em parte co por novos processos como esquematizado na Figura 4. o suas parti¸˜es tornam-se livres. que tende a aumentar conforme a utiliza¸˜o do sistema e n´mero o ca u de processos presentes na mem´ria.3 Particionamento vari´vel a O particionamento vari´vel ´ bastante semelhante ` organiza¸˜o de mea e a ca m´ria em parti¸˜es fixas. ´ denominado fragmenta¸˜o interna.7. A medida que os processos sejam finalizados. a mem´ria o o ´ dividida.

Cada a a p´gina ´ identificada por um n´mero pr´prio. MODELOS DE GERENCIAMENTO DE MEMORIA 123 manuten¸˜o das estruturas de controle da mem´ria. ca o e a o 4.21. no particionamento vari´vel o espa¸o de endere¸amento ´ igual ao a c c e tamanho da mem´ria prim´ria existente no sistema e. tornando a movimenta¸˜o o ca de parti¸˜es um ˆnus para os processos em execu¸˜o. isto ´. O sistema operacional tamb´m deve controlar quais p´ginas virtuais e a est˜o localizadas nos arquivos de troca (swap files). que em conjunto com a a mem´ria f´ o ısica do sistema representam a mem´ria virtual do sistema (vide o . denoe a minados molduras de p´ginas (page frames). O espa¸o de endere¸amento total do sistema. co o ca Figura 4. sendo que para cada uma destas mole e u duras de p´gina corresponde uma certa regi˜o da mem´ria f´ a a o ısica do sistema. O trabalho despendido ca o no reposicionamento de uma parti¸˜o pode ser suficiente para finalizar o proca cesso que a ocupa ou outro presente na mem´ria. Cada moldura de p´gina a a tamb´m ´ identificada por um n´mero. o espa¸o de endere¸amento ´ maior que o tao c c e manho da mem´ria fisicamente presente no sistema. ou seja. como mostra a Figura 4.´ 4. denominado de espa¸o de c c c endere¸amento virtual ´ dividido em pequenos blocos de igual tamanho chac e mados p´ginas virtuais (virtual pages) ou apenas p´ginas (pages).7. um esquema o a de organiza¸˜o de mem´ria que tamb´m n˜o utiliza mem´ria virtual.4 Pagina¸˜o ca A pagina¸˜o ´ um esquema de organiza¸˜o de mem´ria que faz uso da ca e ca o mem´ria virtual.7.20: Compacta¸˜o de mem´ria ca o Da mesma forma que na organiza¸˜o da mem´ria atrav´s de parti¸˜es ca o e co fixas. Da mesma forma a mem´ria a e u o o f´ ısica ´ dividida em blocos iguais. como representado na o Figura 4.22. o sistema operacional deve a ´ realizar um mapeamento de forma a identificar quais p´ginas est˜o presena a tes na mem´ria f´ o ısica. portanto. deve determinar quais os page frames que e est˜o ocupados e quais p´ginas virtuais (virtual pages) est˜o nele armazea a a nados. Para que este esquema de divis˜o seja util. do mesmo tamanho das p´ginas.

No instante efetivo da execu¸˜o a MMU ca (memory management unit) converte os endere¸os virtuais em endere¸os c c f´ ısicos utilizando as tabelas de p´ginas. configurado e pelo administrador do sistema. a a Quando ocorre um page fault ´ acionada uma rotina do sistema opee racional que busca na mem´ria virtual (nos arquivos de troca) a p´gina o a necess´ria. realizando uma opera¸˜o de page fault (falta de ca p´gina) caso n˜o esteja presente.15). sem se preocupar com o posicionamento cont´ ıguo de partes de um mesmo programa. A medida que os programas v˜o sendo executados. o sistema operacioa nal vai relacionando quais p´ginas virtuais est˜o sendo alocadas para cada a a um destes programas. Esta opera¸˜o ´ particularca e mente complexa quando j´ n˜o existe espa¸o livre na mem´ria f´ a a c o ısica. a Neste mesmo momento a MMU detecta se uma dada p´gina est´ ou n˜o a a a presente na mem´ria f´ o ısica. propiciam grande flexibilidade ao sistema. para a ocorrˆncia de troca de p´ginas.21: Espa¸os de endere¸amento virtual e real na pagina¸˜o c c ca Figura 4. e a A convers˜o de endere¸os por parte da MMU ´ necess´ria porque cada a c e a programa imagina possuir um espa¸o de endere¸amento linear originado no c c zero quando na verdade compartilha blocos isolados da mem´ria f´ o ısica com .124 ´ CAP´ ITULO 4. E comum a implementa¸˜o de mecanismos de contabiliza¸˜o dos page faults em ca ca sistemas de maior porte. ca a Os page faults s˜o um decorrˆncia da existˆncia de um mecanismo de a e e mem´ria virtual e embora sejam opera¸˜es relativamente lentas quando como co ´ paradas ao processamento. como esquematizado na Figura 61. trazendo-a para a mem´ria f´ a o ısica. onde pode existir at´ mesmo um limite. sendo necess´ria a utiliza¸˜o de um algoritmo de troca de p´ginas para proceder-se a ca a a substitui¸˜o de p´ginas. GERENCIAMENTO DE MEMORIA Figura 4.

Sendo assim. que determinam ılio a a rela¸˜o entre as p´ginas do espa¸o de endere¸amento virtual e as molduras ca a c c de p´ginas do espa¸o de endere¸amento f´ a c c ısico. O mapeamento das p´ginas virtuais nos efetivos endere¸os de mem´ria ´ a c o e realizado pela MMU com o aux´ de tabelas de p´ginas. ou seja. a Figura 4. como a execu¸˜o ca de um processo cujo tamanho total ´ maior que o armazenamento prim´rio e a do sistema. tomando a forma de pares ordenados (p. ca o Num sistema de pagina¸˜o pura.´ 4. MODELOS DE GERENCIAMENTO DE MEMORIA 125 Figura 4. a pagina¸˜o ´ um esquema extremamente flex´ ca e ıvel. onde p a representa o n´mero da p´gina virtual e d a posi¸˜o desejada.7. d).23 ca c s˜o denominados v. os endere¸os virtuais (veja a Figura 4.22: Endere¸amento Virtual e Real na Pagina¸˜o c ca outros programas que tamb´m est˜o em execu¸˜o. Isto permite tanto a execu¸˜o de um processo com ca apenas uma de suas p´ginas presente na mem´ria f´ a o ısica.23: Formato do endere¸o virtual para sistema de pagina¸˜o pura c ca . o u a ca deslocamento (displacement ou offset) a partir da origem desta p´gina. ou seja. oferendo suporte para as opera¸˜es de convers˜o de endere¸os necess´rias ao uso deste esquema de co a c a organiza¸˜o de mem´ria. e a ca Outra implica¸˜o deste mecanismo ´ que os blocos fisicamente ocupados ca e na mem´ria principal n˜o necessitam estar continuamente nem ordenadao a mente posicionados.

pode ser descrito resumidamente nos passos relacionados abaixo: 1. c Para o funcionamento apropriado da MMU ´ necess´ria a existˆncia de e a e tabelas de p´ginas.24. c 4. seus ena co a e dere¸os iniciais s˜o determinados da seguinte forma: como as molduras de c a p´ginas possuem o mesmo tamanho das p´ginas virtuais. . a o . . O n´mero de p´gina virtual ´ usado como ´ u a e ındice na tabela de p´ginas.4: Endere¸amento das c N´mero do Tamanho do u Page Frame Page Frame 0 p 1 p 2 p 3 p 4 p . MMU recebe o endere¸o virtual contido nas instru¸˜es do programa.126 ´ CAP´ ITULO 4.4 exibe a rela¸˜o entre ca as molduras de p´ginas e seu endere¸amento na mem´ria f´ a c o ısica. GERENCIAMENTO DE MEMORIA J´ as posi¸˜es das molduras de p´ginas (page frames). . . Cada entrada da tabela de p´ginas contˆm. . a 3. mantidas total ou parcialmente na mem´ria prim´ria a o a pelo sistema operacional. . gerala e mente: • um bit indicando presen¸a ou ausˆncia da p´gina na mem´ria princic e a o pal. conforme esquematizado na Figura 4. n−1 p Molduras de P´ginas a Endere¸amento c Real das P´ginas a 0 : p − 11 p : 2p − 1 2p : 3p − 1 3p : 4p − 1 4p : 5p − 1 . Tabela 4. . isto ´. A Tabela 4. n˜o a u a a podendo ser designadas de outra forma. MMU comp˜e o endere¸o final usando o endere¸o da moldura de p´gina o c c a e uma parte do endere¸o virtual (displacement). (n − 1)p : np − 1 O funcionamento da MMU. e u a • dependendo da implementa¸˜o. • o n´mero da moldura de p´gina (page frame number ). Obtˆm-se o endere¸o f´ e c ısico da moldura de p´gina que contˆm o ena e dere¸o virtual solicitado ou ocorre um page fault. c co 2. os endere¸os inia a c ciais dos page frames s˜o m´ltiplos integrais do tamanho das p´ginas. o endere¸o da p´gina no armazenaca c a mento secund´rio (swap files) quando ausente da mem´ria principal.

do tamanho da p´gina e do tamanho da mem´ria real. a c Temos assim que a pagina¸˜o permite a execu¸˜o de programas individuca ca almente maiores que a mem´ria f´ o ısica do sistema ou. os arranjos das a o tabelas de p´ginas podem se tornar grandes e complexos. a execu¸˜o de diversos programas cuja soma dos seus tamanhos exceda o ca tamanho da mem´ria f´ o ısica. simplificando bastante o trabalho de programa¸˜o. a ´ ıvel .´ 4. MODELOS DE GERENCIAMENTO DE MEMORIA 127 Figura 4. p. as aplica¸˜es podem ser desenvolvidas imaginando um espa¸o co c de endere¸amento linear. implementada no hardware do c processador. Em fun¸˜o do tamanho do espa¸o de endere¸amento virca c c tual. mapeamento associativo e mapeamento combinado associativo/direto).7. A pagina¸˜o ´ o sistema de organiza¸˜o ca ca e ca de mem´ria mais utilizado atualmente. 97]. minicomputador de 16 bits popular da d´cada de 1970. Gra¸as a MMU. cont´ c ınuo e de grande tamanho. o Exemplos de sistemas computacionais que utilizam a pagina¸˜o pura s˜o: ca a • DEC PDP-11. utilizando tabelas de p´ginas de um unico n´ [TAN92. p´ginas c c a de 8 KBytes e at´ 4 MBytes de mem´ria f´ e o ısica. dois ou m´ltiplos n´ a u ıveis) e da forma do mapeamento (mapeamento direto. Diversos estudos a e estrat´gias j´ foram realizados para sugerir organiza¸˜es mais eficientes e a co para o mapeamento e a convers˜o de endere¸os.24: Convers˜o de endere¸os pela MMU a c O mecanismo de convers˜o de endere¸os depende da organiza¸˜o das taa c ca belas de p´ginas (um. e contando com um espa¸o de endere¸amento virtual de 16 bits. no caso mais comum.

a segmenta¸˜o e ´ ca prop˜e um modelo bidimensional.5 Segmenta¸˜o ca Enquanto que a organiza¸˜o da mem´ria atrav´s da pagina¸˜o ´ um modelo ca o e ca e puramente unidimensional. 11]. para um dado processo. Estes blocos s˜o denominados segmentos de mem´ria ou simplesmente segmentos. limitado ao a tamanho da mem´ria f´ o ısica do sistema e um n´mero m´ximo de segmentos u a distintos. Dado que um segmento ´ uma unidade l´gica. Num esquema de mem´ria segmentada. oferece espa¸o de endere¸amento linear virtual de 2 GBytes (endere¸os c c c de 32 bits).128 ´ CAP´ ITULO 4. 137]. isto permite que cada segmento possa crescer ou diminuir conforme suas necessidades e livremente de outros segmentos. ca ıvel o . um ou mais segmentos de dados e o um segmento para sua pilha (stack ).7. 98]. tamanho de c p´gina de 4 KBytes com pagina¸˜o por demanda [IBM92b. p´ginas de 4 KBytes [PET96. 248]. p. • IBM OS/2 2. Este conceito foi c c introduzido nos sistemas Burroughs e Multics [GUI86. todos com diferentes tamanhos. o espa¸o de endere¸amento virtual ofee c c recido a cada um dos diversos processos ´ unico e linear. oferecia at´ 512 MBytes de espa¸o l´gico linear e c o por processo num esquema de endere¸amento de 32 bits. Cada segmento representa um espa¸o de endere¸amento linear c c independente dos demais segmentos. a • Microsoft Windows 95. onde cada bloco pode ase a sumir tamb´m um posicionamento vari´vel. ´ E comum que os segmentos possuam um tamanho m´ximo. operando em plataforma Intel 80386 ou 80486.0 (Operating System/2). Uma situa¸˜o poss´ e comum ´ a de um processo que possui um ca ıvel e segmento de c´digo (o programa em si). isto ´. isto ´. a o como ilustrado na Figura 4. p. sucessor do DEC PDP-11. a 4. As tabelas de p´ginas possu´ a ıam dois n´ ıveis [TAN92. o programador deve exe o plicitamente determinar sua utiliza¸˜o. GERENCIAMENTO DE MEMORIA • DEC VAX (Virtual Addresses eXtensions). n˜o existe necessidade dos diversos segmentos deste proa cesso estarem alocados de forma cont´ ıgua ou sequer ordenada.25. e a e enquanto cada segmento deve ocupar um espa¸o de endere¸amento cont´ c c ınuo na mem´ria f´ o ısica. onde cada processo pode utilizar-se de o diversos espa¸os de endere¸amento virtuais independentes. minicomputador de 32 bits. possuindo um espa¸o de endere¸amento c c virtual de 32 bits e pequenas p´ginas de 512 bytes. Embora seja poss´ ter-se c´digo. p. dirigido para processadores 80386 ou superior. 293]. p. Os modelos de sua a fam´ contavam com no m´ ılia ınimo 2 MBytes de mem´ria f´ o ısica at´ 512 e MBytes. p. o espa¸o de endere¸amento viro c c tual ´ dividido em blocos de tamanho vari´vel. minicomputador de 64 bits que utiliza um esquema de tabela de p´ginas invertidas (inverted page table) [STA96. a ca • IBM AS/400.

ca c Num sistema de segmenta¸˜o pura.26: Formato do endere¸o virtual para sistema de segmenta¸˜o c ca . tais como leitura (read ). Al´m disto oferece importantes facilidades do ponto ca e de vista de compartilhamento e prote¸˜o. Notamos que a forma¸˜o dos endere¸os na segmenta¸˜o ´ ca c ca e semelhante a existente na pagina¸˜o. Tais opera¸˜es podem ainda ser associadas a modos de ca co acesso espec´ ıficos. uma biblioteca ca de fun¸˜es pode ser colocada num segmento e compartilhada pelas diverco sas aplica¸˜es que as necessitem. d). onde s representa o n´mero do segmento e d a posi¸˜o u ca desejada. os endere¸os virtuais.´ 4. s˜o denominados v e tomam a forma de pares a ordenados (s. escrita (write). principalmente as de tamanho vari´vel em ca a tempo de execu¸˜o. A cada segmento podem ser associados co tipos de acesso que especifiquem as opera¸˜es que podem ser executadas co no segmento. p. execu¸˜o (execute) e ca anexa¸˜o (append ).25: Armazenamento prim´rio na segmenta¸˜o a ca dados e pilha num unico segmento.26. criando um amplo conjunto de possibilidades uteis para ´ implanta¸˜o de esquemas de seguran¸a [DEI92. invalidando seus benef´ ca o ıcios. A organiza¸˜o da mem´ria em segmentos favorece e simplifica a orgaca o niza¸˜o de estruturas de dados. o deslocamento (displacement ou offset) a partir da origem deste segmento.7. MODELOS DE GERENCIAMENTO DE MEMORIA 129 Figura 4. ca Figura 4. isto representa uma m´ utiliza¸˜o desta ´ a ca estrutura de organiza¸˜o da mem´ria. ou seja. 233]. Por exemplo. cuja estrutura ca c se indica na Figura 4.

a a ca cada segmento deve ser transferido inteiramente e posicionado numa regi˜o a cont´ ınua de mem´ria. e tamb´m mea a e nos freq¨entes. c co 2. . • HP 3000. c O mecanismo de convers˜o de endere¸os depende da organiza¸˜o das a c ca tabelas de segmentos e da forma do mapeamento (mapeamento direto ou mapeamento associativo). deve ser obtido atrav´s de ale goritmos que implementem as estrat´gias de substitui¸˜o (replacement strae ca tegies). Exemplos de sistemas computacionais que utilizaram a segmenta¸˜o pura ca s˜o: a • Burroughs B6700. ou seja. e a ca utiliza um esquema de mapeamento e tabelas de mapeamento de segmentos (segment map tables): 1. pois o n´mero de segmentos de um processo ´ tipicamente u u e menor que o n´mero de p´ginas equivalente. p. 4. dado que a co os segmentos s˜o usualmente maiores do que as p´ginas. o Isto indica que os segment faults s˜o opera¸˜es mais lentas. 3. Obtˆm-se o endere¸o f´ e c ısico de in´ do segmento ou ocorre um segment ıcio fault. O segmento que deve e ser substitu´ ıdo. GERENCIAMENTO DE MEMORIA Um processo somente pode ser executado se ao menos um de seus segmentos contendo c´digo estiver presente na mem´ria f´ o o ısica. O mapeamento dos endere¸os virtuais em endere¸os reais pertencentes c c aos segmentos corretos se faz de maneira idˆntica ` pagina¸˜o. MMU comp˜e o endere¸o final usando o endere¸o de in´ do segmento o c c ıcio e uma parte do endere¸o virtual (displacement). a o ca opera¸˜o que pode ser realizada atrav´s de algoritmos que apliquem as esca e trat´gias de posicionamento (placement strategies). MMU recebe o endere¸o virtual contido nas instru¸˜es do programa. computador do in´ da d´cada de 60. O n´mero de segmento virtual ´ usado como ´ u e ındice na tabela de segmentos. minicomputador tipo pilha cujo espa¸o l´gico consistia de c o at´ 255 segmentos de c´digo execut´vel de 16 KBytes cada e um unico e o a ´ segmento de dados de 64 KBytes manipulado por hardware [GUI86. Para isto segmentos devem ser transferidos da mem´ria secund´ria para a mem´ria prio a o m´ria da mesma forma que as p´ginas no esquema de pagina¸˜o.172].157]. Outro ponto ´ que deve ser u a e determinada qual regi˜o de mem´ria permite a coloca¸˜o do novo segmento. em caso de um segment fault. ou seja.130 ´ CAP´ ITULO 4. p. com arquiıcio e tetura tipo pilha [GUI86.

a segmenta¸˜o apresenta uma grande desvantagem: cone ca forme os segmentos se tornam grandes. 342]. podendo efetuar o endere¸amento c o c f´ ısico de no m´ximo 64 KBytes. • Microsoft Windows 3.x. tamanho m´ximo dos segmentos que a a administrava [BOR92. tal como proposto por Deitel [DEI92. A raz˜o para isto se encontra no porque destes esquemas terem sido a inventados. ca 4. usava segmenta¸˜o pura. ca Enquanto o grande inconveniente da pagina¸˜o pura ´ sua excessiva simca e plicidade como modelo de programa¸˜o. a segmenta¸˜o pura imp˜e dificulca ca o . 131]. como veremos mais a frente. Enquanto a pagina¸˜o foi desenvolvida para ser um esquema de orgaca niza¸˜o invis´ ao programador. os esquemas de organiza¸˜o de mem´ria atrav´s de pagina¸˜o ca o e ca e segmenta¸˜o possuem vantagens e desvantagens. 14].7. MODELOS DE GERENCIAMENTO DE MEMORIA 131 • Intel 8086/8088. 142].7. p. espa¸o de endere¸amento virtual de c c 512 MBytes por aplica¸˜o e mem´ria f´ ca o ısica m´xima de 16 MBytes a [IBM92b. A solu¸˜o desta ıvel ca desvantagem se d´ na utiliza¸˜o conjunta dos esquemas de segmenta¸˜o e a ca ca pagina¸˜o.5 temos um ca quadro comparativo. a custo de uma maior complexidade. ca a Podemos notar que a pagina¸˜o ´ um esquema de organiza¸˜o de meca e ca m´ria mais simples.6 Pagina¸˜o versus Segmenta¸˜o ca ca Como visto. p. microprocessador de 8 bits. p.x (Operating System/2). principalmente para o programador. oferecia um espa¸o de c endere¸amento l´gico de 1 MByte. Existe ainda o problema maior de um segmento individual e se tornar maior que a mem´ria f´ o ısica dispon´ no sistema. a Apesar de ser um esquema de organiza¸˜o de mem´ria que oferece uma ca o s´rie de vantagens. as opera¸˜es de posicionamento e co substitui¸˜o tendem a se tornar lentas conduzindo o sistema a uma situa¸˜o ca ca de ineficiˆncia. • IBM OS/2 1. p. Na Tabela 4. utilizava segmenta¸˜o pura. p. voltado para o microprocessador Intel 80286. maior que a mem´ria f´ c o ısica e de uso simples. 48MBytes de espa¸o de endere¸amento virtual e mem´ria f´ c c o ısica m´xima de 16 MBytes [IBM92b. onde o tamanho m´ximo ca a dos segmentos era 64 Kbytes. segmentos de no m´ximo 64 KByca a tes. o prop´sito o da segmenta¸˜o foi permitir que programas e dados pudessem ser logicaca mente divididos em espa¸os de endere¸amento independentes facilitando o c c compartilhamento e prote¸˜o [STA96. 11][LET89. onde se avaliam estas formas de organiza¸˜o do armazenamento prim´rio. tamb´m dirigido para o microprocessador Ine tel 80286. oferece mecanismos mais ca sofisticados para organiza¸˜o e compartilhamento de dados ou procedimenca tos. enquanto que a o segmenta¸˜o.´ 4. p. proporcionando um grande espa¸o de enca ıvel c dere¸amento linear. 249].

132 ´ CAP´ ITULO 4.7 Pagina¸˜o e segmenta¸˜o combinadas ca ca De forma que possam ser obtidas as maiores vantagens dos esquemas de pagina¸˜o e segmenta¸˜o. Combinando-se pagina¸˜o e segmenta¸˜o de forma que os segmentos tornem-se paginados. mais coo nhecidos como sistemas multiprogramados com pagina¸˜o e segmenta¸˜o ca ca combinadas. GERENCIAMENTO DE MEMORIA Tabela 4. os programas podem ser divididos em m´ltiplos espa¸os de u c endere¸amento virtuais que. ca ca associam-se as vantagens de cada um destes esquemas eliminando suas maiores deficiˆncias as custas de uma organiza¸˜o um pouco mais complexa mas e ca transparente para o desenvolvedor. Se desejado.7. todo programa e dados o podem ser concentrados num unico segmento. ca o seguran¸a e prote¸˜o. Por sua vez. a segmenta¸˜o oferece tais mecanismos c ca ca de organiza¸˜o. N˜o a Sim 1 Sim N˜o a N˜o a N˜o a Muitos Sim Sim Sim Sim dades no gerenciamento da mem´ria virtual. 4. compartilhamento e prote¸˜o. n˜o u a a mais necessitando ser armazenado inteiramente na mem´ria e t˜o pouco de o a forma cont´ ıgua e ordenada. Seg. A pagina¸˜o proporciona grande espa¸o de endere¸amento linear e facica c c lidade para o desenvolvimento embora n˜o ofere¸a mecanismos mais sofisa c ticados de organiza¸˜o de c´digo e dados bem como de compartilhamento. ou seja. mas deixa de ser convenica ca ente quando os segmentos tornam-se grandes al´m de impor um modelo e de desenvolvimento de software um pouco mais complexo.5: Quadro comparativo pagina¸˜o versus ca Considera¸˜o ca Programador precisa saber que esta t´cnica e ´ utilizada? e Quantos espa¸os de endere¸amento linear existem? c c O espa¸o de endere¸amento virtual pode exceder c c o tamanho da mem´ria f´ o ısica? Dados e procedimentos podem ser distinguidos? Tabelas cujo tamanho ´ vari´vel podem ser e a acomodadas facilmente? O compartilhamento de procedimentos ou dados entre usu´rios ´ facilitado? a e segmenta¸˜o ca Pag. pois a troca de segmentos entre o o armazenamento prim´rio e secund´rio se torna lento para segmentos de a a grande tamanho. os segmentos deca ca vem necessariamente ter tamanho m´ltiplo do tamanho das p´ginas. fazendo que o resultado sejam ´ . Num sistema com pagina¸˜o/segmenta¸˜o combinadas. penalizando o desempenho do sistema. ao serem paginados. desenvolveu-se o uso combinado destas duas t´cnicas ca ca e em sistemas com esquemas h´ ıbridos de gerenciamento de mem´ria. n˜o necessitam de armac a zenamento cont´ ınuo na mem´ria real. Todos os benef´ ıcios da segmenta¸˜o s˜o manca a tidos.

c 7. tomam c a forma de triplas ordenadas (s.7.27. ´ selee cionada a tabela de mapa de segmentos pertencente ao processo.´ 4. como segue: 1. a 6. e uma tabela de ca p´ginas para cada segmento individual. MODELOS DE GERENCIAMENTO DE MEMORIA 133 semelhante a um sistema paginado puro. MMU comp˜e o endere¸o final usando o endere¸o da moldura de p´gina o c c a e uma parte do endere¸o virtual (displacement). tornando-se necess´rio a existˆncia de uma estrutura de controle a e mais sofisticada nestes sistemas. co e O funcionamento da MMU nestes sistemas. O n´mero de segmento virtual ´ usado como ´ u e ındice na tabela de segmentos obtendo-se o n´mero de p´gina virtual. p.1). p representa o n´mero da p´gina virtual e d a posi¸˜o desejada. E utilizada a tabela de p´ginas relativa ao segmento em uso. A partir da tabela de controle dos processos (tabela de PCB). num sistema de pagina¸˜o/segmenta¸˜o combinadas. c . Obtˆm-se o endere¸o f´ e c ısico da moldura de p´gina que contˆm o ena e dere¸o virtual solicitado ou ocorre um page fault. Desta forma. o deslocamento (displacement ou offset) a partir da origem da p´gina a indicada dentro deste segmento. os ca ca endere¸os virtuais.4. se encontra esquematizado na Figura 4. a 5.28 e pode ser descrito. denominados v. cuja indica¸˜o figura no ca PCB (Process Control Block abordado na se¸˜o 2. Geralmente o sistema operacional mant´m e uma tabela de mapa de segmentos por processo. u a ´ 4. O n´mero de p´gina virtual ´ usado como ´ u a e ındice na tabela de p´ginas. Figura 4. como indicado na Figura 4. c co 2. d). 3. onde s representa o n´mero do u segmento. resumidamente. MMU recebe o endere¸o virtual contido nas instru¸˜es do programa. Para se resolver um endere¸o vira c tual determinando-se o endere¸o real torna-se necess´ria a utiliza¸˜o de inc a ca forma¸˜es em trˆs tabelas diferentes. u a ca ou seja.27: Formato do endere¸o virtual para sistema de pagina¸˜o e segc ca menta¸˜o combinadas ca Notamos que o espa¸o de endere¸amento virtual oferecido ´ tridimenc c e sional.

provˆ cada processo com at´ 2 GBytes de. oferecendo at´ 8192 e segmentos de at´ 4 GBytes cada um. com espa¸o e c l´gico de 16 MBytes divididos em 16 segmentos de 1 MByte [GUI86. • IBM System/360. computadores das d´cadas de 1960 e 1970. computador do final da d´cada de 1960. a p. obtendo-se uma referˆncia para uma entrada da e tabela que contˆm o endere¸o real da moldura de p´gina desejada.154]. mantido num registrador c a qualquer do processador. • IBM MVS (Multiple Virtual Storage System). operando e com sistema operacional MULTICS suportando processos com at´ 218 e (262. 132].7. compostos de p´ginas de 4096 e a bytes [STA96. ´ a e somado ao endere¸o de base da tabela de p´ginas. GERENCIAMENTO DE MEMORIA A manuten¸˜o desta estrutura complexa requer cuidadoso projeto para ca que n˜o consuma recursos excessivos e processamento significativo nos sisa temas que as utilizam.8 Tabelas de p´ginas a Como visto. 252].29 temos uma ilustra¸˜o que esquematiza as opera¸˜es reca co alizadas na convers˜o de um endere¸o virtual para um outro real. suportadas diretamente pelo hardware do sistema e mantidas pelo sistema operacional s˜o. o ponto central a c destes esquemas de organiza¸˜o de mem´ria. e p. Somandoe c a se o deslocamento contido no endere¸o virtual ao endere¸o da moldura de c c p´gina obtido da tabela de p´ginas obtˆm-se o endere¸o real completo. um e a e c e n´mero da p´gina virtual e um deslocamento dentro da p´gina. nos quais e e poderiam existir 2048 segmentos de 256 p´ginas de 4096 bytes [DEI92. 677]. s˜o implementadas tabelas para realizar a convers˜o de ca a a endere¸os virtuais em endere¸os f´ c c ısicos. Estas tabelas. 4. O n´mero u a a u da p´gina virtual ´ usado como ´ a e ındice numa tabela de p´ginas. o p. ou seja.144) segmentos cada um com at´ 64 KBytes de tamanho [TAN92. operando na arquitetura ESA/370.134 ´ CAP´ ITULO 4. a a e c Na Figura 4. p. suportando at´ 64 TBytes de endere¸amento virtual ılia e c e um m´ximo de 4 GBytes de mem´ria f´ a o ısica. tanto a organiza¸˜o de mem´ria atrav´s de pagina¸˜o como ca o e ca de segmenta¸˜o e os sistemas h´ ca ıbridos que utilizam a pagina¸˜o combinada ca com segmenta¸˜o. Exemplos de sistemas computacionais que utilizam a pagina¸˜o e segca menta¸˜o combinadas s˜o: ca a • Honeywell 6000. • Fam´ Intel P6. ca o A id´ia b´sica ´ que o endere¸o virtual ´ composto de duas partes. Este a c esquema de convers˜o de endere¸os ´ denominado convers˜o ou tradu¸˜o a c e a ca . a juntamente com os mecanismos de convers˜o de endere¸os.

MODELOS DE GERENCIAMENTO DE MEMORIA 135 Figura 4.7.´ 4.28: Estrutura de tabelas para sistemas com pagina¸˜o e segca menta¸˜o combinadas ca .

a o a Como cada processo possui suas tabelas de p´ginas. Se as tabelas s˜o grandes. Se forem mantidas todas as ca tabelas de p´ginas em mem´ria prim´ria. reduzindo a mem´ria diso o pon´ para os processos que podem ser executados pelo sistema. Como cada referˆncia a mem´ria deve necessariamente ter e o . mas isto pode exaurir a mem´ria prim´ria do sistema. GERENCIAMENTO DE MEMORIA de endere¸os por mapeamento direto.136 ´ CAP´ ITULO 4. p. A tabela de p´ginas pode se tornar extremamente grande. a Grandes espa¸os virtuais de endere¸amento requerem tabelas com muic c tas entradas. Tabelas de p´ginas em mem´ria versus troca de tabela de p´ginas. O mapeamento pode se tornar lento para tabelas grandes ou complexos. ıvel ıvel Os problemas identificados s˜o: a 1. ao esgotar-se o a seu quantum. a sua execu¸˜o ´ interrompida sendo substitu´ por ca e ıda outro processo. pagina¸˜o com um n´ de c ca ıvel tabelas. economiza-se mem´ria prim´ria embora tornando o a a opera¸˜o de troca de contexto lenta.29: Convers˜o de endere¸os por mapeamento direto a c Embora de relativa simplicidade e eficiˆncia. ıvel 2. Se for realizada a troca das tabelas durante o chaveamento de processos. Figura 4. a troca de contexto torna-se a o a r´pida. a o a 3. 93]. uma por¸˜o preciosa da a ca mem´ria pode ser consumida para este fim. o mapeamento indireto e pode apresentar dois problemas importantes a medida que o espa¸o de enc dere¸amento virtual se torna relativamente muito maior que a mem´ria f´ c o ısica dispon´ ou poss´ de ser implementada no sistema [TAN92. ou ainda.

fazendo que apenas uma parte dela esteja necessariamente presente na mem´ria prim´ria. um sistema de tabela de p´ginas de dois n´ a a ıveis pode ser expandido para trˆs. Se uma tabela desta magnitude j´ ´ indesej´vel. retirado do endere¸o c virtual. o valor T P2 atua como outro ´ ındice.obtido na c c a tabela de segundo n´ ıvel. que tal um sistema a e a Pentium.´ 4. MODELOS DE GERENCIAMENTO DE MEMORIA 137 seu endere¸o convertido. analisemos a seguinte situa¸˜o: na arquiteca ca tura DEC VAX. ent˜o ´ necess´rio uma tabela de p´ginas contendo 222 a e a a entradas para cada processo existente no sistema. cada processo pode possuir at´ 2 GBytes (231 bytes) de e espa¸o de endere¸amento. 94]. O valor T P1 atua como ´ ındice para a tabela de p´ginas de primeiro a n´ ıvel.304 entradas. Para ilustrar esta situa¸˜o. Um espa¸o virc tual de 32 bits poderia ter seu endere¸o divido em trˆs partes: (1) um n´mero c e u de tabela de p´ginas T P1 de 10 bits. ou seja. a co a assim. Com a divis˜o de uma unica tabela (de primeiro n´ a ´ ıvel) em uma tabela de entrada (de primeiro n´ ıvel) e tabelas de p´ginas auxiliares (de segundo a n´ ıvel) passa a ser poss´ administrar-se a pagina¸˜o das tabelas de p´ginas ıvel ca a de maneira mais flex´ ıvel. quanto maiores ou mais complexas as tabec las. a De forma an´loga. (2) um n´mero de p´gina virtual T P2 a u a de 10 bits e (3) um deslocamento (offset) de 12 bits. que no modo segmentado/paginado oferece 64 TBytes (246 bytes) de mem´ria virtual? Com p´ginas de 4096 bytes (212 bytes) e sabendo o a que metade do endere¸amento virtual ´ oferecido individualmente para cada c e 34 processo. mais numerosas e complicadas ser˜o as opera¸˜es de convers˜o e. p. Como as p´ginas deste sistema possuem apenas c c a 512 bytes (29 bytes). 4.934. uma tabela simples por processo deveria conter 22 entradas. p. ´ divis˜o destas numa e a estrutura de m´ltiplos n´ u ıveis. ou seja.194. ser´ maior o overhead imposto pela convers˜o dos endere¸os. Na tabela de segundo n´ ıvel selecionada. A MMU comp˜e o c a o endere¸o real final a partir do endere¸o da moldura de p´gina . selecionando uma das tabelas do segundo n´ ıvel. faa a c zendo que o maepamento se torne inconvenientemente lento. ca c o conforme indicado por Tanembaum [TAN92. que leva em conta as peculiaridades da implementa¸˜o tais ca . 248]. obtendo-se assim o endere¸o real da moldura de p´gina (page frame).589.592 de entradas! Uma primeira solu¸˜o seria submeter a tabela de p´ginas ` pagina¸˜o. como indicado na Figura 68. ca a a ca como qualquer outra ´rea de mem´ria. Cada hardware espec´ ıfico possui uma estrutura de tabelas particular. o a Outra solu¸˜o para evitar a presen¸a de enormes tabelas na mem´ria. Como regra geral. armazenando-a na mem´ria vira o o tual. 8. embora a flexibilidade adicionada torna-se menos valiosa do que a complexidade inerente ao maior n´mero de n´ u ıveis. e do deslocamento (offset).7. quatro ou mais n´ e ıvel. cada tabela de p´ginas nunca ´ a e maior que o tamanho de uma p´gina [STA96. afetando de forma significativa a performance do sistema.

a a a o a os bits de prote¸˜o (protection) que especificam as opera¸˜es que podem ser ca co realizadas na p´gina. u a Figura 4.31: Entrada T´ ıpica de uma Tabela de P´ginas a Exemplos de sistemas que se utilizam de diferentes formas para a implementa¸˜o e administra¸˜o de suas tabelas de p´ginas s˜o: ca ca a a . GERENCIAMENTO DE MEMORIA Figura 4.138 ´ CAP´ ITULO 4.30: Estrutura multin´ para tabelas de p´ginas ıvel a como o tamanho do espa¸o de endere¸amento virtual. as entradas t´ ıpicas das tabelas de p´ginas possuem v´rios campos utilizados para a a o controle adequado da mem´ria: o n´mero da moldura de p´gina (page o u a frame number ) que indica o endere¸o real da p´gina. um bit de habilita¸˜o do cache (caching disabled ) usado a ca para evitar que a p´gina seja colocada no cache e os bits de referˆncia (refea e renced ) e modifica¸˜o (modified ) utilizados para controlar o uso e altera¸˜o ca ca do conte´do da p´gina. o ca a Independentemente do n´mero de n´ u ıveis e do layout das tabelas. a m´xima quantidade c c a f´ ısica de mem´ria endere¸´vel e o tamanho da p´gina. o bit presente/ausente c a (present/absent) que sinaliza se a p´gina est´ ou n˜o na mem´ria prim´ria.

• Pagina¸˜o em dois n´ ca ıveis: DEC VAX. co a Sendo assim estes algoritmos devem procurar substituir p´ginas pouco utilia zadas ou n˜o utilizadas por aquelas que s˜o freq¨entemente utilizadas pelos a a u processos ativos. MODELOS DE GERENCIAMENTO DE MEMORIA • Pagina¸˜o em um n´ ca ıvel: DEC PDP-11. co ca a O grande problema consiste ent˜o em determinar qual p´gina ser´ subsa a a titu´ ou copiada para os arquivos de troca como forma de liberar espa¸o ıda c para aquele p´gina que se tornou necess´ria. E ´bvio que se a p´gina ıda. uma opera¸˜o de substitui¸˜o simples. uma degrada¸˜o significativa da ca ca performance do sistema devido ao excesso de opera¸˜es de troca de p´ginas.9 Algoritmos de troca de p´ginas a Os mecanismos de mem´ria virtual se baseiam no fato de que por¸˜es dos o co processos s˜o armazenadas em arquivos especiais denominados arquivos de a troca. • Pagina¸˜o em trˆs n´ ca e ıveis: Sun Spark. ou seja. minimizando as opera¸˜es de substitui¸˜o de p´ginas. ou seja.´ 4. outras formas de se a a e ıvel a definir qual p´gina ser´ substitu´ s˜o empregadas [DEI92. podendo o a ser simplesmente sobrescrita pela p´gina que tomar´ seu lugar na mem´ria a a o prim´ria. 254]. o a a substitu´ for necess´ria em breve ou for preciso um n´mero muito grande ıda a u de substitui¸˜es para execu¸˜o dos programas ativos. necessitam acessar dispositivos de entrada e o a ´o sa´ muito mais lentos do que a mem´ria prim´ria. ocorre um page fault. c c ´ detectada a falta de uma p´gina que dever´ ser trazida novamente para a e a a mem´ria principal. o As opera¸˜es de substitui¸˜o de p´ginas s˜o lentas pois envolvem o acesso co ca a a a ` mem´ria secund´rio. ca o ıvel 139 • Pagina¸˜o via tabelas invertidas: IBM RS6000 (sistemas RISC). Como n˜o ´ poss´ realizar tal previs˜o. a a ıda a Note que se uma p´gina n˜o tiver sido modificada ent˜o n˜o necessita a a a a ser copiada para a mem´ria virtual (armazenamento secund´rio). IBM ca PowerPC. • Pagina¸˜o via mem´ria associativa (n´ zero): MIPS R2000. Se a p´gina foi a ca ca a modificada ent˜o dever´ ser copiada para o armazenamento secund´rio antes a a a da substitui¸˜o pela nova p´gina. numa opera¸˜o mais lenta do que uma ca a ca substitui¸˜o simples. ou seja. Um algoritmo ´timo de troca a a o de p´ginas deveria ser capaz de identificar qual p´gina n˜o mais ser´ utia a a a lizada ou estabelecer aquela que demorar´ mais a ser novamente utilizada. a minimizando a ocorrˆncia de page faults e com isto as opera¸˜es de troca e co de p´ginas. ca . • Pagina¸˜o em quatro n´ ca ıveis: Motorola 68030. ocorrer´ a hiperpaco ca a gina¸˜o (hiperpaging ou thrashing) ou seja. 4.7. IBM AS/400.7. p. Quando um processo necessita acessar uma por¸˜o de seu c´digo ca o contida fora do espa¸o de endere¸amento real.

permitindo a identifica¸˜o das mais antigas. a a e co Troca de p´ginas segunda chance a O algoritmo de troca de p´ginas segunda chance (second chance) ´ uma a e varia¸˜o da estrat´gia FIFO. Troca de p´ginas FIFO a A id´ia central deste algoritmo ´ que as p´ginas que est˜o a mais tempo e e a a na mem´ria podem ser substitu´ o ıdas. Como visto. . GERENCIAMENTO DE MEMORIA Os algoritmos que tratam deste problema s˜o aqueles que implementam a as estrat´gias de substitui¸˜o (replacement strategies) e s˜o denominados e ca a algoritmos de troca ou algoritmos de substitui¸˜o de p´ginas.140 ´ CAP´ ITULO 4. embora prov´vel e l´gico. Dada esta raz˜o n˜o ´ utilizado na forma pura. as primeiras que entram s˜o a as primeiras que saem (FIFO ou First In First Out). pode ser indevidamente substitu´ o ıda. pois processos de longa dura¸˜o pode contica nuar necessitando de suas p´ginas mais do que processos de curta dura¸˜o a ca que entram e saem rapidamente enquanto os outro permanecem. Tamb´m ´ chamado de random page o a e e replacement. ou seja. mas sim varia¸˜es deste algoritmo. presente a muito tempo a e a na mem´ria. ´ raramente utilizado dado que a p´gina substitu´ ca e a ıda pode ser a pr´xima a ser necess´ria. Embora seja r´pido e de a a implementa¸˜o simples. maior u a s˜o as chances de sucesso imediato deste algoritmo. n˜o necessaca a o a riamente se traduz em verdade. a deficiˆncia do algoritmo de troca ca e e de p´ginas FIFO ´ que uma p´gina de uso intenso. Para isto associa-se um marca de tempo (timestamp) para cada p´gina. criando-se uma lista de a p´ginas por idade. Os algoritmos ca a de substitui¸˜o de p´ginas mais comuns s˜o: 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 p´ginas aleat´ria a o Algoritmo de baixa sobrecarga que seleciona aleatoriamente qual p´gina a dever´ ser substitu´ a ıda. Quanto maior o n´mero de p´ginas existentes. a ca Este mecanismo de substitui¸˜o.

Nesta situa¸˜o e o a ca outra p´gina deve ser escolhida para substitui¸˜o. Para isto ´ necess´rio que cada p´gina possua uma marca de tempo e a a (timestamp) atualizada a cada referˆncia feita ` p´gina. ou seja. assumindo que o passado ´ um bom e indicativo do futuro. verificaca se o bit de referˆncia da p´gina. ou seja. o que significa uma e a a sobrecarga substancial. Tal comportamento eq¨ivale a dizer que as p´ginas no in´ da u a ıcio lista (mais velhas) s˜o reposicionadas no fim da lista (mais novas). simulando uma nova p´gina na mem´ria. seu bit de referˆncia sempre ser´ 1. Se o bit estiver em 1. escolhe-se a p´gina a ıda a mais antiga. MODELOS DE GERENCIAMENTO DE MEMORIA 141 No algoritmo de troca de p´ginas Segunda Chance a sele¸˜o prim´ria da a ca a p´gina a ser substitu´ e semelhante ao FIFO. o algoritmo segunda chance verifica o bit de referˆncia o e mantendo na mem´ria p´ginas em uso atrav´s da renova¸˜o de sua marca o a e ca de tempo. A implementa¸˜o pode ser feita atrav´s de listas ca e contendo uma entrada para cada page frame. Caso contr´rio a p´gina ´ substitu´ o a a e ıda.7. co a O sistema operacional MS Windows 95 utiliza esta estrat´gia de substie tui¸˜o de p´ginas [PET96. e a o uma segunda chance de permanˆncia na mem´ria prim´ria. Com este comportamento. Para superar a deficiˆncia do algoritmo de troca de p´ginas e e a FIFO. Troca de p´ginas LRU a A atua¸˜o do algoritmo de troca de p´ginas LRU (least recently used ou ca a menos usada recentemente) se baseia em identificar a p´gina que n˜o foi a a utilizada pelo maior per´ ıodo de tempo. p. a Este algoritmo n˜o costuma ser usado sem otimiza¸˜es devido ` sobrea co a carga que imp˜e. seu valor ´ trocado por 0 e a referˆncia da lista movida e e e e conforme os ponteiros de um rel´gio. ca a . Se o bit de referˆncia a ca e estivesse em 0 a p´gina seria substitu´ a ıda. Al´m disso. significa que a p´gina e a a foi usada. fazendo com a e e a que permane¸a na mem´ria prim´ria a despeito de sua idade real. sendo o elemento da lista correspondente a uma p´gina utilizada sendo posicionado no final da lista. a A estrat´gia do rel´gio ´ manter uma lista circular. onde se o bit de e o e referˆncia ´ 1. c o a Troca de p´ginas rel´gio a o O algoritmo de troca de p´ginas rel´gio (clock ) ´ uma outra varia¸˜o da a o e ca estrat´gia FIFO. Antes de proceder-se a substitui¸˜o propriamente dita. em la¸os longos ou chamadas com muitos o e c n´ ıveis de profundidade.´ 4. que ´ a substitui¸˜o de uma p´gina de uso intenso em fun¸˜o de sua e ca a ca idade na mem´ria. a pr´xima p´gina a ser usada pode ser exatamente o a uma das menos usadas recentemente. da´ o algoritmo troca sua marca de tempo por uma nova e ajusta o ı bit de referˆncia para zero. colocando o sistema numa situa¸˜o de ca opera¸˜es desnecess´rias devido a page faults. se uma p´gina antiga ´ utilizada. 725].

levando a a a a a substitui¸˜es in´teis. conforme Figura 69) e ca cujos valores combinados definem quatro situa¸˜es ou grupos de p´ginas. ainda ´ poss´ e ıvel que p´ginas pesadamente utilizadas durante uma certa etapa do processaa mento permane¸am desnecessariamente na mem´ria prim´ria em rela¸˜o a c o a ca outras etapas mais curtas cujas p´ginas n˜o ter˜o uso t˜o intenso. co a como relacionado na Tabela 4. co u Troca de p´ginas NRU a As entradas de cada p´gina na tabela de p´ginas possuem geralmente bits a a de referˆncia e modifica¸˜o (bits referenced e modified. GERENCIAMENTO DE MEMORIA Troca de p´ginas LFU a Uma variante do algoritmo LRU ´ a estrat´gia conhecida como LFU (least e e frequently used ou menos freq¨entemente usada) ou ainda NFU (not frequenu tly used ou n˜o usada freq¨entemente). a ca . de forma a se identificar qual p´gina foi ue a a menos intensivamente utilizada.6: Grupos de p´ginas a Bit Situa¸˜o ca Modified 0 N˜o referenciado e n˜o modificado a a 1 N˜o referenciado e modificado a 0 Referenciado e n˜o modificado a 1 Referenciado e modificado Bit Referenced 0 0 1 1 A atua¸˜o do algoritmo de troca de p´ginas NRU (not recently used ou ca a n˜o recentemente usada) ou NUR (not used recently ou n˜o usada recena a temente) se baseia em remover uma p´gina. Neste algoritmo pretende-se calcular a u a freq¨ˆncia de uso das p´ginas. Apesar de melhorar o desempenho do algoritmo LRU.142 ´ CAP´ ITULO 4. do a grupo de menor utiliza¸˜o que contiver p´ginas nesta situa¸˜o. Neste algoca a ca ritmo se d´ preferˆncia a remo¸˜o de uma p´gina modificada sem uso no a e ca a ultimo ciclo do que uma sem modifica¸˜o que tenha sido utilizada.6. Tabela 4. ´ ca Este algoritmo ´ utilizado em v´rios sistemas devido aos seus pontos e a fortes: simplicidade. f´cil implementa¸˜o e performance adequada. aleatoriamente escolhida.

tais como placas de rede ou modems. os dispositivos perif´ricos e em si n˜o s˜o conectados diretamente ` tais barramentos. Machine-Readable S˜o aqueles projetados para interliga¸˜o do computaa ca dor com outros equipamentos. e Communication Destinados a realizar a comunica¸˜o do computador com ca outros dispositivos remotos. Mas diferentemente do que poder´ ıamos pensar.2) define o computador como o conjunto de processador. os perif´ricos s˜o conectados a m´dulos de I/O que por sua vez s˜o e a o a ligados aos barramentos do sistema. tais como unidades de disco. mem´ria e dispositivos de entrada e sa´ intercoo ıda nectados atrav´s v´rios barramentos (buses) especializados: o barramento e a de dados (data bus).1 M´dulos de I/O o A arquitetura de Von Neumann (Figura 1.Cap´ ıtulo 5 Gerenciamento de I/O O acrˆnimo I/O (Input/Output) ou E/S (Entrada/Sa´ o ıda) representa toda a sorte de dispositivos eletrˆnicos. As raz˜es para isto s˜o v´rias: o a a 143 . De certa forma. o mouse ou o monitor de v´ ıdeo. o compuo tador seria uma m´quina in´til caso n˜o existissem meios de realizar-se as a u a opera¸˜es de entrada e sa´ co ıda. mas. 179]: e Human-Readable Dispositivos apropriados para serem utilizados por usua ´rios do computador tais como o teclado. eletromecˆnicos e ´pticos que s˜o integrao a o a dos a um sistema computacional com o prop´sito de realizar a comunica¸˜o o ca do processador e mem´ria com o meio externo. o barramento de endere¸os (address bus) e o barrac mento de controle (control bus). CD-ROM ou fita magn´tica. Os dispositivos de I/O. dispositivos perif´ricos ou apenas perif´ricos poe e dem ser classificados de forma ampla em trˆs categorias [STA96. ao inv´s a a a e disso. 5. p.

• Como visto. contendo in´meros sinais u el´tricos e um protocolo dedicado pr´prio. uma conex˜o orientada ` comandos. linhas de dados para conex˜o o ca a do m´dulo de I/O com o barramento de dados do sistema e um conjunto o particular de linhas para conex˜o com o perif´rico que efetivamente ser´ cona e a trolado pelo m´dulo de I/O. poso e e sibilitando o uso de estruturas padronizadas para liga¸˜o com a mem´ria e ca o processador. sendo impratic´vel implantar no computador uma l´gica que ca a o permitisse a opera¸˜o com todos ou mesmo uma grande parte destes ca dispositivos. portanto. o Figura 5. a . que exige tratamento mais espee o cializado. mais e a a adaptada ` opera¸˜o com um processador e. Um m´dulo de I/O geralmente possui algumas linhas de controle ino ternas que servem para determinar as a¸˜es que devem ser executadas pelo co m´dulo. GERENCIAMENTO DE I/O • Existem in´meros tipos de perif´ricos. J´ a conex˜o com o perif´rico propriamente a a e dito ´ usualmente uma interface de baixo n´ e ıvel. as particularidades de cada tipo de perif´rico ficam e isoladas do sistema principal. dirigida ao trabalho a ca de programa¸˜o de alto n´ ca ıvel. linhas de status que servem para indicar o estado de funcionamento o do m´dulo ou resultado de alguma opera¸˜o. Por essa raz˜o.144 CAP´ ITULO 5. isto ´. Desta forma. Na Figura 5. com diferentes formas de opeu e ra¸˜o. o Desta forma ´ muito mais conveniente implementar-se m´dulos de I/O e o que atuem como conex˜es mais gen´ricas para os diferentes perif´ricos. facilitando o desenvolvimento dos programas que utilizar˜o estes dispositivos.1 temos um representa¸˜o gen´rica o ca e do que pode ser um m´dulo de I/O. os m´dulos de IO s˜o freq¨entemente chamados a o a u de interfaces. a velocidade de opera¸˜o dos dispositivos perif´ricos ´ ca e e muito menor que a da mem´ria ou do processador.1: Estrutura gen´rica de m´dulo de I/O e o A conex˜o com o barramento do processador geralmente tende a ser a uma interface de alto n´ ıvel.

OPERACAO DE MODULOS DE I/O ¸˜ 145 Esta estrutura permite que um unico m´dulo de I/O controle mais de ´ o um perif´rico. comunica¸˜o com ca ca ca perif´rico. Compartilhando este barramento encontramse dispositivos especializados nas em fun¸˜es mais importantes (unidades co de disco e monitor de v´ ıdeo) chamados controladores. comunica¸˜o com o processador.2. 27]. o que distingue estas trˆs formas de opera¸˜o ´ a pare ca e ticipa¸˜o do processador e a utiliza¸˜o do mecanismo de interrup¸˜es.2 Opera¸˜o de M´dulos de I/O ca o Os m´dulos de I/O podem ser operados de trˆs maneiras b´sicas: o e a • I/O Programado. o processador deve o 1 O acrˆnimo IDE significa integrated device eletronics ou dispositivo eletrˆnico inteo o grado. • I/O com Interrup¸˜es e co • I/O com Acesso Direto ` Mem´ria (DMA) a o De forma geral. proa porcionando grande desempenho. u podendo acessar o armazenamento prim´rio de forma independente. usada tipicamente em computadores de grande porte (mainframes).2. ou seja. opera com m´ltiplos barramentos de alta velocidade. . 5. 5. tal como nos controladores de e unidades de disco IDE 1 que podem administrar de uma at´ quatro unidades e de disco deste padr˜o. Esta alternativa estrutural. proporcionando consider´vel ganho de performance e ainda assim utilizando uma arquitetura a mais simples que os canais de I/O [TAN92. armazenamento tempor´rio de dados e detec¸˜o de erros. a Os m´dulos de I/O geralmente executam algumas das seguintes fun¸˜es: o co controle e temporiza¸˜o. e a ca Uma outra estrutura poss´ ıvel para os m´dulos de I/O s˜o os canais o a de I/O (I/O channels). Os canais de I/O s˜o sistemas computacionais de a prop´sito especial destinados ao tratamento de entrada e sa´ de forma o ıda independente do processador do sistema computacional [DEI92. mem´ria e os deca o mais dispositivos do sistema. conca ca co duzindo a resultados bastante distintos. Micro e minicomputadores utilizam geralmente um modelo de barramento interno simples para comunica¸˜o entre processador. p. geralmente do mesmo tipo.1 I/O Programado Com o I/O programado (programmed I/O) os dados s˜o trocados diretaa mente entre o processador e o m´dulo de I/O. p. pois as opera¸˜es de I/O s˜o realizadas co a paralelamente ao processamento.´ 5. 207].

significando um s´rio e e comprometimento da performance geral do sistema. e ca Existem duas formas para a interpreta¸˜o destes endere¸os por parte dos ca c m´dulos de I/O quando existe o compartilhamento de barramentos do siso tema: . Geralmente os comandos do m´dulo de I/O tem equivalˆncia direta com as instru¸˜es do processador. preparandoo o para a opera¸˜o se necess´rio. ent˜o ´ necess´rio que sejam associados endere¸os a cada e a e a c um destes perif´ricos. o e co facilitando sua opera¸˜o integrada. Veja na Figura 5. dado que o processador fica ocupado com a monitora¸˜o da opera¸˜o em andamento (veja Fica ca gura 5. o Portanto ´ responsabilidade do processador verificar o estado do m´dulo e o de I/O em todas as situa¸˜es. GERENCIAMENTO DE I/O executar um programa que verifique o estado do m´dulo de I/O. digamos uma unidade de disco. O m´dulo de I/O se relaciona com o processador atrav´s de comandos. tais como controle (control ).2: Funcionamento do I/O programado Como os comandos enviados ao m´dulo de I/O podem significar uma o opera¸˜o com um dispositivo perif´rico lento.2 um esquema indicando o ca o funcionamento das opera¸˜es de I/O programadas. enviando o comando que deve ser executado ca a e aguardando o resultado do comando para ent˜o efetuar a transferˆncia ena e tre o m´dulo de I/O e algum registrador do processador. co Figura 5.3). de forma a permitir sua opera¸˜o individualizada. inclusive quando aguarda dados. escrita (write) ou leitura (read ). Isto significa co que o processador n˜o pode executar outras tarefas enquanto aguarda a a opera¸˜o do m´dulo de I/O. ca Dado que ´ poss´ para um m´dulo de I/O controlar mais de um dise ıvel o positivo perif´rico. ca a teste (test). ca e ent˜o o processador dever´ permanecer em espera durante toda a opera¸˜o a a ca executada no perif´rico. por mais lento que possa ser. c´digos de controle transformados em sinais enviados ao m´dulo o o que indica qual opera¸˜o dever´ ser realizada. o e ou seja.146 CAP´ ITULO 5.

3: Temporiza¸˜o do I/O programado ca • Mapeada em Mem´ria (memory-mapped ) o Onde o m´dulo de I/O opera dentro do espa¸o de endere¸amento da o c c mem´ria. Os microcomputadores IBM PC compat´ ıveis s˜o um exemplo a desta utiliza¸˜o. para enviar-se dados ao monitor de v´ ca ıdeo padr˜o a do sistema devem ser utilizados os endere¸os de I/O na faixa de 03D0h a c 03DFh. enquanto que o acesso `s placas de som tipo SoundBlaster devem a . No caso. As portas de I/O passam a ser acess´ ıveis apenas por opera¸˜es especiais de I/O. • Mapeada em I/O (I/O mapped ) Tamb´m chamada de I/O isolado (isolated I/O). e Com o I/O isolado temos maior seguran¸a nas opera¸˜es envolvendo c co mem´ria ou I/O e um maior espa¸o de endere¸amento as custas de uma o c c organiza¸˜o ligeiramente mais complexa e um reduzido n´mero de instru¸˜es ca u co dedicadas. OPERACAO DE MODULOS DE I/O ¸˜ 147 Figura 5. Para c tanto o processador deve dispor de uma linha de leitura/escrita e outra de entrada/sa´ ıda.´ 5. Para o funcionamento neste modo o processador deve dispor de uma linha individual de leitura e outra para escrita.2. co Utilizando a forma de I/O mapeado em mem´ria temos uma maior simo plicidade e a disponibilidade de um maior conjunto de instru¸˜es embora co reduzido espa¸o em mem´ria devido a reserva de endere¸os para portas de c o c I/O. onde existe um espa¸o e c de endere¸amento independente para os dispositivos de I/O. usando um conjunto de endere¸os reservados. Os computadores baseados nos processadores Motorola 680x0 utilizam este m´todo. Desta forma o o c processador trata os registradores de status e dados do m´dulo de I/O o como posi¸˜es ordin´rias de mem´ria utilizando opera¸˜es comuns de co a o co leitura e escrita.

de forma que a primeira unidade possa finalizar sua tarefa [DEI92. o m´dulo de I/O sinaliza uma ca o interrup¸˜o para o processador. 2.2. determinando qual dispositivo a originou e ent˜o ca a sinalizando conhecimento (acknowledgment signal ). Quando a opera¸˜o for conclu´ o ca ıda. ou seja. Ao finalizar a opera¸˜o requisitada. O processador envia um comando ao m´dulo de I/O (por exemplo. p. preservando assim o conte´do do contador de programa e demais regisu tradores. Tais endere¸os s˜o armazenados numa regi˜o ca c a a pr´-determinada da mem´ria. pode ser utilizado o mecanismo das interrup¸˜es. A rotina de tratamento da interrup¸˜o ´ executada.4. c CAP´ ITULO 5. um outro processo. uma interrup¸˜o permite que uma unidade ganhe a aten¸˜o imediata ca ca de outra. a o .2 I/O com interrup¸˜es co Para superar o problema da espera do processador por opera¸˜es nos disco positivos perif´ricos. denominada vetor de interrup¸˜es. quando o processador envia um comando para o m´dulo o de I/O. liberando o m´dulo de I/O o e retomando o processamento anterior.148 usar o endere¸o 0220h. ca 4. O processador executa a troca de dados. o m´dulo de I/O interrompe o processador. isto ´. ou seja. em ca paralelo a atividade do processador). Tecnicamente fae co lando.. 5. Assim sendo. 3. os dados ca e solicitados s˜o lidos do m´dulo de I/O para um registrador do procesa o sador e depois transferidos para uma ´rea de mem´ria apropriada. O processador passa a executar outra tarefa.e. o processador verifica a ocorrˆncia e ca e de uma interrup¸˜o. Conforme podemos observar na Figura 5. e o co 7. O processador carrega o endere¸o da rotina de servi¸o no contador de c c programa para poder iniciar a execu¸˜o da rotina de tratamento da ca interrup¸˜o detectada. ou e co seja o I/O atrav´s de interrup¸˜es (interrupt driven I/O). o uma opera¸˜o read ). sem a necessidade de monitorar o m´dulo acionado. 25]. 6. que a realiza de modo independente (i. Ao t´rmino da instru¸˜o corrente. a opera¸˜o de I/O com inca terrup¸˜es ´ a seguinte: co e 1. GERENCIAMENTO DE I/O 5. O processador salva o contexto da tarefa atual na pilha (stack ). o mesmo pode passar executar uma outra tarefa. aciona uma interrup¸˜o o e ca para requisitar o processamento dos dados (a troca de dados com o processador).

o processador resca taura o contexto da tarefa interrompida. Desta forma o ca surgem as seguintes quest˜es: como o processador identificar´ o m´dulo o a o que sinalizou uma interrup¸˜o e como ser˜o tratadas m´ltiplas interrup¸˜es ca a u co simultˆneas? a Para resolver-se esta quest˜es. em seu quantum. mas podendo ser interrompida por uma interrup¸˜o de n´mero menor (< 4). software poll. Usualmente s˜o assia nalados n´meros para as interrup¸˜es. 9. ca Figura 5. a ca u sem ser interrompida por estas. como mostra tamb´m a Figura 5. podem ser empregadas v´rias diferentes o a t´cnicas [STA96. o processador disp˜e de poucas linhas de interrup¸˜o. usualco e mente.´ 5.5. e O maior problema relacionado com o uso das interrup¸˜es ´ que. Mais um momento mais a frente.2. 10. o processo que solicitou a opera¸˜o de I/O ser´ executado com os dados obtidos a sua ca a disposi¸˜o. lendo o conte´do do contador u de programa e demais registradores da pilha. onde as de menor n´mero tem prioriu co u dade sobre as n´mero maior.4: Funcionamento do I/O com interrup¸˜es co A opera¸˜o de dispositivos de I/O utilizando interrup¸˜es permite que ca co o processador permane¸a trabalhando enquanto o m´dulo de I/O realiza c o a opera¸˜o solicitada. melhorando o desempenho do sistema pois duas atica vidades s˜o paralelizadas. ca u . embora os dados da opera¸˜o continuem a ser a ca manipulados pelo processador. Isto significa que uma interrup¸˜o de n´mero 4 u ca u ser´ processada primeiro do que uma interrup¸˜o de n´mero maior (>= 5). OPERACAO DE MODULOS DE I/O ¸˜ 149 8. Finalizada a rotina de tratamento da interrup¸˜o. 194]: m´ltiplas linhas de interrup¸˜o. e u ca hardware poll vetorizado e bus arbitration vetorizada. O processador retorna ao processamento da tarefa no ponto em que foi interrompida. p.

Alguns dos valores s˜o a padronizados enquanto outros s˜o particulares do sistema utilizado como a exemplo.5: Temporiza¸˜o do I/O com interrup¸˜es ca co Como exemplo. apresentamos a Tabela 5.150 CAP´ ITULO 5. Tabela 5.3 I/O com Acesso Direto ` Mem´ria (DMA) a o As t´cnicas de I/O programado e I/O com interrup¸˜es possuem um grande e co inconveniente que ´ a limita¸˜o da velocidade de transferˆncia de dados a e ca e capacidade do processador em movimentar tais dados a partir do m´dulo o de I/O para o armazenamento prim´rio.1: Mapa de interrup¸˜es de um IBM-PC compat´ co ıvel Int 0 1 2 3 4 5 6 7 Dispositivo Cronˆmetro do sistema o Teclado Controlador de interrup¸˜o ca Placa de rede (*) Porta de comunica¸˜o COM1 ca Placa de som (*) Controlador de disco flex´ ıvel Porta de Impressora LPT1 Int 8 9 10 11 12 13 14 15 Dispositivo CMOS/Rel´gio do sistema o Porta de comunica¸˜o COM3 ca Porta de comunica¸˜o COM2 ca Ponte PCI (*) Mouse porta PS/2 (*) Coprocessador num´rico e Controlador IDE/ESDI Controlador IDE/ESDI (*) Op¸˜es n˜o padronizadas co a 5.1 que contˆm o mapeamento e das interrup¸˜es num sistema IBM-PC compat´ co ıvel. Al´m disso o processador fica comprometido n˜o a co e a . GERENCIAMENTO DE I/O Figura 5. pois isso envolve a execu¸˜o repea ca tida de v´rias instru¸˜es.2.

cada a e um utilizando um canal de DMA (DMA channel ). Se um m´dulo de co ca ca o I/O for utilizado para a movimenta¸˜o de uma grande quantidade de dados. OPERACAO DE MODULOS DE I/O ¸˜ 151 apenas com a transferˆncia dos dados. . 2. como ilustrado na Figura 5. 199]: 1. o 4. e ca 5. e 3. no caso de I/O via interrup¸˜o. Este m´todo ´ significativamente mais r´pido do que o I/O programado e e a ou I/O via interrup¸˜es pois utiliza apenas uma unica interrup¸˜o. A t´cnica de DMA prop˜e utilizar uma unica interrup¸˜o para efetuar e o ´ ca a transferˆncia de um bloco de dados diretamente entre o perif´rico e a e e mem´ria prim´ria.6. o O controlador de DMA ´ um dispositivo especializado nesta opera¸˜o.7. conforme a quantidade de dispositivos de I/O e performance pretendida. atrasando-o ligeiramente. o proco ´ ca cessador fica liberada para executar outras tarefas e a transferˆncia dos e dados ocorre em bloco (e n˜o byte a byte) diretamente entre o perif´rico e a a e mem´ria. sem o envolvimento do processador e com isso reduzindo o a o n´mero de opera¸˜es necess´rias e assim acelerando o processo.´ 5. u co a Para tanto. ´ ca e descrita a seguir [STA96.2. torna-se necess´ria a existˆncia de um m´dulo adicional. O processador pode executar a rotina de tratamento da interrup¸˜o ca processando os dados lidos ou produzindo novos dados para serem escritos. a Para solucionar-se este problema pode ser utilizada uma outra t´cnica e denominada I/O atrav´s de acesso direto ` mem´ria ou DMA (direct memory e a o access). Ao final da opera¸˜o o controlador de DMA aciona uma interrup¸˜o ca ca para sinalizar o t´rmino da opera¸˜o. Para acessar a mem´ria o controlador de DMA rouba ciclos do proceso sador para acessar a mem´ria principal. mas com a monitora¸˜o do m´dulo e ca o de I/O. O processador envia comando (leitura ou escrita) para controlador de DMA. p. a e o chamado de controlador de DMA. O processador continua seu trabalho enquanto DMA efetua a transferˆncia com o dispositivo de I/O. ilustrada na Figura 5. cuja opera¸˜o. e ca suportando tipicamente o trabalho com v´rios perif´ricos diferentes. ca ambas as formas comprometer˜o a performance do sistema. Outra grande vantagem da t´cnica de DMA ´ que ela pode ser implemene e tada no hardware de diversas formas diferentes. ou com a sobrecarga imposta pelas opera¸˜es de interrup¸˜o. no caso de I/O programado.

tais como unidades de disco. unidades de fita ou mesmo impressoras r´pidas. o m´dulo de I/O e o perif´rico trocam a o e sinais de controle garantindo a permiss˜o para o envio ou recebimento de a dados (protocolo de conex˜o ou handshaking). embora nomio a a nalmente mais lentas que as conex˜es paralelas.1 Conex˜o de Dados dos I/O a Conforme natureza do perif´rico que ser´ conectado ao sistema e tamb´m e a e as condi¸˜es desta liga¸˜o. s˜o projetadas para opera¸˜o serial ou paralela.3. do ponto de co ca o vista dos dados. a As conex˜es seriais s˜o baratas. as conex˜es dos dispositivos de I/O. sejam de dados ou o e controle. sendo utilizadas para conex˜o com disa a positivos mais velozes. ou seja. relativamente confi´veis. GERENCIAMENTO DE I/O Figura 5. bastante o a confi´veis e de melhor desempenho. devido a interface mais complexa. a o e Numa conex˜o paralela. pois se e comportam como v´rias linhas seriais atuando ao mesmo tempo. uma unica linha de sinal ´ utilizada para o esa ´ e tabelecimento de toda a conex˜o. todos os bits. v´rias linhas de sinal s˜o utilizadas de modo a a a que v´rios bits de dados (bytes ou words tipicamente) sejam transferidos a em paralelo. ou seja.6: Funcionamento do I/O com DMA 5. acelerando as transferˆncias.152 CAP´ ITULO 5. a e 5. a Em ambas os tipos de conex˜o.3 Tipos de dispositivos de E/S Os dispositivos de I/O e suas interfaces podem ser classificados de forma ampla quanto ao tipo de conex˜o e tipo de transferˆncia de dados. protocolo e transferˆncia de dados entre a e o m´dulo de I/O e o perif´rico. a ca Numa conex˜o serial. As conex˜es paralelas. s˜o mais caras. s˜o transferidos um a um entre m´dulo de I/O e perif´rico. sendo usualmente utilizadas o para dispositivos baratos e lentos tais como impressoras e terminais. A transferˆncia dos dados a e . ao mesmo tempo. Tamb´m ´ a e e comum que existam linhas independentes para o tr´fego de sinais de controle.

7: Configura¸˜es de DMA co ´ feita. Nos dispositivos de transferˆncia orientados ` blocos.3. tipo de conex˜o e do protocolo de transferˆncia a e adotado. Os blocos tamb´m possuem um fore mato particular. o formato dos dao e dos recebidos e transmitidos ´ responsabilidade da aplica¸˜o que utiliza o e ca dispositivo. orientados ` caractere. 5. exigindo que a aplica¸˜o conhe¸a tal formato tanto para a ca c constru¸˜o de tais blocos destinados ` transmiss˜o como para sua adequada ca a a recep¸˜o. TIPOS DE DISPOSITIVOS DE E/S 153 Figura 5. sem a necessidade de alguma forma de estrutura¸˜o dos dados ca por parte do m´dulo de I/O e do perif´rico. exigindo o envio de sinais de confirma¸˜o a cada byte ou bloco e ca dependendo do dispositivo. ou seja. a transferˆncia de dados ´ feita a e e byte a byte. Nos primeiros. a troca de dados ´ e a e realizada em blocos de tamanho fixo. usualmente entre 128 e 1024 bytes.3.5.2 Tipos de Transferˆncia 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). cujo tamanho depende do dispositivo. ca .

Uma representa¸˜o o a ca das conex˜es ponto a ponto e multiponto se encontra na Figura 5. tais como modems. Exemplos de conex˜es ponto-a-ponto padronizadas s˜o os protocolos o a RTS/CTS (Request to Send e Clear to Send ) e Xon/Xoff (Transmission .3 Conex˜es ponto a ponto e multiponto com I/Os o A conex˜o mais simples entre um dispositivo perif´rico e seu m´dulo de I/O a e o ´ do tipo . Desta forma. a a Nem todos os dispositivos se ajustam a esta classifica¸˜o. portanto linhas de sinal. 206].3.8: Conex˜es ponto-a-ponto e multiponto o A conex˜o ponto-a-ponto oferece melhor confiabilidade. ou seja. Por outro lado. teclados e portas a seriais s˜o orientados ` caractere [PIT98. Nos sistemas Unix esta distin¸˜o ´ bastante aparente. E geralmente utilizada para a conex˜o o a de dispositivos mais simples. teclado e impressoras. p. um m´dulo de I/O a o deveria dispor de um conjunto de linhas para dispositivo de I/O com o qual pretende se comunicar. GERENCIAMENTO DE I/O Temos portanto que a opera¸˜o de dispositivos orientados ` caractere ca a e ` blocos ´ bastante diferente.8. p. permite a operaa ca ¸˜o simultˆnea de diversos perif´ricos simultaneamente (dependendo apenas a e das capacidades do m´dulo de I/O) embora exigindo um maior n´mero de o u ´ conex˜es e. desde que e dentre estas linhas existam algumas para realizar o endere¸amento ou sele¸˜o c ca do dispositivo com o qual deseja-se realizar a opera¸˜o. principalmente ca e durante os procedimento de instala¸˜o e configura¸˜o do sistema operacioca ca nal. o Figura 5. A conex˜o multica a ponto ´ como um conjunto de barramentos dedicado a comunica¸˜o entre e ca um m´dulo de I/O e v´rios dispositivos semelhantes. tais como ca os temporizadores (timers) do sistema ou monitores de v´ ıdeo de mem´ria o [TAN92. 68]. terminais. as linhas de sinais existentes para a comunica¸˜o entre e ca estas unidades s˜o dedicadas a este fim. ´ poss´ que um m´dulo de I/O compartilhe um cone ıvel o junto de linhas de sinais entre diversos dispositivos perif´ricos. Unidades de disco e fita s˜o dispositivos a e a orientados ` blocos enquanto que impressoras.154 CAP´ ITULO 5. 5.

impressoras. O RTS/CTS e Xon/XOff s˜o considerados protoa colos de baixo n´ ıvel simples.9. mesas digitalizadoras etc. cartucho. etc.4 Dispositivos perif´ricos t´ e ıpicos Os dispositivos perif´ricos tem papel fundamental dentro de um sistema e computacional. onde s˜o exemplos: a o o a • IDE (integrated device eletronics). terminais de v´ ıdeo. 53]. plotters. fita. CD-ROM. tais como unidades de disco. A conex˜o multiponto ´ bastante mais flex´ do que a conex˜o pontoa e ıvel a a-ponto pois permite maior escalabilidade. Veja uma representa¸˜o do funcionamento destes protocolos entre dois ca equipamentos DTE (data terminal equipment) na Figura 5. • SCSI (small computer system interface). utilizando reduzido n´mero total u de linhas. sua implementa¸˜o ´ f´cil. Existem v´rios padr˜es para estas conex˜es. • EIDE (extended IDE ). modems.9: Protocolos RTS/CTS e Xon/Xoff Dado que s˜o protocolos simples.24) a a [BLA87. pois como colocado anteriormente. DISPOSITIVOS PERIFERICOS T´ IPICOS 155 On e Transmisson Off ). o computador seria in´til u . constituindo a ca e a uma alternativa flex´ e de baixo custo para interliga¸˜o de equipamentos ıvel ca tais como multiplexadores.´ 5. • USB (universal serial bus) 5. demultiplexadores. p. Figura 5.4. bastante utilizados em comunica¸˜o de curta ca distˆncia entre computadores e perif´ricos de baixa velocidade. usualmente a e utilizando a interface padr˜o RS-232C (equivalente ` standard CCITT V. Tal conex˜o ´ tipicamente utilizada para dispositivos e a e de armazenamento. mas por outro lado n˜o permite a opera¸˜o simultˆnea dos pea ca a rif´ricos conectados.

Neste caso bra¸os mecˆnicos. Al´m destes. subsistemas de armazenamento secund´rio. tais como controladoras de terminais. s˜o respons´veis pela movimenta¸˜o a a ca r´pida e precisa de cabe¸as por praticamente toda a superf´ a c ıcies dos discos. essenciais em sistemas multiusu´rio. a 5. subsistemas de comunica¸˜o etc. as unidades de disco magn´tico comuns.1 Unidades de disco Atualmente. ou seja. GERENCIAMENTO DE I/O se fosse apenas composto de processador e mem´ria. Existem muitos tipos o de dispositivos perif´ricos.4. faremos alguns coment´rios sobre a e a os terminais de v´ ıdeo. giram em velocidade constante (2400 ou 3600 rpm. por exemplo). dados estes que permanecem gravados mesmo que as unidades de disco permane¸am desligadas por um razo´vel c a per´ ıodo de tempo. a Estes disco. exibem as seguintes caracter´ ısticas: 2 SOHO significa small office or home office. Estas cabe¸as s˜o capazes de gravar ou ler dados magneticamente armazenac a dos na pel´ ıcula que recobre os discos. instaladas em e e computadores destinados ao segmento SOHO2 . a maioria voltados para uso em microcomputadores. montados verticalmente num mesmo eixo. As unidades podem possuir cabe¸as de leitura e grava¸˜o fixas (uma para cada trilha de cada disco) ou c ca cabe¸as m´veis (uma para cada disco). praticamente todos os tipos de computadores disp˜e de unidao des de disco magn´tico. terminais de v´ ıdeo. exise tem dispositivos apropriados para sistemas computacionais de grande porte. dentre os mais comuns podemos citar: e Unidades de Disco R´ ıgido Unidades de Disco Flex´ ıvel Unidades de Fitas Magn´tica e Unidades de CD-R/RW Unidades de DVD-R/RW Mouse Trackball Mousepad Teclados Scanners Mesas digitalizadoras Impressoras Modems Portas de comunica¸˜o serial ca Portas de comunica¸˜o paralela Portas de comunica¸˜o USB ca ca Placas de Rede Monitores de v´ ıdeo Portas de jogos Placas de som Placas de captura de v´ ıdeo etc. isto ´. doc o c a tados de dispositivos de acionamento. Estas unidades s˜o compostas de um ou mais discos e a met´licos de a¸o ou alum´ a c ınio recobertos de uma fina pel´ ıcula magnetiz´vel.156 CAP´ ITULO 5. Al´m destes. As tecnologias envolvidas no desenvolvimento e fabrica¸˜o das unidades ca de disco vem sido aperfei¸oadas desde as primeiras gera¸˜es de computadoc co res e com isto. a ca Dentre todos estes dispositivos daremos destaque as unidades de disco e fita por representarem os perif´ricos mais importantes do ponto de vista de e armazenamento secund´rio. micro e pequenas empresas al´m e de escrit´rios dom´sticos caracterizando um grande segmento de mercado que utiliza mio e .

As unidade de disco. A configura¸˜o multiponto ´ mais comum pois simplifica o ca e projeto das controladoras de disco dada a redu¸˜o do n´mero de conex˜es ca u o necess´rias. que s˜o dispositivos de acesso direto. Stallings traz maiores detalhes sobre as t´cnicas de RAID [STA96. a • Tempos de acesso inferiores a 15 ms e • Baixo custo por MByte. ca Outros sistemas tem duplicadas suas unidades de disco. • Dimens˜es reduzidas (discos de 3. Isto permite grande flexibilidade aos sistemas computacionais a pois a capacidade do armazenamento secund´rio pode ser aumentada pela a simples adi¸˜o de novas unidades de disco. Dispositivos desta natureza tamb´m s˜o chamados de dispositivos de e a acesso aleat´rio. DISPOSITIVOS PERIFERICOS T´ IPICOS 157 • Grandes capacidades de armazenamento. A IBM tradicionalmente denomina suas unidades de disco o de DASD (direct access storage devices) numa clara alus˜o a forma com que a os dados pode serem lidos e gravados. Uma outra estrat´gia de alta confiabilidade e disponibie lidade ´ a utiliza¸˜o de m´ltiplas unidades de disco num arranjo conhecido e ca u como RAID (redundant array of inexpensive disks). . e p. 161]. permitindo a r´pida recupera¸˜o do sistema e a ca em caso de falhas. 26]. isto ´. uma unidade de disco pode possui um ca ou v´rios discos (disks).4. Todo o a a crocomputadores e equipamentos de pequeno porte.´ 5. onde os dados s˜o graa vados de forma distribu´ num grupo de unidades permitindo at´ mesmo ıda e a substitui¸˜o de uma unidade de disco com o equipamento em funcionaca mento. mais conhecido como controo ladora de disco. Segundo Deitel [DEI92. a e Organiza¸˜o dos discos ca Do ponto de vista de organiza¸˜o.8. permitindo que v´rias unidades possam ser a controladas por um mesmo m´dulo de I/O. utilizando t´ce nicas de espelhamento (mirroring). as unidades de disco magn´tico e s˜o talvez o mais importante perif´rico dentro de um sistema computacional. p. quala e quer setor contendo informa¸˜o pode ser acessado atrav´s de uma simples ca e opera¸˜o de pesquisa (seek ) sem necessidade da leitura de setores adicioca nais. As unidades de disco s˜o constru´ a ıdas de forma modular por quest˜es o de economia e modularidade. onde os dados s˜o gravados de forma a idˆntica nas unidade espelhadas. o • Baixo consumo (apropriados para equipamentos port´teis). podemos perceber sua importˆncia para os coma putadores. Com tais caracter´ ısticas. como mostra a Figura 5. `s vezes chamados de pratos (platters).5” ou menores). tipicamente maiores que 1 GBytes (230 ). em arranjos ponto a ponto ou multiponto.

permitindo que: • uma unidade de disco f´ ısica seja vista e tratada como v´rias unidaa . Todo o espa¸o livre existente entre trilhas e setores n˜o c a ´ utilizado por estes dispositivos. cujo tamanho ´ determinado pelo usu´rio [NOR89. portanto a densidade de grava¸˜o ´ maior nas trilhas inca e teriores dos discos.10: Estrutura esquem´tica de uma unidade de disco magn´tico a e Como forma de simplifica¸˜o. tal como fatias de uma pizza. 103]. O processo de divis˜o das superf´ e a ıcies em trilhas e setores ´ o que e se denomina formata¸˜o f´ ca ısica da unidade enquanto que sua adequa¸˜o ca ao sistema de arquivos do sistema operacional ´ chamada de formata¸˜o e ca l´gica. e a p. Entre as trilhas existe um espa¸o livre (inter-track gap) tal como entre os setores c (inter-sector gap). GERENCIAMENTO DE I/O conjunto de discos ´ dividido em circunferˆncias concˆntricas denominadas e e e cilindros (cylinders). que tamb´m ´ dividida rae e dialmente em setores (sectors). todas as trilhas armazenam a mesma quanca tidade de dados.10 temos a estrutura de uma e unidade de disco magn´tico. Para cada superf´ de disco equipada com cabe¸a ıcie c de leitura (head ) se define uma trilha (track ). Uma parti¸˜o ´ um conjunto de co ca e cilindros consecutivos. u Uma outra caracter´ ıstica fundamental das unidades de disco ´ a possie bilidade de serem divididas em parti¸˜es. recebendo uma numera¸˜o de ca referˆncia. Na Figura 5. e Figura 5. Os dados s˜o gravados nos setores de cada trilha podendo ser recuo a perados posteriormente se for conhecido o n´mero do setor desejado. O hardware da unidade de disco disp˜e de meios para o identificar o setor inicial sendo que os demais setores s˜o identificados cona forme o disco e trilha ao quais pertencem.158 CAP´ ITULO 5.

usado em computadores IBM de grande porte. a habilidade de realizar acessos (seeks) aos discos melhora consideravelmente a performance destas unidades. ´ necess´rio mover-se a cabe¸a de leitura e escrita at´ o setor desejado e a c e para o in´ da opera¸˜o. caracter´ ısticas importantes que descrevem uma unidade de disco s˜o: n´mero de discos. cada mini-disco aparentava ser a uma unidade de disco de uso privativa e isolada das demais. Ainda assim. facilitando o trabalho de programa¸˜o. Quando nea cess´rio. A maioria dos detalhes de opera¸˜o das unidades de disco magn´tica s˜o ca e a tratadas pelas controladoras de disco. capacidade de transferˆncia da controladora e MTBF (Medium e Time Between Failures). Atrav´s de uma solicita¸˜o aos operadores do e ca sistema. 217] [STA96. onde os arquivos e programas eram criados e modificados. DISPOSITIVOS PERIFERICOS T´ IPICOS 159 des de disco l´gicas distintas. Tempo de acesso Quando ´ solicitada uma opera¸˜o de leitura ou escrita numa unidade de e ca disco. e ca • v´rios sistemas operacionais diferentes sejam instalados nas diversas a parti¸˜es. cujas interfaces padronizadas s˜o de a f´cil integra¸˜o com a maioria dos sistemas computacionais. p. ampliando significativamente as possibilidades de uso da co m´quina. um procedimento comum para aloca¸˜o de espa¸o em disco para os usu´rios era ca c a a cria¸˜o de mini-discos. n´mero de superf´ a u u ıcies. As controladoras geca ralmente possuem capacidade para tratar v´rios discos simultaneamente. o usu´rio recebia direitos de acesso ` um novo mini-disco. Tal tempo ´ determinado por trˆs fatores [TAN92. pequenas parti¸˜es de uma das unica co dades de disco do sistema. o usu´rio podia pedir uma amplia¸˜o de seu mini-disco ou requerer a a ca um novo mini-disco. facilitando a organiza¸˜o dos dados e o ca instala¸˜o de programas. Para o usu´rio. de espa¸amento fixo ou aerodinˆmicas). n´mero de cilindros.´ 5. Estas interfaces a ca padronizadas (por exemplo IDE. ıcio ca e e p. EIDE e SCSI) trabalham com comandos de alto n´ ıvel. de forma a possuir v´rias mini-parti¸˜es diferentes do a co sistema. pois a transferˆncia de dados de e uma unica unidade geralmente consome toda capacidade de processamento ´ destas controladoras. podendo o usu´rio dar direitos a de acesso de seu mini-disco para outros usu´rios do sistema.4. a No sistema operacional multiusu´rio IBM VM/SP (Virtual Machine/a System Product). 160]: . tempo m´dio c c a e de acesso. na verdade. Resumidamente. movimenta¸˜o das cabe¸as (fixas ou m´veis). criado a a para seu uso particular. tipo de u ca c o cabe¸as (de contato. a embora a opera¸˜o paralela se resuma ao acionamento das unidade de disca cos em busca de setores (overlapped seeks). u n´mero de setores.

sua ca e ca redu¸˜o colabora substancialmente com a performance destes dispositivos ca (esta ´ raz˜o pela qual existem unidades de disco com cabe¸as fixas. o tempo necess´rio para a leitura ou escrita de a um determinado setor. chamado de atraso rotacional (rotational delay) e 3. para a maioria das unidades de disco.160 CAP´ ITULO 5. pois e a c nelas o seek time ´ zero). e Figura 5. o tempo necess´rio para a cabe¸a ser posicionada no in´ a c ıcio do setor desejado. Considerando um sistema multiprogramado onde existam in´meros prou cessos efetuando pedidos de leitura e escrita. e a taccess = tseek + trotationaldelay + ttransf er (5. A soma destes trˆs componentes de tempo ´ o que se denomina tempo de e e acesso (access time). o tempo necess´rio para mover-se at´ o cilindro correto.4. O controle deste atenca dimento ´ feito por algoritmos de escalonamento de disco (disk scheduling e algorithms ou disk arm scheduling algorithms). isto ´. ou seja. Estes componentes ca do tempo de acesso tamb´m est˜o representados na Figura 5. o a e tempo de acesso ` trilha ou tempo de pesquisa da trilha (seek time).1) Dado que. a 2.11. o tempo de movimenta¸˜o entre trilhas (seek time) ´ o maior dentro desta composi¸˜o.1. em fun¸˜o da maior velocidade ca . a leitura ou escrita e e dos dados (transfer time ou transmission time). ou seja .2 Escalonamento de disco Uma das maiores quest˜es relacionadas ao desempenho das unidades de o disco se relaciona a forma com que as cabe¸as de leitura s˜o posicionadas c a em fun¸˜o dos pedidos de leitura e escrita realizados. o tempo de transferˆncia dos dados.11: Componentes do tempo de acesso de uma unidade de disco 5. como indicado na Equa¸˜o 5. GERENCIAMENTO DE I/O 1.

p.4. quanto menor o tempo despendido a na movimenta¸˜o da cabe¸a de leitura melhor o desempenho da unidade. do ca cilindro mais externo para o mais interno) para depois realizar uma mudan¸a de dire¸˜o (do cilindro mais interno para o mais externo) c ca . oferecer baixo tempo de resposta e apresentar razo´vel previsibilidade (comportamento previs´ a ıvel nas diversas situa¸˜es co de carga). tamb´m trabalha escolhendo os pedidos e que exigem menor movimenta¸˜o. a O SCAN. tal como o SSTF. ca c Esta ´ a justificativa da preocupa¸˜o com o escalonamento das tarefas de e ca movimenta¸˜o das cabe¸as de leitura [DEI92. Pedidos destinados aos setores extremos geralmente recebem baixa qualidade de servi¸o. • SSTF (shortest seek time first) A fila de pedidos ´ executada de forma que sejam atendidos primeiro e os pedidos que exigem a menor movimenta¸˜o poss´ ca ıvel entre trilhas. onde a alguns preocupam-se em otimizar a movimenta¸˜o entre trilhas e outros em ca aproveitar o percurso rotacional das cabe¸as de leitura: c • FCFS (first come first served ) Neste algoritmo. ca c Um algoritmo para escalonamento do disco deve ent˜o proporcionar boa a produtividade (throughput). p. a unidade co a dever´ efetuar uma s´rie de movimenta¸˜es da cabe¸a de leitura para realia e co c zar o trabalho necess´rio. al´m disso proporcie ona grande variˆncia em termos de desempenho conforme a seq¨ˆncia a ue ´ um algoritmos orientado ` cilindros [DEI92. sem qualquer reordena¸˜o ou otimiza¸˜o de movimenta¸˜o. 217]. ´ razo´vel considerar que os pedidos e a dever˜o esperar para poderem ser atendidos. portanto os processos ficar˜o a a bloqueados at´ suas respectivas solicita¸˜es serem completas. assim sendo. a co menor o tempo de espera dos processos. embora razo´vel para situa¸˜es de co a co baixo carregamento [DEI92. E a [TAN92. p.e. 218].´ 5. p. qualquer que seja o sentido da movimenta¸˜o (setores internos para ca centro ou setores externos para bordas). podendo c ocorrer um adiamento indefinido (starvation). • SCAN ´ E uma varia¸˜o do SSTF. mas apenas numa dire¸˜o preferenca ca cial. DISPOSITIVOS PERIFERICOS T´ IPICOS 161 de processamento em rela¸˜o a capacidade de realizar a leitura e escrita dos ca dados por parte da unidade de disco. 363]. ou seja. ele primeiro realiza os pedidos numa dire¸˜o (p. e co Quanto mais r´pido a unidade de disco puder completar as solicita¸˜es. 366] de pedidos. a fila de pedidos ´ executada na ordem em que aparee cem. 366] [TAN92. que preca tendia corrigir sua variˆncia e a possibilidade de adiamento indefinido. desenvolvida por Denning em 1967. Existem v´rios algoritmos para escalonamento do disco. beneficiando o sistema. Esta ca ca ca forma de escalonamento pode resultar em longos tempos de espera em situa¸˜es de alta carga de trabalho. Como as opera¸˜es solicitadas provavelmente utilizar˜o setores distintos. p..

p. a ıvel Por isso tamb´m ´ conhecido como algoritmo do elevador (elevator ale e gorithm). . exceto pelo fato que apenas ca e os pedidos pendentes s˜o atendidos ` cada varredura. o bra¸o ´ deslocado para o pedido que necessita o setor mais ca c e externo sendo reiniciada a varredura. Para uma carga de trabalho m´dia este algoritmo proporciona os melhores resultados. Proporciona boa performance e bom tempo de resposta m´dio com pequena variˆncia. na ordem em que exigem menor movimenta¸˜o. 365]. Ao finalizar os pedidos nesta dire¸˜o. e e a 366]. E uma estrat´gia para otimiza¸˜o do e ca atraso rotacional. p. ou seja. inclusive para alta carga de trabalho [DEI92. embora o C-SCAN se prove melhor [DEI92. p. torna-se o melhor algoritmo. p. sendo os pedidos reordenados durante este percurso. deve ser considerada a otico miza¸˜o rotacional. mas cada cilindro tem ca e sua trilha percorrida por completo. Se tamb´m e e otimizado para minimizar o atraso rotacional. Os pedidos que a a chegam durante uma varredura s˜o agrupados e ordenados para serem a atendidos no retorno da varredura.162 CAP´ ITULO 5. e ca Sua movimenta¸˜o ´ semelhante ao SCAN. 369]. 368]. Embora os setores externos continuem a ser menos visitados que os setores intermedi´rios. p. Tamb´m ´ um algoritmos orientado ` cilindros [DEI92. Para pedidos em setores sobrepostos apenas um ´ e ´ atendido na varredura corrente. Novos pedidos que v˜o surgindo durante a vara redura s˜o atendidos se poss´ durante a varredura em andamento. seguindo uma dire¸˜o pr´-definida: do ca ca e cilindro mais externo para o mais interno. Para baixa c e carga de trabalho este ´ melhor algoritmo de escalonamento para disco e conhecido. Em situa¸˜es de grande carga de trabalho. Uma estrat´gia semelhante e ao SSTF para a otimiza¸˜o rotacional ´ o algoritmo SLTF (shortest latency ca e time first) que procura atender os pedidos com menor atraso rotacional dentro da trilha corrente [DEI92. • Eschenbach A movimenta¸˜o ´ semelhante ao C-SCAN. GERENCIAMENTO DE I/O completando as tarefas. n˜o existe a possibilidade de um adiaa a mento indefinido e a qualidade do servi¸o ´ mais regular. n˜o existindo e a a a possibilidade de adiamento infinito para quaisquer pedidos [DEI92. 370]. • N-SCAN O algoritmo N-SCAN (n step SCAN) ´ uma outra varia¸˜o do SCAN. O C-SCAN atende os pedidos. dado que aumentam as possibilidades de dois ou ca mais pedidos se referenciarem a mesma trilha. • C-SCAN O algoritmo C-SCAN (circular SCAN) ´ uma varia¸˜o do algoritmo e ca SCAN que elimina a quest˜o de atendimento diferenciado para os cia lindros extremos.

mas a id´ia central u e ´ sempre a mesma. Na Tabela 5. ou seja: o P ercursototal = P ercursoi (5.´ 5. Na trilha 0 do lado 1 temos os trˆs ultimos setores destinados ` e ´ a organiza¸˜o do diret´rio e seis setores destinados aos dados. Tabela 5. Nele pode ser colocado um pequeno programa destinado a iniciar o processo de carregamento do sistema operacional.474.12 uma compara¸˜o destes algoritmos de escalonamento ca de disco supondo um disco de 40 cilindros. ca exceto pelo fato de possu´ ırem cabe¸as de leitura/escrita de contato e que c utilizam o algoritmo de escalonamento de disco FCFS.2 temos a organiza¸˜o de um disco flex´ de 3. quatro setores destinados ` tabela de aloca¸˜o de arquivos (FAT propriamente dita. Cada sistema operacional possui um formato diferente para o conte´do do registro de boot.4. como a ca veremos na se¸˜o ???) e quatro setores para a organiza¸˜o do diret´rio do ca ca o disquete. cujos pedidos indicam cilindros: 2.2) Ent˜o o percurso total realizado para atendimento de n pedidos ´ a a e somat´ria dos percursos individuais. 9 e 12. Nas demais ca o trilhas do disquete teremos nove setores de dados cada. possibilitando que este disquete possa dar a partida do sistema.2: Organiza¸˜o de um floppy de 1.3) As unidades de discos flex´ ıveis (floppies comuns e ZIP disks) tamb´m e funcionam segundo os mesmos princ´ ıpios e possuem a mesma organiza¸˜o. e .5” com qu´drupla densidade [NOR89. 34. u Os gr´ficos representam a movimenta¸˜o da cabe¸a de leitura segundo um a ca c algoritmo espec´ ıfico para atender a s´rie dada de pedidos. 16.560 Na trilha 0 do lado 0 de um disquete de qu´drupla densidade temos a 9 setores ocupados respectivamente por: um setor de boot. e Se considerarmos que entre duas trilhas distintas existe um percurso que pode ser calculado por: P ercurso = |trilhaf inal − trilhainicial | (5. O registro de boot sempre est´ localizado na trilha 0 e setor 0 de disa quetes. 100]. ca ıvel a p. com a cabe¸a inicialmente sobre c o cilindro n´mero 11. 36.44 Mbytes ca N´mero de Superf´ u ıcies 2 N´mero de Cilindros u 80 N´mero de Trilhas por Cilindro u 2 N´mero de Setores por Trilha u 9 Tamanho do Setor (bytes) 512 Capacidade Total (bytes) 1. DISPOSITIVOS PERIFERICOS T´ IPICOS 163 Veja na Figura 5.

164 CAP´ ITULO 5. GERENCIAMENTO DE I/O Figura 5.12: Compara¸˜o dos algoritmos de escalonamento de disco ca .

Se o registro desejado estiver localizado numa posi¸˜o anterior a posi¸˜o corrente. 174]. Veja na Figura 5. mas valores usuais s˜o 9. A cabe¸a leitura. 18 ou 36 trilhas. dependendo do tipo de unidade de fita u e a e da fita magn´tica que utiliza. pois para efetuar-se a leitura de um determinado regisu tro f´ ısico. paralelamente ao sentido do comprimento da fita.4. juntamente com alguns bits extras utilizados para o controle de paridade [STA96. s˜o movimentadas tal como gravadores de ´udio de fita em rolo ou a a cassete.4. DISPOSITIVOS PERIFERICOS T´ IPICOS 165 5.13 a representa¸˜o esquem´tica da organiza¸˜o de ca a ca uma fita magn´tica contendo 9 trilhas. acondicionadas em rolos ou cartuchos de v´rios tipos e tamaa nhos. e a para a grava¸˜o paralela de um byte. embora tipicamente com maior velocidade. ´ identificado ca e como um registro f´ ısico (physical record ). Utiliza os mesmos princ´ ıpios f´ ısicos para o armazenamento perene de dados: uma fina fita pl´stica (de Mylar ou maa terial semelhante) ´ recoberta com algum ´xido met´lico cujas propriedae o a des magn´ticas possibilitam que atrav´s de uma cabe¸a leitura se realize a e e c grava¸˜o ou leitura de dados na fita. 128. p. 256 ou 512 bytes. que s˜o dispositivos de acesso dia reto. separado do registro anterior e posterior por espa¸os denominados espa¸os inter-registro (inter-record c c gaps). Cada bloco de informa¸˜o gravada.´ 5. todos os registros existentes entre a posi¸˜o inicial da cabe¸a de ca c leitura e o registro desejado devem ser lidos. grava simultaneamente v´rios a a bits de informa¸˜o na fita. word ou double word por vez respecca tivamente. O ca n´mero de trilhas existente ´ vari´vel. que c trabalha em contato direto com a fita pl´stica. a . ca de forma que nesta sejam identificadas trilhas de grava¸˜o (tracks). e Figura 5. ca As fitas.3 Unidades de fita As unidades de fita magn´tica s˜o outro importante dispositivo de I/O tendo e a sido os primeiros perif´ricos utilizados para o armazenamento secund´rio e a nos sistemas computacionais. Claramente temos que as unidades de fita s˜o dispositivos mais lentos que as unidades de disco.13: Formato esquem´tico de fita magn´tica a e Diferentemente das unidade de disco. ent˜o a fita ou cartucho ca ca a dever˜o ser rebobinados at´ o seu in´ ou posi¸˜o anterior adequada para a e ıcio ca que a pesquisa pelo registro desejado possa ser iniciada. as unidades de fita magn´tica s˜o conhecidas como dispositivos de e a acesso seq¨ encial.

4) Devido ao fato das unidades de fita magn´tica terem cabe¸as de leitura e c de contato. que para lerem os dados s˜o mantidas em contato com e a a fita.14: Componentes do tempo de acesso de uma unidade de fita Nos discos flex´ ıveis ocorre o mesmo que nas unidades de fita: a movimenta¸˜o s´ ocorre durante as opera¸˜es de leitura e escrita. representados na e e e Figura 5. Da´ a existˆncia do atraso de movimenta¸˜o que corresponde ao ı e ca tempo necess´rio para o acionamento do mecanismo de movimenta¸˜o da a ca fita. o tempo necess´rio para mover-se at´ o registro f´ a e ısico. GERENCIAMENTO DE I/O O tempo de acesso (access time) para uma unidade de fita magn´tica e tamb´m ´ dado pela soma de trˆs componentes de tempo. a movimenta¸˜o da fita s´ ocorre durante as opera¸˜es de leitura ou ca o co escrita minimizando tanto o desgaste da fita magn´tica como da cabe¸a de e c leitura. isto ´. o tempo necess´rio para a cabe¸a de leitura come¸ar a ser movimena c c tada. o tempo de acesso pode ser determinado como indicado na Equa¸˜o 5. sendo que depois da opera¸˜o a e e ca .4. o tempo de acesso ao registro (seek time) e 3. Veja na Figura 5. Figura 5. chamado de tempo de atraso de movimenta¸˜o (move deca lay). pois a cabe¸a ca o co c de leitura tamb´m ´ do tipo de contato. ca taccess = tmovedelay + tseek + ttransf er (5. o tempo decorrido nas e e opera¸˜es de leitura ou escrita dos dados no registro (transfer time ou co transmission time). isto ´. ou seja .166 CAP´ ITULO 5. 2. o tempo de transferˆncia dos dados. Sendo assim.14 uma representa¸˜o esquem´tica dos componentes ca a do tempo de acesso de uma unidade de fita.14: 1.

folha de pagamento. sendo prea feridos os formatos tipo cartucho. devido a uma empresa de mesmo nome que a tornou-se conhecida pelo seus equipamentos. rela¸˜o ca de recebimento para concession´rias de servi¸os p´blicos etc). geralmente pr´ximas e o ao computador central. onde um unico caractere ´ transmitido por vez. Figura 5. as unidades de fita magn´tica e ainda s˜o largamente utilizadas. as aplica¸˜es mais comuns das fitas magn´ticas s˜o a reco e a aliza¸˜o de c´pias de seguran¸a (backups) e o transporte manual de grandes ca o c quantidades de dados (por exemplo. pois a m´ a ıdia utilizada ´ remov´ e barata. ca semelhante a sugerida por Tanenbaum [TAN92. IR. Nos discos r´ ca e ıgidos. a Apesar da velocidade bastante mais baixa. RAIS. Devido ` a velocidade e custo. a c u 5. exceto nos caca sos de economia de energia. Existem v´rios tipos diferentes a de terminais os quais empregam diferentes tecnologias e estrat´gias para e seu funcionamento. podem existir procedimentos especiais para que unidades de fita magn´tica. de qualquer porte. Na Figura 5. como ilustrado na Figura 5. que oferecem servi¸os c interativos para v´rios usu´rios simultˆneos. configurando um dispositivo de armazenamento secund´rio compacto e de baix´ a ıssimo custo por MByte. DISPOSITIVOS PERIFERICOS T´ IPICOS 167 movimenta¸˜o ´ interrompida.15: Tipos de terminais Os terminais baseados na interface RS-232 utilizam um protocolo de comunica¸˜o serial para a transmiss˜o de dados entre o computador e o ca a terminal.16. Os terminais tamb´m ca a e s˜o denominados TTY (teletype). a Em sistemas computacionais de grande porte. Esta forma . onde o mecanismo de acionamento ´ desativado e para redu¸˜o do consumo.4 Terminais Todos os sistemas computacionais. p. t´ ca ıpico em computadores port´teis ou pessoais.15 temos uma classifica¸˜o dos terminais.4. cujas capacidades de grava¸˜o podem ser ca superiores a 1 GByte por cartucho. a taxa de 1200 ´ e a 9600 bps (bits por segundo). o mecanismo de movimenta¸˜o dos discos permanece ativo durante todo o tempo. utilizam terminais para realizar a a a a comunica¸˜o entre os usu´rios e os computadores. 227].´ 5.4. possam ser utilizadas pelos usu´rios do sistema. e ıvel Atualmente os formatos de fita em rolo est˜o caindo em desuso.

O funcionamento desta conex˜o pode ser descrito a da seguinte maneira: 1. Apenas a transmiss˜o de um unico caractere a 9600 bps a ´ toma aproximadamente 1 ms. GERENCIAMENTO DE I/O de comunica¸˜o se tornou t˜o comum que v´rios fabricantes desenvolveram ca a a circuitos integrados (chips) especializados nesta tarefa.16: Protocolo de comunica¸˜o serial ca Os terminais que utilizam este protocolo s˜o compostos por um teclado. com o passar do anos.17. ca 3. a um monitor de v´ ıdeo e alguns circuitos eletrˆnicos que implementam a l´gica o o de controle necess´ria ao seu funcionamento. 4. Figura 5. Tal forma de conex˜o. imprimem em papel todas as mensagens recebidas do computador. Os terminais de c´pia impressa (hardcopy). tomaria 2 segundos para ser preenchida completamente. Quando o terminal deseja enviar um caractere ao computador (para estabelecer uma conex˜o com o sistema ou para enviar dados e comana dos do usu´rio). portanto uma tela de 25 linhas por 80 colunas (2000 caracteres). enviando uma resposta quando devido. operando da mesma forma ca que os terminais hardcopy. gerando uma interrup¸˜o para o procesca samento do caractere no terminal. entre os quais citamos o popular Intel 8255. processando-o. a 2. Quando a UART efetua a transmiss˜o do caractere. chamados de UARTs (Universal Asynchronous Receiver Transmitter). A UART do computador recebe o caractere. come¸ou a a c se tornar um inconveniente dado o n´mero crescente de terminais de um u sistema computacional. percursores dos terminais de o v´ ıdeo. sendo portanto equipamentos a de custo relativamente baixo. transe miss˜o e recep¸˜o). Atrav´s de seu teclado as mensagens s˜o enviadas do terminal para o come a putador.168 CAP´ ITULO 5. como ilustrado o na Figura 5. ele o envia para sua UART. . gera uma intera rup¸˜o indicando que pode transmitir outro caractere. A UART recebe o caractere. A UART interna do terminal ´ conectada e a ` interface RS-232 do computador via um cabo de trˆs fios (terra. A interface RS-232 do computador deve possuir tantas a ca conex˜es e UARTs quantos terminais a serem conectados. Os terminais CRT (catodic ray tube) s˜o os terminais que utilizam a monitores de v´ ıdeo para exibi¸˜o das mensagens.

o padr˜o ISO HDLC (high-level data link control ) ou o SDLC (syncha ronous data link control ).17: Conex˜o computador e terminais RS-232 a Os terminais inteligentes s˜o pequenos computadores especializados na a transmiss˜o e recep¸˜o de mensagens.´ 5. u co O processador do terminal. sendo bastante conhecidas em diversos segmentos corporativos. Os terminais de v´ ıdeo IBM 3178 e 3278 s˜o seus integrantes os mais conhecidos. co A fam´ IBM 3270 ´ um conjunto de terminais. tendo recebido as informa¸˜es do computador co central atrav´s de sua conex˜o dedicada. Nesta situa¸˜o. que ca concentravam tal comunica¸˜o para um computador central. possibilitando ca in´meras configura¸˜es. Outra categoria dos terminais s˜o aqueles que possuem mem´ria maa o peada. podendo se comunicar com o computador central atrav´s de outras formas mais eficientes tais como e os protocolos BSC (binary synchronous control ) introduzido pela IBM em 1961.18. coneco tados atrav´s de cabos coaxiais. Dada sua capacidade interna de proco cessamento. possuindo in´meras fun¸˜es de cona ca u co figura¸˜o. possibilitando sua configura¸˜o para o trabalho com diferentes ca ca computadores em situa¸˜es diversas. coloca as informa¸˜es que devem ser e a co exibidas na mem´ria de v´ o ıdeo enquanto o controlador de v´ ıdeo gera o sinal correspondente ao conte´do da mem´ria de v´ u o ıdeo. cuja interface com o computador principal se d´ atrav´s de e a e sua mem´ria de v´ o ıdeo (v´ ıdeo RAM) e um controlador especial denominado controlador de v´ ıdeo (v´ ıdeo controller). comparando-os e mostrando suas aplica¸˜es. com a alguns milh˜es de unidades vendidas [BLA87. impressoras e controlaılia e doras de terminais tipicamente utilizados em sistemas de grande porte IBM. como ilustrado na Figura 5. produzindo a imagem . p. 83]. vers˜o IBM do protocolo HDLC. DISPOSITIVOS PERIFERICOS T´ IPICOS 169 Figura 5. podem armazenar seq¨ˆncias de dados ou realizar tarefas mais ue complexas. o terminal deve ca possuir capacidade interna de processamento. isto ´. Black [BLA87] a traz detalhes destes protocolos. Estes terminais.4. utilizam um protocolo propriet´rio da IBM e a para comunica¸˜o com controladoras de terminais (IBM 3172 e 3174).

O princ´ ´ o mesmo para ıpio e os terminais orientados ` caractere. ue Os microcomputadores IBM PC e compat´ ıveis utilizam esta estrat´gia e para exibi¸˜o de seus v´ ca ıdeos. ´ u ıcones. liberando o processador de tal tarefa. GERENCIAMENTO DE I/O Figura 5. nesta configura¸˜o tamb´m tornaa ca ca e se completamente independente.18: Fam´ IBM 3270 ılia adequada. J´ os terminais ca a orientados ` mphbit permitem a exibi¸˜o de gr´ficos e imagens. cuja resolu¸˜o (quanca tidade total de pixels que podem ser apresentados numa unica imagem) de´ pendente da quantidade de mem´ria de v´ o ıdeo. restringindo as suas possibilidades de utiliza¸˜o. podendo possuir controladores de v´ ıdeo bastante sofisticados.170 CAP´ ITULO 5. caracteres a ca a usando m´ltiplos fontes. ou orientados ` bit. das capacidades do monitor de v´ ıdeo e do meio de transmiss˜o. destinados a reprodu¸˜o de imagens em alta velocidade ca (v´ ıdeo) ou renderiza¸˜o em 2D e 3D. interrompendo o processador do terminal para enviar seq¨ˆncias de caracteres. sistemas de janelas. As telas s˜o reproduzidas em ciclos de 20 a a ms (terminais monocrom´ticos) e 17 ms (terminais coloridos) permitindo a a r´pida exibi¸˜o de caracteres. O teclado. Nos terminais orientados ` caractere apenas telas constitu´ a ıdas de caracteres e uma limitada quantidade de s´ ımbolos gr´ficos podem ser compostas a e exibidas. onde ca a a mem´ria de v´ o ıdeo ´ preenchida com os pontos (pixels) que devem ser e renderizados. onde a mem´ria de v´ a o ıdeo ´ preenchida e com os caracteres e atributos para sua exibi¸˜o. ca .

as quais n˜o ser˜o utilizadas co a a totalmente por um certo processo. tal como o a cruzamento de dados informados em declara¸˜es de imposto de renda. consultas a uma lista telefˆnica. 145]: co e o • Existem in´meros problemas pr´ticos que requerem o armazenamento u a de grandes quantidades de informa¸˜es. as ca o e informa¸˜es de tarifa¸˜o de uma companhia telefˆnica etc. • Certos conjuntos de dados n˜o podem pertencer a um unico processo. tal como unidaa des de disco. por exemplo. os dispositivos de armazenamento secund´rio s˜o ca a a utilizados para armazenar dados de forma perene. sem considerarmos as quest˜es relacionadas e o a integridade e seguran¸a dos dados. O armazenamento perene de informa¸˜es ´ desejado pelas seguintes raz˜es [TAN92. Todas estas raz˜es justificam a necessidade do armazenamento de ino forma¸˜es em meios distintos da mem´ria prim´ria. c Para que o armazenamento possa ser realizado de maneira tal a atender as raz˜es enunciadas. cada um utilizando e produzindo diferentes conjuntos de dados. SISTEMAS DE ARQUIVOS 171 5. a solu¸˜o de a ca problemas diversos etc. dada as quest˜es de pero sistˆncia e compartilhamento. co ca o • Os sistemas computacionais est˜o sujeitos ` falhas ou situa¸˜es de a a co contingˆncia. ´ necess´ria uma adequada organiza¸˜o destes dados o e a ca nos dispositivos destinados ao armazenamento secund´rio. CD-ROMs etc. E inadmiss´ ıvel que tais informa¸˜es sejam reco introduzidas no computador a cada uso. que n˜o podem ca a e a ser descartados pois ser˜o utilizados por outros processos. e de forma independente dos processos. onde ´ importante que seus dados estejam preservados e e (duplicados) de forma segura. torna-se . atualiza¸˜o de uma o ca e ca ´ ficha de estoque etc. o armazenamento e ´ feito de forma confi´vel e ´ e a ıntegra. isto ´.3. • Existem uma outra infinidade de problemas pr´ticos que produzem a dados durante sua execu¸˜o. movimenta¸˜o de uma conta corrente. e Dado que podem existir muitos processos num sistema computacional. serem dispostas no espa¸o de endere¸amento de um simples e c c programa. recupera¸˜o de um o ca ca hist´rico escolar. unidades de fita magn´tica. que tem capacidade co o a limitada.5 Sistemas de arquivos Como vimos na se¸˜o 4.5. co o resultado de simula¸˜es f´ co ısicas/qu´ ımicas/matem´ticas. a ´ isto ´.5. devendo ser compartilhada por muitos outros processos. permitindo sua recupera¸˜o e uso em ca um outro sistema computacional. tal como os dados de lota¸˜o de avi˜es de uma companhia a´rea. altera¸˜o de um cadastro m´dico. p. raz˜o de sua existˆncia. mesmo quando o sistema computacional permanece desligado por longos per´ ıodos de tempo.

bem com rea alizar sua duplica¸˜o ou a transferˆncia de dados entre arquivos. co ca • seja poss´ a ado¸˜o ou implementa¸˜o de procedimentos de prote¸˜o ıvel ca ca ca e seguran¸a. 391]. compartilhamento e seguran¸a. Um sistema de arquivos geralmente cont´m [DEI92. e c • que a interface seja amig´vel e consistente. garanco e o tindo independˆncia do dispositivo utilizado.3. referˆncia. ca e • seja poss´ o compartilhamento de arquivos atrav´s de mecanismos ıvel e controlados e bem definidos. A seguir. alguns exemplos de sistemas operacionais a e dos sistemas de arquivos suportados. GERENCIAMENTO DE I/O necess´rio distinguir tais conjuntos de dados. . admitindo a realiza¸˜o de a ca opera¸˜es apenas atrav´s dos nomes simb´licos dos arquivos. de forma que estes e possam ser utilizados pelos processos. e Com isto percebemos que os sistemas de arquivos preocupam-se com a organiza¸˜o e controle do armazenamento secund´rio de um sistema compuca a tacional.172 CAP´ ITULO 5. • as opera¸˜es de backup e sua restaura¸˜o sejam suportadas. • Gerenciamento de arquivos: conjunto de mecanismos de armazenamento. modificar e eliminar arquivos. 389]: e • M´todos de acesso: forma com que os dados s˜o armazenados nos e a arquivos. podem operar utilizando die ferentes formas de administra¸˜o dos dispositivos de armazenamento seca cund´rio. Como tudo mais num sistema computacional. Os arquivos (files) s˜o as a a unidades que contˆm estes conjuntos distintos de dados. isto ´. o sistema operacional controla as opera¸˜es sobre os arquivos. Ainda segundo Deitel [DEI92. p. p. Tamb´m ´ necess´rio destacar que um sistema operacional pode e e a suportar diversos sistemas de arquivos. organizando seu armazenamento no que co chamamos de sistema de arquivos (file system). e c • Mecanismos de integridade: que asseguram que os dados de um arquivo permanecem ´ ıntegros. que: • os usu´rios possam criar. funcionalmente falando. um sistema de arquivos deve permitir. na Tabela 5.

5. dependendo-se de ue a aplica¸˜es apropriadas para sua correta utiliza¸˜o [TAN95. Os arquivos. o a cart˜es. fitas. 246]. a ca enquanto Guimar˜es explica: a Um arquivo ´ um conjunto de informa¸˜es relacionadas entre e co si e residentes no sistema de mem´ria secund´ria: discos.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 (file allocation table) 12 e 16 bits FAT (file allocation table) 12 e 16 bits VFAT (virtual file allocation table) 32 bits FAT (file allocation table) 12 e 16 bits VFAT (virtual file allocation table) 32 bits NTFS (new technology file system) FAT (file allocation table) 12 e 16 bits HPFS (high performance file system) FAT (file allocation table) 12 e 16 bits VFAT (virtual file allocation table) 32 bits Minix (Mini Unix) Extended File System Ext2 (second extended file system . atributos (attribuca tes). evitando que sejam conhecidos detalhes do funcionamento com que estas opera¸˜es tratam e armazenam a informa¸˜o co ca [TAN92.5. p. capacidades (capacities). podem possuir uma identifica¸˜o (file naming). uma forma de distin¸˜o simples dos arquivos.5. de forma simplificada. Arquivos s˜o um poderoso e a ca a mecanismo de abstra¸˜o que permite ao usu´rio (e seus programas) utilizar ca a dados armazenados dentro do sistema computacional. Tanembaum afirma que.Nativo) Sun Solaris UFS 5. 211]. SISTEMAS DE ARQUIVOS 173 Tabela 5. etc [GUI86. que permita e ca . ou seja.1 Arquivos Existem v´rias defini¸˜es poss´ a co ıveis para o conceito de arquivos. mas o que ´ mais importante co e ´ o conceito inerente ` utiliza¸˜o dos arquivos. p. Deitel co ca coloca que arquivos s˜o uma cole¸˜o identificada de dados [DEI92. isto ´. o Outras defini¸˜es poderiam ser citadas. atrav´s da e manipula¸˜o dos arquivos s˜o realizadas as opera¸˜es de escrita e leitura de ca a co dados. ca Para que os dados possam ser corretamente identificados e utilizados. 146]. dependendo do sistema operacional e do sistema de arquivos em uso. o sistema de arquivos deve prover um mecanismo de identifica¸˜o dos arca quivos. de forma transparente. p. lista de controle de acesso (control access list) e uma organiza¸˜o ou tipo. p. 389]. os arquivos podem ser entendidos como seq¨ˆncias de bytes n˜o interpretadas pelo sistema.

As listas de controle de acesso s˜o rela¸˜es de usu´rio que podem a co a realizar opera¸˜es espec´ co ıficas sobre um dado arquivo. pode se tornar ´ um pesadelo em certas situa¸˜es quando n˜o se percebe a sutileza de um co a unico caractere com o caixa errado. GERENCIAMENTO DE I/O sua adequada opera¸˜o. data da ultima altera¸˜o (last modification date). 98. tipo etc. podem surgir denomina¸˜es tais o u o co como names. tamanho m´ximo.dat. dado possuir um sistema de arquivos com denomina¸˜o sens´ ca ıvel ao caixa.c. flags diver´ ca sas (de sistema. AB. a As capacidades s˜o informa¸˜es que autorizam certos usu´rios ou proa co a cessos a realizarem certas opera¸˜es sobre os arquivos. Diferentes sistemas operacionais usam formas de denomina¸˜o distintas ca para a identifica¸˜o de seus arquivos. Nos sistemas que n˜o utilizam ex´ a tens˜es ou admitem m´ltiplas extens˜es. indicando que diferentes a¸˜es co foram tomadas com os arquivos. data do ultimo acesso (last ca ´ access date). tal como execu¸˜o ou ca . de leitura etc) permiss˜es de acesso.4. ca Tabela 5. a simplificando muito tais tarefas. ca o tamanho do registro.4: Denomina¸˜o de arquivos em v´rios sistemas ca a Sistema operacional MS-DOS (FAT12 e FAT16) MS-Windows 95. Desta forma muitas das opera¸˜es que podem co ser realizadas sobre os arquivos s˜o especificadas em termos de seus nomes. Tal caracter´ ıstica. de arquivo. XP (VFAT) MS-Windows NT (NTFS) IBM OS/2 (HPFS) UNIX (gen´rico) e Composi¸˜o ca do nome 1-8 char 1-255 char Composi¸˜o ca da extens˜o a 1-3 char 1-255 char Outras caracter´ ısticas Extens˜o opcional a Insens´ ao caixa ıvel Admite m´ltiplas exts u Comprimento total < 256 Insens´ ao caixa ıvel Admite m´ltiplas exts u Comprimento total < 256 Insens´ ao caixa ıvel Extens˜o opcional a Comprimento total < 256 Insens´ ao caixa ıvel N˜o usa extens˜es 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.174 CAP´ ITULO 5. isto ´. As permiss˜es de acesso a o s˜o usadas em conjunto com as capacidades ou listas de controle de acesso. data de cria¸˜o (creation date). que poa dem ser utilizadas para indicar: criador (creator ).gzip. propriet´rio (owner ).old ou source. tal como leitura e co escrita. embora associadas aos mesmos. 2000. trataria como sendo diferentes arquivos com os nomes ab. oculta¸˜o. Ab e aB. informa¸˜es e e co que n˜o fazem parte dos arquivos. Isto ´ feito atrav´s da associa¸˜o de um nome ao ca e e ca arquivo propriamente dito. Al´m dos nomes os arquivos podem possuir atributos. a tamanho (size). embora util. como exemplificado na Tabela 5.

Para cada n´ podem ser a a ıvel especificadas separadamente permiss˜es para leitura. Na estrutura de registro. a Sistemas operacionais como DOS. tipicamente os sistemas IBM utilizam. garanu e ue tindo a m´xima flexibilidade ao usu´rio do sistema operacional que oferece a a opera¸˜es bastante simples. SISTEMAS DE ARQUIVOS 175 escrita. escrita e execu¸˜o. MS-Windows 95. ca as seq¨ˆncias de registro. Permiss˜es s˜o associadas a todos os arquivos e o a podem ser diferenciadas em trˆs n´ e ıveis: o do propriet´rio. Esta estruue tura ´ um pouco menos flex´ e depende de opera¸˜es um pouco mais soe ıvel co fisticadas do SO. que na pr´tica representam um prec´rio esquema de prote¸˜o contra a a ca elimina¸˜o indevida. Existem diversos arranjos para arquivos organizados como seq¨ˆncias de registros: registro de tamanho fixo desbloqueados. A organiza¸˜o em ´rvore ´ raramente implemenue ca a e tada. p. 148]. um arquivo ´ uma seq¨ˆncia de bytes. que o ca quando combinadas resultam em diferentes modos de acesso. registro de tamanho vari´vel desbloqueados e a registro de tamanho vari´vel bloqueado [DEI92. como organiza¸˜o mais comum. o do grupo ao qual a pertence seu propriet´rio e dos demais usu´rios. 393]. ca Existem diversas estruturas poss´ ıveis para os arquivos tais como seq¨enu cial.5. os quais podem ter diversos formatos. Computadores de grande ue porte. J´ o MS-DOS a associa apenas um mphbit de permiss˜o de escrita (Read-Only). p. Enquanto as capacidades s˜o associadas aos usu´rios ou processos a a as listas de acesso s˜o associadas diretamente aos arquivos.19. um arquivo ´ uma co e seq¨ˆncia de registros. ao qual se a associam os atributos Oculto (Hidden). 98 e NT e Unix estruturam seus arquivos como seq¨ˆncias de bytes. . tal como ilustrado na a Figura 5.5. Figura 5. Sistema (System) e Arquivo (Archive). por registros e em ´rvore [TAN92.19: Estruturas poss´ ıveis de arquivos Na estrutura seq¨encial. registro ue de tamanho fixo bloqueado. a Os sistemas UNIX utilizam-se de uma lista de acesso simplificada baseada no conceito de grupos.

Vale ressaltar que um e arquivo bin´rio n˜o ´ simplesmente uma seq¨ˆncia de instru¸˜es que podem a a e ue co ser executadas pelo processador. sua ´rea de dados. Especificamente a c no sistema operacional Windows 95/98 e Windows NT ´ poss´ visualizare ıvel se detalhes internos de arquivos execut´veis e bibliotecas de v´ a ınculo dinˆmico a (DLLs ou dynamic link libraries) tais como cabe¸alho da imagem. Muitos sistemas operacionais utilizam a extens˜o do nome do a arquivo como uma referˆncia para o tipo de seu conte´do. 98. ca co co c Isto ´ poss´ atrav´s da op¸˜o de visualiza¸˜o r´pida oferecida pelo gerene ıvel e ca ca a ciador de arquivos nativo. co o a Genericamente arquivos comuns. quando seu conte´do pode ser visualizado diretamente (via comandos u DOS type [IBM92a] ou Unix more [CON99.20 encontramos os fora matos de arquivos execut´veis do sistemas operacionais DOS. tabela de importa¸˜o. o tamanho necess´rio para sua a a pilha de retorno.20: Formato de arquivos execut´veis no Win-32 a Geralmente estas informa¸˜es s˜o posicionadas num cabe¸alho (header ) co a c do arquivo sendo que cada sistema operacional possui um formato pr´prio o de arquivo identificado como execut´vel. Windows 3. GERENCIAMENTO DE I/O Dependendo do conte´do do arquivo este pode ser entendido como de u um certo tipo. NT. cuja execu¸˜o a e a a ca ´ realizada diretamente pelo sistema operacional. . a quando seu conte´do precisa ser interpretado por uma aplica¸˜o para poder u ca ser visualizado. ou sendo bin´rio. podem ser considerados como do tipo co texto.176 CAP´ ITULO 5.21. etc. 132]). Os arquivos execut´veis tamb´m s˜o arquivos bin´rios.22 mostra a estrutura de um arquivo execut´vel no sistema Unix com detalhes de seu cabe¸alho. como ilustrado na Figura 5. 2000 ou XP podem ser associadas aplica¸˜es a determinadas extens˜es. isto ´. cabe¸alho c c opcional. p. auxiliando o usu´rio. al´m do c´digo execut´vel propriamente e o a dito o sistema operacional necessita conhecer informa¸˜es adicionais sobre co o tamanho do programa. aqueles utilizados pelos usu´rio para e a o armazenamento de informa¸˜es. tabela de se¸˜es e informa¸˜es do cabe¸alho. Na Figura 5. Figura 5. Particularmente e u nos sistemas operacionais MS-Windows 95.x a e Windows 95 enquanto que Figura 5.

SISTEMAS DE ARQUIVOS 177 Figura 5. usualmente um DASD. ca ´ e a Seq¨ encial Indexado Os registros bytes s˜o organizados numa seq¨ˆncia u a ue l´gica conforme uma chave e o sistema mantˆm um ´ o e ındice para acelerar . os sistemas de arquivos geralmente mantˆm e e arquivos especiais denominados diret´rios (directories) que contˆm paro e tes da estrutura do sistema de arquivos. E um m´todo extremamente r´pido.21: Visualiza¸˜o r´pida de execut´veis no MS-Windows 98 ca a a Al´m dos arquivos comuns. A aplica¸˜o deve a ca conhecer a localiza¸˜o dos dados no dispositivo. Numa fita isto representa armazenamento cont´ ıguo.5. sendo familiar com sua ca organiza¸˜o. fitas e outros dispositivos de armazenamento secund´rio no segundo. discos. poe dendo ser arquivos especiais de caracteres (character special files) ou arquivos especiais de blocos (block special files) que permitem o acesso terminais. a Finalmente. os arquivos podem ser organizados das seguintes maneiras [DEI92.5. Em sistemas Unix ainda existem arquivos especiais utilizados para modelar certos dispositivos perif´ricos. do ponto de vista de armazenamento e acesso. e a Direto Quando os registro ou bytes s˜o diretamente acessados no meio a em que s˜o armazenados. embora complexo. embora em discos magn´ticos isto n˜o seja necessariamente verdade. impressoras e rede no primeiro caso. 392]: Seq¨ encial Quando os registros ou bytes s˜o posicionados em sua ordem u a f´ ısica. p.

ca Particionado Quando o arquivo ´ composto de subarquivos denominados e membros. que funciona como seu ´ o ındice. OS/2. .0 liberada em 1983. O sistema operacional DOS. Desta forma ´ poss´ criar-se estruturas hier´rquicas de arquio e ıvel a vos. Com a introdu¸˜o de suporte para discos r´ ca ıgidos de maior capacidade na vers˜o 2. foram adicionadas capaa cidades para cria¸˜o e manuten¸˜o de diret´rios e subdiret´rios [JAM87. o O que motivou a cria¸˜o dos diret´rios ´ o fato de que torna-se dif´ a ca o e ıcil organiza¸˜o de um n´mero grande de arquivos armazenados num determica u nado dispositivo sem qualquer forma de divis˜o. o arquivo particionado possui um diret´rio. assim a apresenta¸˜o a ca de uma simples listagem dos arquivos existentes significaria para o usu´rio a visualizar muitas telas repletas de nomes.5. usualmente discos flex´ o ´ ıveis de limitada capacidade. em sua vers˜o 1. onde os diret´rios existentes dentro de outros s˜o denominados subdio a ret´rios.2 Diret´rios o Um diret´rio (directory) nada mais ´ que um arquivo mantido pelo siso e tema de arquivos que contˆm uma lista de arquivos e possivelmente outros e diret´rios. Windows e outros. Para acessar seus membros (members). supora c tava apenas um diret´rio unico por dispositivo. DOS.0 lan¸ada em 1981. S˜o utilizados a para armazenar bibliotecas ou bancos de dados. catalogados num u diret´rio unico associado ao pr´prio dispositivo. Os primeiros dispositivos a de armazenamento secund´rio tinham pequena capacidade o que resultava a no armazenamento de um pequeno n´mero de arquivos.178 CAP´ ITULO 5. Esta ´ uma forma de e organiza¸˜o comum em tabelas de bancos de dados.22: Formato de arquivos execut´veis (binaries) no Unix a o acesso a determinadas partes de um arquivo. ca ca o o 25]. as unidades de disco passaram a armazenar v´rios milhares de arquivos. 5. tal como nos sistemas Unix. GERENCIAMENTO DE I/O Figura 5. A medida que a capacio ´ o dade de armazenamento destes dispositivos cresceu. p.

etc. a Figura 5. tais como em um n´ o ıvel. p. 266] [NOR89. A cada uma destas o e entradas s˜o associados atributos que descrevem as permiss˜es associadas a o aos arquivos.23: Organiza¸˜es Poss´ co ıveis de Diret´rios o Tamb´m ´ poss´ organizar-se os diret´rios como grafos ac´ e e ıvel o ıclicos (acyclic graph directories) que permite que um arquivo ou mesmo um diret´rio o seja apontado por m´ltiplas entradas presentes em diferentes diret´rios.1. como visto na se¸˜o 5. utiliza¸˜o ou qualquer outro crit´rio. a ca e possibilitando seu acesso de forma mais simples. ca ca No sistema de arquivos FAT (file allocation table) do MS-DOS e outros sistema operacionais.5. p. 106] [TAN92. propriet´rio. que tal arquivo ou diret´rio simultaneamente presentes como conte´do o u de v´rios diret´rios ao mesmo tempo.5. Como mostra a Figura 5. o Internamente os diret´rios s˜o organizados como um conjunto de entrao a das. p. em dois n´ ıveis ou em m´ltiplos n´ u ıveis (ou em ´rvores). Isto ´ comum em sistemas UNIX.5. tais como abertura ou a co cria¸˜o de um arquivo. permitindo seu compartilhamento a o [SG00. ou u o seja. os endere¸os onde o arquivo est´ fisicamente armazenado no c a dispositivo e outras informa¸˜es tais como tamanho do arquivo. 167]. Nos sistemas Unix as entradas de diret´rios s˜o bem mais simples. data de co cria¸˜o. SISTEMAS DE ARQUIVOS 179 A cria¸˜o de diret´rios permite que os arquivos sejam divididos e organica o zados conforme seu tipo.6. uma entrada t´ ıpica de diret´rio possui a estrutura o ilustrada na Tabela 5. Quando s˜o solicitadas opera¸˜es sobre arquivos. onde podem ser criados e links apontando os arquivos ou diret´rios compartilhados.5 [JAM87.23. como o a mostra a Tabela 5. existem v´rias organiza¸˜es poss´ a co ıveis de diret´rios. 356]. p. uma para cada arquivos ou subdiret´rio que contˆm. o sistema operacional consulta o diret´rio corrente ca o .

Da mesma forma que n˜o ´ poss´ a existˆncia a e ıvel e de dois arquivos de mesmo nome em um mesmo diret´rio. ca ca A existˆncia de uma estrutura de diret´rios traz como implica¸˜o direta a e o ca necessidade de uma forma de denomina¸˜o unica dos arquivo considerandoca ´ se o sistema como um todo. o . sendo que utiliza-se um cao a ractere especial. o Muitas vezes o diret´rio corrente ´ tratado como diret´rio de trabalho (woro e o king directory). Os caminhos de arquivos para arquivos ou diret´rios s˜o formados pelo o a nome dos diret´rios nos quais est˜o contidos. o A especifica¸˜o de caminho de arquivo pode ser absoluta (absolute pathca name) ou relativa (relative pathname) quando se refere a diret´rio corrente. isto ´. GERENCIAMENTO DE I/O Tabela 5.5: Entrada de diret´rio do sistema de arquivos FAT o Campo Tamanho (bytes) Nome do arquivo 8 Extens˜o a 3 Atributos 1 Reservado para DOS 10 Hora 2 Data 2 N´mero do Setor Inicial u 2 Tamanho do Arquivo 4 Total 32 Tabela 5. que n˜o pode ser utilizado na denomina¸˜o de arquivos e a ca diret´rios. tal como nos sistemas Unix. Esta denomina¸˜o sistˆmica dos arquivos ´ chamada de ca e e especifica¸˜o completa do caminho do arquivo ou apenas caminho do arquivo ca (pathname) e deve permitir a identifica¸˜o unica de qualquer arquivo ou ca ´ diret´rio do sistema. como ” o O sistemas operacionais DOS e Windows utilizam-se de uma estrutura de diret´rios hierarquicamente organizada. o diret´rio que est´ sendo consultado no momento.6: Entrada de diret´rio de sistemas Unix o Campo Tamanho (bytes) N´mero do I-Node u 2 Nome do Arquivo 14 Total 16 (current directory).180 CAP´ ITULO 5. e o a verificando a existˆncia do arquivo desejado para abertura ou a possibilidade e de cria¸˜o de um novo arquivo segundo as regras de identifica¸˜o do sistema. dois arquivos o ou diret´rios quaisquer n˜o podem ter a mesma denomina¸˜o do ponto de o a ca vista do sistema.

24: Estrutura de diret´rio de um sistema Unix o Na maioria dos casos. p.. Enquanto que no Unix os disposica tivos s˜o tratados como arquivos especiais e mapeados diretamente no sisa tema de arquivos a partir de diret´rios arbitr´rios. para floppies. Sendo assim.5. Da´ a necessidade de adicionar-se a especifica¸˜o da unidade ı ca ao caminho absoluto e tamb´m a impossibilidade de especificar-se caminhos e relativos envolvendo unidades distintas.5. os sistemas operacionais utilizam-se de diret´rios o particulares para armazenamento de arquivos espec´ ıficos. tanto o DOS como o Windows d˜o uma denoa mina¸˜o espec´ ca ıfica para cada dispositivo f´ ısico. 224]. como mostra a Tabela 5. deve prover um e conjunto de opera¸˜es para manipula¸˜o dos arquivos e de seu conte´do e co ca u tamb´m dos diret´rios. especificados pelo o a e usu´rio durante a configura¸˜o ou opera¸˜o do sistema atrav´s do comando a ca ca e mount [CON99. isto ´. ou seja. Figura 5. p. atrav´s de seu sistema de arquivo.3 Servi¸os do sistema operacional c O sistema operacional. visto como unidades. chamando-os de unidades.7. discos. qualquer que seja o dispositivo de armazenamento. e o devem ser oferecidas as seguintes opera¸˜es [DEI92. 153]: co • Abertura (open) prepara arquivo para uso. Do ponto de vista dos arquivos. SISTEMAS DE ARQUIVOS 181 diferenciando-se pelo caractere de separa¸˜o de nomes e principalmente pela ca forma de denomina¸˜o de dispositivos. sempre temos um diret´rio raiz para o cada unidade. 389] [TAN92. 5.5. CD-R/RWs etc. . p.

ca • Cria¸˜o (create) cria um novo arquivo.182 CAP´ ITULO 5. GERENCIAMENTO DE I/O Tabela 5. ca • Elimina¸˜o (erase. Utilit´rios do sistema a Arquivos do sistema Arquivos do DOS Unix OS/2 • Fechamento (close) encerra o uso do arquivo evitando sua altera¸˜o. ca • Renomea¸˜o (rename) troca o nome de um arquivo. delete ou destroy) remove um arquivo. ca • Pesquisa (seek ou find ) para determinar uma posi¸˜o para escrita ou ca leitura em um arquivo. ca u • Cataloga¸˜o (cat ou dir ) lista os arquivos existentes num determica nado diret´rio ou unidade. Do ponto de vista do conte´do dos arquivos. o u • Exibi¸˜o (type ou list) exibe o conte´do de um arquivo. o • Modifica¸˜o de atributos (get ou set) obtˆm ou modifica os atrica e butos de um arquivo. ca • C´pia (copy) copia o conte´do de um arquivo para outro. • Escrita (write) efetua a grava¸˜o de dados em um arquivo.7: Diret´rios espec´ o ıficos Sistema operacional DOS Windows 95/98 Diret´rio 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 Prop´sito o Arquivos do sistema Arquivos tempor´rios a Utilit´rios do sistema a Arquivos do sistema Arquivos tempor´rios a Arquivos do DOS Produtos instalados Arquivos do usu´rio a Programas de usu´rios a Diret´rios de usu´rios o a Arquivos bin´rios do sistema a Arquivos diversos de config. considerando a u e manipula¸˜o dos dados armazenados nos arquivos. . devem tamb´m existir ca e opera¸˜es para: co • Leitura (read ) possibilita a leitura de dados contidos nos arquivos. isto ´.

ca o • Navega¸˜o (traverse) permite a navega¸˜o entre diret´rios do sisca ca o tema. o • Renomea¸˜o (rename) troca o nome de um diret´rio.1 de algumas chamadas para um programa simples destinado ao sistema Unix. • Inser¸˜o (insert) para inclus˜o de um dado em um arquivo. • Elimina¸˜o (delete) para remo¸˜o de um dado existente em um arca ca quivo. Ainda podem ser poss´ ıveis outras opera¸˜es sobre arquivos e diret´rios. como no exemplo dado no e Exemplo 5. ca 350] • Cria¸˜o (create) efetua a cria¸˜o e preparo de um novo diret´rio. Como muitos sistemas de arquivos suportam diret´rios. 161] [SG00. inclus˜o ou ca e ca a remo¸˜o de liga¸˜es (links no sistema Unix. ca a • Atualiza¸˜o (update) para modifica¸˜o de um dado existente em um ca ca arquivo. associa¸˜o com aplicativos etc. ca o • Fechamento (close) opera¸˜o que encerra o uso de um dado diret´rio. atualiza¸˜o e elimina¸˜o de dados em arquivos co ca ca ca n˜o s˜o comuns. existindo em sistemas de grande porte onde os arquivos s˜o a a a usualmente organizados em blocos ou registros formatados.5. ca • Pesquisa (search) para possibilitar a localiza¸˜o de determinados arca quivos em um diret´rio. atalhos nos sistemas Windows ca co ou shadows nos sistemas OS/2). obten¸˜o de informa¸˜es sobre arquivos ou ca co diret´rios. o ca Todas as opera¸˜es suportadas pelo sistema operacional para manipulaco ca ¸˜o de arquivos e diret´rios est˜o dispon´ o a ıveis para utiliza¸˜o em programas ca atrav´s das chamadas do sistema (system calls). ca ca o • Remo¸˜o (delete ou remove) elimina um diret´rio e opcionalmente ca o seu conte´do. . p. u o sua cataloga¸˜o ou listagem. ca o • Leitura (read ) permite a leitura do conte´do de um diret´rio. co o tais como sua reorganiza¸˜o sob algum crit´rio (ordena¸˜o). ou seja. As opera¸˜es de inser¸˜o. u • Abertura (open) opera¸˜o que permite a leitura de um diret´rio.5. SISTEMAS DE ARQUIVOS 183 • Anexa¸˜o (append ) para adi¸˜o de novos dados num arquivo exisca ca tente. opera¸˜es eso co pec´ ıficas deve ser supridas para sua utiliza¸˜o [TAN92][p.

Na a e ıvel e Tabela 5.5. Windows e Unix.8 a seguir temos alguns exemplos de comandos DOS. // cria¸~o de arquivo ca arquivo = create("nome do arquivo". Windows e Unix para manipula¸˜o de arquivos e diret´rios. Utilizando uma interface de modo texto que o oferece uma linha de comando. modo). o u que evidentemente significa que tais usu´rios devem ter maior proficiˆncia a e t´cnica para utiliza¸˜o destes sistemas. a entre outros benef´ ıcios. // escrita em arquivo write(arquivo. // leitura de arquivo read(arquivo.4 Implementa¸˜o L´gica ca o Como implementa¸˜o l´gica de um sistema de arquivos entende-se a met´foca o a ra que ´ apresentada ao usu´rio do sistema para que o sistema de arquivos se e a torne compreens´ da maneira mais simples poss´ ıvel ıvel. buffer. possibilitassem: • uma abstra¸˜o mais simples do sistema de arquivos. tamanho do buffer). tamanho do buffer). ca o As interfaces em modo texto exigem maior abstra¸˜o do usu´rio. // abertura de arquivo apenas para leitura arquivo = open("nome do arquivo". isto ´. o usu´rio entende o sistema de a arquivos como uma estrutura hier´rquica de diret´rios que admite opera¸˜es a o co sobre arquivos e diret´rios. isto ´. e ca Esta dificuldade motivou o desenvolvimento de interfaces gr´ficas que. // fecha arquivo close(arquivo).184 CAP´ ITULO 5. O RDONLY). Exemplo 5. a Nos sistemas DOS. o usu´rio pode digitar comandos para realizar as a opera¸˜es desejadas imaginando a organiza¸˜o hier´rquica de diret´rios e co ca a o arquivos que n˜o ´ diretamente vis´ atrav´s destas interfaces simples. uma interface tipo linha de comando e ou prompt do sistema. GERENCIAMENTO DE I/O // vari´vel para controle do arquivo a int arquivo. ca . que ca a deve memorizar a sintaxe dos comandos que utiliza mais freq¨entemente. buffer. de modo que e os detalhes da implementa¸˜o e funcionamento reais do sistema de arquivos ca sejam completamente ocultos do usu´rio do sistema.1 Fragmentos de programa para sistema Unix 5.

o usu´rio dos sistemas o co a MS-Windows pode se movimentar pela estrutura de diret´rios.25 e 5. Windows e Unix para manipula¸˜o de arquivos ca Prop´sito 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 diret´rio o md md mkdir Remover diret´rio o rd rd rmdir Troca de diret´rio o cd cd cd • uma melhor visualiza¸˜o da distribui¸˜o de arquivos atrav´s da estruca ca e tura de diret´rios e unidades de armazenamento. uma organiza¸˜o hier´rquica de pastas nas o e ca a quais podem existir arquivos e outras pastas ´ a id´ia central da met´fora e e a apresentada. tais como IBM. a a que pode ser utilizado para desenvolvimento de aplica¸˜es gr´ficas. Mesmo sem o conhecimento de comandos de navega¸˜o na ca estrutura de diret´rios ou de opera¸˜es sobre arquivos.5.8: Comandos DOS. conduzido por um cons´rcio dos o maiores fabricantes de sistemas Unix num esfor¸o de padroniza¸˜o da interc ca face gr´fica de seus sistemas. a O tratamento gr´fico que especificamente os sistemas MS-Windows d˜o a a a estrutura de diret´rios. e tamb´m co a e o CDE (Common Desktop Environment). ca o Nas Figuras 5. SISTEMAS DE ARQUIVOS 185 Tabela 5.26 temos exemplos dos utilit´rios de gerenciamento a . Microsoft a e Apple oferecem seus sistemas operacionais com interfaces gr´ficas proa priet´rias. evitando tanto o conhecimento da forma com que tais opera¸˜es s˜o verdadeiramente realizadas como a memoriza¸˜o dos comanco a ca dos de manipula¸˜o de arquivos e diret´rios. todas baseadas em janelas. eliminar e criar arquivos ou diret´rios apenas atrav´s da utiliza¸˜o o e ca do sistema de menus oferecidos ou das opera¸˜es que podem ser realizadas co atrav´s do teclado ou mouse. pode copiar. As opera¸˜es realizadas atrav´s dos menus. o renomear. Tamb´m ´ poss´ e e e ıvel executar-se aplica¸˜es e co criar-se atalhos (links). Outros fabricantes. teclado e mouse s˜o transco e a formadas pelo sistema operacional em chamadas do sistema que realizam as tarefas especificadas.5. isto ´. o • maior produtividade do usu´rio e a • cria¸˜o de um modelo de interface mais consistente que pudesse ser ca disponibilizada para outras aplica¸˜es. co Para os sistemas Unix foi criado o padr˜o gr´fico de janelas Xwindows.

p. atrav´s da: e .5 Implementa¸˜o F´ ca ısica A implementa¸˜o f´ ca ısica de um sistema de arquivos representa a forma com que efetivamente os dados s˜o tratados nos dispositivos de armazenamento. p. p. corresponde a organiza¸˜o f´ e ca ısica dos dados nestes dispositivos e como se d˜o as opera¸˜es de armazenamento e recupera¸˜o destes dados.25: Gerenciador de arquivos do MS-Windows 95/98/NT Estas interfaces gr´ficas facilitam muito a opera¸˜o do sistema princia ca palmente para usu´rios menos experientes.5. 162].186 CAP´ ITULO 5. Cona co ca forme Tanenbaum: Usu´rios est˜o preocupados em como os arquivos s˜o denominaa a a dos. 162]. o 5. como o espa¸o em disco ´ gerenciado e como fazer que c e tudo funcione de forma eficiente e confi´vel [TAN92. a isto ´. a Como indicado por Deitel [DEI92. 394] e Tanenbaum [DEI92. GERENCIAMENTO DE I/O de arquivos que acompanham os sistemas MS-Windows 95/98/NT e XP respectivamente. al´m disso proporcionam melhor a e visualiza¸˜o da estrutura de diret´rios e da distribui¸˜o de arquivos pelos ca o ca diret´rios e unidades de armazenamento do sistema. quais opera¸˜es s˜o permitidas. a aparˆncia da estrutura de co a e diret´rios e quest˜es relacionadas a interface. Os implementadoo o res est˜o interessados em como arquivos e diret´rios s˜o armaa o a zenados. os arquivos podem ser armazenados basicamente de duas formas. ou seja. Figura 5.

quantidade. se reduz ao tamanho do arquivo e ao setor inicial utilizado o e . a ca o ou seja. entre elas: o tipo e n´mero de usu´rios.5. caracter´ co u a ısticas das aplica¸˜es que ser˜o utilizadas. Este ´ o esquema mais simples de organiza¸˜o f´ e ca ısica de arquivos que exibe algumas vantagens e desvantagens [DEI92.27).5. a manuten¸˜o de e ca diret´rios. ca o Aloca¸˜o cont´ ca ıgua Uma forma de organizar-se os arquivos fisicamente ´ atrav´s da armazenae e gem dos dados em ´reas adjacentes dos dispositivos f´ a ısicos. p. p. isto ´. isto ´.26: Gerenciador de arquivos do MS-Windows XP • Aloca¸˜o cont´ ca ıgua e • Aloca¸˜o n˜o cont´ ca a ıgua. tamanho e opera¸˜es sobre arco a co quivos. SISTEMAS DE ARQUIVOS 187 Figura 5. 395] [DEI92. p. A considera¸˜o destes fatores permite determinar qual a melhor ca forma de organiza¸˜o de seus arquivos e diret´rios. As vantagens s˜o: a • o controle de armazenamento do arquivo. o primeiro bloco de dados ocupa o primeiro setor alocado e assim sucessivamente (vide Figura 5. Sistemas de arquivos implementados desta forma s˜o denominados de aloca¸˜o cont´ a ca ıgua ou cont´ ınua e neles o armazenamento f´ ısico corresponde ` organiza¸˜o l´gica do arquivo. O projeto de um sistema de arquivos exige o conhecimento de v´rias a informa¸˜es. 373]. em setores e consecutivos das unidades de disco [SG00. 163].

como mostra a Figura 5. pois novos arquivos s´ podem o ser criados em ´reas cont´ a ıguas. tal como o sistema ca operacional IBM Vm/CMS. O principal objetivo da aloca¸˜o n˜o-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 s˜o utilizados. Enquanto que as desvantagens s˜o: a • exige que o tamanho do arquivo seja conhecido no instante de sua cria¸˜o e ca • a ocorrˆncia de fragmenta¸˜o (veja discuss˜o na se¸˜o5.27: Organiza¸˜o f´ ca ısica na aloca¸˜o cont´ ca ıgua • as opera¸˜es de leitura e escrita s˜o as mais eficientes poss´ co a ıveis para qualquer tipo de dispositivo. Sistemas que exigem maior performance nas opera¸˜es de leitura e escrita co e que n˜o necessitem de modifica¸˜es freq¨entes no tamanho de seus arquivos a co u podem utilizar eficientemente este esquema de aloca¸˜o.5. de forma que o armazenamento f´ ısico n˜o corresponde ` organiza¸˜o l´gica do a a ca o arquivo. Aloca¸˜o n˜o cont´ ca a ıgua A outra forma poss´ ıvel de organizar-se fisicamente o armazenamento de arquivos ´ atrav´s da aloca¸˜o n˜o cont´ e e ca a ıgua.188 CAP´ ITULO 5.28. Neste esquema cada bloco do arquivo pode estar armazenado num setor distinto da unidade de disco. GERENCIAMENTO DE I/O Figura 5. a A aloca¸˜o n˜o-cont´ ca a ıgua pode ser implementada de v´rias formas e dena tre estas as estrat´gias de aloca¸˜o orientadas ` setores: e ca a • Lista ligada de setores • Lista ligada de setores indexada .6) reduz a e ca a ca capacidade efetiva de armazenamento.

p. 376]. O sistema pode manter uma lista de setores livres. SISTEMAS DE ARQUIVOS 189 Figura 5. onde cada um destes setores aponta para o pr´ximo.5. 163] os maiores problemas encontrados no uso do mecanismo de uma lista ligada de setores s˜o: a 1. co usando integralmente a capacidade do disco. p.28: Organiza¸˜o f´ ca ısica na aloca¸˜o n˜o cont´ ca a ıgua • Indexa¸˜o de n´s (i-nodes) ca o Na lista ligada de setores (linked list allocation) cada setor do disco contˆm um ponteiro que pode ser utilizado para indicar um outro setor e [SG00. que podem ser retirados para a cria¸˜o e aumento de arquivos ou recuperados ca quando diminuem ou s˜o eliminados.5. Desta forma uma arquivo pode ser armazenado atrav´s de e uma entrada simples no diret´rio que indica o primeiro de uma seq¨ˆncia de o ue setores. eliminando a necessidade de mecanismos de compacta¸˜o embora promova a fragmenta¸˜o da unidade ca ca de disco. Um ponteiro o com valor nulo indica que o arquivo terminou (vide Figura 5. Figura 5. As opera¸˜es de leitura e escrita tendem a ser ineficientes devido a co fragmenta¸˜o inerente deste m´todo. Isto permite um mecanismo de armaa zenamento que acomoda facilmente as varia¸˜es de tamanho dos arquivos.29: Aloca¸˜o n˜o cont´ ca a ıgua com lista ligada Conforme Tanenbaum [TAN92. ca e .29). N˜o existe a necessidade dos setores alocados estarem em posi¸˜es adjacentes tal como na co aloca¸˜o cont´ ca ıgua.

Isto permite o acesso randˆmico do arquivo e mantˆm o bloco de dados o e do setor num tamanho que ´ potˆncia de 2. o e ca 3. A entrada do diret´rio correso pondente ao arquivo aponta para um setor desta tabela (o primeiro setor do arquivo) que tem associado um ponteiro para a pr´xima entrada e aso sim sucessivamente. O posicionamento do ponteiro dentro de cada setor faz com que o bloco de dados deixe de ser uma potˆncia de 2. GERENCIAMENTO DE I/O 2. criando alguns inconvenientes e do ponto de vista de programa¸˜o. E criada uma tabela contendo a rela¸˜o ca de todos os setores do dispositivos sendo que para cada entrada se associa um ponteiro (retirado dos setores de dados). embora a ineficiˆncia devido e e e a fragmenta¸˜o permane¸a.30. ca Figura 5. 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. uma ca . Temos uma representa¸˜o deste esquema de ca c ca organiza¸˜o na Figura 5.30: Aloca¸˜o n˜o cont´ ca a ıgua com lista ligada indexada A principal desvantagem deste m´todo ´ o tamanho que da tabela de e e aloca¸˜o pode ter em unidades de grande capacidade. O acesso randˆmico deixa de existir pois torna-se necess´rio ler cada o a setor alocado para se determinar o pr´ximo at´ a posi¸˜o desejada. por exemplo. Um ponteiro nulo indica o fim do arquivo na tabela.190 CAP´ ITULO 5.

Este ´ esquema tipicamente utilizado pelos sistemas Unix. ou seja.2K) com FAT de 12 e 16 bits respectivamente. Outra forma comum de organiza¸˜o de arquivos ´ atrav´s da indexa¸˜o ca e e ca de n´s (index nodes ou i-nodes). 16 bits endere¸am 64K setores e c c 32 bits possibilitam 4G setores distintos.31. um pequeno arquivo pode ser mapeado com um unico ´ i-node. no que se denoe mina estrat´gias de aloca¸˜o orientadas ` blocos. uma unidade de 1. o e ca e que elimina parcialmente o problema da fragmenta¸˜o al´m de permitir a ca e otimiza¸˜o da leitura ou escrita atrav´s de opera¸˜es com blocos inteiros ca e co (read ahead ou lazy write).5. SISTEMAS DE ARQUIVOS 191 unidade de 1. representando u ca assim a quantidade m´xima de setores que pode ser controlada. como e tamb´m esquematizado na Figura 5. Um n´ indexado ´ uma pequena estrutura o o e de dados que contˆm um conjunto de atributos e umas poucas centenas de e entradas onde cada entrada ´ um endere¸o de um bloco de dados na unidade e c de disco. Estas estrat´gias visam e ca a e combinar algumas das vantagens da aloca¸˜o cont´ ca ıgua e da aloca¸˜o n˜o ca a cont´ ıgua atrav´s da aloca¸˜o de blocos ao inv´s de setores individuais. Isto exibe outra fraqueza desta estrat´gia. 397]. 164]. A numera¸˜o associada ao nome FAT. p. 112]. Como indica Deitel [DEI92. otimizando todas as opera¸˜es realizadas sobre ele. Se o arquivo n˜o co a puder ser armazenado num unico i-node. e Uma varia¸˜o destas estrat´gias ´ alocar grupos de setores. existindo valores especiais para designa¸˜o de fim o ca de arquivo e setores defeituosos [NOR89. 12 a bits permitem endere¸ar 4.5. p. alguns dos endere¸os de blocos ´ c de dados s˜o substitu´ a ıdos por endere¸os de outros i-nodes denominados de c bloco indireto simples (single indirect block ). p. que pode consumir espa¸o ca a c precioso para ser mantida integralmente em mem´ria. ca O DOS e Windows utilizam esta estrat´gia para a organiza¸˜o f´ e ca ısica de floppies e unidades de disco. denominados ca e e blocos (blocks ou extents) ao inv´s de setores individuais. A tabela de setores ´ chamada de Tabela de e Aloca¸˜o de Arquivos (file allocation table) que d´ origem ao nome do ca a sistema de arquivos FAT. o que ´ um inconveniente devido a granularidade excessivamente grossa (um e arquivo de 1 byte ocupa sempre um setor).2 Gbytes dividida em setores de 1 Kbytes possui uma tabela de aloca¸˜o com mais de um milh˜o de entradas. Na FAT o registro inicial armazena informa¸˜es co sobre a pr´pria unidade. como FAT12. Desta forma. a ca a semelhantes as existentes para setores: • Lista ligada de blocos (block chaining) . Para arquivos ainda maiores podem ser usados blocos indiretos duplos ou triplos (double ou triple indirect block ). ca indica o n´mero de bits utilizado para numera¸˜o dos setores. FAT16 e FAT32.2K) e 32K (19. existem v´rias maneiras de se implementar sistemas de aloca¸˜o orientados ` blocos.2 GBytes de capacidade possuir´ setores de e a 512K (307. pois cada entrada o da tabela tipicamente utiliza 3 ou 4 bytes dependendo de como se d´ a a otimiza¸˜o do sistema [TAN92.096 setores.

´ poss´ termos blocos de tamanho e ıvel fixo ou vari´vel. os problemas de que devem ser resolvidos para organiza¸˜o do armazenamento secund´rio s˜o semelhantes aos encontrados no ca a a gerenciamento de mem´ria. de modo que cada bloco e contenha um ponteiro para o pr´ximo bloco tal como na lista ligada de o setores.192 CAP´ ITULO 5. mas os ca arquivos s˜o freq¨entemente modificados e eliminados e com isto seus tamaa u . A forma de armazenamento mais simples ´ a o e disposi¸˜o dos dados em setores adjacentes das unidades de disco. num mecanismo mais flex´ a ıvel para o armazenamento de dados.31: Aloca¸˜o n˜o cont´ ca a ıgua com I-Nodes • Lista ligada de blocos indexada (index block chaining) • Mapeamento orientado ` blocos (block oriented file mapping) a Na lista ligada de blocos um n´mero fixo de setores ´ alocado de cada u e vez. 5.6 Fragmenta¸˜o ca Sob certos aspectos.5. a 400]. apresentando vantagens e desvantagens idˆnticas. As opera¸˜es de modifica¸˜o ca co ca de tamanho de arquivos se tornam bastante ´geis neste esquema [DEI92. e Na lista ligada de blocos indexada. GERENCIAMENTO DE I/O Figura 5. No mapeamento orientado ` blocos. p. cujo princ´ tamb´m ´ o mesmo ıpio e e da lista ligada de setores indexada. os blocos possuem o mesmo tamanho. isto ´. os ponteiros s˜o substitu´ a a ıdos por um esquema de numera¸˜o que pode ser facilmente convertido para a ca numera¸˜o de setores de uma unidade de disco.

Figura 5. a o a Na Figura 5.32 temos uma esquematiza¸˜o da ocorrˆncia da fragmentaca e ca ¸˜o em sistemas de arquivos com aloca¸˜o cont´ ca ıgua e tamb´m com aloca¸˜o e ca n˜o cont´ a ıgua. por outro lado a utiliza¸˜o do disco a e ca ca ser´ comprometida pois setores fragmentados do disco poder˜o permanecer a a livres n˜o possibilitando o armazenamento de arquivos maiores. a Caso o armazenamento de arquivos seja feito atrav´s de aloca¸˜o n˜o e ca a cont´ ıgua. ca o ca pois se seu tamanho aumenta e a regi˜o de armazenamento atual n˜o pode a a ser expandida. e c Se o armazenamento de arquivos ´ feito atrav´s da aloca¸˜o cont´ e e ca ıgua temos que uma altera¸˜o em seu tamanho imp˜e algum grau de fragmenta¸˜o. SISTEMAS DE ARQUIVOS 193 nhos s˜o vari´veis. Satyanarayanan ca (1981) efetuou um estudo sobre o tamanho dos arquivos e as opera¸˜es co realizadas sobre eles concluindo que: . setores livres passam a ser ocupados de forma descontinua pelos arquivos a medida que seus tamanhos aumentam ou diminuem. sobrar˜o alguns setores livres no final a de sua ´rea original que s´ poder˜o ser ocupados por pequenos arquivos. Na situa¸˜o em que o a a ca arquivo tem seu tamanho reduzido. Notamos que em ambos os casos ocorre a fragmenta¸˜o. a ´rea anteriormente utilizada provavelmente ficar´ livre ena a quanto o arquivo ser´ rearranjado numa outra ´rea. Embora o aproveitamento do espa¸o em disco seja integral.5. isto a a ca ´.32: Ocorrˆncia de fragmenta¸˜o com aloca¸˜o cont´ e ca ca ıgua Na aloca¸˜o cont´ ca ıgua temos que os arquivos s˜o armazenados sempre em a setores consecutivos. as opera¸˜es de leitura e c co escrita ter˜o seu desempenho comprometido tanto mais fragmentado esteja a o arquivo sob uso. come¸am a surgir setores livres entre setores ocupados. assim o desempenho de opera¸˜es de leitura e escrita co n˜o ´ comprometido pela fragmenta¸˜o. Este fato provoca o que se chama de fragmenta¸˜o.5.

Figura 5. e • as opera¸˜es de leitura s˜o mais freq¨entes que as opera¸˜es de escrita.194 CAP´ ITULO 5. como ilustrado na Figura 5. Outros sistemas oferecem utilit´rios que podem realizar esta opera¸˜o. Como isto pode n˜o ser admiss´ em certos sistemas. a ca permitindo ao usu´rio ou administrador maior controle sobre o armazenaa mento. podem ca a ıvel ser implementados mecanismos de compacta¸˜o ou desfragmenta¸˜o que reca ca organizam o armazenamento nos dispositivos de armazenamento de forma a possibilitar a utiliza¸˜o integral do espa¸o dispon´ no caso da aloca¸˜o ca c ıvel ca cont´ ıgua ou de otimizar as opera¸˜es de leitura e escrita quando a aloca¸˜o co ca ´ n˜o-cont´ e a ıgua. Isto significa que a fragmenta¸˜o ir´ ocorrer qualquer que seja a forma ca a de aloca¸˜o. GERENCIAMENTO DE I/O • a maioria dos arquivos ´ de pequeno tamanho. co a u co • a maioria das opera¸˜es de leitura e escrita s˜o seq¨enciais e co a u • que grande parte dos arquivos tem vida curta.33: Utilit´rio de desfragmenta¸˜o de disco do MS-Windows 98 a ca .33.

Standards and Interfaces. Manual do Usu´rio do Conectiva Linux Guarani. Borland International. 1992. Prentice Hall. CA. 1992. J. Cˆmpus. [JAM87] Kris JAMSA. FL. Delphi 2 Unleashed. DAVIS.com/. Gordon LETWIN. TENENBAUM. Prentice Hall. IBM DOS 5.0. Cray Research Inc. Explorando o OS/2. RJ. Reading. DOS: The Complete Reference. Berkeley. Princ´ e ıpios de Sistemas Operacioa Edi¸˜o. 1991. An Introduction to Operating Systems.. Cˆmpus. 2nd Edition. a a [DEI92] [GUI86] Harvey M. 1999. MA. NJ. Englewood Cliffs.1 Programmer’s Guide. 1987. [IBM92b] IBM.cray. 2004. Sistemas Operacionais: uma vis˜o sisa tem´tica. NJ. Indianapolis. 2nd Edition. IBM. 1992. a RJ. Cˆmpus. A Technical Guide to OS/2 2. 1986. 195 [LET89] . [BOR92] BORLAND. [CRA04] CRAY. ˜ C´lio Cardoso GUIMARAES. BocaRaton. [LAT96] Y. Computer Networks: Protocols. M. M. Scotts Valey.Referˆncias Bibliogr´ficas e a [BLA87] Uyless BLACK. PR. CA. Sams Publishing. IBM. Upper Saddle River. Osborne McGrawHill. LANGSAM. a Conectiva. Rio de Janeiro. [CON99] CONECTIVA. RJ. DEITEL. 1996. Curitiba. Internet: http://www. nais. BocaRaton. IN.02 Technical Reference. 1992. Rio de Janeiro. [DAV91] William S. Data Structures Using C and C++. 1996. and A. FL. 2nd Edition. 5 ca a [IBM92a] IBM. 1987. [CAL96] Charles CALVERT. Borland C++ 3. Addison-Wesley. 1989. Cray X1 Product Overview. AUGENSTAIN. recuperado em 01/2004. Rio de Janeiro.

ca a SP. . Prentice Hall. Sistemas Operacionais: Conceitos. Upper Saddle River. S˜o a Paulo. Modern Operating Systems. [NOR89] Peter NORTON. Makron Books. NY. 1992. National Center for Atmospheric Research . 1996. 2000. RJ. [PIT98] [SG94] David PITTS. a Rio de Janeiro. Prentice Hall. 1995. Redmond. 4th Edition. NJ. 1996. a [SHA96] William A. 1996. Computer Organization and Architecture: Designing for Performance. 2004. TANENBAUM. co Cˆmpus. New York. William STALLINGS. Abraham SILBERSCHATZ and Peter Baer GALVIN. Cˆmpus. RJ. Abraham SILBERSCHATZ and Peter Baer GALVIN. 1992. Operating Systems. Indianapolis. [PET96] Charles PETZOLD. Microsoft Press. S˜o Paulo.ucar.edu/computers/gallery/. Internet: http://www. [TAN95] Andrew S. NJ. Distributed Operating Systems. TANENBAUM. Prentice Hall. Reading.Scientific Computer Division. Prentice Hall. Upper Saddle River. 2001. Operating System Concepts. MA. Macmillan. 1994. 1989. Red Hat Linux Unleashed. Programming Windows 95. [SG00] [SGG01] Abraham SILBERSCHATZ. NJ. NCAR/SCD Supercomputer Gallery. Guia do Programador para IBM PC. SHAY. and Greg GAGNE. Sistemas Operacionais. IN. Sams Publishing.scd. [STA92] [STA96] William STALLINGS. Addison-Wesley. 1998. [TAN92] Andrew S. Rio de Janeiro. 4th Edition. SP. Upper Saddle River. 5a Edi¸˜o. Sistemas Operacionais: Conceitos e Aplica¸˜es. Peter Baer GALVIN. recuperado em 01/2004. WA.196 ˆ ´ REFERENCIAS BIBLIOGRAFICAS [NCA04] NCAR.

You're Reading a Free Preview

Descarregar
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->