Professional Documents
Culture Documents
Memria Cache
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
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.
Compilador
1500 CPU
Cdigo absoluto
(endereos de memria)
5000
(1500 a 5000)
Cdigo relocvel
(endereos de memria)
(0 3500)
0000
Cdigo relocvel Memria
(endereos de memria)
(0 3500)
2000
CPU MMU
278 + 2278
End. End.
(2000)
lgico fsico
Mdulo Mdulo
Memria
Principal clculo
1 Mb 300 kb 300 k
Mdulo
impresso
Sistema
operacional 200 k
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.
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.
216 216
26k 26k
Espao de P3 30k P3 30k
memria
Aps trmino
para 100k
usurios. P2 100k de P2
216
26k
30k P3 30k P3 30k
P3 30k
P2 100k P4 70k
P1 60k P1 60k P1 60k
0 (1) (2) (3)
P1 termina
P4 e P3 permanecem na fila P5
26k
P3 30k
30k
P4 70k P5 alocado
P1 60k
(3)
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
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.
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)
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
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
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.
Endereos 1
lgicos p f Memria
TLB
p d p d
f d
Tabela
CPU pginas d
f
p
f
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.
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
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
7 7 0 7 0 1 7 0 1 2
0 1 2 0 1 2 3 0 2 3 0 2 3 4
0 2 3
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
PCB
Nmero de Endereo tabela
segmentos N segmento E
Sistema Operacional
STLR STBR
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.
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
f d
Tabela de
+ pginas
0
base = endereo 1
inicial da tabela de 2
pginas do seg. s f
3
4