Académique Documents
Professionnel Documents
Culture Documents
Conte
udo
Lista de Figuras
Lista de Tabelas
vii
1 Introduc
ao
1.1
1.2
1.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.1
Processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5
Classificacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6
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
2.2.2
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
3.4
3.3.1
3.3.2
Metodos de Acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3.3
Sistema de Diretorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5
3.4.3
3.4.4
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
4.5
Qualidade do Escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.6
Algoritmos de Escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.6.1
4.6.2
iv
4.7
4.6.3
4.6.4
Escalonamento RR (Round-Robin) . . . . . . . . . . . . . . . . . . 38
4.6.5
5 Gerenciamento de Mem
oria
42
5.1
Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2
Bare Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.3
Monitor Residente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4
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
2.2
Sistema Monoprogramado/Monotarefa . . . . . . . . . . . . . . . . . . . . 10
2.3
2.4
2.5
3.1
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
3.7
Diretorio em arvore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.1
Estados de um processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2
4.3
Avaliacao do escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.4
4.5
5.1
Hierarquia de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2
Monitor residente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.3
5.4
5.5
vi
5.6
. . . . . . 48
5.7
vii
Lista de Tabelas
4.1
4.2
4.3
4.4
4.5
4.6
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
CAPTULO 1. INTRODUC
AO
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
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
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
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)
CAPTULO 1. INTRODUC
AO
1.3.5
Quinta Gera
c
ao (Final dos anos 80 ao presente)
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
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
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.
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).
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
2.2.2
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.
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
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.
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.
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-
16
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.
17
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-
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
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
19
20
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.
22
3.4
Sistema de Diret
orio
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.
3.4.2
Diret
orio em Dois Nveis
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
24
25
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
3.5
26
Protec
ao de Arquivos
3.5.1
Senha de Acesso
27
3.5.2
Grupo de Usu
arios
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
4.1.2
Conceito de Processo
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
CAPTULO 4. GERENCIA
DO PROCESSADOR
31
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
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
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
CAPTULO 4. GERENCIA
DO PROCESSADOR
34
4.6
Algoritmos de Escalonamento
4.6.1
CAPTULO 4. GERENCIA
DO PROCESSADOR
35
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
4.6.2
CAPTULO 4. GERENCIA
DO PROCESSADOR
36
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
4.6.3
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
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
CAPTULO 4. GERENCIA
DO PROCESSADOR
4.6.4
38
Escalonamento RR (Round-Robin)
4.6.5
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.
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
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
CAPTULO 5. GERENCIAMENTO DE MEMORIA
44
5.2
Bare Machine
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
5.4
Organizac
ao de Mem
oria: Parti
c
oes Fixas X Parti
c
oes
Vari
aveis
CAPTULO 5. GERENCIAMENTO DE MEMORIA
5.4.1
46
Parti
co
es Fixas
CAPTULO 5. GERENCIAMENTO DE MEMORIA
47
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
CAPTULO 5. GERENCIAMENTO DE MEMORIA
49
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.
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]
[Dei92]
Harvey M. Deitel. An Introduction to Operating Systems, 2nd Edition. AddisonWesley, Reading, MA, 1992.
[Jr04]
[SGG01] Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne. Sistemas Operacionais: Conceitos e Aplicacoes. Campus, 2001.
[Sta92]