Você está na página 1de 33

Universidade Federal do Pará

Sistemas Operacionais
Memória

Diego Lisboa Cardoso


diego@ufpa.br
Gerência de Memória

⚫ Independente do esquema usado para


realizar a divisão da memória, existem
alguns métodos usados para gerenciar o
uso da memória:
Mapas de Bits;
Listas Ligadas.
Gerência de Memória

Mapa de Bits:
Método que divide a memória em
unidades de alocação.
Associa a cada unidade de alocação um
bit, que pode ser 0 (zero) se a unidade
estiver livre e 1 (um) se estiver ocupada,
ou vice-versa.
O tamanho do mapa de bits é função
direta do tamanho da unidade de alocação
utilizada pelo computador.
Gerência de Memória

Mapa de Bits:
Quanto menor a unidade usada, maior o
mapa de bits, pois mais unidade vai haver
para serem representadas no mapa.
A mesma consideração deve ser feita para
unidades grandes de memória. Isso
implicará em um mapa de bits menor.
O Mapa de bits é a forma mais simples de
gerenciar o uso da memória, pois seu
tamanho só depende dos tamanhos da
memória e da unidade de alocação.
Gerência de Memória

Mapa de Bits:

Problema:
Se um processo depende de k unidades
consecutivas de memória, a MMU
(Unidade de Gerenciamento da
Memória) deve procurar por k bits 0
consecutivos no mapa. Essa procura é
excessivamente lenta.
Gerência de Memória

z Mapa de Bits:

3 posições livres
consecutivas
11111000
11111111 Entretanto, se o processo
11001111
necessitar de quatro unidades
de memória, a MMU terá de
11111000 percorrer todo o mapa de bits
para constatar que não existe
essa disponibilidade no mapa.
Gerência de Memória

Listas Encadeadas:
Método que mantém uma lista encadeada
para referenciar os segmentos ocupados e
livres da memória.
Um segmento é um processo ou uma
lacuna entre dois processos.
Cada entrada da lista especifica uma
lacuna (L) ou um processo (P), o endereço
em que inicia, o comprimento e um
ponteiro para a próxima entrada.
Gerência de Memória

z Listas Encadeadas:

P 0 5 L 5 3 P 8 6 P 14 4

L 18 2 P 20 6 P 26 3 L 29 3 X

Lacuna Comprimento
Início Processo
Gerência de Memória
Listas Encadeadas:
Existem vários algoritmos para alocar
segmentos em lista ligada. Os principais
são:
Primeiro Ajuste: a MMU varre a lista até
achar uma lacuna suficientemente
grande para abrigar o processo. Quando
isso acontece, a lacuna é quebrada em
dois pedaços: o primeiro que abriga o
processo, e o segundo que é o espaço
vazio restante . É rápido porque pesquisa
o mínimo possível.
Gerência de Memória

Próximo Ajuste: Funciona da mesma


maneira que o Primeiro Ajuste, exceto
pelo fato de guardar a posição onde
encontrou uma lacuna conveniente. Na
próxima procura, ele inicia a partir do
lugar que deixou da última vez, ao invés
de começar pelo início da lista.
Simulações realizadas pelo próprio autor
da técnica mostraram que esse algoritmo
tem o desempenho um pouco pior que o
da primeira alocação.
Gerência de Memória

Melhor Ajuste: Verifica a lista inteira para


encontrar a lacuna que mais se aproxima
ao tamanho do processo. Menos eficiente
por ter que sempre percorrer toda a lista
para obter a lacuna ideal.
Simulações mostraram que esse
algoritmo gera maior desperdício de
memória, pois ele tende a dividir a
memória em lacunas muito pequenas,
que se tornam difíceis de usar em função
do tamanho reduzido.
Gerência de Memória

Pior Ajuste: Oposto do algoritmo de


Melhor Ajuste, ou seja, sempre procura
a maior lacuna para alocar um processo.
Assim, resultaria em uma lacuna não tão
reduzida.
Estudos com esse algoritmo mostraram
que ele não se apresenta tão eficiente na
prática.
Gerência de Memória

z Listas Encadeadas:
y Todos os quatro algoritmos podem ser
acelerados mantendo-se listas separadas
para processos e para lacunas. Dessa
forma, eles se concentram em pesquisar as
listas de lacunas, não perdendo tempo com
as listas de processos.
Gerência de Memória

Mapa de Bits versus Lista Ligada


Listas Ligadas possuem a vantagem de
não se precisar percorrer todos os bits de
uma lacuna para saber se o processo
cabe ou não nessa lacuna, pois há uma
indicação do tamanho da lacuna.
Mapas de Bits são mais fáceis de
implementar e de manipular. Já listas
ligadas são estruturas de dados mais
complexas que requerem um tratamento
mais sofisticado.
Gerência de Memória

Mapa de Bits versus Lista Ligada


Mapas de Bits oferecem apenas um
algoritmo de busca, que eqüivaleria (em
lista ligada) ao da primeira alocação. Já
listas ligadas oferecem um leque muito
maior de algoritmos, o que geralmente é
benéfico.
Gerência de Memória

Memória Virtual
É uma técnica sofisticada e poderosa de
gerência de memória, onde as MP e MS
são combinadas, dando ao usuário a
ilusão de existir uma memória maior que
a capacidade real da MP.
Gerência de Memória

Memória Virtual
A idéia básica é a de que o tamanho total
do código, dos dados e da pilha poderia
exceder o tamanho da memória real
disponível para armazenar o programa.
O SO mantém na memória apenas as
partes do programa que estão
efetivamente em uso, deixando o resto
em disco.
Gerência de Memória

Memória Virtual (Exemplo):


Um programa de 1Mbyte pode executar em
uma máquina com 256Kbyte de MP,
escolhendo-se os 256Kbytes de programa
que deverão ser mantidos na MP a cada
instante, com os seus pedaços sendo
copiados do disco para a MP e vice-versa,
quando necessário.
Gerência de Memória

Memória Virtual (Exemplo):


Em Sistemas Multiprogramados:
Oito programas de 1M podem ser
alocados em partições de 256K de uma
MP de 2M, cada um deles operando como
se possuísse sua própria máquina virtual
de 256K.
Gerência de Memória

Memória Virtual
Um programa no ambiente de Memória
Virtual não faz referência a endereços
físicos de memória (end. reais), mas
apenas a endereços virtuais.
Espaço de Endereçamento Virtual:
Conjunto de endereços virtuais que o
processo pode endereçar.
Gerência de Memória

Memória Virtual
Maioria dos computadores possui um
conjunto de endereços de memória que os
programas podem gerar no decorrer de suas
execuções.
Ex: MOVE 1000, REG
Os endereços de memória gerados por
programas são chamados de endereços
virtuais e formam o espaço de
endereçamento virtual.
Gerência de Memória
Paginação:
Paginação é a técnica que divide um
espaço de endereçamento virtual (da
memória virtual) em unidades
denominadas páginas.
A correspondência na memória física é
chamada de moldura de página (page
frames).
Páginas e molduras têm sempre o mesmo
tamanho.
Páginas, usualmente, possuem um
tamanho que varia de 512 bytes a 64
Kbytes.
Espaço de Espaço de
endereços endereços
virtuais 0-4K 2 0-4K físicos
4-8K 1 4-8K
8-12K 6 8-12K

12-16K 0 12-16K
16-20K 4 16-20K

20-24K 3 20-24K

24-28K X 24-28K

28-32K X 28-32K

32-36K X
36-40K 5 Moldura
de Página
40-44K X
44-48K 7
48-52K X
Mapeamento Endereço Virtual / Endereço Físico
52-56K X
56-60K X
Página
60-64K X
Virtual
Gerência de Memória

Paginação:
Endereços virtuais não são enviados direto
para o barramento. Eles são encaminhados à
Unidade de Gerência de Memória (Memory
Manager Unit - MMU), um chip ou um
conjunto de chips que mapeia endereços
virtuais em endereços físicos de memória.
Gerência de Memória
Placa do Processador

Processador
Endereços Virtuais

Memória Controladora
Principal de Disco
MMU

Barramento

Endereços Reais
Gerência de Memória

Paginação:
Mapeamento:
Exemplo:
MOVE 0, REG
O endereço virtual 0 é enviado à MMU,
que verifica que esse endereço cai na
página 0.
Através de seu mapeamento a MMU
informa que a página 0 referencia a
Moldura de página 2 (8192 a 12287).
Gerência de Memória

Paginação:
Apesar de poder haver mais páginas do
que molduras, só o equivalente ao
número de molduras pode ser alocado
para páginas simultâneas. Na figura
anterior, apenas 8 páginas podem ser
mapeadas nas molduras.
No hardware real um bit
presente/ausente em cada entrada
monitora se a página é mapeada ou não.
Gerência de Memória

Paginação:
Se uma página não-mapeável for
solicitada, a MMU força o processador a
executar um trap para o sistema
operacional. Esse trap é denominado falta
de página.
Gerência de Memória

Paginação:
O resultado desse trap é que o SO
verifica qual a moldura deve sair, de
acordo com o algoritmo de substituição
de página implementado, removendo-a
para o disco e liberando a moldura para
a página que a solicitou.
Todo o controle do mapeamento
páginas/molduras é feito com base em
uma tabela chamada Tabela de Páginas.
Gerência de Memória

Figura

Operação interna da MMU com 16


páginas de 4K
1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 Endereço
físico que sai
(24580)
15 0 0 0 0
14 0 0 0 0
13 0 0 0 0
12 0 0 0 0
11 1 1 1 1
Deslocamento
10 0 0 0 0
9 1 0 1 1
de 12 bits
8 0 0 0 0 copiado
7 0 0 0 0 diretamente
6 0 0 0 0 da entrada
5 0 1 1 1 para a saída
Página
4 1 0 0 1
3 0 0 0 1
Virtual = 2
2 1 1 0 1 110
1 0 0 1 1
0 0 1 0 1
Endereço
virtual que
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 entra (8196)
10000000000100
Gerência de Memória

Exercícios
1. Descreva como a MMU realiza o
mapeamento do endereço virtual 4110
para o seu respectivo endereço físico.
2. Descreva como a MMU realiza o
mapeamento do endereço virtual 10746
para o seu respectivo endereço físico.

Considere os formatos das MV, MP


e da MMU vistos anteriormente,
para resolver as questões acima.

Você também pode gostar