You are on page 1of 133

Memria.

A utilizao otimizada da CPU, permite um melhor


desempenho do sistema computacional. Conceitos de
multiprogramao e multiprocessamento associados s
polticas de escalonamento de CPU contribuem para
este objetivo.
A arquitetura dos sistemas computacionais exige
que cada programa para ser executado deve estar
residente na memria principal e portanto uma ateno
especial deve ser dada ao gerenciamento deste recurso.
A memria, como um todo, est divida em
diferentes nveis e tipos dependendo de sua funo no
sistema computacional. A relao de custo benefcio e o
tipo de aplicao a ser dada ao sistema computacional
so exemplos de parmetros que participam de
estruturao da memria em um sistema.
Alexandre Lovisi. amlovisi@fusoes.com.br 253
Os tipos de memria podem ser caracterizados
basicamente considerando:
-a capacidade de armazenamento e de reteno da
informao;
-o custo por bit de informao a ser tratado;
-a velocidade de acesso informao.
-capacidade de reter a informao sem energia
De forma hierrquica temos:

Memria Cache

Memria Principal (primria)

Memria Secundria
Alexandre Lovisi. amlovisi@fusoes.com.br 254
Hierarquia da memria
cache memria virtual

C
CPU 8B a 32 B 4 KB
CPU Memria
Memria disco
disco
c
regs
regs h
e

Registradores Cache Memria Memria Disco


tamanho: 32 B 32 KB-4MB 1024 MB 100 GB
velocidade: 1 ns 2 ns 30 ns 8 ms
$/Mbyte: $125/MB $0.20/MB $0.001/MB
tamanho de linha: 8 B 32 B 4 KB

maior capacidade, mais lenta, mais barata


Fonte: Denise Rocha Brosler Caltabiano / Marcos Alcio dos Santos Romani INPE 11/05/2004

Cada um dos tipos de memria em funo de suas


caractersticas desempenham papeis distintos em um sistemas
computacional. Em sistemas de uso geral os 3 tipos esto
presentes.
Alexandre Lovisi. amlovisi@fusoes.com.br 255
Memria Cache:
- possuem alta velocidade de acesso sendo rpidas no
tempo de resposta;
- devido ao seu alto custo so utilizadas em menor
quantidade;
- sua funo principal manter as informaes (dados e
instrues) que devem estar disponveis para executar
no processador;
- O sistema operacional e programas de servio devem
procurar carregar este tipo de memria com as
prximas instrues a executar e com os dados
necessrios a tais instrues para que o tempo de
acesso a uma informao seja mnimo. Quando o
sistema busca a prxima instruo no program counter
verifica antes se ela est disponvel no Cache.
Alexandre Lovisi. amlovisi@fusoes.com.br 256
Memria Principal (primria).
A memria principal deve ser vista como um
vetor onde cada posio possui um endereo nico.
A unidade de acesso memria a PALAVRA
(word). Cada PALAVRA contm um conjunto fixo de
bits, que no so necessariamente 8 ( um byte).
Podemos medir o tamanho da memria em bytes
mas a unidade mnima de acesso a PALAVRA.
O tamanho da palavra varivel e dependente
do hardware. H sistemas com palavras de 8 bits ( 1
byte) e sistemas com palavras de 48 bits (B6900 da
Unisys) ou mais.

Alexandre Lovisi. amlovisi@fusoes.com.br 257


Com relao a memria principal devemos observar
que:
- armazena instrues e dados de cada processo;
- o processador atravs o barramento acessa a memria
principal para obter para obter instrues e dados;
- os registradores de endereo e de dados do
processador so as portas de comunicao entre o
processador e a memria principal;
- seu tempo de acesso menor (mais lenta) que as
memrias Cache, mas o custo por bit tambm menor;
- seu funcionamento e gerenciamento por parte do
sistema operacional esto intimamente ligados ao
hardware do sistema computacional.

Alexandre Lovisi. amlovisi@fusoes.com.br 258


Memria Secundria:
-possuem baixo custo por bit e portanto so utilizadas
em maior escala em sistema de uso geral;
-capazes de reter a informao em meio magntico,
sem o fornecimento contnuo de energia, so utilizadas
como repositrio de informaes nos sistemas
computacionais e compem o sistemas de arquivos;
-os dispositivos nos quais so implementadas podem
ser fixos o removveis do sistema computacional
(discos, fitas etc). Atualmente implementadas em disco;
-so utilizadas pelo sistema operacional, para guardar
informaes temporrias de um processo quando a
poltica de gerenciamento da memria principal exigir
que parte da memria principal seja liberada para que
outro processo execute na CPU.
Alexandre Lovisi. amlovisi@fusoes.com.br 259
A memria num sistema computacional deve ser
vista como um todo, cache, principal e secundria.
Para efeito de referncia neste texto a memria
principal ser tratada como memria apenas.
As polticas de alocao de espao, carga dos
processos, etc objetivam otimizar a utilizao do
sistema computacional. Possuem diferentes abordagens
para sistemas monoprogramados e multiprogramados e
devem levar em conta a utilizao do sistema
computacional e a relao de custo e benefcio desta
gerncia.
Deve-se ter em mente que o gerenciamento de
memria deve garantir a correta execuo dos
processos, a integridade do sistema operacional e dos
demais processos, e otimizar a utilizao do recurso.
Alexandre Lovisi. amlovisi@fusoes.com.br 260
Sistemas monoprogramado.
Em sistemas monoprogramado a gerncia de
memria menos complexa do que em sistemas
multiprogramado.
A memria compartilhada entre o sistema
operacional e um nico processo de usurio a cada
momento. Uma rea para o S. O. e outra para o
usurio.
No necessrio que todo o sistema operacional
esteja na memria, pode estar em parte.
A ocupao da memria pelo sistema operacional
pode ocorrer tanto nos endereos mais baixos quantos
nos endereos mais altos. Em geral, o S. O.
carregado na memria baixa.
Alexandre Lovisi. amlovisi@fusoes.com.br 261
0000
Sistema
Operacional 14000 14000
Registrador
Limite
Programa do Espao de
Usurio endereamento do
usurio.
0xFFF...

A proteo de acesso na memria objetiva


garantir que o programa do usurio no ir escrever na
rea do sistema operacional.

Alexandre Lovisi. amlovisi@fusoes.com.br 262


Um registrador limite utilizado para verificar
cada endereamento que o processo do usurio faz na
memria. Quando o endereo gerado violar a condio
do registrador limite o acesso negado, uma
interrupo por erro de acesso memria gerada e
tratada pelo S.O.
O processo do usurio pode ocupar toda o espao
de endereamento destinado ao usurio. Caso o
processo no necessite de toda a memria o espao
no utilizado fica livre (ocioso).
Quando o programa do usurio no couber na
memria o programador deve dividir o programa em
mdulos e realizar a sobreposio destes mdulos
(Overlay)

Alexandre Lovisi. amlovisi@fusoes.com.br 263


Sistemas Multiprogramados
Em sistemas multiprogramados vrios processos,
alm do sistema operacional, esto presentes na
memria ao mesmo tempo.
Os aspectos a considerar na gerncia de sistemas
multiprogramados envolvem:
endereos lgicos e fsicos;
espao de endereamento;
resoluo de endereos;
alocao e relocao esttica x dinmica;
particionamento da memria.

Alexandre Lovisi. amlovisi@fusoes.com.br 264


A) Endereo lgico x Endereo fsico.
Endereo lgico.
Os cdigos de programas fazem referncias s
variveis e instrues definidas no prprio cdigo. Em
princpio no conhecem os endereos de fsicos de
memrias onde as instrues e variveis estaro
armazenadas. Os endereos que o programa conhece
so portanto endereos lgicos. Mesmo aps a
compilao o cdigo (linguagem de mquina) gerado
faz referncia a endereos lgicos.
Desta forma o endereo lgico o endereo
considerado pela CPU. Seja este o endereo de uma
instruo ou de uma varivel. O endereo lgico
encontra-se no registrador de endereos da CPU.

Alexandre Lovisi. amlovisi@fusoes.com.br 265


Endereo Fsico.
Endereo fsico o real endereo de memria a
ser acessado para obter ou gravar uma informao.
o endereo existente no registrador da memria
quando for realizada a busca da informao.

CPU Memria
End. lgico End. Fsico
Reg. Endereos Reg. Endereos

Resoluo de
endereos
Alexandre Lovisi. amlovisi@fusoes.com.br 266
B) Espao de endereamento.
constitudo pelos endereos aos quais um
processo pode ter acesso.
No cenrio multiprogramado, com vrios
processos presentes na memria, alm de proteger o
sistema operacional necessrio proteger os
processos uns dos outros. Isto , um processo P1 no
pode alterar a rea da memria ocupada por outro
processo P2. Um processo s pode ter acesso a seu
espao de endereamento.
Essa proteo pode ser feita no nvel de
endereos lgicos e de endereos fsicos.

Alexandre Lovisi. amlovisi@fusoes.com.br 267


B.1) Espao de endereamento lgico.
o conjunto de todos os endereos lgicos
gerados por um processo e considerados vlidos para
execuo no nvel da CPU.
A proteo dos processos se faz pela avaliao
destes endereos representando instrues ou
variveis. Como exemplo, o acesso a uma posio
(ndice) de um vetor alm de seu dimensionamento ou
a referncia a uma varivel no dimensionada pode ser
tratado como um endereamento fora do espao lgico
de endereamento do processo, que deve ser
gerenciado pelo sistema operacional.

Alexandre Lovisi. amlovisi@fusoes.com.br 268


B.2) Espao de endereamento fsico.
o conjunto de todos os endereos fsicos que
correspondem aos endereos lgicos do processo. A
proteo dos processos depende de como a memria
particionada, como o sistema operacional estar
alocando a memria aos processos e conseqentemente
do hardware utilizado nesses procedimentos.

Alexandre Lovisi. amlovisi@fusoes.com.br 269


C) Resoluo de endereos:
A resoluo de endereos significa em que
momento e como realizar o mapeamento do endereo
lgico em endereo fsico.
C.1) Em tempo de compilao.
Caso seja possvel ou necessrio determinar os
endereos fsico em tempo de compilao. O cdigo
absoluto gerado da compilao j estar fazendo
referncia ao endereo fsico de memria.
Neste caso o programa s poder ocupar uma
exata posio de memria, pois os endereos fsicos j
esto definidos. O endereo lgico tratado pela CPU
ser o mesmo que o endereo fsico de memria.
Perde-se flexibilidade de utilizao da memria.
Alexandre Lovisi. amlovisi@fusoes.com.br 270
Cdigo fonte 0000
Memria

Compilador

1500 CPU
Cdigo absoluto
(endereos de memria)
5000
(1500 a 5000)

Alexandre Lovisi. amlovisi@fusoes.com.br 271


C.2) Em tempo de carga.
Quando o compilador no conhece os endereos
fsicos de memria deve gerar um cdigo relocvel.
Isto significa que o cdigo gerado pelo compilador faz
referncia a um endereo inicial (exemplo: zero) e a
partir dele gerado todos os demais endereos.
No instante da carga do programa na memria,
isto quando o processo est sendo criado, o S. O.
determina o endereo fsico inicial de memria a partir
do qual o programa ser carregado. Os endereos
gerados pelo compilador so mapeados pelo S. O. nos
endereos fsicos de memria no instante da carga.
Neste caso os endereos lgicos manipulados
pela CPU durante a execuo so iguais aos endereos
fsicos.
Alexandre Lovisi. amlovisi@fusoes.com.br 272
Cdigo fonte 0000
Memria
Compilador

Cdigo compilado 2000


relocvel S.O. CPU
Carregador
(2000) 5500
Link-editor
(bibliotecas)

Cdigo relocvel
(endereos de memria)
(0 3500)

Alexandre Lovisi. amlovisi@fusoes.com.br 273


Uma vez que o cdigo gerado relocvel,
possvel ao sistema operacional executar a carga
inicial do programa em diferentes locais da memria.
Porm uma vez carregado, o mapeamento do
endereo lgico em endereo fsico permanece
constante at o encerramento do processo.

Alexandre Lovisi. amlovisi@fusoes.com.br 274


C.3) Em tempo de execuo.
Para que um programa possa ser movimentado
(posicionado) na memria durante sua execuo em
diferentes locais os endereos fsicos de memria devem
ser resolvidos no instante de execuo da instruo.
Desta forma a cada endereo a ser acessado na
memria um registrador de relocao deve calcular o
endereo fsico a ser acessado.
A tarefa de mapear os endereos lgicos em
endereos fsicos em tempo de execuo realizada pela
Unidade de Gerncia de Memria (MMU Memory
Management Unit).
O processo do usurio na CPU manipula endereos
lgicos que so resolvidos pela MMU no momento do
acesso memria fsica.
Alexandre Lovisi. amlovisi@fusoes.com.br 275
Resoluo de endereos em tempo de execuo

0000
Cdigo relocvel Memria
(endereos de memria)
(0 3500)

2000
CPU MMU
278 + 2278
End. End.
(2000)
lgico fsico

Alexandre Lovisi. amlovisi@fusoes.com.br 276


A resoluo de endereos em tempo de execuo
permite que o cdigo do programa ( processo ) seja
carregado a qualquer instante em qualquer lugar da
memria.
Isto gera uma maior flexibilidade de utilizao da
memria porm h que se considerar um tempo gasto
na resoluo do endereo fsico a cada acesso a
memria principal.
Caso um processo seja retirado da memria e
armazenado em disco, temporariamente, poder
retornar para a memria a partir de outro endereo
qualquer disponvel.

Alexandre Lovisi. amlovisi@fusoes.com.br 277


D) A alocao e relocao de memria.
Alocar a memria a um processo significa definir
em que local e como um processo deve ser inicialmente
carregado na memria. Tanto um processo de usurio
quanto do sistema operacional.
Este procedimento depender de como a memria
est particionada, o quanto de memria est reservado
ao sistema operacional e aos processos que compem
os servios do S.O.
As tabelas de gerncia utilizadas pelo S.O.
(tamanho, localizao etc) so definidas na carga do
sistema por parmetros e decises pr-estabelecidos.
Diretamente relacionado com a alocao de
memria est o conceito de relocao de memria.
Alexandre Lovisi. amlovisi@fusoes.com.br 278
D.1) Relocao Esttica x Dinmica.
Diferentes polticas de gerenciamento de
memria podem permitir que um processo possa ser
removido temporariamente da memria principal,
armazenado em disco (memria secundria), e
posteriormente retornar para a memria principal.
Esta troca de um processo da memria principal
para a secundria e posterior retorno para a principal
conhecido como Swap.
O disco (memria secundria) deve ser um
dispositivo rpido e com capacidade de armazenamento
para guardar a imagem de memria de todos os
processos de usurio. comum se definir um espao
limite da memria secundria para o procedimento de
Swap.
Alexandre Lovisi. amlovisi@fusoes.com.br 279
O retorno do processo da memria secundria
para memria principal implica em determinar onde o
processo deve ser relocado na memria principal na
rea de usurio.
Relocao esttica. Neste caso um processo que
deixa a memria temporariamente deve retornar no
mesmo endereo onde foi carregado inicialmente. O
principal fator que orienta esse procedimento a
resoluo de endereos em tempo de compilao ou em
tempo de carga.
Relocao dinmica. Permite que o processo possa
ser carregado em qualquer local da memria no espao
de endereamento do usurio, a qualquer momento.
Para isto a resoluo de endereos deve ocorrer em
tempo de execuo.

Alexandre Lovisi. amlovisi@fusoes.com.br 280


F) Particionamento da memria.
F.1) Sistemas monoprogramado
Em sistemas monoprogramados apenas um
processo de usurio est presente na memria por vez,
desta forma rea do usurio pode ser vista como uma
partio contnua de um nico usurio.
Quando o processo no couber na memria deve-
se realizar Overlay (sobreposio).
No overlay o usurio deve dividir o programa em
mdulos. Pelo menos um mdulo principal deve
permanecer sempre na memria realizando chamadas a
outros mdulos que podem ser removidos para a
memria secundria. Deve-se ento indicar quais
mdulos podem ser sobrepostos (sofrer overlay) na
memria principal durante a execuo.
Alexandre Lovisi. amlovisi@fusoes.com.br 281
Este procedimento expande a utilizao da
memria pois o espao de endereamento necessrio
ao processo maior do que o disponvel ao usurio. A
sobreposio de alguns mdulos na memria permite a
execuo do processo.
Considere o seguinte cenrio didtico:
Memria principal: 1 MB
Sistema operacional: 300 Kb
Programa do usurio:
Mdulo principal : 300 Kb
Mdulo cadastro : 400 Kb Total
Mdulo de clculo : 300 Kb 1,2 Mb
Mdulo de impresso: 200 Kb.
Alexandre Lovisi. amlovisi@fusoes.com.br 282
rea de Mdulo
Overlay Cadastro
400 kb 400kb

Mdulo Mdulo
Memria
Principal clculo
1 Mb 300 kb 300 k

Mdulo
impresso
Sistema
operacional 200 k

300 kb O maior mdulo para overlay


dever ter at 400 Kb
Alexandre Lovisi. amlovisi@fusoes.com.br 283
Observe que foi possvel executar um processo
de 1,2 Mb num espao de endereamento de 700 Kb.
No exemplo, quando o mdulo de clculo for
carregado haver um espao de 100 kb disponvel e
que no ser utilizado, permanecendo ocioso. Quando
o mdulo de impresso for carregado o espao
disponvel na memria ser de 200 Kb.
O mdulo principal gerencia a chamada dos
demais mdulos. de responsabilidade do
programador modularizar a aplicao e definir os
mdulos para overlay.
Este um cenrio comum em sistema
operacional DOS e aplicaes em linguagem Clipper.

Alexandre Lovisi. amlovisi@fusoes.com.br 284


F.2) Sistemas multiprogramados.
Em sistemas multiprogramados a memria
dividida em vrias parties que podem ser de
diferentes tamanhos, fixos ou no.
Cada partio abrigar um processo permitindo-
se desta forma que vrios processos permaneam na
memria implementando a multiprogramao.
Neste caso o grau de multiprogramao est
limitado ao nmero de parties em que a memria foi
divida com reflexos direto no desempenho do sistema
operacional.
Para se executar um processo dever estar todo
ele gravado em memria permanecendo na memria
do incio ao fim de sua execuo.
Alexandre Lovisi. amlovisi@fusoes.com.br 285
A alocao que mantm o processo como um todo
na memria em endereos consecutivos conhecida
alocao contnua de memria.
F.3) Alocao contnua por Parties Fixas.
a forma mais simples de implementar a
multiprogramao. As parties de memria so de
tamanho fixo (esttico) sem que sejam todas
necessariamente do mesmo tamanho .
Um processo para executar em uma participao
deve caber nesta partio.
Quando existir uma partio livre na memria um
processo da fila de processos PRONTOS carregado;
executa, e ao terminar retirado da partio deixando-
a livre para outro processo.
Alexandre Lovisi. amlovisi@fusoes.com.br 286
Seja uma memria
de 150k endereada de 0 149
a 149k. O S.O. ocupa os
40k iniciais e o restante 45 k Partio 5
dividido em 5 parties
105
para os usurios.
20 k Partio 4
Cada processo para
85
executar deve ser alocado
em uma partio maior ou 20 k Partio 3
igual memria 65
necessria ao processo.
15 k Partio 2
Por exemplo, um 50
processo de 17k no 10 k Partio 1
poder ser alocado nas 40
Sistema
parties 1 ou 2, mesmo
que estejam vazias. 0 operac.
Alexandre Lovisi. amlovisi@fusoes.com.br 287
Proteo de memria.
A proteo do espao de endereamento de cada
processo se faz conhecendo os endereos limites de
cada partio. Quando um processo executa uma
instruo, o S.O. verifica se o endereo de acesso est
fora do conjunto de endereos que compem a partio
onde est alocado o processo (rea da partio). Caso
isto ocorra, gerado uma interrupo de erro (um
trap) e o processo abortado.

Alexandre Lovisi. amlovisi@fusoes.com.br 288


A gerncia de acesso dos
149
processo s parties pode ser feita
implementado uma fila nica para
45 k
os processos em estado de
PRONTO. Neste caso, o Dispacher 105
dever determinar em qual partio
ser alocado o processo. 20 k
85

5k 10k 8k .... 20k 15k 30k ? 20 k


65
Fila nica de processos PRONTOS 15 k
50
Em qual partio deve ser
alocado o processo de 30k? 10 k
40
Sistema
0 operac.
Alexandre Lovisi. amlovisi@fusoes.com.br 289
Ou pode-se implementar
149
mltiplas filas, uma fila por partio.
Neste caso um escalonador de longo
45 k
prazo pode classificar os processos
e adequ-los a uma das filas. A fila 105
de processos PRONTOS composta
na verdade por diversas sub-filas. 20 k
85

20 k
65
....................... 17k 18k 16k
15 k
....................... 15k 12k 14k 50
....................... 5k 10k 8k 10 k
40
Sistema
Filas de processos PRONTOS 0 operac.
Alexandre Lovisi. amlovisi@fusoes.com.br 290
F.3.1) Polticas de alocao de parties fixas.
A determinao de qual partio deve alocar o
processo pode considerar duas polticas:
a)primeira partio livre: escolhe a primeira partio
livre que comporta o processo. Isto leva a simplicidade
e rapidez de escolha.
b)melhor partio: escolhe a menor partio dentre
aquelas que comportar o processo, isto , deve escolher
a partio livre que comporte o processo e cujo
tamanho mais se aproxima do tamanho do processo.
Objetiva-se no ocupar uma partio grande com um
processo pequeno, deixando as paries maiores para
os processos grandes. Por exemplo, num sistema com 4
parties (45k, 20k, 15k e 10k) um processo de 8k
deve ser alocado na partio de 10k, e no na primeira
de 45k.
Alexandre Lovisi. amlovisi@fusoes.com.br 291
Para gerenciar a alocao de memria o
Gerenciador de Memria do sistema operacional deve
manter uma tabela de parties contendo como
informaes: o tamanho da partio, endereo inicial da
partio, qual processo est ocupando, o status da
partio ( se realmente ocupada) etc.

Endereo Tamanho Processo Status


de memria da partio em uso
40 k 100k P1 Ocupada
140k 200k P2 Livre
340k 400k ........ ............

Alexandre Lovisi. amlovisi@fusoes.com.br 292


A poltica de como particionar a memria deve
considerar questes como:
a) um grande nmero de parties pequenas pode no
permitir a execuo de processos grandes ou retardar sua
execuo se o nmero de parties maiores existentes na
memria for pequeno. Os processos grandes devem
esperar que estas parties maiores fiquem disponveis;
b) a existncia apenas de parties grandes lavar a um
desperdcio de memria pois processos pequenos vo
ocupar apenas uma parte da partio, ficando o restante
da partio ociosa.
c) um menor nmero de parties levar a um menor
nvel de multiprogramao.
Estas questes levam ao conceito de
fragmentao de memria.
Alexandre Lovisi. amlovisi@fusoes.com.br 293
F.3.2) Fragmentao de memria.
F.3.2.1) Fragmentao Interna.
Ocorre dentro da partio. Representa a poro
da partio que no foi ocupada por ser o processo
menor do que a partio. Gera desperdcio de memria
dentro da partio.

20 k 20 k
65 65
8k Fragmentao
15 k 15 k
50 interna (2k) 50
10 k 10 k 8k
40 40
Sistema Sistema
0 operac. 0 operac.
Alexandre Lovisi. amlovisi@fusoes.com.br 294
F.3.2.2) Fragmentao Externa.
Ocorre fora da partio. Representa a existncia
de partio livre mas que no pode ser alocada ao
processo por ser pequena demais para ele.

Fragmentaes internas: 85
partio de 20k com processo de 17k
20k
17 k
65
partio de 15k com processo de 14k
15k 14k
50
10k
Fragmentao 40
16 k Sistema
externa (10k), operac. 0
Novo processo pronto desperdcio de
para executar memria.
Alexandre Lovisi. amlovisi@fusoes.com.br 295
F.4) Alocao contnua por parties dinmicas.
A questo a tratar com as parties fixas como
determinar o tamanho da partio de forma que a
fragmentao interna seja mnima?
Se a partio tiver um tamanho varivel,
exatamente do tamanho que o processo necessita,
ento a questo da fragmentao interna estar
resolvida.
O espao a ser alocado ao processo, desde que
haja memria disponvel, ir constituir uma partio a
cada alocao de um novo processo. Como o tamanho
de cada partio pode variar, tambm o nmero de
parties existentes na memria pode variar. O sistema
operacional deve ser capaz de implementar estrutura
que represente as parties criadas dinamicamente.
Alexandre Lovisi. amlovisi@fusoes.com.br 296
Esta estrutura, deve permanecer na memria
principal e ser capaz de informar onde comea uma
partio e qual seu tamanho (rea ocupada por um
processo).
Para isso, o S.O. deve considerar quais partes da
memria esto livres e quais esto ocupadas. Em
princpio todo o espao de endereamento do usurio
visto como uma grande rea livre.
Quando o S.O. necessita de memria para alocar
um processo realiza uma busca para localizar um
espao de memria livre que seja capaz (grande o
bastante) de armazenar o processo.
Quando o processo terminar, a rea que ocupava
liberada e considerada livre.

Alexandre Lovisi. amlovisi@fusoes.com.br 297


Isto faz com que espaos livres, no adjacentes,
passem a existir constituindo buracos (holes) na
memria.
dentre estes buracos que o sistema operacional
deve localizar espao para alocar os novos processos.
A poltica de alocao para memria com partio
dinmica define qual espao selecionar.
livre ocupado

216 216
26k 26k
Espao de P3 30k P3 30k
memria
Aps trmino
para 100k
usurios. P2 100k de P2

216k P1 60k P1 60k


0
Alexandre Lovisi. amlovisi@fusoes.com.br 298
Considere um espao de endereamento de
memria de 256k, sendo 40k para o S.O. e 216k
destinado aos processo dos usurios.

Considere os processos abaixo que esto sendo


criados na ordem de P1 at P5.
Processo Memria necessria Tempo de CPU
P1 60k 10
P2 100k 5
P3 30k 20
P4 70k 8
P5 50k 15
O escalonador de longo prazo aloca os NOVOS
processos na memria por uma poltica FCFS e os
coloca na lista de processos PRONTOS.

Alexandre Lovisi. amlovisi@fusoes.com.br 299


Somente os processos P1, P2 e P3 foram
inicialmente alocados.
256
26k
FCFS P3 30k
Prontos Fila
circular
P2 100k
Novos
P1 60k 40 Executando
SO
0 CPU
Lembrando que pode-se gerenciar os recursos o
sistema operacional de diferentes formas, considere
que a poltica de alocao da CPU para os processos
PRONTOS seja uma fila circular (round robin).

Alexandre Lovisi. amlovisi@fusoes.com.br 300


(1) Se considerarmos um quantum de 1 milisegundo e
a poltica de fila circular no escalonador de curto prazo
(processos PRONTOS) teremos o seguinte diagrama de
utilizao de CPU.
Quanta de 1 a 14 (primeiros 14 milisengundos)
Tempo
P1 P2 P3 P1 P2 P3 P1 P2 P3 P1 P2 P3 P1 P2

P2 termina aps seu processamento


P4
256 P3 e P1 esto na fila de prontos
26k
P3 30k P4 ser carregado na fila de PRONTOS
aps P3 e P1 que j estavam na fila. P4
disputa a CPU.
P2 100k
P1 60k
40 (1)

Alexandre Lovisi. amlovisi@fusoes.com.br 301


(2) O processo P2 de menor tempo de CPU terminou.
(3) O processo P4 alocado na memria.
Agora existem 2 buracos, de 30k e 26k.

216
26k
30k P3 30k P3 30k
P3 30k
P2 100k P4 70k
P1 60k P1 60k P1 60k
0 (1) (2) (3)

Alexandre Lovisi. amlovisi@fusoes.com.br 302


Quanta de 15 a 28 ( prximos tempos de CPU)
P3 P1 P4 P3 P1 P4 P3 P1 P4 P3 P1 P4 P3 P1

P1 termina

P4 e P3 permanecem na fila P5
26k
P3 30k
30k
P4 70k P5 alocado
P1 60k
(3)

Alexandre Lovisi. amlovisi@fusoes.com.br 303


(4) O processo P1 terminou.
(5) O processo P5 alocado.
Observe que existe uma fragmentao externa,
mas cada uma das parties onde esto os processos
definida no tamanho exato de cada um dos processos.
No h fragmentao interna na partio.

P4 P3 P5 P4 P3 P5........

Fragmentao
P3 30k externa P3 30k
P4 70k P4 70k
P5 50k
(4) (5)
Alexandre Lovisi. amlovisi@fusoes.com.br 304
Processo Memria necessria Tempo de CPU
P1 60k 10
P2 100k 5
P3 30k 20
P4 70k 8
P5 50k 15

ocupado
216

30k P3 30k P3 30k P3 30k P3 30k


P3
P2 100k P4 70k P4 70k P4 70k
P1 60k P1 60k P1 60k P5 50k
0 (1) (2) (3) (4) (5)
Alexandre Lovisi. amlovisi@fusoes.com.br 305
F.4.1) Poltica de alocao de memria em
partio dinmica.
Para a escolha de qual o espao de memria que
deve ser alocado a um processo, tem-se as seguintes
polticas:
First-fit: (primeira escolha) alocar o primeiro espao de
memria disponvel que comportar o processo. No
necessrio pesquisar todos os espaos livres.
Best-fit: (melhor escolha) alocar o menor espao livre
que comporta o processo. Pesquisar dentre todos os
espaos livres aquele que prximo ao tamanho do
processo.
Worst-fit: (pior escolha) alocar o maior espao
disponvel. O objetivo evitar que pequenos espaos se
formem. O espao restante, na regio da memria
alocada, aps a alocao ainda ser grande.
Alexandre Lovisi. amlovisi@fusoes.com.br 306
Partindo de uma situao inicial, considere as 3
polticas para a alocao dos processos P1 (13k), P2
(7k) e P3 (5k) nesta ordem a partir do endereo 40.

22k 9k
P1
20k 20k 20k 20k
8k P3 P2
115 20k 20k 20k 20k
15k P1 P1 P2
20k 20k 20k 20k
10k P2 P3 P3
40
First fit Best fit Worst fit
Inicial
P1 13k
P2 7k Espaos vazios,
P3 5k fragmentao externa
Alexandre Lovisi. amlovisi@fusoes.com.br 307
Quando ocorrer uma alta fragmentao,
possvel compactar a memria realizando uma
relocao de todos os processos. Desta forma, a partir
de uma grande quantidade de pequenos buracos a
memria reorganizada visando obter um espao
contnuo nico que permita a alocao de outros
processos. Este procedimento conhecido como coleta
de lixo (garbade collection).
9k
P1(13k) 30k
20k
8k
20k 20k 20k
8k 20k 20k
P2 (7k)
20k
5k 20k 20k
P3 (5k)
Alexandre Lovisi. amlovisi@fusoes.com.br 308
G) Paginao.
o
A alocao do processo na memria, em posies
contguas (adjacentes), mesmo com a alocao
dinmica destes espaos, apresenta o problema da
fragmentao externa de memria.
Elaborando um pouco mais as estruturas e
mecanismos de gerncia pode-se subdividir o espao
lgico de endereamento do processo em blocos
denominados pginas, que sero alocadas de forma
no contgua na memria.
Neste momento ainda estaremos carregando o
todo o processo na memria, mas no em posies
contguas.

Alexandre Lovisi. amlovisi@fusoes.com.br 309


O espao de endereamento fsico, a memria
fsica, tambm ser tratada em blocos denominados
quadros ou frames.
As pginas e os quadros devem ser de mesmo
tamanho de forma que cada quadro abrigue uma
pgina.
O tamanho do processo passa a ser medido em
nmero de pginas. Um processo de n pginas
necessita portanto de n quadros (frames) de memria.
A vantagem de carregar o processo em reas
(quadros) no contguos que qualquer quadro
disponvel pode ser utilizado por uma pgina de um
processo.

Alexandre Lovisi. amlovisi@fusoes.com.br 310


A fragmentao externa deixa de existir pois
cada pgina aloca um quadro. A fragmentao interna
no quadro permanecer mas ser pequena para cada
processo. Somente a ltima pgina do processo pode
no estar totalmente preenchida e desta forma uma
pequena rea disponvel existira dentro do quadro
associada a esta ltima pgina (pequena fragmentao
interna).
Numa uma viso inicial, considere que cada
pagina tenha 2k bytes de tamanho.
Um processo de 11k ter 6 pginas. Cinco
pginas completas e uma sexta com apenas 1k.

rea de fragmentao
Pgina 11k interna da ltima pgina
de 2k
Alexandre Lovisi. amlovisi@fusoes.com.br 311
G.1) Associando as pginas aos frames.
p0 f0
p1 f1
p2 f2
p3 f3
Pginas. f4
f5
Espao de endereamento f6
lgico do processo. f7
(viso do registrador da CPU) Frames.
Espao de endereamento
fsico. Memria fsica.
(viso do registrador da memria)

A alocao das pginas p nos frames f (quadros)


gerenciada por intermdio de uma tabela de pginas.
Alexandre Lovisi. amlovisi@fusoes.com.br 312
G.2) Tabela de pginas.
A tabela de pginas pode ser implementada e
armazenada na rea de memria reservada ao sistema
operacional. Pode ser uma estrutura em forma de
tabela ou ser implementada como uma lista encadeada.
Cada processo possui sua tabela de pginas.
No bloco de controle do processo (PCB) existe uma
entrada que armazena o endereo na memria da
tabela de pginas do processo.
Na troca de contexto quando o processo assume
o controle da CPU, dentre outros registradores que so
carregados, tambm carregado um registrador de
pgina, capaz de indicar ao S.O. onde est na memria
a tabela de pgina do processo.

Alexandre Lovisi. amlovisi@fusoes.com.br 313


Memria
principal
Blocos de controle
dos processos

End. Tab. pgina

S.O.

Tabela de pginas do
processo
Alexandre Lovisi. amlovisi@fusoes.com.br 314
G.3) Mapeamento de pginas em frames.
Processo P1
p0 f0
p1 Tabela de f1 P1 p0
p2 pginas f2 P1 p1
p3 f3
0 1
1 2 f4 P1 p3
6 f5
2
4 f6 P1 p2
3
f7

Cada pgina tem uma entrada na tabela que


indica em que frame a pgina est carregada

Alexandre Lovisi. amlovisi@fusoes.com.br 315


O espao de endereamento lgico (visto pelo
registrador da CPU) ter seu endereo dividido em
duas partes. A primeira para indicar a pgina, a
segunda para indicar o deslocamento dentro da
pgina.
Deslocamento copiado

p d p d
f d
CPU d
f
p
f Memria

Tabela de pgina
Alexandre Lovisi. amlovisi@fusoes.com.br 316
Normalmente o tamanho de um pgina medido
em palavras de memria, em potncia de 2.
Considere um registrador de endereos da CPU de
16 bits. Temos um total de 65536 endereos (216)
Em vez de considerarmos todo o espao de
endereamento lgico como uma seqncia contnua,
vamos dividi-lo em duas partes.

Pgina Deslocamento
5 bits 11 bits

Uma parte que representar o nmero da pgina


(5 bits mais significativos - esquerda) e outra que
representar o deslocamento dentro da pgina (11 bits
menos significativos - direita).
Alexandre Lovisi. amlovisi@fusoes.com.br 317
Uma instruo ou varivel no endereo lgico
001110001011100 em vez de ser lido com sendo o
endereo 7260, deve ser lido com sendo:
Pgina 7 (00111), Deslocamento 92 (0001011100)

001110001011100

p =7 d=92 0 011110001011100
1
2 f= 15 d= 92
3
f
4
5
6
7 15
Alexandre Lovisi. amlovisi@fusoes.com.br 318
O espao contnuo de endereamento lgico de
65536 posies deve ser visto como sendo um conjunto
de 32 pginas ( 25), tendo cada pgina 2k palavras de
endereos ( 211).
Lembrar que estamos representando endereos
de memria que medido em PALAVRAS.
Outra forma de se determinar o nmero da
pgina dividir o endereo pelo tamanho da pgina.
Considere, no sistema decimal, uma pgina de
100 palavras. O endereo 350 estar na pgina 3, com
deslocamento 50 dentro da pgina.

350 100 A pgina 0 tem endereo de 0 a 99.


50 3 A pgina 1 tem endereo de 100 a 199.
O endereo 350 est na pg. 3, desl. 50
Alexandre Lovisi. amlovisi@fusoes.com.br 319
A utilizao de tabelas de pgina implica em dois
acessos memria para se chegar ao endereo correto.
O primeiro para acessar a tabela de pginas e construir
o endereo fsico de memria. O segundo para chegar
nesse endereo.
Uma forma de agilizar esse acesso utilizar uma
estrutura semelhante a uma memria cache que
mantm armazenada as pginas mais recentemente
acessadas. implementada em um conjunto de
registradores associativos. Esta estrutura conhecida
como TLB - Table look-aside buffer
Desta forma primeiro se consulta a TLB, se a
pgina estiver presente j se obtm o endereo do
frame e pode-se acessar diretamente a memria
principal.

Alexandre Lovisi. amlovisi@fusoes.com.br 320


Primeiramente pesquisa-se na TLB.

Endereos 1
lgicos p f Memria

TLB
p d p d
f d
Tabela
CPU pginas d
f
p
f

Se a pgina no estiver na TLB pesquisa-se na tabela


de pgina na memria principal.
Alexandre Lovisi. amlovisi@fusoes.com.br 321
G.4) Tabela de Frames
De forma anloga tabela de pginas h uma
tabela de frames que utilizada pelo sistema
operacional para gerenciar o espao fsico de
endereamento e determinar qual o frame est
disponvel ou que frames esto alocados para que
processos

Num. frame Processo status


1 = ocupado
0 P1 1 0 = livre
1 P1 1
2 0
3 P2 0

Alexandre Lovisi. amlovisi@fusoes.com.br 322


A tabela de frames contm ainda alguns bits
auxiliares para controlar permisses de acesso e
informaes de leitura/escrita.
A melhoria obtida pela paginao, apresentada
at o momento, limita o nvel de multiprogramao,
uma vez que apesar de poder ser carregado ao longo
da memria de forma no contgua, o processo ainda
assim deve ser carregado em sua totalidade.
O espao lgico total alocado em memria ser a
soma dos frames existentes e deve totalizar o mesmo
espao que a soma das pginas dos processos.
A paginao sob demanda apresentada a seguir
permite alocar parte do processo e implementar a
memria virtual.

Alexandre Lovisi. amlovisi@fusoes.com.br 323


H) Paginao sob demanda. Memria Virtual.
A paginao sob demanda significa que as
pginas de um processo sero carregadas na memria
medida que o processo realizar um acesso a um
endereo da pgina.
Desta forma nem todas as pginas necessitam
ser carregadas de uma s vez, o processo no precisa
estar todo na memria para executar.
Ser carregado um nmero mnimo inicial de
pginas, em seguida so carregadas as demais pginas
quando necessrio.
Uma pgina no carregada pode permanecer em
disco.

Alexandre Lovisi. amlovisi@fusoes.com.br 324


Este procedimento gera uma melhor utilizao da
memria e vale-se do fato de que um trecho de
programa que no est sendo executado pode
permanecer em memria secundria no ocupando a
memria principal.
De forma geral enquanto um mdulo ou trecho
de programa executado outros mdulos ficam
ociosamente aguardando.
Muitos mdulos de programas so mutuamente
exclusivos ou so muito pouco utilizados, tais como
rotinas de tratamento de erro. Certas rotinas de
validao de dados aps um momento inicial de
processamento podem no ser mais utilizadas pelo
programa.

Alexandre Lovisi. amlovisi@fusoes.com.br 325


O espao lgico de endereamento dos processos
continuam sendo divididos em pginas como visto
anteriormente, apenas no se ocupa os frames da
memria fsica com todas as pginas do processo.
Desta forma se somarmos todas as pginas dos
processos que esto de alguma forma na memria
teremos um espao lgico maior do que a soma de
todos os frames (quadros) da memria fsica.
Isto apresenta o conceito de memria virtual,
onde o sistema computacional parece possuir mais
memria fsica do que realmente existe.

Alexandre Lovisi. amlovisi@fusoes.com.br 326


Vantagens da paginao sob demanda:
- exigir menos memria para execuo de um mesmo
conjunto de processo uma vez que no necessita de
alocar o espao total de cada processo;
- permitir um maior nmero de processos executando
concorrentemente no sistema mantendo-se uma
mesma quantidade de memria fsica.
Aps a carga inicial das pginas de diversos
processos nos frames disponveis da memria, poder
ocorrer de que todos os frames estejam ocupados e
um processo deseje carregar uma nova pgina. Dever
ento existir uma poltica de substituio de
pginas.

Alexandre Lovisi. amlovisi@fusoes.com.br 327


H.1) Polticas de Substituio de pginas.
A poltica de substituio de pginas objetiva
selecionar um frame a ser liberado para alocar a nova
pgina a ser carregada. Conseqentemente uma pgina
do prprio processo ou de algum outro processo dever
ser transferida para a memria secundria liberando
espao na memria fsica.
Para implementar essas polticas diferentes
algoritmos podem ser utilizados. Cada algoritmo pode
exigir uma pequena alterao na tabela de pginas
para que possa ser implementado.

Alexandre Lovisi. amlovisi@fusoes.com.br 328


Lembre-se de que a tabela de pginas est
associada ao espao lgico de endereamento, isto , o
processo como um todo est dividido em pginas.
Mesmo que algumas pginas no estejam
presentes na memria elas representam um conjunto
de instrues ou dados do processo.
Dentre as alteraes previstas a incluso de dois
bits de controle por pgina esto presentes na maioria
das polticas de substituio.
-bit de status: indica se a pgina est presente na
memria (valor 1); ou foi salva (gravada) em disco
(valor 0) e no se encontra na memria primria;
-bit de modificao: indica se o contedo da pgina
foi alterado (valor 1) depois de carregada na memria.
Alexandre Lovisi. amlovisi@fusoes.com.br 329
Bit de status Tabelas de pginas
Processos Bit Memria
Frame Status principal
P1
pg 0 0 10 1 Sistema
pg 1 1 14 1 Oper.
pg 2 2 15 1 P1-pg 0 10
P2-pg 1 11
P2 P2-pg 2 12
pg 0 0 0 P2-pg 5 13
pg 1 1 11 1 P1-pg 1 14
pg 2 2 12 1 P1-pg 2 15
pg 3 3 0 P2-pg 4 16
pg 4 4 16 1
frames
pg 5 5 17 1
Alexandre Lovisi. amlovisi@fusoes.com.br 330
Inicialmente, quando um processo criado todas as
suas pginas so marcadas como ausentes da memria (bit
status=0).
Quando um processo faz referncia a uma pgina o
S.O. consulta a tabela de pginas e:
1. verifica se a referncia ao endereo da pgina vlida
(verifica o espao de endereamento). Se invlida o
processo aborta;
2. o bit de status sendo zero causa uma falta de pgina;
3. obtm um frame livre consultando a tabela de frames
(no a tabela de pginas do processo);
4. carrega no frame livre a pgina que estava em disco;
5. atualiza o bit de status da pgina carregada na memria
principal para 1. Numa prxima referncia pgina se o bit
tiver valor 1 o processo prossegue sem falta de pgina.
Alexandre Lovisi. amlovisi@fusoes.com.br 331
Na figura anterior, o bit de status das pginas do
processo P1 indica que todas as de P1 esto na
memria principal nos frames 10, 14 e 15.
Para o processo P2 , o bit de status das pginas
do processo P2 indica que as pginas 0 e 3 no esto
na memria.
Caso o processo P2 faa um acesso a uma
instruo ou dado de uma destas pginas ( Ex: pg.3)
o sistema operacional ao consultar o bit de status
percebe que a pgina no est na memria, gera uma
interrupo de falta de pgina (page fault) e deve
chamar a rotina que trata de falta de pgina.

Alexandre Lovisi. amlovisi@fusoes.com.br 332


Se no existir espao na memria ( frame livre)
para alocar uma pgina a poltica de substituio de
pginas deve providenciar a retirada de uma pgina da
memria principal para o disco.
O bit de modificao ser um dos parmetros
dos algoritmos de substituio de pginas. Ao decidir
qual pgina deve deixar a memria, se for dada
preferncia a um pgina que no foi modificada desde
de a sua ltima carga em memria, uma imagem desta
pgina j estar no disco e portanto no ser
necessrio atualizar sua imagem no disco. No
necessrio gravar em disco a pgina escolhida para sair
da memria principal. Apenas deve-se ler e carregar a
nova pgina no frame indicado.

Alexandre Lovisi. amlovisi@fusoes.com.br 333


Bit de status e bit de modificao.

Processos Bit Bit


P1 Frame Status Modif Memria principal
pg 0 0 10 1 0 Sistema
pg 1 1 14 1 1 Oper.
pg 2 2 15 1 0 P1-pg 0 10
P2-pg 1 11
Tabelas de pginas
P2 P2-pg 2 12
pg 0 0 0 0 P2-pg 5 13
pg 1 1 11 1 0 P1-pg 1 14
pg 2 2 12 1 1 P1-pg 2 15
pg 3 3 0 1 P2-pg 4 16
pg 4 4 16 1 0
frames
pg 5 5 17 1 1
Alexandre Lovisi. amlovisi@fusoes.com.br 334
Caso o processo P2 tenha que acessar a sua
pgina 3, observe na figura anterior que as pginas 1 e
4 carregadas nos frames 11 e 16 apresentam bits de
modificao zerados, sendo portanto melhores
candidatas a sair da memria pois sua imagem em
disco representa sua imagem inalterada em memria.
A poltica de substituio de pginas pode ser
local quando seleciona a pgina a ser removida apenas
entre as pginas do prprio processo. Ser uma poltica
global quando seleciona uma pgina entre quaisquer
que estejam na memria.
Em geral a qualquer algoritmo de substituio de
pginas pode-se aplicar uma poltica local ou global.

Alexandre Lovisi. amlovisi@fusoes.com.br 335


As instrues de programa podem gerar acessos a
variveis por endereamento indireto, isto , o
endereo de uma posio de memria na realidade
um ponteiro para outro endereo, e para acessar essa
informao outra pgina deve ser carregada; ou se o
processo de substituio de pginas gerar um nmero
elevado de falta de pginas, pode ocorrer o que se
chama de trashing. Neste caso a gerncia de pginas
torna-se ineficiente sendo gasto mais tempo para
gerenciar a troca de pginas do que de processamento
efetivo. Pginas que to logo sejam carregadas so
removidas, para em seguida serem novamente
acessadas levam a uma troca excessiva de pginas.
O trashing pode ocorrer tanto entre as pginas de
um mesmo processo quanto entre pginas de processos
distintos.
Alexandre Lovisi. amlovisi@fusoes.com.br 336
Outra questo que pode levar ao trashing que
enquanto uma rotina do sistema operacional est
gravando pginas em disco por intermdio de um
programa de canal, os processos que aguardam por
essa tarefa ficam em estado de ESPERA. Com a
diminuio da atividade direta da CPU, porque h
vrios processos em ESPERA e poucos na condio de
PRONTO, o escalonador de longo prazo aloca novos
processos na memria na tentativa de compensar a
baixa atividade da CPU. Isto leva a um grande nmero
de processo com poucas pginas em memria, o que
deve incrementar a falta de pgina e contribuir para o
trashing.
Para minimizar o trashing pode ser definido um
nmero mnimo de pginas a ser carregada por
processo.
Alexandre Lovisi. amlovisi@fusoes.com.br 337
Polticas e algoritmos de substituio de pginas.
Diversos algoritmos so utilizados para
implementar essas polticas. Para comparar esses
algoritmos uma srie que represente pginas que
devem ser carregadas utilizada como padro de
medio de forma que seja observado o
comportamento dos diversos algoritmos sobre uma
mesma srie. Estas sries so conhecidas como strings
de referncia.
Os algoritmos so medidos em funo do nmero
de falta de pginas que eles geram sobre um string de
referncia.
Alm do string de referncia o nmero de frames
disponveis levado em conta e deve ser padro para
as medies.
Alexandre Lovisi. amlovisi@fusoes.com.br 338
Considere o string de referncia que representa
a seqncia de como as pginas de um processo so
referenciadas: 1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1.
Este exemplo pode ser visto como uma
aplicao que aps obter seus dados iniciais executa
duas rotinas em um lao de repetio.
Considerando a disponibilidade de 2 frames
temos:
Pg. acessadas 1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1
0 1 1 1 6 6 6 6 6 6 6 6
frames 1 4 4 4 1 1 1 1 1 1 1

Faltas de pgina 1a 2a 3a 4a Pg. j alocadas


em frames

Alexandre Lovisi. amlovisi@fusoes.com.br 339


Com uma memria com 3 frames teramos:

1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1.
0 1 1 1 1 1 1 1 1 1 1 1
frames 1 4 4 4 4 4 4 4 4 4 4
2 6 6 6 6 6 6 6 6

Falta de
1a 2a 3a Pg. j alocadas em frames
pgina
Nos exemplos foi adotada um poltica FIFO de
substituio de pginas.
Em geral com o aumento do nmero de frames
tem-se uma diminuio no ndice de page faults.
Algo como: mais memria menos falta de pgina.
Alexandre Lovisi. amlovisi@fusoes.com.br 340
H.2) Polticas de Substituio de pginas.

H.2.1) FIFO First in First out.


a forma mais simples de implementar uma
poltica de substituio de pginas.
Tem como base que a primeira pgina carregada
em memria principal deve ser escolhida com a
primeira pgina a sair ( pgina escolhida) para dar lugar
a outra pgina a ser carregada.
Neste caso associa a ordem de carga da pgina ao
tempo em que foi carregada na memria. As pginas
mais antigas devem ser selecionadas para deixar a
memria quando necessrio.

Alexandre Lovisi. amlovisi@fusoes.com.br 341


O desempenho deste algoritmo pode ser
questionado. Uma pgina inicialmente carregada em
memria mas de uso constante do processo ser
escolhida para ser retirada da memria, mesmo que um
pgina recentemente carrega ( no fim da fila ) seja de
uso eventual.
To logo a primeira pgina seja removida ser
necessrio recarreg-la uma vez que possui uso
intenso.
Caso este fato se limite a uma nica pgina, aps
retornar para a memria ela estar no fim da fila e
portanto dever permanecer em memria at que
chegue no incio da fila e seja removida.

Alexandre Lovisi. amlovisi@fusoes.com.br 342


Na hiptese deste padro se repetir em vrias
pginas ao longo da execuo do programa a falta de
pginas tende a crescer ainda mais e torna mais lenta
a execuo do processo.

Seqncia de acesso ao longo do temo


pginas 1, 4, 5, 2, 1, 6, 3, 4, 1, 6, 1.
0 1 1 1 2 2 2 3 2 2 6 6
frames 1 4 4 4 1 1 1 4 4 4 4
2 5 5 5 6 6 6 1 1 1
1a 2a 3a 4a 5a 6a 7a 8a 9a 10a
Neste exemplo a pgina 1 a mais solicitada e foi
a que apareceu em maior vezes gerando falta de
pgina. Nas 10 ocorrncias de falta de pginas a pgina
aparece em 3 ocorrncias.
Alexandre Lovisi. amlovisi@fusoes.com.br 343
Anomalia de Belady,
Considere o string de referncia:1,2,3,4,1,2,5,1,2,3,4,5
a) Com 3 frames na memria: 9 faltas de pginas.
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5.
1 1 1 4 4 4 5 5 5 5 5 5
frames 2 2 2 1 1 1 1 1 3 3 3
3 3 3 2 2 2 2 2 4 4

b) Com 4 frames: 10 faltas de pginas.


1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5.
1 1 1 1 1 1 5 5 5 5 4 4
frames 2 2 2 2 2 2 1 1 1 1 5
3 3 3 3 3 3 2 2 2 2
4 4 4 4 4 4 3 3 3
Alexandre Lovisi. amlovisi@fusoes.com.br 344
Observe que no caso B, para o mesmo string de
referncia, o aumento de frames, de 3 para 4,
(aumento de memria ) gerou mais falta de pginas
(10) do que na situao A (9). Esta a anomalia de
Belady: aumentando a memria a poltica FIFO pode
gerar em pior desempenho.
A poltica FIFO implementada por uma fila
circular.
H.2.2) LRU Least Recently Used.
A pgina menos recentemente usada ser
selecionada para ser retirada da memria.
A cada pgina est associado um informao de
tempo que indica o ltimo momento de acesso na
pgina. A pgina com o acesso mais antigo
selecionada (maior tempo sem acesso ).
Alexandre Lovisi. amlovisi@fusoes.com.br 345
Principio da localidade.
Com base no princpio de que uma instruo
executada em uma pgina deve levar a execuo de
outras instrues prximas, e na mesma pgina, as
pginas mais recentemente acessadas devem
permanecer na memria. Pginas menos recentemente
usadas podem sair da memria.
Considere o string de referncia abaixo e a
substituio de pginas pela poltica LRU.

7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 0, 1
7 7 7 2 2 2 2 4 4 4 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0 2
1 1 1 3 3 3 2 2 2 2 2 2 2 2 2 7 7 7 7
Alexandre Lovisi. amlovisi@fusoes.com.br 346
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 0, 1
7 7 7 2 2 2 2 4
0 0 0 0 0 0 0
1 1 1 3 3 3

Observe que para ser inserida a pgina 4, a


imagem dos frames anteriormente exibe a carga das
pginas 2, 0, 3. Destas qual a pgina que foi acessada
h mais tempo? A pgina 2.
A questo como implementar esse algoritmo
que necessita manter uma informao do momento de
acesso de cada pgina?

Alexandre Lovisi. amlovisi@fusoes.com.br 347


Duas hipteses:
a) um registro de tempo: a cada pgina deve estar
associado um registrador de tempo. Sempre que a
pgina for referenciada o valor do relgio de tempo
gravado nesse registrador. Dever ser removida da
memria a pgina com menor valor, isto , aquela com
momento de acesso mais antigo.
b) uma estrutura ordenada: que mantenha as pginas
ordenadas por seqncia de acesso. Por exemplo uma
lista encadeada ordenada.
Para ter um melhor desempenho, esta poltica
necessita de algum apoio de hadware.

Alexandre Lovisi. amlovisi@fusoes.com.br 348


Por exemplo como lista ordenada por tempo:
Nova Nova
0 Ou como numa fila
0 circular pode-se identificar
a pgina mais antiga
7 0 como sendo aquela
7 0 apontada pela pgina
mais nova.
7
Antiga

Seqncia de acesso
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 0, 1
f0 7 7 7 2 2 2 2 4 4 4
f1 0 0 0 0 0 0 0 0 3
f2 1 1 1 3 3 3 2 2

Alexandre Lovisi. amlovisi@fusoes.com.br 349


Seqncia de acesso
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 0, 1
Nova Nova Nova Nova
7 0 1 2

7 7 0 7 0 1 7 0 1 2

Nova Nova Nova Nova


0 3 0 4

0 1 2 0 1 2 3 0 2 3 0 2 3 4

0 2 3

Alexandre Lovisi. amlovisi@fusoes.com.br 350


H.2.3) Algoritmo de Segunda Chance.
Este algoritmo baseado no FIFO, que em geral
implementado por uma fila circular. Pode ocorrer que
a pgina que est no incio da fila e portanto ser
selecionada para deixar a memria seja uma pgina
em uso recente pelo processo ou que tenha sofrido
algum acesso.
Com a utilizao de um bit auxiliar , bit de
referncia, pode-se saber se a pgina foi
referenciada.
Quando o processo se inicia todos os bits so
zerados. Quando uma pgina referenciada seu bit
alterado para 1 ( pgina referenciada).
Posteriormente ser possvel analisar quais
pginas foram referenciadas e quais no foram usadas.
Alexandre Lovisi. amlovisi@fusoes.com.br 351
No possvel saber quando a pgina foi
acessada, apenas que houve o acesso a ela.
As seqncia de carregamento das pginas na
memria gerenciada por uma fila circular, FIFO.
Quando e necessrio a substituio de pginas a
primeira pgina da fila deveria ser retirada da
memria. Neste momento analisado o bit de
referncia. Caso o bit tenha valor 1, indicando que
houve um acesso na pgina, ser dada a ela uma
segunda chance de permanecer em memria.
O bit da pgina ser desligado (recebe o valor
zero) e a pgina vai para o fim da fila. A pgina
seguinte ento analisada para verificar se ser
removida da memria.

Alexandre Lovisi. amlovisi@fusoes.com.br 352


Como a fila circular, se todas as pginas da fila
tiverem sido acessadas, seus bits vo sendo desligados
at que a primeira das pginas volte ao incio da fila e
desta vez ser removida da memria. J teve sua
chance de permanecer na memria principal.
Caso uma pgina seja utilizada com freqncia
para manter seu bit de referncia sempre ligado ela
no dever deixar a memria visto que quando estiver
no incio da fila o bit ligado lhe dar uma segunda
chance.

Alexandre Lovisi. amlovisi@fusoes.com.br 353


H.2.4) Algoritmo segunda chance modificado.
Neste caso alm do bit de referncia ser
considerado um bit de modificao, formando o par
(R,M).
As pginas sero classificadas como pertencendo
a uma das 4 classes formadas pelas combinaes de
(R,M):
(0,0) No referenciada nem modificada.
(0,1) No referenciada recentemente, mas j foi
modificada.
(1,0) Referenciada, mas no foi modificada
(1,1) Referenciada e tambm modificada.

Alexandre Lovisi. amlovisi@fusoes.com.br 354


A prioridade de pesquisa para seleo da pgina
a ser substituda ser feita em cada classe na ordem:
inicialmente (0,0), depois (0,1), depois (1,0) e
finalmente (1,1).
O objetivo primeiramente remover pginas no
referenciadas ( pouco uso) e dentre estas aquelas que
no foram modificadas ( evita ter que salvar a pgina
em memria secundaria, sua imagem j est gravada
sem modificao).
Caso tenha ocorrido uma referncia a todas as
paginas ento ser dado preferncia quela que no
foi modificada.
O algoritmo seleciona a primeira pgina
encontrada numa das classes no vazia na ordem
estipulada.
Alexandre Lovisi. amlovisi@fusoes.com.br 355
Pode ser necessrio percorrer fila de paginas ( ou
tabela de pginas) mais de uma vez para estabelecer a
pgina selecionada.
H.2.5) LFU Least Frequently Used.
O algoritmo LFU ( menos freqentemente usada)
tem por base que pginas de uso intenso devem
permanecer na memria. Deve-se substituir aquela com
menor freqncia de uso.
Para isto a cada pgina associado um contador
que acrescido de uma unidade a cada referncia feita
pgina.
O problema que no se conhece a distribuio
dessas referncias ao longo do tempo. Uma pgina com
uso intenso no incio do processamento e sem
referncia aps um certo momento, tender a
Alexandre Lovisi. amlovisi@fusoes.com.br 356
permanecer na memria at que outras pginas
tenham uma freqncia de uso igual ou superior a ela.
Assim, pginas mais utilizadas num certo
momento do processamento podem correr o risco de
serem removidas da memria por no ter uma
freqncia de uso to alta.
H.2.6) MFU Most Frequently Used.
Como contra partida do algoritmo LFU, com base
no princpio de que pginas com pouca referncia so
pginas recentemente carregadas e portanto alvo do
processamento mais recente do processo, a poltica
MFU seleciona para ser removida da memria a pgina
com maior freqncia de uso.

Alexandre Lovisi. amlovisi@fusoes.com.br 357


H.2.8) Working set (Conjunto de trabalho).
Com base no princpio da localidade, no qual as
instrues utilizadas por um processos tendem a estar
prximas umas das outras ao longo do tempo de
execuo, em conjuntos de instrues, determina-se
um conjunto de pginas que deve estar presentes na
memria com objetivo de reduzir o trashing.
A este conjunto de pginas d-se o nome de
working set (conjunto de trabalho).
As pginas do working set devem estar sempre
em memria. Um processo deve concorrer utilizao
da CPU se seu working set puder ser carregado.
Para se definir quais pginas compem o
conjunto de trabalho utiliza-se de um parmetro que
representa as referncias s pginas mais recentes.
Alexandre Lovisi. amlovisi@fusoes.com.br 358
Podemos associar a uma janela de tempo, na
verdade um janela de referncias, dentro da qual as
pginas referenciadas mais recentemente neste
intervalo ( nmero de referncias recentes) formam o
conjunto de trabalho.
Se durante este tempo uma s pgina for
referenciada, ento apenas esta pgina ser
considerada como necessria ao processo. Ela ser o
conjunto de trabalho, WS = <pgina>
Caso o cdigo do programa espalhe as instrues
em vrias pginas ( n pginas ) nestas ltimas
referncias, ento estas n pginas formam o conjunto
de trabalho do processo, WS = < n pginas>
Uma nova pgina referenciada passa a fazer parte
do conjunto de trabalho do processo.
Alexandre Lovisi. amlovisi@fusoes.com.br 359
Seja a seqncia de referncia de pginas:
1,1,1,1,1,2,2,5,5,6,6,1,2,3,4,5,6,1,4,5,4,5,4,5,4,6
E um = 4
Se considerarmos a viso de a cada nova
referncia da seqncia acima teremos.
1,1,1,1,1,2,5,5,4,2,3,... WS() = 1
1,1,1,1,1,2,5,5,4,2,3,... WS() = 1
1,1,1,1,1,2,5,5,4,2,3,... WS() = 1,2
1,1,1,1,1,2,5,5,4,2,3,... WS() = 1,2,5
1,1,1,1,1,2,5,5,4,2,3,... WS() = 1,2,5
1,1,1,1,1,2,5,5,4,2,3,... WS() = 2,5,4
Tempo ou referncias
Alexandre Lovisi. amlovisi@fusoes.com.br 360
Seja:
WSi = working set de um processo i
f = nmero total de frames na memria
D = demanda total de pginas dada por D = WSi
O sistema operacional dever monitorar os
processos para que D seja menor que f.
Se D for for maior que f teremos uma demanda
maior do que o nmero de frames existentes. Neste
caso ser necessrio que algum processo perca uma
pgina de seu working set em algum momento. Isto
gera a necessidade de substituio de pginas em
memria por haver falta de pginas.
A tendncia de grande nmero de interrupo por
falta de pginas gera trashing.
Alexandre Lovisi. amlovisi@fusoes.com.br 361
Quando a demanda D ultrapassa o nmero de
frames f existentes na memria, o sistema operacional
pode SUSPENDER algum processo. Um processo
suspenso dever ento liberar os frames que alocam
suas pginas de forma a incrementar o nmero de
frames livres em memria e atender a demanda D por
pginas.
Quando a demanda por pginas estabilizar, o
processo suspenso ativado e volta a concorrer pela
CPU. Para isto o sistema operacional deve carregar seu
WS em memria.
A rotina que representa o escalonador de longa
durao, examina a demanda D de forma a no liberar
novos processos que entram no sistema do estado de
NOVO para o estado de PRONTO.

Alexandre Lovisi. amlovisi@fusoes.com.br 362


Quando uma nova pgina acessada ela dever
fazer parte do WS do processo. Alguma pgina no
referenciada ou de referncia mais antiga no intervalo
deve sair do WS. Para determinar as pginas que
devem fazer parte do WS examina-se, por exemplo, os
bits de referncia das pginas.
Seja um =10.000 referncias.
Seja uma interrupo por tempo estabelecida a
cada 5000 referncias de pginas.
A cada interrupo de tempo pode-se copiar os
5000 bits de referncias das pginas para uma rea
(registrador) e desligar os bits de referencia das
pginas, re-iniciando novo perodo de observao das
referncias.

Alexandre Lovisi. amlovisi@fusoes.com.br 363


Na prxima interrupo por tempo verifica-se os
bits de referncia salvos anteriormente e os atuais.
Pginas com bits de referncia ligados so
pginas referenciadas nos intervalo de 10000
referncias e portanto pertencem ao conjunto WS do
processo.

Alexandre Lovisi. amlovisi@fusoes.com.br 364


Vantagens do conjunto de trabalho:
-minimiza o trashing uma vez que as pginas
necessrias ao processo sero mantidas em memria;
-otimiza a alocao de memria pois tende a manter na
memrias apenas as pginas necessrias para o
processo.

Alexandre Lovisi. amlovisi@fusoes.com.br 365


I) Segmentao.
Com a complexidade dos programas e dos
sistemas, o usurio se distancia da viso fsica da
memria e passa a estar mais prximo da viso lgica.
O mapeamento do espao lgico em espao fsico deve
ser considerado, e se possvel deslocado para a viso do
usurio.
O usurio ou programador pensa no programa
como um conjunto de rotinas e estruturas de dados e
com esta viso trabalha no desenvolvimento da
aplicao. Seria natural ento que o esquema de
gerenciamento de memria pudesse seguir esta viso e
assim refletir melhor a expectativa do programador
quanto ao uso da memria, sua gerncia e quais
instrues devem estar presentes na memria principal
a cada momento.
Alexandre Lovisi. amlovisi@fusoes.com.br 366
O espao lgico de endereamento passa a ser
visto como um conjunto de segmentos de cdigos e
dados tratados como unidades acessadas pelo
programa.
A segmentao um esquema de gerncia de
memria que oferece suporte a essa viso de usurio
sobre a memria.
Cada segmento tem uma identificao e um
tamanho especfico. Os endereos ( deslocamentos )
das instrues e variveis dentro de um segmento so
referentes ao incio do segmento.
Um endereo de uma instruo no espao lgico
de endereamento definido pelo par
<segmento,deslocamento>

Alexandre Lovisi. amlovisi@fusoes.com.br 367


Espao lgico Segmentao X Paginao

Viso do Seg 0
programador
dx
d Pginas
Seg 1
0
1 d1
d 2
3
4
5
Seg 2 6
7
dy 8 d8
9

Alexandre Lovisi. amlovisi@fusoes.com.br 368


Observe que no esquema de paginao, todas as
pginas de um processo so de mesmo tamanho. Isto
permite ao sub-sistema de gerncia de memria,
conhecer exatamente o nmero de pginas necessrias
ao processo, determinar em qual pgina esta um certo
endereo e qual o deslocamento deste endereo dentro
da pgina. Tudo de forma transparente ao usurio.
Na segmentao o tamanho do segmento
varivel. Para acesso a um endereo necessrio
informar qual o segmento.
Em geral os compiladores devem ser capazes de
identificar as estruturas do programa e gerar os
segmentos, automaticamente, de cdigos, dados, pilhas
de controle de rotinas etc, ou receber alguma
informao do programador para a elaborao dos
segmentos.
Alexandre Lovisi. amlovisi@fusoes.com.br 369
Cada processo tem uma tabela de segmentos
alocada na rea de memria reservada ao sistema
operacional.
Para mapear o endereo lgico do par
<segmento,deslocamento> a tabela de segmentos tem
uma entrada para cada segmento.
Cada entrada deve conter a base que representa o
endereo inicial do segmento na memria, e o limite que
representa tamanho do do segmento. O deslocamento
da instruo dentro do segmento adicionado base
para determinar o endereo final da instruo na
memria fsica.
Na construo dos endereos lgicos do programa o
compilador far uso do par <s,d> para identificar estes
endereos a serem tratados pela CPU.

Alexandre Lovisi. amlovisi@fusoes.com.br 370


No bloco de controle do processo deve existir a
informao do endereo de memria onde est
carregada a tabela de segmentos do processo e o
nmero de segmentos existentes no processo. Estas
informaes so carregadas em registradores quando o
processo assume o controle da CPU.

PCB
Nmero de Endereo tabela
segmentos N segmento E
Sistema Operacional
STLR STBR

STLR Segment-table lenght register


STBR Segment-table base register Memria
Alexandre Lovisi. amlovisi@fusoes.com.br 371
Uma instruo no endereo lgico <s,d> de um
segmento ser mapeado da seguinte forma:
1- Identificar a posio da tabela de segmentos na
memria com base no STBR. Verificar se o endereo s
valido (s<STLR).
2- Identificar a entrada da tabela de segmentos para o
endereo s ( somar o contedo de STBR a s ).
3- Obter o tamanho do segmento s (campo limite), e
verificar se o deslocamento d vlido: (d<limite)
4- Obter o endereo de carga do segmento s na
memria (campo base).
5- Somar o endereo base ao deslocamento d
determinando o endereo fsico.

Alexandre Lovisi. amlovisi@fusoes.com.br 372


STBR
Seg s Tabela de
d <s,d> (1) segmentos
Memria
s fsica
Seg n
(2)
limite base
<s,d>
(4)
CPU

Seg m +
(3) (5)
No
d
d >limite
Sistema
Sim Operac.

Erro de endereamento
Alexandre Lovisi. amlovisi@fusoes.com.br 373
I.1) Proteo em segmentao
Como os segmentos representam uma poro
semanticamente definida (significado definido) do
programa, provvel que um segmento seja utilizado
da mesma forma por diferentes processos criados a
partir deste cdigo de programa.
Na gerao de segmentos podem ser construdos
segmentos apenas de cdigo, segmentos de dados
globais, segmentos de dados locais etc. Um segmento
pode ser uma sub-rotina, uma funo etc.
No caso de segmentos apenas de cdigos, e
considerando que nos sistemas atuais um segmento de
cdigo no sofre alterao nas prprias instrues
durante a vida do processo, possvel definir que estes
segmentos sejam do tipo apenas leitura ( read only ) ou
do tipo executveis.
Alexandre Lovisi. amlovisi@fusoes.com.br 374
Isto aumenta a proteo dada ao sistema pois
uma tentativa de alterar um segmento read only
causar erro. O controle de permisses de acesso e
utilizao destes segmentos tambm ser facilitado.
Por exemplo, como o acesso aos endereos do
segmento pode ser verificado com o apoio do hardware,
erros de lgica de programao tais como acessar alm
do espao de endereamento do segmento podem ser
monitorado por esse hardware, minimizando os danos
causado aos processos.

Alexandre Lovisi. amlovisi@fusoes.com.br 375


Para o processo, como um todo, a proteo de
acesso memria se faz verificando se o endereo s de
um segmento menor ou igual ao nmero de segmentos
existentes no processo.
Dentro do segmento, a proteo se faz verificando o
limite do segmento, de forma que um acesso direto a um
endereo alm do limite ( tamanho ) do segmento
tratado como violao de memria, um erro.

BCP: N=Nm. de segmentos


Tab. Segmento
STRL =N
<s,d> base limite
Tab. Seg
Sim s
S<N Sim
d<limite

No: erro
No: erro
Alexandre Lovisi. amlovisi@fusoes.com.br 376
I.2) Compartilhamento.
Considerando que um segmento puro de cdigo
representa um conjunto de instrues, pode-se pensar
em compartilhar um mesmo segmento entre vrios
processos. Isto evita a carga desnecessria em memria
de vrias cpias de um mesmo programa.
Cada processo ter seus prprios segmentos de
dados, e seu prprio contador de programa (program
counter), porm o segmento de cdigo de certas rotinas
podem ser compartilhado com outros processos.
Observando-se que quando um programa faz
referncia a um segmento de cdigo se este segmento
for simplesmente compartilhado com outros processos,
todos os processo deveriam ver o mesmo segmento da
mesma forma.
Alexandre Lovisi. amlovisi@fusoes.com.br 377
Caso cada segmento tenha em sua tabela de
segmentos identificao diferente para o mesmo
segmento, em princpio no seria problema se as duas
tabelas apontassem para a mesma base.
Ocorre que se o cdigo do segmento fizer uma
referncia ao prprio cdigo, o par <s,d> de uma mesma
instruo deste segmento ter valores diferentes dependo
do processo.
Considere no exemplo a seguir um mesmo
segmento compartilhado. A mesma instruo
representada em vermelho ter endereos diferentes se o
segmento compartilhado possuir identificao diferente
para cada processo.
Desta forma forma observa-se que a questo de
compartilhamento de cdigo possvel mas no to
simples quanto pode parecer.
Alexandre Lovisi. amlovisi@fusoes.com.br 378
Processo 1
limite base Memria
Seg 4
fsica
3
25 12
<4,3>

+3=15
Processo 2
Seg 7 limite base
3 Sistema
Operac.

<7,3>
25 12

Alexandre Lovisi. amlovisi@fusoes.com.br 379


I.3) Alocao do segmento e fragmentao.
O escalonador de longo prazo deve encontrar
local na memria para alocar os segmentos de cada
processo. Como cada segmento possui tamanho
varivel, ser necessrio obter espao na memria que
seja grande o bastante para alocar um segmento a ser
carregado. Pode ocorrer de que o espao disponvel no
seja o suficiente.
Neste caso temos um cenrio prximo ao da
alocao de memria por partio dinmica. Pode haver
fragmentao externa de memria.
Os algoritmos para alocar os segmentos podem
seguir as polticas Best Fit, First Fit e Worst Fit j
vistos.

Alexandre Lovisi. amlovisi@fusoes.com.br 380


Como no caso da partio dinmica, pode-se
suspender um um processo at que haja espao capaz
de alocar seu segmento ou pode-se fazer a
compactao da memria. Uma anlise do custo de
cada caso e de quanto fragmentada estar a memria
deve ser levada em considerao.
Nos extremos temos duas situaes:
-o processo todo ser um segmento, o que nos leva ao
conceito de partio dinmica de memria j vista;
-o processo ser composto de um grande nmero de
pequenos segmentos, para ter uma menor
fragmentao. Isto implica em ter uma tabela de
segmentos com muitas entradas por processo e um
custo de administrao elevado.

Alexandre Lovisi. amlovisi@fusoes.com.br 381


J) Segmentao com paginao.
Considerando que os segmentos em certas
aplicaes podem se tornar grandes e que devem ser
carregados como um todo na memria, combinar a
paginao com a segmentao pode levar a uma
soluo flexvel.
Neste caso, o segmento visto como uma
unidade a ser alocada e gerenciada pelo sistema, porm
o segmento em si paginado, isto , dividido em
pginas de tamanho fixo de forma que possa ser
alocado em partes, por intermdio de suas pginas
Numa viso simplificada, o campo base da tabela
de segmentos passa a apontar para o endereo de
memria onde encontra-se a tabela de pginas desse
segmento.
Alexandre Lovisi. amlovisi@fusoes.com.br 382
Os segmentos do Considere o
segmento s Tabela de pginas
processo P1
do segmento
paginado, e informa o frame
Seg 1 um
deslocamento 0
d dentro da 1
2 f
Seg s pgina p=2
3
p 0 4
d 1
d 2
3
4
Seg m Sabendo-se o tamanho da pgina traduz-se
o deslocamento d dentro do segmento s
para a pgina p com deslocamento d
Ex: p=2 representa deslocar duas pginas
(0 e 1 ) e posicionar na pg. 2
Alexandre Lovisi. amlovisi@fusoes.com.br 383
Endereo lgico Segmento s
<s,d> paginado
Tabela de p 0
d 1
segmentos d Memria
2
s 3
4
limite base

f d
Tabela de
+ pginas
0
base = endereo 1
inicial da tabela de 2
pginas do seg. s f
3
4

Alexandre Lovisi. amlovisi@fusoes.com.br 384


Como exemplo podemos considerar a arquitetura
do Intel 386 que considera dois conjunto de
segmentos. Cada com junto com 8K segmentos,
entradas na tabela de segmentos.
Um conjunto de segmentos (LDT) representa as
informaes privativas do processo e outro (GDT)
compartilhado por todos os processos do sistema.
implementado o conceito de segmentao e
paginao. Cada entrada nas tabelas de segmentos
possui 32 bits, sendo 20 bits para as pginas e 12 bits
para deslocamento dentro da pgina (pginas de 4k =
212).
A paginao implementada em dois nveis para
evitar um nmero muito grande de entradas na tabela
de pginas por processo ( 220 = 1.048.576 pginas ).
Alexandre Lovisi. amlovisi@fusoes.com.br 385

You might also like