Vous êtes sur la page 1sur 58

ii

Conte
udo
Lista de Figuras

Lista de Tabelas

vii

1 Introduc
ao

1.1

Definindo os Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . .

1.2

Objetivos de um Sistema Operacional . . . . . . . . . . . . . . . . . . . . .

1.3

Breve historico - A Evolucao dos Sistemas Operacionais . . . . . . . . . . .

1.3.1

Primeira Geracao (Anos 50) . . . . . . . . . . . . . . . . . . . . . .

1.3.2

Segunda Geracao (Anos 60) . . . . . . . . . . . . . . . . . . . . . .

1.3.3

Terceira Geracao (Meio dos anos 60 ao meio dos anos 70) . . . . . .

1.3.4

Quarta Geracao (Meio dos anos 70 ao final dos anos 80) . . . . . .

1.3.5

Quinta Geracao (Final dos anos 80 ao presente) . . . . . . . . . . .

Conceitos Basicos em Sistemas Operacionais . . . . . . . . . . . . . . . . .

1.4.1

Processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5

Classificacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.6

Requisitos Basicos - Projeto de um S.O . . . . . . . . . . . . . . . . . . . .

1.4

2 Classificac
ao dos Sistemas Operacionais
2.1

2.2

2.3

Quanto ao n
umero de usuarios . . . . . . . . . . . . . . . . . . . . . . . . .

2.1.1

Monousuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1.2

Multiusuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Quanto ao n
umero de programas que sao executados . . . . . . . . . . . . 10
2.2.1

Sistema Monoprogramado ou Monotarefa . . . . . . . . . . . . . . . 10

2.2.2

Sistema Multiprogramado ou Multitarefa . . . . . . . . . . . . . . . 10

Do ponto de vista do n
umero de processadores . . . . . . . . . . . . . . . . 12

iii
2.3.1

Sistema Monoprocessado . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3.2

Sistema Multiprocessado . . . . . . . . . . . . . . . . . . . . . . . . 12

3 Sistemas de Arquivo

15

3.1

Conceito de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.2

Armazenamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.3

Gerenciamento de Espaco em Disco . . . . . . . . . . . . . . . . . . . . . . 17

3.4

3.3.1

Lista de Espacos Livres . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.3.2

Metodos de Acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.3.3

Metodos de Alocacao de Arquivos . . . . . . . . . . . . . . . . . . . 18

Sistema de Diretorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.4.1 Diretorio em um Unico


Nvel . . . . . . . . . . . . . . . . . . . . . . 23
3.4.2

3.5

3.4.3

Diretorio em Dois Nveis . . . . . . . . . . . . . . . . . . . . . . . . 23

Diretorio Estruturado em Arvore


. . . . . . . . . . . . . . . . . . . 23

3.4.4

Diretorio em Grafo Acclico e Grafo Geral . . . . . . . . . . . . . . 25

Protecao de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.5.1

Senha de Acesso

3.5.2

Grupo de Usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4 Ger
encia do Processador
4.1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

28

Processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.1.1

Conceito de Multiprogramacao . . . . . . . . . . . . . . . . . . . . 28

4.1.2

Conceito de Processo . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4.1.3

Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4.1.4

Criacao de Processos . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.1.5

Estados de um Processo . . . . . . . . . . . . . . . . . . . . . . . . 30

4.2

Objetivos do Escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.3

Nveis de Escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.4

Escalonamento Preemptivo e Nao-Preemptivo . . . . . . . . . . . . . . . . 32

4.5

Qualidade do Escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.6

Algoritmos de Escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.6.1

Escalonamento FIFO (First In First Out) . . . . . . . . . . . . . . 34

4.6.2

Escalonamento HPF (Highest Priority First) . . . . . . . . . . . . . 35

iv

4.7

4.6.3

Escalonamento SJF (Shortest Job First) . . . . . . . . . . . . . . . 36

4.6.4

Escalonamento RR (Round-Robin) . . . . . . . . . . . . . . . . . . 38

4.6.5

Escalonamento MQ (Multilevel Queues) . . . . . . . . . . . . . . . 38

Comparacao dos algoritmos de escalonamento . . . . . . . . . . . . . . . . 40

5 Gerenciamento de Mem
oria

42

5.1

Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

5.2

Bare Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5.3

Monitor Residente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5.4

Organizacao de Memoria: Particoes Fixas X Particoes Variaveis . . . . . . 45

5.5

5.4.1

Particoes Fixas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

5.4.2

Particoes Variaveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

Memoria Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.5.1

Swapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.5.2

Paginacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Bibliografia

52

Lista de Figuras
1.1

Sistema de Computador . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1

Classificacao dos Sistemas Operacionais . . . . . . . . . . . . . . . . . . . .

2.2

Sistema Monoprogramado/Monotarefa . . . . . . . . . . . . . . . . . . . . 10

2.3

Sistemas Multiprogramaveis - Multitarefa . . . . . . . . . . . . . . . . . . . 11

2.4

Sistemas Fortemente Acoplados . . . . . . . . . . . . . . . . . . . . . . . . 14

2.5

Sistemas Fracamente Acoplados . . . . . . . . . . . . . . . . . . . . . . . . 14

3.1

Caractersticas fsicas de um disco . . . . . . . . . . . . . . . . . . . . . . . 17

3.2

Alocacao contgua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.3

Alocacao encadeada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.4

Alocacao indexada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.5

Diretorio de um u
nico nvel . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.6

Diretorio em dois nveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.7

Diretorio em arvore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.1

Estados de um processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.2

Representacao grafica do tempo de permanencia . . . . . . . . . . . . . . . 33

4.3

Avaliacao do escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4.4

Escalonamento RR (Round Robin) . . . . . . . . . . . . . . . . . . . . . . 38

4.5

Escalonamento MQ (Multiple queues) . . . . . . . . . . . . . . . . . . . . . 39

5.1

Hierarquia de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5.2

Monitor residente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

5.3

Fila de processos separadas e unificada . . . . . . . . . . . . . . . . . . . . 46

5.4

Hardware de suporte para os registradores de limite superior e inferior . . . 47

5.5

Hardware de suporte para os registradores de base e limite . . . . . . . . . 47

vi
5.6

Exemplo de alocacao de memoria e escalonamento de processos

. . . . . . 48

5.7

Swapping de dois programas utilizando um disco . . . . . . . . . . . . . . . 50

vii

Lista de Tabelas
4.1

Transicao dos estados de um processo . . . . . . . . . . . . . . . . . . . . . 31

4.2

Exemplo de fila de processos sob escalonamento FIFO . . . . . . . . . . . . 35

4.3

Exemplo de fila de processos sob escalonamento HPF . . . . . . . . . . . . 36

4.4

Exemplo de fila de processos sob Escalonamento SJF . . . . . . . . . . . . 37

4.5

Algoritmos de escalonamento nao-preemptivos . . . . . . . . . . . . . . . . 40

4.6

Algoritmos de escalonamento preemptivos . . . . . . . . . . . . . . . . . . 41

Captulo 1
Introdu
c
ao
Um Sistema Operacional e um programa que atua como uma interface entre o hardware
do computador e o usuario do sistema, fornecendo um ambiente no qual se possa executar
programas. Sua principal meta e tornar o sistema do computador conveniente ao uso
fazendo a utilizacao do hardware de modo eficiente.
Neste captulo sao apresentadas algumas definicoes de Sistema Operacional, seus objetivos, um breve historico, conceitos basicos, uma breve classificacao e os requisitos basicos
para um projeto de Sistema Operacional.

1.1

Definindo os Sistemas Operacionais

Em cada uma das fases de desenvolvimento e evolucao, os computadores sempre foram


sistemas muito sofisticados se comparados ao estagio tecnologico de suas epocas. Ao longo
dos u
ltimos 50 anos evoluram incrivelmente e, embora tenham se tornado mais comuns
e acessveis, sua popularizacao ainda esconde sua tremenda complexidade interna [Jr04].
Como nao poderia deixar de ser, a evolucao dos Sistemas Operacionais acompanhou
a evolucao dos computadores. Segundo Deitel [Dei92], Sistemas Operacionais podem
ser definidos como programas, implementados como software ou firmware, que tornam o
hardware utilizavel. O hardware oferece capacidade computacional bruta. Os Sistemas
Operacionais disponibilizam convenientemente tais capacidades aos usuarios, gerenciando
cuidadosamente o hardware para que se obtenha uma performance adequada.
Em outras palavras, o Sistema Operacional tem a funcao de tornar o hardware utilizavel para o usuario final, escondendo deste caractersticas especficas de funcionamento
de cada equipamento, o que exigiria grande conhecimento e esforco para execucao de tarefas simples como ler ou escrever em um disco. Neste momento, alguns conceitos se fazem
necessarios:
Hardware: o conjunto de dispositivos eletricos, eletronicos, opticos e eletromecanicos
que compoe o computador, sendo este a maquina fsica propriamente dita.
Software: o conjunto de todos os programas de computador.
Firmware: e representado por programas (rotinas) especiais armazenados de forma
permanente no hardware do computador que permitem o funcionamento elementar e


CAPTULO 1. INTRODUC
AO

a realizacao de operacoes basicas em certos dispositivos do computador, geralmente


associadas a alguns perifericos e a execucao de outros programas tambem especiais.

Figura 1.1: Sistema de Computador


A Figura 1.1 apresenta a arquitetura de um sistema (computador). Os tres nveis
inferiores, abaixo do Sistema Operacional, sao responsaveis pelo funcionamento do equipamento em si. Como exemplos de dispositivos existentes num sistema podemos citar os
circuitos integrados de memoria, as unidades de disco flexvel e rgido e o processador do
sistema, sendo este u
ltimo um dispositivo microprogramado. O firmware geralmente vem
acondicionado em circuitos de memoria nao volatil (armazenamento que nao e perdido ao
desligar o computador), como ROM, PROM ou EPROM, sendo os programas ali gravados escritos geralmente em linguagem de maquina e destinados a execucao de operacoes
especiais como a auto-verificacao inicial do sistema e a carga do Sistema Operacional a
partir de algum dispositivo adequado.
O software ou os programas do sistema sao representados pelo Sistema Operacional
e todos os seus componentes (bibliotecas de funcoes e programas utilitarios) alem de
todos os outros programas acessarios do sistema, tais como editores de texto, compiladores, interpretadores de comando (shells), aplicativos de comunicacao e ferramentas de
administracao e manutencao do sistema. Os programas de aplicacao sao todos os demais
softwares, desenvolvidos com finalidades particulares, que sao utilizados num dado sistema
computacional sob suporte e supervisao do Sistema Operacional, tais como softwares de
gestao, programas de correio eletronico, navegadores (browsers), jogos, aplicacoes multimdia, etc.
Um Sistema Operacional e um programa, ou conjunto de programas, especialmente
desenvolvido para oferecer, da forma mais simples e transparente possvel, os recursos
de um sistema computacional aos seus usuarios, controlando e organizando o uso destes
recursos de maneira que se obtenha um sistema eficiente e seguro. Esta camada intermediaria, entre hardware e os programas de aplicacao e de fundamental importancia tanto
para oferecer um ambiente de programacao mais adequado como tambem um ambiente
de trabalho mais simples, seguro e eficiente.
Tanenbaum [Tan92] define um Sistema Operacional como o mais fundamental de todos
os programas do sistema, que controla todos os recursos computacionais e prove uma base
sobre a qual programas de aplicacao podem ser escritos .


CAPTULO 1. INTRODUC
AO

O Sistema Operacional, por meio de uma interface orientada a operacao, permite que
o usuario utilize funcionalidades do hardware disponvel, sem lidar com a complexidade
inerente ao dispositivo. Desta forma, ao se desenvolver uma aplicacao (um programa),
o programador nao precisa conhecer detalhes especficos do funcionamento do hardware,
bastando incluir em seu programa, instrucoes para o Sistema Operacional (em linguagem
de alto nvel).
Imaginando que m
ultiplos programas em execucao desejem fazer uso dos diversos
recursos do hardware, nao e razoavel que o controle destes recursos seja transferido aos
programadores pois isto resultaria em uma sobrecarga desnecessaria a cada programa, sem
que fosse possvel otimizar o uso dos recursos. Alem disso, pequenos erros ou omissoes,
mesmo que involuntarias, poderiam provocar erros de dimensoes gigantescas, acarretando
perda de grandes quantidades de dados, violacoes importantes de seguranca e etc. O Sistema Operacional deve se encarregar de controlar os recursos do computador, garantindo
seu uso adequado, buscando tambem otimizar tal uso objetivando um melhor eficiencia
do sistema. Assim sendo, o Sistema Operacional se comporta como gerente dos recursos
do computador.

1.2

Objetivos de um Sistema Operacional

Existem varios Sistemas Operacionais existentes no mercado. Alguns sao mais conhecidos: Linux, Unix, Windows, entre outros. Porem, qualquer SO devem suportar alguns
princpios basicos:
oferecer os recursos do sistema de forma simples e transparente;
gerenciar a utilizacao dos recursos existentes buscando seu uso eficiente em termos
do sistema;
garantir a integridade e a seguranca dos dados armazenados e processados no sistema.
Alem destes objetivos, um Sistema Operacional tambem deve proporcionar uma interface adequada para que ele possa ser utilizado por seus usuarios. Historicamente as primeiras interfaces dos Sistemas Operacionais eram baseadas em um conjunto de palavras-chave
(comandos) e mensagens de dialogo que permitiam a execucao de tarefas e a comunicacao
entre homem (o operador) e maquina. Estes comandos e mensagens definiam a Interface Humano-Computador (IHC) daquele sistema. Atualmente a maioria dos sistemas
conta com interfaces graficas modernas e simples que buscam facilitar a utilizacao do
computador atraves de sua aparencia atraente e uso intuitivo.

1.3

Breve hist
orico - A Evolu
c
ao dos Sistemas Operacionais

Antigamente existia somente o hardware do computador [dC02]. O operador e programador da maquina eram uma so pessoa. Todo o controle do sistema era feito atraves


CAPTULO 1. INTRODUC
AO

de botoes e displays no console. O operador/programador monitorava a execucao de um


programa interativamente. A ativacao (setup) do computador era muito lenta e a depuracao extremamente trabalhosa. Assim, era necessario buscar solucoes que tornassem
mais facil e mais eficiente a utilizacao do computador. Os Sistemas Operacionais foram
entao criados com estas finalidades.
Os Sistemas Operacionais, assim como os dispositivos eletronicos, vem sofrendo mudancas ao longo das u
ltimas decadas. Podem ser identificadas varias geracoes, que estao
descritas a seguir.

1.3.1

Primeira Gera
c
ao (Anos 50)

Em 1953 surgiu o primeiro Sistema Operacional. Construdo pela GM, ele foi desenvolvido para um computador IBM modelo 701. Os primeiros sistemas eram voltados para
o processamento em batchs (lotes). O Sistema Operacional era responsavel pela entrada
de um programa e sada de outro, isto e, o seq
uenciamento de jobs. Uma vez que houvesse
um processo rodando, ele tinha completo controle sobre a maquina. Ao termino (normal
ou anormal) do processo, o controle retornava ao Sistema Operacional que preparava a
maquina para receber o proximo programa. Ainda assim, o tempo de ativacao (setup) do
computador era enorme.

1.3.2

Segunda Gera
c
ao (Anos 60)

Nesta epoca, varias empresas ja fabricavam Sistemas Operacionais. O principal objetivo era terminar o maior n
umero de processos por unidade de tempo, aumentando o
desempenho de um sistema de computador.
Foram desenvolvidos tambem nesta epoca os primeiros sistemas com caractersticas
de:
multiprogramac
ao - a mutiprogramacao permite que varios processos sejam executados simultaneamente;
multiprocessamento - no multiprocessamento varios programas sao processados
ao mesmo tempo em processadores diferentes;
time-sharing - sao ditos de tempo compartilhado. Usuarios interagem com a
maquina de uma maneira conversacional atraves de terminais;
tempo real - dentre eles se destaca o SABRE para reservas de passagens da American Airlines.
Apareceu tambem nesta geracao, o conceito de dispositivo independente. Nos sistemas da primeira geracao, o usuario que precisasse escrever dados em uma fita, deveria
referenciar, no seu programa, especificamente qual fita ele desejava. Na segunda geracao,
o usuario deveria apenas referenciar a necessidade de uma fita. O sistema, entao, ficaria
responsavel por reservar uma fita disponvel para ele.
Em abril de 1964, a IBM lancou a serie de computadores System/360 que eram compatveis em termos de arquitetura e tinham o mesmo Sistema Operacional OS/360. Esse


CAPTULO 1. INTRODUC
AO

sistema era adeq


uado tanto para aplicacoes cientficas quanto para aplicacoes comerciais.
Antes disso, cada vez que fosse necessario um sistema computacional mais potente, eram
oferecidos sistemas totalmente diferentes, o que implicava em uma conversao de hardware
e de software lenta e muito cara. Com a serie 360 era possvel passar anos e anos sem
precisar de conversoes. Foi um verdadeiro sucesso.

1.3.3

Terceira Gera
c
ao (Meio dos anos 60 ao meio dos anos 70)

A terceira geracao comecou efetivamente com a introducao da famlia 360. Os computadores dessa geracao foram desenvolvidos para serem sistemas de proposito geral. Eram
sistemas que suportavam simultaneamente o processamento batch, time-shared, temporeal e multiprocessado. Eram sistemas grandes e caros. Este conceito vendeu muitos
computadores, mas existia um overhead muito alto relativo ao tempo em que a maquina
gastava executando rotinas do Sistema Operacional. Alem disso, determinadas aplicacoes
nao necessitavam de todos os modos de processamento.
Uma excecao deste conceito foi o Sistema Operacional UNIX, que foi construdo nesta
epoca. No final dos anos 60, Ken Thompson e Dennis Ritchie, entre outros membros da
equipe do Bell Laboratories desenvolveram e implementaram um ambiente interativo, o
UNIX. Usando esse sistema, desenvolveram tambem a linguagem C. Uma grande parte
do Sistema Operacional foi escrita em C o que contribuiu para a popularidade de ambos.
Os sistemas comecaram a ser escritos em linguagens de alto nvel e surgiram as linguagens de controle que permitem controlar a execucao de processos.
Outro marco importante foi o surgimento da engenharia de software. Esta viria a ditar
regras para a construcao de sistemas. Os Sistemas Operacionais que eram um aglomerado
de programas escritos por pessoas com muito mais nocao de hardware do que software,
passaram a ser escritos de uma maneira mais disciplinada.

1.3.4

Quarta Gera
c
ao (Meio dos anos 70 ao final dos anos 80)

Nesta fase apareceram os Sistemas Operacionais para redes de computadores, onde o


usuario ganha acesso a redes locais ou geograficamente dispersas. O ponto importante
era transferir informacao entre computadores interconectados. Correio eletronico, transferencia de arquivo e aplicacoes de acesso a banco de dados proliferaram. O modelo
cliente/servidor tornou-se difundido. Os clientes sao os processos dos usuarios que necessitam de varios servicos e os servidores sao os componentes de hardware/software da rede
que realizam estes servicos. Os servidores sao geralmente dedicados a um tipo de tarefa
tais como impressao, acesso a banco de dados entre outros.
O conceito de processamento distribudo tornou-se largamente difundido. Quando
necessario, dados eram trazidos para serem processados em alguma instalacao de computador central de larga escala.
Com o advento do microprocessador, surgem os computadores pessoais, um dos mais
importantes desenvolvimentos com conseq
uencias sociais das u
ltimas decadas. Um computador poderia ser adquirido por um preco acessvel a muitos usuarios que passariam a
ter o seu proprio computador.


CAPTULO 1. INTRODUC
AO

A quantidade de pessoas com acesso a um computador tornou-se consideravelmente


maior e o termo user friendly comecou a ser muito utilizado. Ele significa que o sistema
apresenta, para usuarios leigos, um ambiente de acesso facil ao computador.
O conceito de maquina virtual tornou-se largamente utilizado. Os usuarios nao precisavam mais se preocupar com detalhes fsicos do sistema do computador que estava
sendo usado. Ao inves disso, o usuario via uma maquina virtual criada pelo Sistema
Operacional.
O campo da engenharia de software continuou a ter uma importancia significativa.

1.3.5

Quinta Gera
c
ao (Final dos anos 80 ao presente)

Nos anos 90 entramos na verdadeira era da computacao distribuda. As computacoes


sao divididas em subcomputacoes. Essas sao executadas em diferentes processadores,
que podem ser computadores multiprocessadores ou redes de computadores. As subcomputacoes podem ser distribudas de tal maneira que se possa obter vantagens utilizando
computadores de proposito especial atraves das redes.
As redes podem ser configuradas dinamicamente. Elas continuam operando ainda que
novos dispositivos e softwares sejam adicionados ou removidos. Quando cada novo servidor for adicionado, ele dara a` rede, atraves de um procedimento de registro, informacoes
sobre suas capacidades, polticas de ligacao, acesso entre outras. Os clientes podem entao
usar os servidores, quando necessario, de acordo com os termos descritos durante o registro. Para atingir flexibilidade real, clientes nao teriam conhecimento dos detalhes da
rede.
Este tipo de conectividade e facilitada por padroes de sistemas abertos e protocolos.
Esses padroes estao sendo desenvolvidos por alguns grupos internacionais como International Organization for Standardization, Open Software Foundation, X/Open entre outros.
Eles pretendem chegar a um acordo sobre um ambiente internacionalmente aceito para
padroes de comunicacao e de computacao. A tendencia e a computacao tornar-se muito
poderosa e portatil.
Nos anos recentes, foram introduzidos os computadores laptop e palmtop, que possibilitam `as pessoas transportarem seus computadores por toda parte. Com o desenvolvimento
de protocolos de comunicacao, os computadores portateis podem ser ligados em redes de
comunicacao e transmitir dados com alta confiabilidade.

1.4
1.4.1

Conceitos B
asicos em Sistemas Operacionais
Processos

Um conceito fundamental em sistemas operacionais e o de processo ou tarefa. Um processo (`as vezes chamado de processo seq
uencial) e basicamente um programa em execucao,
sendo uma entidade ativa que compete por recursos (principalmente CPU) e interage com
outros processos.
Em um instante qualquer, um processo esta em um determinado estado. Estes estados
podem ser:


CAPTULO 1. INTRODUC
AO

executando (usando a CPU para executar as instrucoes do programa);


bloqueado (aguardando recursos, que nao CPU, indisponveis no momento);
ativo (aguardando apenas CPU para executar).
Um processo em execucao passa por um sequencia de estados ordenados no tempo.
Um processo possui duas importantes propriedades:
o resultado da execucao de um processo independe da velocidade com que e executado;
se um processo for executado novamente com os mesmos dados, ele passara precisamente pela mesma sequencia de instrucoes e fornecera o mesmo resultado.
Estas propriedades enfatizam a natureza seq
uencial e determinstica de um processo.
O processo seq
uencial e definido pelo resultado de suas instrucoes, nao pela velocidade
com que as instrucoes sao executadas.

1.5

Classificac
ao

Quanto ao n
umero de usuarios:
Monousuario
Multiusuario - permitem acessos simultaneos ao computador atraves de dois ou mais
terminais de entrada.
Quanto ao n
umero de programas na Memoria Principal:
Monotarefa
Multitarefa - suporta a execucao concorrente de processos sobre um processador
u
nico, sem necessariamente prover elaborada forma de gerenciamento de recursos
(CPU, memoria, etc). Embora freq
uentemente associada com multiprogramacao,
multitarefa nao implica necessariamente em uma operacao multiusuario. Operacao
multiprocessos sem suporte de multiusuarios pode ser encontrada em sistemas operacionais de alguns computadores pessoais (por exemplo, Windows 98) e em sistemas
de tempo-real.
Quanto ao n
umero de CPU:
Monoprocessados
Multiprocessados - Embora a maioria dos computadores disponha de uma u
nica
CPU que executa instrucoes uma a uma, certos projetos mais avancados incrementaram a velocidade efetiva de computacao permitindo que varias instrucoes sejam
executadas ao mesmo tempo. Um computador com m
ultiplos processadores que
compartilhem uma memoria principal comum e chamado um multiprocessador. O
sistema que suporta tal configuracao e um sistema que suporta o multiprocessamento.


CAPTULO 1. INTRODUC
AO

Quanto ao tipo de processamento:


Batch - a principal caracterstica desse grupo e o fato de que o usuario perde o
controle do programa a partir do momento em que ele o submete ao sistema;
On-line - a caracterstica marcante desse grupo e permitir a monitoracao e o controle
do programa, atraves de um terminal, enquanto durar o processamento;
Tempo real - os sistemas de tempo real sao aqueles que devem fornecer uma resposta
a estmulos externos num perodo de tempo extremamente pequeno.

1.6

Requisitos B
asicos - Projeto de um S.O

Concorrencia
- usuario compartilha memoria, dispositivos de E/S e processadores; no entanto
cada usuario imagina que tem sua propria maquina;
- um usuario pode executar m
ultiplas atividades;
- SO deve evitar que os processos interajam de maneira erronea ou nao-intencional;
Suporte a E/S
- dispositivos de E/S sao lentos, por isso e desejavel que a CPU nao fique ociosa
durante operacoes de E/S;
- dispositivos operam independentemente; CPU fornece comandos para os dispositivos e vai executar outra coisa; quando a operacao se completa, o dispositivo
interrompe a CPU que para o que estava fazendo, trata a interrupcao e depois continua. O SO deve garantir que interrupcoes nao perturbem o estado corrente da
maquina; em algumas situacoes, deve-se gerenciar interrupcoes m
ultiplas;
Memoria
- usuarios/processos tem que compartilhar uma quantidade limitada de memoria;
- SO tem que coordenar esse compartilhamento disponibilizando memoria real
quando um processo esta sendo executado, atraves de paginacao ou segmentacao;
- programas sao escritos como se a maquina tivesse um tamanho muito maior;
Sistema de Arquivos
- arquivos nao podem desaparecer e sao pessoais;
- SO tem que alocar espaco em discos e fitas;
- SO tem que prover protecao.

Captulo 2
Classifica
c
ao dos Sistemas
Operacionais
A Figura 2.1 apresenta um panorama geral sobre a Classificacao dos Sistemas Operacionais. Os Sistemas Operacionais podem ser classificados sob tres pontos de vista diferentes.

Figura 2.1: Classificacao dos Sistemas Operacionais

2.1
2.1.1

Quanto ao n
umero de usu
arios
Monousu
ario

Apenas um e so um usuario trabalha de cada vez. Ex.: DOS e Windows (versoes mais
antigas e algumas versoes recentes porem limitadas).

DOS SISTEMAS OPERACIONAIS


CAPTULO 2. CLASSIFICAC
AO

2.1.2

10

Multiusu
ario

Permite o uso da maquina por varios usuarios ao mesmo tempo, ou seja, cada usuario
pode executar um ou mais programas simultaneamente. Ex.: Linux, Unix e Windows
(algumas versoes mais recentes).

2.2
2.2.1

Quanto ao n
umero de programas que s
ao executados
Sistema Monoprogramado ou Monotarefa

Processador, memoria principal e dispositivos de E/S (perifericos) ficam dedicados


a um u
nico processo/programa (Figura 2.2). Os programas sao executados instrucao-ainstrucao, ate que seu processamento seja concludo, ou seja, todos os recursos da maquina
sao alocados para um u
nico programa ate a conclusao de sua execucao.

Figura 2.2: Sistema Monoprogramado/Monotarefa


Por exemplo, enquanto o programa aguarda a digitacao de um dado, o processador fica
ocioso sem realizar qualquer tarefa. Neste caso, a memoria e subtilizada caso o programa
nao a preencha totalmente e os perifericos, como discos e impressoras, nem sempre sao
utilizados de forma integral. O Sistema Operacional so tem capacidade de controlar e
gerenciar um programa de cada vez. Sao de simples implementacao, se comparados a
outros sistemas, nao havendo muita preocupacao com problemas de protecao, pois so
existe um usuario/programa utilizando-o.

2.2.2

Sistema Multiprogramado ou Multitarefa

Os recursos da maquina sao alocados de modo dinamico entre o n


umero de programas
ativos, de acordo com o nvel de prioridade ou o estagio de execucao de cada um dos pro-

DOS SISTEMAS OPERACIONAIS


CAPTULO 2. CLASSIFICAC
AO

11

gramas. O Sistema Operacional gerencia o acesso concorrente aos seus diversos recursos,
de forma ordenada e protegida, pelos diversos programas. Dessa forma e possvel aumentar a produtividade e reduzir os custos de utilizacao do sistema, aproveitando melhor o
hardware.
Por exemplo, enquanto um programa espera por uma operacao de leitura ou gravacao
em disco, outros programas podem estar sendo processados no mesmo intervalo de tempo.

Figura 2.3: Sistemas Multiprogramaveis - Multitarefa


Estes tipos de SO sao mais complexos e eficientes do que os sistemas monoprogramados, ja que varios programas utilizam os mesmos recursos (Figura 2.3). Podem ser classificados pela forma com que suas aplicacoes sao gerenciadas/interacao com os usuarios,
sendo que um Sistema Operacional pode suportar um ou mais desses tipos de processamento:
BATCH (LOTE) - Os programas quando executados sao armazenados em disco ou
fita, onde esperam para serem atendidos. Normalmente, os programas (jobs ou
tarefas) que sao executados nesses sistemas nao exigem interacao com os usuarios
(por exemplo, compilacoes);
TIME-SHARING (TEMPO-COMPARTILHADO) - O Sistema Operacional aloca
uma fatia de tempo (time-slice) do processador para cada usuario. Caso o programa do usuario nao esteja concludo nesse intervalo de tempo, ele e substitudo
por um de outro usuario e fica esperando por uma nova fatia de tempo. Permitem
a interacao dos usuarios com o sistema;
REAL-TIME (TEMPO-REAL) - Semelhante ao time-sharing, sendo a maior diferenca o tempo de resposta exigido na execucao. Enquanto em sistemas de tempo
compartilhado o tempo de resposta pode variar sem comprometer as aplicacoes em

DOS SISTEMAS OPERACIONAIS


CAPTULO 2. CLASSIFICAC
AO

12

execucao, nos sistemas de tempo real os tempos de resposta devem estar dentro
de limites rgidos. Nao existe a ideia de fatia de tempo, um programa executa o
tempo que for necessario, ou ate que apareca outro prioritario em funcao de sua
importancia. Essa importancia ou prioridade de execucao e controlada pela propria
aplicacao e nao pelo Sistema Operacional, como acontece no sistema de tempocompartilhado. Esse tipo de sistema esta normalmente presente em controle de
processos, como no monitoramento de refinarias de petroleo, controle de trafego
aereo, usinas termoeletricas e nucleares, ou em qualquer aplicacao onde a seguranca
e fator fundamental.

2.3

Do ponto de vista do n
umero de processadores

2.3.1

Sistema Monoprocessado

Caracteriza-se por possuir um u


nico processador, sendo este controlado pelo Sistema
Operacional instalado.

2.3.2

Sistema Multiprocessado

Caracteriza-se por possuir mais de um processador, sendo que estes podem compartilhar o mesmo Sistema Operacional, ou cada um pode possuir o seu proprio sistema.
M
ultiplos processadores permitem que varios programas sejam executados ao mesmo
tempo, ou que um programa seja dividido em subprogramas, para execucao simultanea
por mais de um processador. Sistemas com m
ultiplos processadores possibilitam aumentar a capacidade computacional com menor custo (escalabilidade), alem de permitirem
a reconfiguracao e o balanceamento do sistema. A reconfiguracao e a capacidade de
um sistema poder continuar o processamento, mesmo se um dos processadores falhar ou
parar de funcionar, embora com menor capacidade de computacao. O balanceamento
possibilita distribuir a carga de processamento entre os diversos sistemas da configuracao,
melhorando o desempenho como um todo.
O multiprocessamento mantem todos os conceitos de multiprogramacao, so que aplicados a varios processadores. Com o multiprocessamento, novos problemas de concorrencia
foram surgindo, pois varios processadores podem estar acessando as mesmas areas de
memoria, alem da dificuldade de interligacao eficiente dos processadores, memoria e perifericos. Para o desenvolvimento de Sistemas Operacionais com m
ultiplos processadores
e importante que se conheca a forma de comunicacao entre esses processadores e o grau
de compartilhamento da memoria principal e dos dispositivos de E/S. Em funcao desses
fatores, podemos classificar os sistemas em:
Fortemente acoplados (Figura 2.4) - dois ou mais processadores (multiprocessadores) compartilhando uma u
nica memoria e controlados por apenas um u
nico Sistema
Operacional. Podem ser divididos conforme a simetria existente entre os processadores, ou seja, se todos os processadores podem executar ou nao as mesmas funcoes:
- nos sistemas assimetricos ou mestre/escravo somente um processador (mestre)
pode executar servicos do Sistema Operacional, como realizar operacoes de E/S.

DOS SISTEMAS OPERACIONAIS


CAPTULO 2. CLASSIFICAC
AO

13

Sempre que um processador do tipo escravo precisar realizar uma operacao de E/S,
tera que requisitar o servico ao processador mestre;
- nos sistemas simetricos (SMP Simmetric MultiProcessing) todos os processadores realizam as mesmas funcoes, ficando a cargo de um u
nico processador algumas
poucas funcoes, como, por exemplo, a inicializacao (boot).
Fracamente acoplados (Figura 2.5) - caracterizam-se por possuir dois ou mais processadores (multicomputadores), conectados atraves de linhas de comunicacao, onde
cada um desses sistemas funciona de forma independente, possuindo seu(s) proprio(s)
processador(es), memoria principal e dispositivos de E/S. Em uma rede multicomputadores, onde existem dois um mais sistemas independentes, tambem chamados
de nos, hosts ou estacoes, podemos classificar os sistemas como sendo:
- Sistemas Operacionais de Redes - cada no possui seu proprio SO, alem
de hardware e software que possibilitam ao sistema ter acesso o outros nos da rede.
Cada no e totalmente independente um do outro, podendo inclusive possuir Sistemas
Operacionais diferentes. Os Sistemas Operacionais de redes permitem copia de
arquivos, impressao e ate gerencia remotas, alem de servicos de correio eletronico,
emulacao de terminais. A ideia e prover o compartilhamento de recursos e troca de
informacoes. Ex.: Redes locais.
- Sistemas Operacionais Distribudos - cada no tambem possui seu proprio
Sistema Operacional, memoria principal, processador e dispositivos de E/S. Porem,
existe um relacionamento mais forte entre esses nos, que, geralmente, possuem o
mesmo SO. Para o usuario e suas aplicacoes, o conjunto de computadores e visto
como um u
nico sistema, como se nao existisse uma rede de computadores. A grande
vantagem e a possibilidade do balanceamento de carga, ou seja, quando um programa e admitido para execucao, o sistema escolhe o no que esta com menor carga
de processamento e este vai executa-lo. Tambem e permitido o compartilhamento
de recursos independentemente do computador em que a aplicacao estiver sendo
executado. Esse tipo de sistema distribudo e muitas vezes chamado de cluster.

DOS SISTEMAS OPERACIONAIS


CAPTULO 2. CLASSIFICAC
AO

Figura 2.4: Sistemas Fortemente Acoplados

Figura 2.5: Sistemas Fracamente Acoplados

14

15

Captulo 3
Sistemas de Arquivo
com o sistema de arquivos que o usuario mais nota a presenca do Sistema OperaciE
onal [dC02]. Os dados e programas sao armazenados em arquivos. O armazenamento
de informacoes possibilita a recuperacao, reutilizacao e modificacao nos dados e nos programas. Os computadores podem armazenar informacoes em varios dispositivos fsicos
diferentes, tais como fitas magneticas e discos magneticos e opticos. Neste captulo, sao
apresentados o conceito de arquivos e suas formas de armazenamento. Nas secoes a seguir
discutiremos os metodos de acesso e de armazenamento de arquivos no dispositivo fsico.
Serao abordadas ainda as estruturas de diretorios que mantem a organizacao no acesso e
as formas de protecao `a arquivos.

3.1

Conceito de Arquivos

Os arquivos (files) podem ser definidos como uma unidade logica de armazenamento
de informacao, destinada a abstrair as propriedades fsicas dos meios de armazenamento.
Ou ainda, uma seq
uencia de registros cujo significado e definido pelo seu criador.
Um arquivo e referenciado por seu nome e tem propriedades como: tipo, tempo de
criacao, tamanho, nome do proprietario entre outras. Estas informacoes ficam armazenadas num diretorio, que e uma tabela de smbolos que permite identificar tais informacoes.
As estruturas de diretorios serao vistas com mais detalhes na Secao 3.4.
Diferentes tipos de informacao podem ser armazenadas em um arquivo, como programas fonte e objeto, dados entre outros. Um arquivo tem uma certa estrutura definida
de acordo com seu uso. Por exemplo, um arquivo texto e uma seq
uencia de caracteres
organizada em linhas e possivelmente em paginas.
Diferentes Sistemas Operacionais possuem diferentes tipos de sistemas de arquivos.
Alguns exemplos mais comuns sao: FAT, FAT32, NTFS, EXT, EXT2, EXT3 e ReiserFS.
Sao varias as diferencas entre a maneira de tratamento dos arquivos. Ambientes Windows (FAT e NTFS), por exemplo, diferenciam arquivos pela extensao (ex.: teste.doc),
enquanto sistemas como Linux (EXT e ReiserFS) tratam as extensoes simplesmente como
parte do nome do arquivo, nao associando portanto uma extensao a um determinado programa (como faz o Windows).
Se o Sistema Operacional reconhece a estrutura de um arquivo, ele pode entao opera-

CAPTULO 3. SISTEMAS DE ARQUIVO

16

lo de maneira satisfatoria. A desvantagem neste caso e que o Sistema Operacional pode


se tornar muito grande, pois havera a necessidade de um trecho de codigo para cada tipo
de estrutura diferente. No outro extremo, o Sistema Operacional nao fornece nenhum
suporte aos tipos de arquivo. Esta abordagem foi adotada no Sistema Operacional UNIX,
nele todo arquivo e simplesmente uma seq
uencia de bytes.
Um arquivo e um tipo abstrato de dados. Para defin-lo, e necessario considerar as
operacoes que podem ser realizadas sobre os mesmos. Estas operacoes sao realizadas
atraves de chamadas ao Sistema Operacional e sao:
criac
ao sao necessarios dois passos para se criar um arquivo. Encontrar um
espaco para ele no dispositivo de armazenamento e colocar a entrada do arquivo no
diretorio informando seu nome e sua localizacao no dispositivo;
escrita a escrita e feita atraves de uma chamada ao sistema especificando o nome
do arquivo e a informacao a ser escrita;
leitura a leitura e realizada por uma chamada ao sistema especificando o nome
do arquivo e a localizacao onde o bloco lido sera colocado;
apagar o diretorio e pesquisado e quando a entrada associada ao arquivo e encontrada, ela e invalidada e liberado todo o espaco destinado ao arquivo.

3.2

Armazenamento

As formas fsicas mais comuns que os sistemas de computadores utilizam para armazenar informacoes sao fitas magneticas e discos. Cada um destes dispositivos tem suas
proprias caractersticas e organizacao fsica.
A vantagem da utilizacao de fitas magneticas e a simplicidade, porem algumas vezes
e ineficiente. Quando ha arquivos muito grandes pode ser necessario o armazenamento
em varias fitas. A fita possui um diretorio para determinar quais sao os arquivos contidos
nela e a localizacao de cada um deles. Podem ser guardadas, tambem, outras informacoes
adicionais, como o tamanho do arquivo. O diretorio normalmente e colocado no incio da
fita para aumentar a velocidade de acesso. Pela natureza fsica das fitas magneticas podese perder muito tempo quando sao realizados acessos alternados em arquivos armazenados
distantes um do outro, pois a fita possui acesso seq
uencial.
Neste captulo abordaremos as formas de armazenamento em disco magnetico.
Fisicamente os discos sao relativamente simples, como ilustrado na Figura 3.1. Eles
possuem duas superfcies recobertas com um material magnetico, similar ao das fitas
magneticas. Os discos sao divididos em trilhas que variam de tamanho segundo o disk
driver. Cada trilha e dividida em setores. Um setor e a menor unidade de informacao
que pode ser lida ou escrita em um disco. Para acessar o disco, o sistema de arquivo deve
especificar superfcie, trilha e setor. Os discos, como as fitas, possuem um diretorio com
informacoes sobre cada arquivo armazenado.

CAPTULO 3. SISTEMAS DE ARQUIVO

17

Figura 3.1: Caractersticas fsicas de um disco

3.3

Gerenciamento de Espa
co em Disco

O sistema de arquivos deve ser capaz de controlar a area de espaco livre nos discos,
utilizar metodos de acesso `as informacoes armazenadas e metodos de alocacao que sejam
convenientes e eficientes. A seguir sao abordados cada um destes tres pontos.
Uma vez que os discos possuem uma quantidade limitada de espaco, e necessario reutilizar os espacos liberados pelos arquivos que foram apagados. Para manter informacoes
sobre os espacos livres em disco, o Sistema Operacional tem uma lista de espacos livres.
As informacoes armazenadas em arquivos devem ser buscadas e colocadas dentro da
memoria do computador para serem utilizadas. Os metodos de acesso a`s informacoes de
um arquivo podem ser feitos de modo seq
uencial ou direto. Alguns sistemas fornecem
somente um dos metodos, outros oferecem os dois. Esta escolha e uma decisao de projeto.
Por permitir acesso direto aos arquivos, os discos possibilitam flexibilidade na implementacao de arquivos. Muitos arquivos podem ser armazenados em um disco. Os tres
principais metodos de alocacao de espaco em disco utilizados sao: contguo, encadeado
(linked ) e indexado.

3.3.1

Lista de Espa
cos Livres

A lista de espacos livres (free space list) registra o endereco de todos os blocos que estao
livres no disco. Para criar um arquivo, faz-se uma busca a essa lista para procurar a quantidade de blocos necessaria e atribuir os blocos ao novo arquivo. O endereco destes blocos
entao e retirado da lista de espacos livres. Quando um arquivo e apagado, seu espaco e
adicionado a` lista. Existem basicamente quatro formas diferentes de implementacao da
lista de espacos livres, e que estao descritas a seguir.
Freq
uentemente, a lista de espacos livres e implementada como um vetor de bits.
Cada bloco e representado por um bit. Se o bit estiver desativado (0) o bloco esta livre.
Por exemplo, na seq
uencia 00111011 ..., os blocos 0, 1 e 5 estao livres. As vantagens
desta implementacao sao a simplicidade e a eficiencia para encontrar n blocos livres e
consecutivos no disco. A desvantagem e um overhead em termos de ocupacao de espaco
de disco extra para armazenar o mapa de bits.
Uma outra maneira de implementacao da lista e encadear todos os blocos livres, man-

CAPTULO 3. SISTEMAS DE ARQUIVO

18

tendo o ponteiro do primeiro bloco livre na lista. Este bloco contem um ponteiro para o
proximo bloco e assim por diante. Para atravessar a lista devemos ler cada bloco. Isto
torna este esquema pouco eficiente, pois requer um tempo substancial de E/S.
Podemos ainda, armazenar o endereco dos n blocos livres no primeiro bloco livre, e
colocar o ponteiro deste primeiro bloco na lista. Se houver mais blocos livres do que a
quantidade que pode ser armazenada em um bloco, a u
ltima posicao do bloco e o endereco
de um outro bloco contendo os ponteiros para outros n blocos livres. Nesta implementacao
podemos encontrar blocos livres mais rapidamente.
Existe outro esquema que pode tirar vantagem do fato de que, geralmente, diversos
blocos contguos podem ser alocados e liberados simultaneamente. Dessa forma, pode-se
manter uma lista de enderecos livres, guardando o endereco do primeiro bloco livre e o
n
umero n de blocos contguos livres. Cada entrada na lista entao consiste de um endereco
e um contador.
Os discos permitem acesso direto aos arquivos. Assim, necessitamos de metodos para
alocar os arquivos nos discos que utilizem de modo apropriado o espaco do disco e permitam acesso rapido aos arquivos.

3.3.2

M
etodos de Acesso

Os acessos aos arquivos tanto podem ser seq


uenciais quanto diretos. A seguir descrevemos estes dois metodos de acesso.
Acesso Seq
uencial O acesso seq
uencial e o modo de acesso de arquivos mais comum.
A informacao e buscada em ordem, uma posicao apos a outra. Apos um registro avanca-se
o ponteiro para o proximo registro no arquivo e assim por diante.
O grande volume de operacoes em um arquivo sao leituras e escritas. Tal arquivo
pode ser reposicionado, e em alguns sistemas, um programa pode ser capaz de deslocar n
registros para frente ou para tras, por algum valor de n inteiro.
Acesso Direto No acesso direto o arquivo e visto como uma seq
uencia numerada de
blocos. Um bloco e geralmente uma quantidade de informacao de tamanho fixo, definida
pelo Sistema Operacional. O acesso direto nao tem restricoes na ordem de acesso a cada
bloco. Dessa forma, qualquer bloco pode ser lido ou escrito aleatoriamente.
O metodo de acesso direto e bastante utilizado para acesso imediato a grandes quantidades de informacao.

3.3.3

M
etodos de Aloca
c
ao de Arquivos

Os tres principais metodos de alocacao de espaco em disco que sao utilizados sao o
contguo, o encadeado (linked ) e o indexado. Estes metodos sao descritos nas secoes
a seguir, ressaltando suas vantagens e desvantagens.
Alocac
ao Contgua
O metodo de alocacao contgua (contiguos allocation) requer que cada arquivo ocupe
um conjunto de enderecos contguos no disco. A alocacao contgua e definida pelo endereco
de disco do primeiro bloco e o tamanho do arquivo. Se um arquivo possui tamanho n, e

CAPTULO 3. SISTEMAS DE ARQUIVO

19

comeca na localizacao b, entao ele ocupa os blocos b, b + 1, b + 2, ..., b + n 1. Estas


informacoes sao armazenadas no diretorio. A Figura 3.2 ilustra esta forma de alocacao.

Figura 3.2: Alocacao contgua


Os acessos aos arquivos sao razoavelmente faceis e podem ser feitos seq
uencialmente
ou diretamente. No acesso seq
uencial, o sistema de arquivo conhece o u
ltimo endereco
de acesso e quando necessario, le o proximo bloco. No acesso direto a um bloco i de um
arquivo que comeca num bloco b, podemos imediatamente realizar o acesso ao bloco bi .
Uma das dificuldades com alocacao contgua e encontrar espaco livre para um novo
arquivo. Esta decisao depende da implementacao da lista de espacos livres. Uma outra
trivial em uma copia,
dificuldade e saber o tamanho do arquivo na hora de ser criado. E
mas difcil de estimar num arquivo novo que esteja sendo gerado.
Uma vez que a lista de espacos livres e definida, podemos decidir como encontrar espaco
para um arquivo alocado contiguamente. Para um arquivo a ser criado de comprimento
de n blocos, devemos buscar na lista por n blocos livres que sejam contguos. Se a lista de
espacos livres for implementada como um vetor de bits, devemos encontrar n bits 0s em
uma linha. Para uma lista de espacos livres implementada com enderecos e contadores,
devemos encontrar um contador com pelo menos n (n
umeros de blocos dos arquivos).
Para alocar os arquivos utilizando esse metodo, as solucoes padrao sao first-fi t e bestfit. A solucao first-fit encontra o primeiro espaco livre que seja suficiente para atender o
pedido. A solucao best-fit encontra o menor espaco livre que seja grande o suficiente para
atender o pedido.
Com relacao a eficiencia destes algoritmos, o algoritmo first-fit e mais rapido que o bestfit, pois o algoritmo best-fit necessita realizar uma busca pela lista inteira. A desvantagem
do algoritmo first-fit e a fragmentacao que pode ser maior que no algoritmo best-fit.
A alocacao contgua provoca fragmentacao externa. A fragmentacao externa existe
quando ha espaco total de disco suficiente para satisfazer um pedido, mas este espaco nao
e contguo. Isto e, a memoria do dispositivo esta fragmentada em um grande n
umero de
espacos pequenos.

CAPTULO 3. SISTEMAS DE ARQUIVO

20

Para solucionar o problema da fragmentacao externa pode ser utilizada a tecnica de


compactacao. Ela consiste basicamente em copiar o sistema de arquivos inteiro para outro
disco ou fita e depois copia-lo de volta ao disco, deixando novamente um espaco contguo
maior. O custo desta compactacao e o tempo, que pode ser relevante. Em sistemas como
Windows, esta tecnica se chama desfragmentacao.
Alocac
ao Encadeada
O metodo de alocacao encadeada (linked allocation) soluciona o problema da necessidade de estimar o tamanho de um arquivo no armazenamento contguo. Neste metodo,
cada arquivo e uma lista encadeada de blocos de disco. Os blocos do disco podem estar
espalhados em qualquer lugar. O diretorio contem um ponteiro para o primeiro e o u
ltimo
bloco do arquivo. E ainda, cada bloco possui um ponteiro para o proximo bloco. A Figura
3.3 mostra este metodo de alocacao.

Figura 3.3: Alocacao encadeada


A criacao de um arquivo e facil, basta somente criar uma nova entrada no diretorio
do dispositivo. O ponteiro do incio do arquivo deve ser iniciado com valor nulo, para
` medida em que o arquivo vai sendo escrito, o endereco do
significar arquivo vazio. A
primeiro bloco e retirado da lista de espacos livres e colocado no diretorio. Os ponteiros
dos blocos seguintes vao sendo retirados da lista de espacos livres e encadeados ao final
do arquivo. Para ler um arquivo, lemos os blocos seguindo os ponteiros. Com o metodo
de alocacao encadeada nao e necessario saber o tamanho do arquivo. Alem disso, este
metodo nao provoca fragmentacao externa.
Uma desvantagem na alocacao encadeada e somente permitir o acesso seq
uencial, em
cada arquivo. Para encontrar o bloco i de um arquivo, devemos comecar no incio daquele
arquivo e seguir os ponteiros ate o i esimo bloco. Outras desvantagens sao a perda do
espaco ocupado pelos ponteiros e a confiabilidade. Se perdermos um ponteiro todo o
restante do arquivo apos o ponteiro ficara perdido.

CAPTULO 3. SISTEMAS DE ARQUIVO

21

Alocac
ao Indexada
O metodo de alocacao indexada (indexed allocation) soluciona os problemas de declaracao do tamanho do arquivo e de fragmentacao externa, relativos a alocacao contgua;
e do acesso seq
uencial e dos ponteiros espalhados pelo disco, relativos a alocacao encadeada. A alocacao indexada resolve este problema colocando todos os ponteiros juntos em
um local chamado bloco de ndices (index block ).
Cada arquivo tem o seu proprio bloco de ndices, que e um array de enderecos de
blocos de disco. A i esima entrada no bloco de ndices aponta para o i esimo bloco do
arquivo. No diretorio e armazenado o endereco do bloco de ndices, como pode ser visto
na Figura 3.4.

Figura 3.4: Alocacao indexada


Quando um arquivo e criado, todos os ponteiros no bloco de ndices sao iniciados com
valor nulo. Quando o i esimo bloco e escrito, e removido um bloco da lista de espacos
livres e seu endereco e colocado na i esima entrada do bloco de ndices.
A alocacao indexada suporta o acesso direto sem sofrer de fragmentacao externa.
Qualquer bloco livre em qualquer lugar do disco pode satisfazer um pedido por mais
memoria. Porem, este metodo de alocacao sofre de perda de espaco. Geralmente, o
overhead no armazenamento dos ponteiros no bloco de ndices e maior do que na alocacao
encadeada. Muitos arquivos sao pequenos. Assim dependendo do tamanho do bloco de
ndices a perda de espaco pode ser um problema.
Neste ponto a questao e que tamanho deveria ser um bloco de ndices. Ele deveria
ser o menor possvel, porem se for muito pequeno nao sera suficiente para armazenar os
ponteiros para um arquivo maior. Um bloco de ndices normalmente e do tamanho de
um setor de disco. Para arquivos grandes que necessitam de mais de um setor, os blocos
de ndice usam ou uma alocacao encadeada do blocos de ndices ou blocos de ndices que
apontam para outros blocos de ndices.

CAPTULO 3. SISTEMAS DE ARQUIVO

22

Existem Sistemas Operacionais que suportam mais de um metodo de alocacao.

3.4

Sistema de Diret
orio

Os arquivos sao representados por entradas no diretorio do dispositivo. O diretorio


armazena informacoes tais como nome, localizacao, tamanho, tipo, para todos os arquivos
daquele dispositivo.
Quando existe um aumento expressivo da quantidade de memoria e do n
umero de
usuarios no sistema do computador, e necessario impor uma estrutura de diretorio no
sistema de arquivos. A estrutura de diretorio e um meio de organizar os muitos arquivos
presentes no sistema.
No diretorio sao armazenados dois tipos de informacao. A primeira esta relacionada
com o dispositivo fsico (a localizacao do arquivo, seu tamanho e metodo de alocacao).
A segunda, por sua vez, esta relacionada a` organizacao logica dos arquivos (nome, tipo,
proprietario, codigos de protecao).
As informacoes mantidas para cada arquivo nos diretorios variam de um Sistema
Operacional para outro Sistema Operacional. Algumas das informacoes que podem existir
sao listadas a seguir:
nome do arquivo o nome simbolico de um arquivo;
tipo do arquivo para aqueles sistemas que suportam tipos diferentes de arquivos;
localizac
ao localizacao do arquivo no dispositivo;
tamanho o tamanho corrente do arquivo e o tamanho maximo;
posic
ao corrente um ponteiro para a posicao corrente de leitura/escrita no
arquivo;
protec
ao informacao de controle de acesso para leitura, escrita e execucao;
contabilidade de uso indica o n
umero de processos que estao correntemente
usando o arquivo;
tempo, data e identificac
ao do processo Estas informacoes podem ser mantidas para criacao, u
ltima modificacao e u
ltimo uso. Podem ser u
teis para protecao
e monitoracao de uso.
Muitas estruturas de diretorio diferentes tem sido utilizadas. O diretorio e essencialmente uma tabela de smbolos. O Sistema Operacional utiliza o nome do arquivo simbolico
para achar o arquivo. Quando considerarmos uma estrutura de diretorio em particular,
devemos ter em mente as operacoes que podem ser realizadas no diretorio. Dentre estas
operacoes podemos citar: busca, criacao, apagar, listar seu conte
udo e fazer copias para
backup.
A seguir descrevemos algumas estruturas de diretorio, iniciando pela mais simples,
que e o diretorio em um u
nico nvel, ate uma estrutura mais complexa, como o diretorio
em grafo geral.

CAPTULO 3. SISTEMAS DE ARQUIVO

3.4.1

23

Diret
orio em um Unico
Nvel

A estrutura de diretorio em um u
nico nvel e a mais simples. Todos os arquivos estao
facil de dar suporte e entender. Este tipo
contidos no mesmo diretorio (mesmo nvel). E
de diretorio tem a limitacao de que todos os arquivos devem ter nomes distintos. A figura
3.5 a seguir ilustra esta estrutura.

Figura 3.5: Diretorio de um u


nico nvel
A desvantagem desta estrutura e a possibilidade de confusao entre os nomes de arquivos
de usuarios diferentes. Todos os usuarios compartilham o diretorio.

3.4.2

Diret
orio em Dois Nveis

Uma solucao possvel para o problema do diretorio em um u


nico nvel e criar um
diretorio para cada usuario. Este diretorio e logico, uma vez que todos os arquivos estao
fisicamente no mesmo dispositivo.
Na estrutura de diretorio em dois nveis, cada usuario tem seu proprio diretorio de
arquivo de usuario (user file directory - UFD). Cada diretorio de usuario tem uma estrutura similar. Quando um usuario entra no sistema, o diretorio de arquivo mestre
(master file directory - MFD) do sistema e pesquisado. O MFD e indexado pelo nome
do usuario ou um n
umero de contabilidade. Cada entrada aponta para o diretorio de um
usuario. Quando um usuario se refere a um arquivo em particular, somente o seu diretorio
e pesquisado. A figura 3.6 mostra esta estrutura.
Esta estrutura isola um usuario de outro. A desvantagem da estrutura em dois nveis
existe quando um usuario quer utilizar arquivos de outros usuarios. Alguns sistemas nao
permitem este acesso. Se o acesso e permitido, ele e feito atraves do nome do usuario e do
nome do arquivo, que definem o nome do caminho (path name). Todo arquivo no sistema
tem um u
nico path name. Por exemplo, se o usuario 1 deseja realizar um acesso ao seu
proprio arquivo cat basta referencia-lo. Para se referenciar ao arquivo cat do usuario 2
ele deve indicar o caminho como /user2/cat.

3.4.3

Diret
orio Estruturado em Arvore

O diretorio em dois nveis pode ser visto como uma arvore com profundidade dois. E
natural estender esta estrutura para uma arvore com profundidade qualquer, que sao os
diretorios estruturados em arvore. Nesta estrutura existe um diretorio raiz da arvore. Os
nos intermediarios da arvore sao os diretorios dos usuarios, que podem ainda criar seus

CAPTULO 3. SISTEMAS DE ARQUIVO

24

Figura 3.6: Diretorio em dois nveis


proprios subdiretorios e organizar seus arquivos. Esta estrutura pode ser vista na figura
3.7.

Figura 3.7: Diretorio em arvore


Todo o arquivo no sistema tem um u
nico nome considerando o seu path name. O path
name e o caminho da raiz atraves de todos os subdiretorios ao arquivo especificado. A
seq
uencia de diretorios pesquisada quando um arquivo e buscado e chamada de caminho
de busca (search path). O path name pode ser apresentado de duas maneiras diferentes:
completo define um caminho da raiz ao arquivo;

CAPTULO 3. SISTEMAS DE ARQUIVO

25

relativo define um caminho do diretorio corrente ao arquivo.


Os arquivos podem ser facilmente compartilhados. Por exemplo, um usuario pode criar
um subdiretorio contendo os arquivos que serao compartilhados com outros usuarios. Um
destes usuarios pode fazer o acesso aos arquivos compartilhados especificando o path name
dos arquivos.
importante ressaltar que o acesso deve respeitar a hierarquia de diretorios. Se um
E
usuario nao tiver acesso a um determinado diretorio, este usuario nao tera acesso aos
subdiretorios (mesmo seja liberado o acesso aos subdiretorios).
A maneira de se apagar um diretorio estruturado em arvore e uma poltica de decisao
interessante. Se um diretorio esta vazio ele pode ser apagado. Se ele nao estiver vazio
podemos decidir entre duas abordagens. A primeira, e so apagar o diretorio se estiver
vazio. Isso implica em apagar todos os arquivos e subdiretorios contidos nele primeiro.
A segunda abordagem, e assumir que quando e pedido para se apagar um diretorio,
deva-se apagar tambem todos os seus arquivos e subdiretorios. A escolha da forma de
implementacao e uma decisao de projeto e ambas sao utilizadas nos sistemas.

3.4.4

Diret
orio em Grafo Acclico e Grafo Geral

Estas estruturas nao serao vistas em detalhes nesta apostila pois o conceito de Grafos
nao sera abordado no Curso Tecnico.
Diret
orio em Grafo Acclico
permite que subdiretorios e arquivos sejam compartilhados (ao contrario da estrutura em arvore que nao permite o compartilhamento explcito); a maneira mais
comum de compartilhar arquivos e por meio de uma entrada no diretorio, chamada
link 1 ;
estrutura de diretorio e mais flexvel que uma estrutura em arvore simples, mas
tambem e mais complexa;
Um arquivo pode ter varios nomes completos (atraves dos links). Dessa forma,
nomes com caminhos diferentes podem se referenciar a um mesmo arquivo;
Como cada arquivo tem mais de uma trajetoria de busca, a eliminacao de um arquivo
pode ser feita de varias maneiras.
Diret
orio em Grafo Geral
permite que subdiretorios formem ciclos;
existem diversos caminhos que levam a um mesmo arquivo ou diretorio;
a existencia de ciclos pode gerar problemas quando se deseja apagar arquivos ou
diretorios.
1

Um link
e um ponteiro para outro subdiret
orio ou arquivo

CAPTULO 3. SISTEMAS DE ARQUIVO

3.5

26

Protec
ao de Arquivos

Num sistema de computador e importante manter a protecao das informacoes contra


danos fsicos (confiabilidade) e contra acessos improprios (protecao).
A confiabilidade geralmente e obtida realizando uma copia dos arquivos em intervalos
regulares. A protecao de arquivos e um resultado direto da habilidade de realizar acessos
a eles. Sistemas que nao permitem a um usuario referenciar os arquivos de outro usuario,
nao precisam de protecao. Um extremo seria fornecer protecao completa proibindo o
acesso. O outro extremo e fornecer livre acesso sem nenhuma protecao. Essas abordagens
sao muito radicais. Na verdade o que e necessario e um controle de acesso.
Uma maneira e associar uma senha (password ) a cada arquivo. So podem ser feitos
acessos a este arquivo o usuario que conhecer a senha.
Outros mecanismos de protecao fornecem acesso controlado, limitando os tipos de
acesso que podem ser feitos ao arquivo. Existem diversas operacoes que podem ser controladas como leitura, escrita, execucao, copia, edicao, entre outras.
O controle de acesso e feito com a identidade do usuario. Varios usuarios podem ter
necessidade de acessos de tipos diferentes a arquivos e a diretorios. Uma lista de acesso
(acess list) e associada com cada arquivo e com cada diretorio, especificando o nome do
usuario e os tipos de acesso permitidos. Quando e feito um pedido, o Sistema Operacional
verifica a lista de acesso, permitindo-o ou nao. Uma desvantagem com este mecanismo e
o tamanho da lista de acesso.
Uma solucao para reduzir o tamanho da lista de acesso e tentar classificar os usuarios
em tres grupos:
propriet
ario o usuario que criou o arquivo;
grupo um conjunto de usuarios que compartilham o arquivo e necessitam de
acesso similar;
universo todos os usuarios do sistema.
Com esta classificacao, somente tres campos sao necessarios para garantir a protecao.
Cada campo e uma colecao de bits que permitem ou previnem a operacao associada com
cada bit. Por exemplo, no Sistema Operacional Linux existem tres campos (proprietario,
grupo, outros) de tres bits cada: rwx. O bit r controla o acesso de leitura, o bit w controla
o acesso de escrita e o bit x controla a execucao. Neste esquema nove bits por arquivos
sao necessarios para registrar a protecao da informacao. Para ilustrar o controle de acesso
a arquivos no SO Linux, alguns exerccios serao trabalhados em aula.

3.5.1

Senha de Acesso

A associacao de uma senha de acesso a um arquivo e um princpio bastante simples. O


controle de acesso se resume ao usuario ter o conhecimento da senha e, consequentemente,
ter a liberacao do acesso ao arquivo concedida pelo sistema.
Como cada arquivo possui apenas uma senha e o acesso e liberado ou nao na sua
totalidade. Isso significa que nao e possvel determinar quais tipos de operacao podem ou

CAPTULO 3. SISTEMAS DE ARQUIVO

27

nao ser concedidas. Outra desvantagem desse metodo e a dificuldade de compartilhamento


de arquivos, pois alem do dono do arquivo todos os demais usuarios teriam que conhecer
a senha de acesso.

3.5.2

Grupo de Usu
arios

A protecao baseada em grupos de usuarios e implementada por diversos Sistemas


Operacionais. Esse tipo de protecao tem como princpio a associacao de cada usuario do
sistema a um grupo. Os grupos de usuarios sao organizados logicamente com o objetivo
de compartilhar arquivos e diretorios, sendo que os usuarios que desejam compartilhar
arquivos entre si devem pertencer a um mesmo grupo.
Esse mecanismo implementa tres nveis de protecao ao arquivo: owner (dono), group
(grupo) e all (todos). Nessa especificacao e necessario associar o tipo de acesso aos tres
nveis de protecao. Por exemplo: leitura, escrita, execucao e eliminacao.

28

Captulo 4
Ger
encia do Processador
O escalonamento da CPU - Unidade Central de Processamento - e o conceito mais re atraves do chavealevante de Sistemas Operacionais multiprogramados/multitarefa. E
mento do processador entre os varios processos, que o Sistema Operacional pode tornar
a maquina mais eficiente e produtiva [dC02].
O escalonamento de processos e a forma como o processador (existente em um
sistema computacional) e utilizado para efetuar o processamento, isto e, como os processos
sao distribudos (escalonados) para execucao no processador.
Tanenbaum [Tan92] propoe a seguinte definicao para escalonamento de processos:
Quando mais de um processo e executavel, o Sistema Operacional deve decidir qual
sera executado primeiro. A parte do SO dedicada a esta decisao e chamada escalonador
(scheduler ) e o algoritmo utilizado e chamado algoritmo de escalonamento (scheduling
algorithm) .
Simplificando, podemos afirmar que em um sistema onde so exista um u
nico processador, o escalonamento representa a maneira e a ordem como os processos serao executados.
A forma com que se da o escalonamento e, em grande parte, responsavel pela produtividade e eficiencia atingidas por um sistema computacional. Mais do que um simples
mecanismo, o escalonamento deve representar uma poltica de tratamento dos processos
que permita obter os melhores resultados possveis em um sistema.

4.1
4.1.1

Processos
Conceito de Multiprogramac
ao

Sem d
uvida, o conceito de multiprogramacao e um dos mais importantes nos sistemas
operacionais modernos. Se existirem varios programas carregados na memoria ao mesmo
tempo, a CPU pode ser compartilhada entre eles, aumentando a eficiencia da maquina e
produzindo mais resultados em menos tempo.
A ideia por tras da multiprogramacao e bastante simples. Quando um programa
libera a CPU, seja para realizar alguma operacao de E/S ou por outro motivo, ela fica
parada. Enquanto espera que o programa volte para executar, a CPU nao realiza nenhum
trabalho u
til. Para acabar com a ociosidade deste tempo varios programas sao mantidos
ao mesmo tempo na memoria e o sistema operacional se encarrega de escolher um deles


CAPTULO 4. GERENCIA
DO PROCESSADOR

29

para executar. Assim, sempre que um programa e interrompido, um outro e escolhido


para ser executado em seu lugar. Com isso, a CPU estara durante grande parte do tempo
ocupada processando instrucoes de programas.
Os benefcios da multiprogramacao sao varios, entre eles e possvel citar: aumento da
utilizacao da CPU e da taxa de sada do sistema computacional, isto e, da quantidade de
trabalho realizada dentro de um intervalo de tempo (throughput).

4.1.2

Conceito de Processo

Informalmente, um processo e um programa em execucao. Um programa e uma


seq
uencia de instrucoes executaveis e pode conter diferentes fluxos de execucao. Ele pode
ser visto como uma entidade passiva ou ainda como uma entidade ativa que descreve a
execucao de um dos possveis fluxos do programa. A execucao de um processo se da de
maneira seq
uencial, ou seja, em qualquer instante de tempo, no maximo uma instrucao
esta sendo executada (em sistemas monoprocessados).
Uma outra ideia associada a` definicao de processo, esta na necessidade de descrever a
existencia de varias atividades que ocorrem em paralelo dentro do sistema computacional.
Em um ambiente multiprogramado/multitarefa, varios usuarios podem estar executando
seus programas simultaneamente, dificultando a gerencia de m
ultiplas atividades paralelas. Dessa forma, o modelo de processo e uma maneira de se decompor este problema em
componentes mais simples. Todo o software no computador e organizado em processos
seq
uenciais ou apenas processos.
Com a multiprogramacao, cada usuario tem a sensacao de ter uma maquina (processador) so para si, o que na pratica nao acontece. Na verdade, o processador central se
reveza entre os varios usuarios e uma das tarefas do Sistema Operacional e tornar isto
o mais transparente possvel. Quando o processador muda de um processo para outro,
e necessario que o sistema salve todas as informacoes necessarias para a retomada do
processo interrompido. Assim, pode-se dizer que ao conceito de processo estao associadas
informacoes que caracterizam o seu contexto de execucao. Estas informacoes sao armazenadas numa estrutura que recebe o nome de Bloco de Controle do Processo (PCB) e
que deve estar armazenada na area de memoria destinada ao sistema operacional, para
evitar que o usuario possa realizar o acesso a ele. Os PCBs representam os processos para
o sistema operacional e a sua quantidade varia com o tempo `a medida que processos sao
criados e terminam dinamicamente. Algumas informacoes armazenadas em um PCB sao:
idenificacao, estado, prioridade, ponteiro-codigos, ponteiro-dados, entre outras.

4.1.3

Threads

As threads sao um mecanismo que aumenta a eficiencia do sistema operacional reduzindo o overhead causado pela troca de contexto dos processos. Elas podem ser vistas
como a menor unidade de execucao do sistema e compartilham todos os recursos com o
processo que as criou.
Em sistemas com threads, um processo com exatamente uma thread e equivalente a
um processo classico. Cada thread pertence a exatamente um u
nico processo. Sob o
ponto de vista de threads, processos sao estaticos e apenas as threads sao escalonadas


CAPTULO 4. GERENCIA
DO PROCESSADOR

30

para execucao. Cada thread representa um fluxo de controle separado com sua pilha e seu
estado da maquina. Como todos os recursos, exceto o processador, sao controlados pelo
processo que cria a thread o chaveamento da CPU entre threads e mais rapido e eficiente.
Entretanto, o chaveamento entre threads de processos diferentes gastam um tempo maior,
pois envolve o processo todo.

4.1.4

Cria
c
ao de Processos

Nos sistemas mais antigos so o sistema operacional podia criar novos processos. Atualmente, a maioria dos sistemas permitem que os usuarios criem e destruam seus proprios
processos. Um grande n
umero de programas pode se beneficiar disto, como programas de
simulacao, ordenacao e computacao cientfica.
Para um programa poder criar novos processos o sistema operacional deve fornecer primitivas especficas (chamadas ao sistema) para tal finalidade. Quando um novo processo
e criado, inicialmente o seu PCB e preparado com as informacoes basicas. Em seguida
e feita uma chamada ao sistema operacional para a sua criacao. Algumas linguagens de
programacao oferecem suporte para o controle de processos.

4.1.5

Estados de um Processo

A execucao de um processo comeca por um ciclo de execucao na CPU. Este ciclo e


seguido por um ciclo de E/S, do qual a CPU participa no incio e no final. Novamente ha
um ciclo de CPU e outro de E/S ate que o processo termine a sua execucao. O tamanho
dos ciclos de CPU e de E/S varia de processo para processo. Sendo assim, podemos
identificar dois tipos de processos. Uns que requisitam mais E/S e tem ciclos de CPU
muito pequenos e outros que gastam mais tempo executando instrucoes e tem ciclos de
E/S pequenos [dC02].
Durante a execucao de um programa o processo pode se encontrar em um dos estados
a seguir:
executando diz-se que um processo esta executando se ele esta usando o processador. Em sistemas com uma u
nica CPU, no maximo um processo pode estar neste
estado em qualquer instante de tempo;
pronto um processo esta no estado pronto quando espera que a CPU seja liberada
pelo processo que a esta usando. Este estado pode ser considerado como a entrada
para que um processo novo possa competir pelo processador com outros processos,
que tambem estejam neste estado;
bloqueado um processo esta bloqueado quando nao pode ser executado porque
espera que alguma condicao externa aconteca. Por exemplo, o fim de uma operacao
de E/S. Assim que a condicao e satisfeita, o processo volta para o estado pronto;
terminado um processo esta terminado quando a u
ltima instrucao do programa
foi executada.
A maneira como um processo passa de um estado para o outro e mostrada na Figura
4.1 e na Tabela 4.1, a seguir.


CAPTULO 4. GERENCIA
DO PROCESSADOR

31

Figura 4.1: Estados de um processo


Evento
tempo
despacho

Transic
ao
executando > pronto
pronto > executando

Significado
fatia de tempo do processo executando expirou
Sistema Operacional entrega o processador
a um processo no estado pronto
bloqueio executando > bloqueado
processo solicitou operacao de E/S
despertar
bloqueado > pronto
evento esperado acontece
Tabela 4.1: Transicao dos estados de um processo

4.2

Objetivos do Escalonamento

A poltica de escalonamento deve levar em conta uma serie de diferentes necessidades,


contemplando os seguintes objetivos:
Ser justo: todos os processos devem ser tratados igualmente, tendo possibilidades
identicas de uso do processador, devendo ser evitado o adiamento indefinido;
Maximizar a produtividade (throughput): procurar maximizar o n
umero de
tarefas processadas por unidade de tempo;
Ser previsvel: duas tarefas devem ser sempre executadas com aproximadamente
o mesmo tempo e custo computacional se submetidas a ambientes identicos;
Minimizar o tempo de resposta para usuarios interativos;
Maximizar o n
umero possvel de usuarios interativos;
Minimizar a sobrecarga (overhead ): recursos nao devem ser desperdicados;
Favorecer processos bem comportados: processos que tenham comportamento
adequado podem receber um servico melhor;
Balancear o uso de recursos: o escalonador deve manter todos os recursos ocupados, ou seja, processos que usam recursos sub-utilizados devem ser favorecidos;
Exibir degradacao previsvel e progressiva em situacoes de intensa carga de trabalho.


CAPTULO 4. GERENCIA
DO PROCESSADOR

32

Como pode ser observado, alguns destes objetivos sao contraditorios, pois, dado que a
quantidade de tempo disponvel de processamento (tempo do processador) e finita, assim
como os demais recursos computacionais, para que um processo seja favorecido outro deve
ser prejudicado.
O maior problema existente no projeto de algoritmos de escalonamento esta associado
a natureza imprevisvel dos processos, pois nao e possvel prever se um dado processo
utilizara intensamente o processador, ou se precisara de grande quantidade de memoria
ou se necessitara numerosos acessos aos dispositivos de E/S (entrada e sada).

4.3

Nveis de Escalonamento

Existem tres nveis distintos de escalonamento em um sistema computacional quando


se considera a freq
uencia e complexidade das operacoes envolvidas [Jr04].
Escalonamento de alto nvel- chamado tambem de escalonamento de tarefas,
corresponde a admissao de processos, isto e, a determinacao de quais tarefas passarao
a competir pelos recursos do sistema. Uma vez admitidas, as tarefas transformam-se
em processos.
Escalonamento de nvel intermedi
ario - Corresponde a determinacao de quais
processos existentes competirao pelo uso do processador (processos ativos). Correspondem a rotinas internas do SO.
Escalonamento de baixo nvel - Rotinas que determinam qual processos, dentre
os processos ativos, sera o proximo processo que efetivamente utilizara o processador.
Os nveis de escalonamento alto, intermediario e baixo tambem sao conhecidos respectivamente como escalonamento de longo prazo, medio prazo e curto prazo. O escalonamento de alto nvel ou de longo prazo ocorre menos freq
uentemente em um sistema
enquanto o escalonamento de baixo nvel ou de curto prazo ocorre constantemente, dado
que representa a troca de contexto e o chaveamento do processador entre os processos
ativos.

4.4

Escalonamento Preemptivo e N
ao-Preemptivo

Um algoritmo de escalonamento e dito nao-preemptivo quando temos que o processador designado para um certo processo nao pode ser retirado deste ate que o processo seja
finalizado (completion). Analogamente, um algoritmo de escalonamento e considerado
preemptivo quando o processador designado para um processo pode ser retirado deste em
favor de um outro processo.
Algoritmos preemptivos sao mais adequados para sistemas em que m
ultiplos processos requerem atencao do sistema, ou seja, no caso de sistemas multiusuario interativos
(sistemas em tempo repartido) ou em sistema de tempo real. Nestes casos, a preemptividade representa a troca do processo em execucao, assim sendo, para que o processador
seja retirado de um processo (interrompendo seu trabalho) e designado a outro processo,


CAPTULO 4. GERENCIA
DO PROCESSADOR

33

anteriormente interrompido, e fundamental que ocorra a troca de contexto dos processos. Tal troca exige que todo o estado de execucao de um processo seja adequadamente
armazenado para sua posterior recuperacao, representando uma sobrecarga (um custo)
computacional para realizacao desta troca e armazenagem de tais dados. Usualmente os
algoritmos preemptivos sao mais complexos dada a natureza imprevisvel dos processos.
Por sua vez, os algoritmos nao-preemptivos sao mais simples e adequados para o
processamento nao interativo, semelhante aos esquemas de processamento em lote dos
sistemas batch. Embora nao proporcionando interatividade, sao geralmente mais eficientes
e previsveis quanto ao tempo de entrega de suas tarefas.
A preemptividade de certos algoritmos se baseia no fato de que o processador e, naturalmente, um recurso preemptivo, ou seja, um recurso que pode ser retirado de um
processo e posteriormente devolvido sem prejuzo. O mesmo acontece com a memoria.
Por outro lado, outros tipos de recursos nao podem sofrer preempcao, tais como impressoras e ate mesmo arquivos, dado que muitas vezes nao podem ser retirados de um processo
sem que ocorra prejuzo para este.

4.5

Qualidade do Escalonamento

Existem varias criterios que permitem a avaliacao da qualidade do servico oferecido


por um algoritmo de escalonamento [SGG01]: uso do processador, throughput, tempo de
resposta e tempo de permanencia. O tempo de permanencia (ou tempo de retorno) e um
criterio simples dado pela soma do tempo de espera, com o tempo de servico (tempo de
execucao), como pode ser visto a seguir:
tp = tpermanencia = tespera + tservico
Normalmente espera-se que o tempo de permanencia seja o menor possvel. Na Figura
4.2 temos uma representacao grafica do tempo de permanencia.

Figura 4.2: Representacao grafica do tempo de permanencia


Uma outra forma de avaliar o escalonamento e utilizando-se o tempo de permanencia
normalizado (tpn), ou seja, a razao entre o tempo de permanencia (tp) e o tempo de
servico (ts) (Figura 4.3).
Se a espera for 0 (zero), o que constitui o melhor caso possvel, teremos que o tempo
de permanencia normalizado de um processo sera 1 (um). Assim sendo, valores maiores
do que este indicam um pior servico oferecido pelo algoritmo de escalonamento.


CAPTULO 4. GERENCIA
DO PROCESSADOR

34

Figura 4.3: Avaliacao do escalonamento

4.6

Algoritmos de Escalonamento

Existem varios algoritmos que sao utilizados para a realizacao do escalonamento de


baixo nvel ou de curto prazo. Em todos eles, o principal objetivo e designar o processador para um certo processo dentre varios processos existentes, otimizando um ou mais
aspectos do comportamento geral do sistema. Stasllings [Sta92] divide os algoritmos de
escalonamento em 2 categorias:
Orientados ao usu
ario: quando procuram otimizar os tempos de resposta e permanencia alem da previsibilidade.
Orientados ao sistema: quando enfatizam a produtividade, a taxa de utilizacao
do processador, o tratamento justo e o balanceamento do uso de recursos.
Nesta apostila serao abordados os seguintes algoritmos de escalonamento:
First In First Out
Highest Priority First
Shortest Job First
Round Robin
Multilevel Queues
Obs.: Os algoritmos Highest Response-Ratio Next e Shortest Remaining Time nao
serao abordados aqui uma vez que ambos se baseiam em estimativas de tempo de execucao
de processos, ou seja, possuem deficiencias quanto a` precisao das estimativas e abusos por
parte dos usuarios (definicao imprecisa do tempo de execucao).

4.6.1

Escalonamento FIFO (First In First Out)

a forma mais simples de escalonamento. No escalonamento FIFO os processos


E
prontos sao colocados em uma fila organizada por ordem de chegada, o que corresponde
dizer que sua funcao de selecao e min(tchegada ).
Com esta funcao de selecao, seleciona-se dentre os processos na fila de espera aquele
com menor tempo de chegada. Tal processo recebe o uso do processador ate que seja
completado, ou seja, o processo permanece em execucao ate que seja finalizado, de forma
que os demais processos na fila fiquem esperando por sua oportunidade de processamento.
Assim sendo, o escalonamento FIFO e um algoritmo nao-preemptivo, pois os processos
em execucao nao sao interrompidos.


CAPTULO 4. GERENCIA
DO PROCESSADOR

35

Embora de igual tratamento a todos os processos, ocorre que processos de pequena


duracao nao sao favorecidos pois tem seu tempo de resposta fortemente influenciado (aumento consideravel) em funcao da quantidade de processos posicionados `a frente e tambem
pela duracao destes. Outro ponto e que processos importantes podem ficar a espera devido `a execucao de outros processos menos importantes dado que o escalonamento FIFO
nao concebe qualquer mecanismo de distincao entre processos (por exemplo, processos
com diferentes nveis de prioridade).
Avaliemos o exemplo ilustrado pela Tabela 4.2, onde quatro processos A, B, C e D
com tempos de processamento distintos, respectivamente 3, 35, 12 e 4 segundos, sao
escalonados conforme sua chegada pelo SO.
Processo
A
B
C
D

tchegada
0
1
2
3

tservi
co
3
35
12
4
Medias

tespera
0
2
36
47
21.25

tperm
3
37
48
51
34.75

tpn
1.00
1.06
4.00
12.75
4.7

Tabela 4.2: Exemplo de fila de processos sob escalonamento FIFO


Podemos perceber que, em funcao de como ocorreu o escalonamento, o menor processo
obteve o pior servico, num esquema de escalonamento que tende a ter tempos medios de
resposta maiores quanto maior o n
umero de processos em espera. Esta forma de escalonamento, semelhante aos sistemas de processamento em lote (batch systems) nao e utilizada
como esquema principal de escalonamento, mas como forma auxiliar de escalonamento
para processamento de filas batch (lote).

4.6.2

Escalonamento HPF (Highest Priority First)

O escalonamento HPF (Highest Priority First) ou escalonamento por prioridades e


uma variante do escalonamento FIFO onde os processos em espera pelo processador sao
organizados numa fila segundo sua prioridade. Sao colocados a frente os processos de
maior prioridade, isto e, sua funcao de selecao e max (prioridade), favorecendo os processos
considerados mais importantes [Tan92].
Apos iniciados, os processos nao sao interrompidos, ou seja, e uma forma de escalonamento nao-preemptivo, oferecendo como a vantagem de proporcionar tempos medios de
espera menores para processos prioritarios.
A prioridade e, em geral, representada por um n
umero inteiro, no entanto nao existe
consenso em definir prioridade maiores como n
umeros maiores (indicando sua maior importancia) ou o inverso (indicando sua ordem preferencial). A prioridade pode ser definida
interna ou externamente ao sistema (com ou sem participacao do usuario). Quando determinada internamente, o sistema pode utilizar diversos fatores, tais como quantidade
de memoria necessaria, estimativas do tempo de servico e outros elementos para calcular
a prioridade. Notemos que o tempo de processamento de um job nao pode ser determinado antes de seu processamento, sendo necessario o uso de estimativas feitas pelo


CAPTULO 4. GERENCIA
DO PROCESSADOR

36

usuario ou pelo programador, as quais sao com freq


uencia pouco precisas. No caso de
prioridade externamente, a mesma e simplesmente atribuda ao processo pelo operador
ou pelo programador, de maneira emprica (chute).
Avaliemos o mesmo exemplo utilizado para o escalonamento FIFO (Secao 4.6.1), onde
quatro processos A, B, C e D com tempos de processamento distintos, respectivamente 3,
35, 12 e 4 segundos, sao escalonados conforme suas prioridades, definidas externamente,
como mostra a Tabela 4.3.
Processo
A
C
B
D

tchegada
0
2
1
3

Prio
4
1
2
3

tservi
co
3
12
35
4
Medias

tespera
0
1
14
47
15.5

tperm
3
13
49
51
29.00

tpn
1.00
1.08
1.4
12.75
4.06

Tabela 4.3: Exemplo de fila de processos sob escalonamento HPF


Podemos perceber que, ao ordenar os processos segundo sua prioridade, alguns processos podem ser prejudicados em funcao de outros de maior prioridade, pois se processos
grande sao executados primeiro ocorre uma degradacao significativa para os demais processos.
Observe tambem que o processo A, embora tenha prioridade mais baixa que os demais,
comecou a ser executado antes devido ao seu tempo de chegada, nao sendo interrompido
com a chegada de processos de maior prioridade, pois este algoritmo n
ao
e preemptivo.
Por outro lado, devemos considerar tambem que um processo de prioridade relativamente
baixa pode ter sua execucao adiada indefinidamente pela chegada contnua de processos
de maior prioridade, ou seja pode sofrer de estagnac
ao.
No caso do HPF, existe uma solucao, relativamente simples, para a solucao do problema da estagnacao denominada envelhecimento. Tal solucao consiste em progressivamente aumentar a prioridade dos processos que aguardam na fila a medida que o
tempo passa, ou seja, como forma de compensar a espera e evitar a estagnacao, processos
poderiam ter sua prioridade incrementada ate que sejam executados [SGG01].
Conforme as prioridades e os processos, os resultados apresentados por este algoritmo
poderiam tanto aproxima-lo do escalonamento FIFO como apresentar resultados de qualidade melhores. No caso, os resultados exibidos foram um pouco melhores. Na verdade
sua maior qualidade esta na execucao seletiva de jobs conforme sua prioridade calculada
ou atribuda.
Da mesma forma que no escalonamento FIFO, o escalonamento HPF nao e utilizado
como esquema principal de escalonamento, mas como forma auxiliar de escalonamento
para processamento de filas batch.

4.6.3

Escalonamento SJF (Shortest Job First)

O escalonamento SJF (Shortest Job First) ou menor job primeiro, tambem e conhecido
um caso especial
como SPF (Shortest Process First) ou menor processo primeiro. E


CAPTULO 4. GERENCIA
DO PROCESSADOR

37

do HPF, onde o tempo de servico e tomado como prioridade, ou seja, os processos em


espera pelo processador sao organizados numa fila segundo seu tempo de execucao, sendo
colocados a frente os menores processos jobs, isto e, sua funcao de selecao e min(tservico ),
favorecendo os processos que podem ser finalizados intervalos de tempo menores.
Apos iniciados, os processos nao sao interrompidos, ou seja, e uma forma de escalonamento nao-preemptivo, mas mesmo assim oferece a vantagem de proporcionar tempos
medios de espera menores do aqueles obtidos em um esquema FIFO.
O grande problema deste esquema de escalonamento e que o tempo de processamento
de um job nao pode ser determinado antes de seu processamento, sendo necessario o uso
de estimativas feitas pelo usuario ou pelo programador, as quais, na maioria das vezes, sao
pouco precisas. Para evitar abusos por parte dos usuarios (que podem indicar estimativas
mais baixas que os tempos esperados), podem ser adotadas polticas de premiacao em
funcao do acerto das estimativas, mas isto nao resolve uma serie de problemas, entre
os quais o incorreto posicionamento de um job pelo sistema devido a uma estimativa
incorreta, prejudicando outros jobs.
Uma outra questao e a possibilidade deste algoritmos provocar a estagnacao de processos grandes os quais podem permanecer indefinidamente na fila de espera caso processos
de menor duracao cheguem continuamente ao sistema. Uma solucao para este problema
seria impor um tempo maximo de espera fixo ou proporcional ao tempo de servico, a
partir do qual tais processos seriam executados, para evitar a estagnacao.
Avaliemos o mesmo exemplo utilizado para o escalonamento FIFO (Secao 4.6.1), onde
quatro processos A, B, C e D com tempos de processamento distintos, respectivamente
3, 35, 12 e 4 segundos, sao escalonados em conforme suas duracoes e tempo de chegada
pelo sistema operacional, como mostra a Tabela 4.4.
Processo
A
D
C
B

tchegada
0
3
2
1

tservico
3
4
12
35
Medias

tespera
0
0
5
18
5.75

tperm
3
4
17
53
19.25

tpn
1.00
1.00
1.42
1.51
1.23

Tabela 4.4: Exemplo de fila de processos sob Escalonamento SJF


possvel perceber que neste caso, em funcao do escalonamento ordenar os processos
E
segundo sua duracao, os menores processos obtiveram o melhor servico sem que isso resultasse numa degradacao significativa para os processos maiores. Tanto o tempo medio de
espera como os tempos medios de permanencia e de permanencia normalizado apresentam
valores bastante inferiores aos obtidos com o escalonamento FIFO (Tabela 4.2) ou mesmo
o HPF (Tabela 4.3), evidenciando as qualidades do escalonamento SJF.
Da mesma forma que os demais esquemas de escalonamento vistos, o escalonamento
SJF nao e utilizado como esquema principal de escalonamento, mas como forma auxiliar
de escalonamento para processamento de filas batch.


CAPTULO 4. GERENCIA
DO PROCESSADOR

4.6.4

38

Escalonamento RR (Round-Robin)

No escalonamento RR (Round Robin) ou circular os processos tambem sao organizados


numa fila segundo sua ordem de chegada, sendo entao despachados para execucao. No
entanto, ao inves de serem executados ate o fim (completion), a cada processo e concedido
apenas um pequeno intervalo de tempo (time slice ou quantum). Caso o processo nao seja
finalizado neste intervalo de tempo, ocorre sua substituicao pelo proximo processo na fila
de processos ativos, sendo o processo em execucao interrompido e novamente colocado
na fila de processos prontos, porem, no final da fila. Isto significa que ao final de seu
intervalo de tempo, isto e, de seu quantum, ocorre a preempcao do processador, ou seja,
o processador e designado para outro processo, sendo salvo o contexto do processo interrompido para permitir a continuidade da sua execucao quando sua vez chegar novamente.
Tal situacao e ilustrada na Figura 4.4.

Figura 4.4: Escalonamento RR (Round Robin)


O escalonamento RR se baseia na utilizacao de temporizadores, constituindo um algoritmo preemptivo bastante adequado para ambiente interativos. Desta forma, em sistemas
de tempo repartido, onde existem m
ultiplos usuarios simultaneos, e necessario garantir
tempos de resposta razoaveis. A sobrecarga (overhead ) imposta pela troca de contexto
representa um investimento (e nao um custo) para atingir-se um bom nvel de eficiencia,
pois com diversos processos em execucao simultanea (pseudoparalelismo) e possvel manter ocupados todos os recursos do sistema.
A determinacao do tamanho do intervalo de tempo (quantum) e extremamente importante, pois relaciona-se com a sobrecarga imposta ao sistema pelas trocas de contexto
dos processos ativos. Usualmente o tamanho do quantum utilizado e tipicamente algo em
torno de 20 ms. Com ou aumento da velocidade dos processadores, a troca de contexto se
da mais rapidamente, diminuindo a sobrecarga e aumentando ligeiramente a quantidade
de usuarios possveis para um mesmo limite de tempo de resposta.
Usando o mesmo cenario descrito nas Secoes 4.6.1, 4.6.2 e 4.6.3, o algoritmo RR
apresenta resultados bem melhores que o escalonamento FIFO e pouco inferiores aos
algoritmos SJF, HRN e SRT. Por outro lado, apresenta um grau de interatividade muito
superior a todos os algoritmos citados, compensando largamente seu emprego.

4.6.5

Escalonamento MQ (Multilevel Queues)

Quando e possvel dividir os processos em diferentes categorias, conforme seu tipo,


prioridade e consumo de recursos, pode-se empregar o escalonamento em m
ultiplas filas


CAPTULO 4. GERENCIA
DO PROCESSADOR

39

[Tan92]. Deste modo, a fila de processos prontos seria separada em varias filas, uma para
cada tipo de processo, tais como processos do sistema, processos interativos, processos de
edicao interativa, processos batch e processos secundarios, como ilustrado na Figura 4.5,
onde a fila de processos do sistema teria a maior prioridade enquanto a fila de processos
secundarios teria a menor prioridade.

Figura 4.5: Escalonamento MQ (Multiple queues)


Cada fila pode possuir seu proprio algoritmo de escalonamento, ou seja, algumas
filas podem ser preemptivas enquanto outras nao, sendo que os criterios de selecao dos
processos para execucao e da preempcao, quando possvel, podem ser distintos de uma fila
comum que a fila de processos do sistema e batch usem um algoritmo tal
para outra. E
como o FIFO enquanto que as demais utilizem algoritmos semelhantes ao Round Robin.
Entre as diferentes filas a divisao do processamento tambem pode ocorrer de diversas
possvel realizar tal divisao considerando um algoritmo de prioridade simples,
maneiras. E
onde a fila de maior prioridade tem seus processos executados ate que esteja vazia. Isto
pode comprometer o nvel de resposta dos processos nas demais filas, possibilitando ate
mesmo a estagnacao de processos nas filas de prioridades inferiores. Outra solucao seria o
emprego de um algoritmo Round Robim assimetrico, onde, por exemplo, a fila de processos
de sistema poderia receber uma janela de processamento de 50% enquanto as demais
receberiam janelas progressivamente menores, tais como 25%, 15%, 10% e 5%.
Uma alternativa simplificada de emprego deste algoritmos e o uso de apenas duas
filas, uma para processos em primeiro plano (foreground ) e outra para processos em segundo plano (background ), de modo que as duas filas utilizam um algoritmo Round Robin


CAPTULO 4. GERENCIA
DO PROCESSADOR

40

convencional e a divisao do processamento entre as filas utilizasse um Round Robin assimetrico que dedicasse 80% do processamento para a fila de primeiro plano e os 20%
restantes para fila de segundo plano.

4.7

Comparac
ao dos algoritmos de escalonamento

Nas Tabelas 4.5 e 4.6 foram agrupadas as principais caratersticas dos algoritmos de
escalonamento estudados nas secoes anteriores, permitindo a avaliacao comparativa em
termos de sua funcao de selecao, preemptividade, throughput (produtividade), tempo de
resposta e overhead (sobrecarga) apresentados.
Caracterstica
FIFO
Funcao de selecao
min(tchegada )
Preemptividade
nao
Throughput
media
tresposta
alto
Sobrecarga
baixa
Adiamento Indefinido
nao

HPF
max (prio)
nao
media
baixo:medio
baixa:alta
sim

SJF
min(tservico )
nao
alta
baixo:medio
baixa:alta
sim

Tabela 4.5: Algoritmos de escalonamento nao-preemptivos


Dentre os algoritmos nao-preemptivos (Tabela 4.5) temos que apresentam o seguinte
comportamento geral:
o algoritmo FIFO e o mais simples e tambem o mais ineficiente, pois acaba penalizando processos pequenos que ocorram entre processos maiores e tambem nao trata
o uso de dispositivos de E/S da maneira adequada, penalizando o sistema como um
todo;
o algoritmo HPF e relativamente simples e permite implantar uma poltica diferencida de escalonamento atraves da definicao de prioridades. No entanto os resultados
do escalonamento tendem a se aproximar do FIFO quando ocorrem varios processos
com o mesmo nvel de prioridade;
o escalonamento SJF penaliza os processos longos, sendo possvel o adiamento indefinido destes. Por outro lado, proporciona uma alta produtividade as custas de
uma maior sobrecarga e tempos de resposta medios.
Analisando agora os algoritmos preemptivos (Tabela 4.6), estes possuem implementacao
mais sofisticada que os algoritmos nao-preemptivos:
a solucao Round Robin e uma alternativa geral simples, que proporciona tratamento
justo e e ainda razoavelmente produtivo, pois sua eficiencia se acha bastante associada ao tamanho do quantum;
o algoritmo MQ e uma solucao que pode ser ligeiramente mais complexa que o
Round Robin. Permite obter bons resultados quando a categorizacao dos processos
e possvel.


CAPTULO 4. GERENCIA
DO PROCESSADOR

Caracterstica
RR
MQ
Funcao de selecao
constante
complexa
Preemptividade
sim (quantum) sim (quantum)
Throughput
media
media
tresposta
baixo:medio
baixo:medio
Sobrecarga
baixa
media:alta
Adiamento Indefinido
nao
sim
Tabela 4.6: Algoritmos de escalonamento preemptivos

41

42

Captulo 5
Gerenciamento de Mem
oria
na
A memoria possui uma importancia fundamental num sistema de computador. E
memoria principal que ficam armazenados (temporariamente) os programas que serao
executados e a maior parte dos dados que serao manipulados. A memoria interage com a
CPU e com o sub-sistema de E/S.
O sistema operacional e responsavel pelo controle das atividades da memoria, tais
como: (1)manter informacoes sobre a sua ocupacao, (2)armazenar e liberar espacos e
(3)decidir quais processos serao carregados quando houver espacos livres. Existem diferentes esquemas de gerenciamento de memoria.
Neste captulo serao abordadas algumas estrategias de gerenciamento de memoria que
tem sido utilizadas nos sistemas de computadores. A maior parte das estrategias tem como
objetivo manter varios processos simultaneamente na memoria principal para permitir a
multiprogramacao.

5.1

Introduc
ao

Num sistema de computador tanto a CPU quanto o sub-sistema de E/S interagem com
a memoria. Dado que cada conte
udo (palavra ou byte) armazenado na memoria possui
seu proprio endereco, a interacao e feita atraves de uma seq
uencia de leituras e escritas a
enderecos de memoria especficos.
Em um sistema de computador existem tipos de memoria com diferentes caractersticas,
que formam uma hierarquia como a ilustrada na Figura 5.1.
A hierarquia de memoria pode ser analisada segundo suas capacidades de armazenamento, custo por bit e tempo de acesso. Partindo do nvel mais inferior da Figura 5.1, as
memorias secundarias sao capazes de armazenar uma grande quantidade de informacao,
seu custo por bit e menor e o seu tempo de acesso e relativamente maior do que as
memorias dos nveis superiores.
No segundo nvel, esta a memoria principal (RAM). Ela e capaz de armazenar uma
quantidade menor de informacao, seu custo por bit e maior e seu tempo de acesso e menor
do que as memorias secundarias.
No nvel mais superior estao as memorias cache. Estas memorias sao as mais rapidas
e com o maior custo por bit. Por serem muito caras as memorias cache sao pequenas, isto


CAPTULO 5. GERENCIAMENTO DE MEMORIA

43

Figura 5.1: Hierarquia de memoria


e, sao as que tem menor capacidade de armazenamento em relacao as demais.
A abordagem deste captulo sao as diversas polticas de gerenciamento para a memoria
primaria ou memoria principal (RAM). O gerenciamento de memoria usa regras, ou
polticas, de gerenciamento para:
busca - determina quando um bloco de informacao deve ser transferido da memoria
secundaria para a memoria principal;
armazenamento - determina onde o bloco de informacao deve ser colocado na
memoria principal;
substituic
ao - determina qual bloco de informacao deve ser substitudo por um
novo bloco.
Existem muitos esquemas diferentes de gerenciamento de memoria. A selecao de um
esquema, em particular, depende de muitos fatores, mas especialmente depende do suporte
de hardware do sistema. Iniciamos com o hardware menos complexo ate atingirmos os
esquemas mais sofisticados.
Em um sistema monoprogramado a gerencia da memoria principal e menos complexa
que nos sistemas multiprogramados. Nos sistemas monoprogramados, uma parte do sistema operacional permanece sempre residente na memoria e a cada instante somente um
u
nico programa do usuario esta carregado na memoria principal. O compartilhamento da
memoria entre o sistema operacional e o programa do usuario necessita que o sistema possua mecanismos de protecao. Estes mecanismos, permitem verificar a validade dos acessos
a` memoria gerados pelos programas do usuario para evitar danos ao sistema operacional.
A maioria dos sistemas operacionais atuais e multiprogramado. A multiprogramacao
permite a execucao de varios processos simultaneamente. Dessa forma, existe a necessidade de que varios processos estejam armazenados na memoria principal ao mesmo tempo.
Neste caso tambem, alem da protecao da area do sistema operacional, e necessario proteger os outros processos residentes na memoria, de acessos invalidos gerados por um outro
processo.
Um outro problema que surge com a multiprogramacao diz respeito a` localizacao dos
processos na memoria (relocacao). Em alguns sistemas, pode-se prever a posicao exata
de variaveis e de procedimentos na memoria que serao ocupadas em tempo de execucao
(alocacao estatica). Ja em outros sistemas, os espacos ocupados pelos processos podem


CAPTULO 5. GERENCIAMENTO DE MEMORIA

44

variar entre execucoes (alocacao dinamica). Assim, a geracao de enderecos de acesso `a


memoria pode ser feita em:
tempo de compilac
ao - neste tempo pode ser gerado um codigo absoluto se for
conhecido onde o programa residira na memoria;
tempo de carga - se nao for conhecido onde armazenar o programa em tempo de
compilacao, o compilador deve gerar um codigo realocavel. Neste caso, somente no
tempo de carga sera conhecido onde o programa residira na memoria;
tempo de execuc
ao - se um programa pode ser movido de um segmento de
memoria para outro, durante sua execucao, entao a geracao de endereco deve ser
retardada ate o tempo de execucao.

5.2

Bare Machine

O esquema de memoria mais simples e nenhum. Ao usuario e fornecido uma maquina


basica e ele tem completo controle sobre a memoria.
As vantagens desta abordagem sao a flexibilidade maxima para o usuario, ja que ele
pode utilizar a memoria da maneira que desejar. Tem simplicidade e menor custo. Nao
ha necessidade de nenhum hardware especial para se gerenciar a memoria. Sua maior
desvantagem e nao possuir nenhum tipo de protecao. Este esquema e utilizado somente
quando ha a necessidade de um sistema dedicado.

5.3

Monitor Residente

Este esquema tambem e bem simples e divide a memoria em duas partes, uma para
o usuario e outra para o sistema operacional. Geralmente e possvel armazenar o sistema
operacional tanto na memoria baixa quanto na memoria alta. Porem, o mais comum e
armazena-lo na parte baixa (enderecos iniciais).
necessario proteger o sistema operacional de trocas acidentais ou nao, provocadas
E
pelo programa do usuario. Esta protecao deve ser fornecida pelo hardware e pode ser
implementada de diversas maneiras. A abordagem geral e mostrada na Figura 5.2. Todo
endereco gerado pelo programa do usuario e comparado com um endereco limite (fence).
Se o endereco gerado e um endereco valido, a referencia a memoria e realizada normalmente. Caso contrario, se o endereco e menor que o limite, o acesso `a memoria e negado.
A referencia a` memoria e interceptada e e gerada uma interrupcao do sistema operacional,
indicando erro de acesso `a memoria.
O endereco de limite pode ser especificado de varios modos diferentes nos sistemas de
computadores. Uma das abordagens e ter o endereco de limite construdo no hardware
como uma constante fixa. A dificuldade com o endereco de limite fixo e a selecao correta
deste endereco. Se ele for muito pequeno o sistema operacional nao ficara completamente
protegido. Se ele for muito grande, uma parte da memoria nao sera utilizada pelo sistema
operacional e nem pelo usuario, sendo assim desperdicada.


CAPTULO 5. GERENCIAMENTO DE MEMORIA

45

Figura 5.2: Monitor residente


Para solucionar o problema na variacao do tamanho do sistema operacional, podese utilizar um registrador de limite. O conte
udo deste registrador e o endereco usado
para verificar a correcao das referencias `a memoria feitas pelo usuario. O conte
udo do
registrador de limite pode ser carregado pelo sistema operacional utilizando uma instrucao
privilegiada especial. Este esquema, entao, permite a troca do conte
udo do registrador
de limite sempre que o sistema operacional necessitar.

5.4

Organizac
ao de Mem
oria: Parti
c
oes Fixas X Parti
c
oes
Vari
aveis

A organizacao de memoria e o modo como a memoria principal e vista pelo sistema.


Isto leva a consideracoes como:
quantos usuarios utilizarao a memoria?
se forem varios usuarios, eles ocuparao a memoria ao mesmo tempo?
quanto de espaco de memoria sera dado a cada um deles?
como a memoria sera dividida? Em quantas particoes?
os processos poderao ser executados em qualquer particao?
os processos deverao ser colocados na memoria de forma contgua ou poderao estar
espalhados pela memoria principal?
Nos esquemas que serao apresentados a seguir, e necessario que todo o espaco de
endereco logico de um processo esteja na memoria fsica antes que o processo possa ser
executado. Dessa forma, o tamanho de um programa fica restrito ao tamanho da memoria
fsica do sistema. Estas organizacoes sao ditas organizacoes de memoria real.
importante perceber que o grau de multiprogramacao e limitado pelo n
E
umero de
particoes da memoria principal e influencia diretamente no desempenho do sistema.


CAPTULO 5. GERENCIAMENTO DE MEMORIA

5.4.1

46

Parti
co
es Fixas

Nesta organizacao a memoria e dividida em n


umero fixo de particoes ou regioes. A cada
particao pode ser atribudo um processo para ser executado. Quando existe uma particao
livre, um processo e selecionado de uma fila e carregado naquela particao. Quando ele
termina sua execucao, a particao torna-se livre para um outro processo.
Em relacao a` fila de processos, esta pode ser u
nica para cada particao ou u
nica para
as varias particoes. A Figura 5.3 ilustra estas abordagens.

Figura 5.3: Fila de processos separadas e unificada


Quando existe uma fila para cada particao, a estrategia e classificar os processos
segundo suas quantidades de memoria necessarias e coloca-los na fila correspondente.
Quando existe uma u
nica fila para todas as particoes, o escalonador de processos seleciona
o proximo processo que sera executado e em qual particao sera carregado. A escolha de
um processo para ser armazenado numa particao depende da poltica de alocacao de
memoria utilizada. A escolha pode ser best-fit-only (menor espaco, dentre os disponveis,
que seja suficiente) ou best-available-fit (primeiro espaco, dentre os disponveis, que seja
suficiente).
Outro fator importante e a protecao das areas de memoria. Como existem diversos
processos residentes na memoria simultaneamente, deve haver mecanismos para proteger
tanto o sistema operacional quanto os processos. A protecao na relocacao estatica e na
relocacao dinamica e implementada de forma diferente e estao descritas a seguir.
A protecao na relocacao estatica e realizada em tempo de montagem ou tempo de
carga. Para isto, sao utilizados os dois registradores de limite inferior e superior como
mostra a Figura 5.4. Cada endereco logico gerado deve ser maior ou igual ao conte
udo
armazenado no registrador de limite inferior, e menor ou igual ao conte
udo armazenado
no registrador de limite superior. Se for um acesso valido o endereco e entao enviado `a
memoria.
A protecao na relocacao dinamica e feita em tempo de execucao. Nesta protecao sao
empregados um registrador base e um registrador limite, como ilustrado na Figura 5.5.
O registrador base contem o valor do menor endereco fsico. O registrador limite contem
a faixa dos enderecos logicos. Com registradores base e limite, cada endereco logico deve
ser menor que o conte
udo armazenado no registrador limite. Este endereco, se valido,


CAPTULO 5. GERENCIAMENTO DE MEMORIA

47

Figura 5.4: Hardware de suporte para os registradores de limite superior e inferior


e entao calculado dinamicamente adicionando-se o valor contido no registrador base. O
endereco calculado e entao enviado `a memoria.

Figura 5.5: Hardware de suporte para os registradores de base e limite


Um dos problemas no projeto de particoes fixas envolve a determinacao dos tamanhos
das particoes. Como encontrar uma boa divisao que atenda as necessidades de memoria
dos processos? Estudos estatsticos podem indicar que conjunto de particoes seria conveniente.
Com a divisao da memoria em particoes fixas podemos ter, ainda, o problema de
fragmentacao da memoria, tanto interna quanto externa. Ocorre fragmentacao interna
quando ha um processo sendo executado em uma particao e ele nao a ocupa por completo. Ja a fragmentacao externa ocorre quando uma particao nao e utilizada, por ser
pequena demais para qualquer processo que esteja esperando para ser executado. Tanto
a fragmentacao interna quanto externa sao prejudiciais ao desempenho do sistema.

5.4.2

Parti
co
es Vari
aveis

O problema principal com a organizacao da memoria em particoes fixas e a determinacao do tamanho das particoes de modo que a fragmentacao interna e externa sejam
mnimas. A organizacao da memoria com particoes variaveis visa solucionar este problema
permitindo que os tamanhos das particoes variem dinamicamente.
Para a implementacao da organizacao com particoes variaveis, o sistema operacional
mantem uma tabela indicando quais partes da memoria estao disponveis e quais estao


CAPTULO 5. GERENCIAMENTO DE MEMORIA

48

ocupadas. A princpio, toda a memoria esta disponvel e e considerada um grande bloco de


memoria (hole). Quando um processo entra no sistema e necessita de memoria, e realizada
uma busca por um espaco que seja grande o suficiente para armazena-lo. Se existe tal
espaco, e atribudo ao processo somente a quantidade de memoria necessaria. O restante
do espaco, que pode haver, e deixado disponvel para futuras requisicoes. Sempre que um
processo termina sua execucao ele libera seu espaco de memoria. Este espaco liberado e
colocado de volta junto com os espacos de memoria disponveis. Neste ponto, procura-se
verificar se ha areas adjacentes que possam ser recombinadas de modo a formar espacos
de tamanhos maiores.
A Figura 5.6 mostra um exemplo de alocacao de memoria com particoes variaveis e o
escalonamento dos processos.

Figura 5.6: Exemplo de alocacao de memoria e escalonamento de processos


Neste exemplo esta ilustrada uma memoria de 256K palavras, onde existe um monitor
residente que ocupa 40K e restam 216K de memoria para a execucao dos processos.
Supondo que exista uma fila de processos como a da Figura 5.6, podemos armazenar
imediatamente os tres primeiros processos na memoria (Figura 5.6(a)). Assim, temos
uma fragmentacao externa de 26K. Utilizando o algoritmo de escalonamento de CPU RR
- Round Robin (Circular) com um quantum de 1 unidade de tempo, o processo 2 terminara
feito um novo acesso a
no tempo 5, liberando seu espaco de memoria (Figura 5.6(b)). E
fila de processos, e o processo 4 e armazenado na memoria (Figura 5.6(c)). O processo
1 terminara no tempo 10 levando a Figura 5.6(d), sendo entao o processo 5 e escalonado
produzindo a Figura 5.6(e).
Como pode ser observado, no exemplo, em qualquer tempo ha um conjunto de espacos
livres, de tamanhos variados e espalhados pela memoria. Alem disso, existe um conjunto
de processos esperando para serem executados. Esta situacao pode ser vista como uma


CAPTULO 5. GERENCIAMENTO DE MEMORIA

49

aplicacao geral do problema de alocacao de memoria dinamica. O problema e como


satisfazer um pedido de tamanho n de uma lista de espacos livres. As estrategias mais
comuns para selecionar um espaco de memoria sao:
First-fit(primeira alocacao) - aloca o primeiro espaco grande o suficiente. Nao
a estrategia mais rapida;
necessita de uma busca por toda a lista. E
Best-fit(melhor alocacao) - Aloca o menor espaco que seja grande o suficiente (mais
necessario que se percorra toda a lista, a menos
proximo do tamanho do processo). E
que esta esteja ordenada. Esta estrategia e a que provoca menor fragmentacao da
memoria;
Worst-fit(pior alocacao) - Aloca o maior bloco. Tambem e necessario uma busca
pela lista inteira, a menos que ela esteja ordenada por tamanho. Nao apresenta
bons resultados.
A protecao das areas de memoria e feita do mesmo modo que nas particoes fixas.
O hardware e identico. O que diferencia as particoes fixas das particoes variaveis e o
software.
Em geral, a utilizacao da memoria com particoes variaveis e melhor do que com
particoes fixas. Nao existe fragmentacao interna, so fragmentacao externa, o que ainda
assim, pode ser muito ruim. Suponha uma memoria com varios espacos livres mas espalhados pela memoria. Suponha ainda que, estes espacos estivessem juntos e formassem
um bloco grande o suficiente, onde pudessem ser executados outros processos, poderamos
entao armazenar mais processos. Esta fragmentacao prejudica o desempenho do sistema.
Para solucionar a fragmentacao externa podemos utilizar a tecnica de compactacao. O
objetivo desta tecnica e juntar os espacos espalhados pela memoria em um u
nico grande
bloco. Esta tecnica so e possvel de ser utilizada se houver relocacao dinamica. Deve-se
considerar, porem, a estrategia a ser escolhida, pois o custo da compactacao pode ser
muito alto.

5.5

Mem
oria Virtual

A tecnica de memoria virtual foi criada para permitir a execucao de varios processos
que nao necessariamente estejam armazenados por inteiro na memoria principal. Uma
das vantagens mais importantes e que os programas dos usuarios podem ser maiores do
que a memoria fsica. Alem disso, como cada programa de usuario nao necessita estar
completamente armazenado na memoria, podem ser executados um maior n
umero de
programas simultaneamente. Isto leva a uma maior utilizacao da CPU e um aumento no
throughput (quantidade de processos executados por unidade de tempo).
A memoria virtual e a separacao da memoria logica do usuario, da memoria fsica. Isto
torna a tarefa de programacao mais facil na medida em que o programador nao precisa
se preocupar com a quantidade de memoria fsica disponvel.
A implementacao da memoria virtual e comumente realizada com paginacao sob demanda (demand paging) ou com segmentacao sob demanda (demand segmentation). Nas


CAPTULO 5. GERENCIAMENTO DE MEMORIA

50

secoes seguintes serao descritas as tecnicas de swapping e paginacao. Nao serao abordadas, nesse curso, as tecnicas de segmentacao, paginacao por demanda e segmentacao por
demanda.

5.5.1

Swapping

A tecnica de swapping requer que o sistema possua um backing store. O backing store
e uma memoria secundaria, geralmente um disco rapido (HD, por exemplo). Ele deve ser
grande o suficiente para armazenar copias dos programas de usuarios e fornecer acesso
direto a esses programas. O swapping nada mais e do que a troca do conte
udo de um
determinado espaco de memoria. A Figura 5.7 ilustra o swapping de dois programas
utilizando um disco como backing store.

Figura 5.7: Swapping de dois programas utilizando um disco


A fila de prontos (ready queue) consiste de todos os processos que estao no backing
store e que estao prontos para serem executados. Um conjunto de variaveis do sistema
indica quais processos estao correntemente na memoria.
Sempre que o escalonador da CPU decide executar um processo, o dispatcher verifica
se o processo escolhido esta presente na memoria. Caso nao esteja, ele troca um dos
processos correntes na memoria pelo processo desejado. O dispatcher, entao, e responsavel
pela troca de contexto dos processos. Isto e, salva o conte
udo dos registradores do processo
que esta sendo retirado, armazena nos registradores os valores correspondentes ao novo
processo e transfere o controle para o processo.
O processo escolhido para ser retirado da memoria e levado ao backing store deve estar
completamente ocioso. Nenhum processo com entrada e sada pendente deve ser trocado.


CAPTULO 5. GERENCIAMENTO DE MEMORIA

5.5.2

51

Pagina
c
ao

A paginacao e uma organizacao de memoria que permite que a memoria fsica seja
vista como se estivesse dividida em blocos de tamanho fixo, chamados frames. A memoria
logica e tambem dividida em blocos do mesmo tamanho, denominados paginas (pages).
Quando um programa vai ser executado, suas paginas sao trazidas do backing store e
carregadas nos frames disponveis. O disco e dividido em blocos de tamanho fixo, cujo
tamanho e o mesmo dos frames da memoria.
O tamanho da pagina (e do frame) e definido pelo hardware. Tipicamente varia entre
512 e 2048 bytes, dependendo da arquitetura do computador.
Para a alocacao de um processo na memoria e necessario expressar seu tamanho em
n
umero de paginas. Se o processo tiver tamanho n, ele necessitara de no maximo n frames.
A cada frame alocado, seu n
umero e colocado na tabela de paginas, para posterior geracao
de endereco fsico.
O problema com o uso de uma tabela de paginas e o tempo de acesso a uma locacao de
memoria do usuario. Sao necessarios na realidade dois acessos, um para realizar o acesso
a` tabela de paginas e outro para a posicao de memoria da palavra desejada. A solucao
para diminuir este tempo de acesso e utilizar uma TLB (Table Lookaside Buffer ), que
e semelhante a uma memoria cache, para translacao de enderecos logicos em enderecos
fsicos.
O sistema operacional gerencia a memoria fsica mantendo informacoes de quais frames
estao alocados, quais deles estao disponveis, quanto frames existem no total entre outras.
Estas informacoes sao mantidas, geralmente, em uma estrutura de dados denominada
tabela de frames (frame table). A tabela de frames possui uma entrada para cada frame
fsico, indicando se o ele esta disponvel ou nao e, se alocado, qual pagina de que processo
esta associada ao frame.
Uma das vantagens da paginac
ao
e a possibilidade do compartilhamento
de c
odigo. Todo c
odigo reentrante, isto
e, aquele que n
ao se modifica durante a execuc
ao, pode ser compartilhado. Basta que, cada processo tenha na
sua tabela de p
aginas o mesmo endereco do c
odigo armazenado na mem
oria
fsica. Podem ser compartilhados ent
ao compiladores, montadores, linkers
entre outros.
A protecao de memoria no ambiente paginado e realizada por bits de protecao associados com cada pagina. Estes bits sao normalmente mantidos na tabela de paginas e
definem permissao de leitura/escrita e acesso valido/invalido.
Com a paginacao nao ha fragmentacao externa, porem pode haver alguma fragmentacao interna, que ocorre se o u
ltimo frame alocado nao estiver completo.

52

Bibliografia
[dC02]

Maria Clicia Stelling de Castro. Sistemas Operacionais. UFJF - Universidade


Federal de Juiz de Fora, 2002.

[Dei92]

Harvey M. Deitel. An Introduction to Operating Systems, 2nd Edition. AddisonWesley, Reading, MA, 1992.

[Jr04]

Peter Jandl Jr. Notas sobre Sistemas Operacionais. 2004.

[SGG01] Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne. Sistemas Operacionais: Conceitos e Aplicacoes. Campus, 2001.
[Sta92]

William Stallings. Operating Systems. Macmillan, 1992.

[Tan92] Andrew S. Tanenbaum. Modern Operating Systems. Prentice Hall, 1992.

Vous aimerez peut-être aussi