Gerenciamento de Memória
Conceitos Básicos
Prof. Alexandre Monteiro
Recife
‹#›
Contatos

Prof. Guilherme Alexandre Monteiro Reinaldo

Apelido: Alexandre Cordel

E-mail/gtalk: [email protected]
[email protected]

Site: http://www.alexandrecordel.com.br/fbv

Celular: (81) 9801-1878
Conteúdo

Gerenciamento de Memória
• Troca de Processos
• Memória Virtual
• Algoritmos de Substituição de Páginas
• Sistemas de Paginação
Gerenciamento de Memória
Hierarquia da Memória
Atualmente
Anos Atras
Kbytes
MegaBytes
Cache
RAM
GigaBytes
Megabytes
GigaBytes
TeraBytes
Hard Disk
L1 = 1024KB
L2 = 1024 a 2048 KB
L3 = 8192 KB
Gerenciamento de Memória

Apesar de atualmente os computadores pessoais
possuírem milhares de vezes mais memória que os
computadores de antigamente, ainda sim são motivo de
estudo.
• Lei de Parkinson: "programas tendem a se expandir a fim de
ocupar toda memória disponível".
Gerenciamento de Memória
Hierarquia da Memória
Gerenciamento de Memória

Definição:
•Recurso do sistema operacional
responsável pela alocação, relocação
e liberação de memória para os
processos e também pelo processo de
“swapping” ou paginação.
Gerenciamento de Memória

Função:
•A função do gerenciamento de memória
localizado no sistema operacional é manter o
controle de quais partes da memória estão em
uso e quais não estão, alocando memória aos
processos quando eles precisam e liberando a
memória quando esses processos terminam,
além de gerenciar a troca de processos
(swapping) entre a memória e o disco quando
a memória principal não é suficiente para
conter todos os processos.
Conceitos Básicos de Memória

Os sistemas de gerenciamento de memória podem ser divididos
em duas classes:
•sistemas que, durante a execução levam e
trazem processos entre a memória principal e
o disco  multiprogramação
•e, sistemas mais simples, que não o fazem 
monoprogramação.
- A monoprogramação raramente é usada hoje, a não ser em
sistemas embarcados simples.
Conceitos Básicos de Memória

Monoprogramação sem troca de processos ou
paginação
Programa de
Usuário
0xFFFF
Sistema
operacional
em ROM
0xFFFF
Drivers de
Dispositivos
em ROM
0xFFFF
Programa de
Usuário
Sistema
Operacional
em RAM
0
Programa de
Usuário
0
Sistema
Operacional
em RAM
MSDOS
0
Conceitos Básicos de Memória

Multiprogramação por partições fixas
800K
Partição 4
700K
Partição 3
400K
Partição 2
200K
Partição 1
100K
Sistema
Operacional
0
Conceitos Básicos de Memória

Multiprogramação por partições fixas
800K
Partição 4
700K
Partição 3
400K
Partição 2
200K
Partição 1
100K
Sistema
Operacional
0
Conceitos Básicos de Memória

Multiprogramação por partições variáveis
Pilha de B
Espaço para Expansao
Dados de B
Código de B
Pilha de A
Espaço para Expansao
Dados de A
Código de A
SO
Realocação e Proteção

A multiprogramação introduz dois problemas que devem ser
resolvidos – realocação e proteção.
•Quando um programa é ligado, é necessário
saber em que endereço o programa deve
começar na memória  realoção
•Em sistemas multiusuário é altamente
indesejável permitir que processos leiam ou
escrevam
em
partições
de
memória
pertencentes a outros usuários  proteção.
Realocação e Proteção

Uma solução para realocação e proteção, é fornecer ao
processador dois registradores especiais denominados
registrador-base e registrador-limite.
•O registrador-base é carregado com o
endereço do início da partição alocada a esse
processo e o registrador-limite é carregado
com o tamanho dessa partição.  realocação.
•Os endereços gerados são verificados em
relação ao registrador-limite para certificar-se
de que não tentarão endereçar memória fora
da partição alocada ao processo em execução.
 proteção.
Registradores (limite e base)

Definem um espaço de endereçamento lógico
Troca de Processos


Em computadores pessoais pode não haver memória suficiente
para todos os processos ativos, de modo que os excedentes
devem ser mantidos em disco e trazidos dinamicamente para a
memória.
Dois métodos de gerência de memória são usados:
• Troca de processos (swapping): consiste em trazer
totalmente cada processo para a memória, executá-lo
durante um certo tempo e então devolvê-lo ao disco.
• Memória virtual: permite que programas possam ser
executados mesmo que estejam apenas parcialmente
carregados na memória principal.
Troca de Processos

Então, como funciona a troca de processos na memória?
-
a) Somente o processo A está na memória.
b) O processo B é criado ou trazido do disco.
c) O processo C é criado ou trazido do disco.
d) O processo A é devolvido para o disco.
e) O processo D entra na memória.
f) O processo B é retirado da memória.
g) O processo A é novamente trazido do disco para a memória.
Troca de Processos

Quando as trocas de processos deixam muitos
espaços vazios na memória, é possível combinálos em um único espaço contíguo de memória –
chamamos isso de compactação de memória.
Conceitos Básicos de Memória

Para dividir a memória você pode ter:
•Partições fixas
•Partições Variáveis
Multiprogramação com Partições Fixas

Ao chegar, um job pode ser colocado em uma fila de
entrada associada à menor partição, grande o suficiente
para armazená-lo. Como o tamanho das partições é fixo,
todo espaço de uma partição não usado pelo job é
perdido.
Gerenciamento de Memória Alocada
Dinamicamente

Existem duas maneiras do sistema operacional gerenciar a
memória quando ela é alocada dinamicamente:
• Mapa de bits e Lista de disponíveis (0 livre, 1 ocupado)
- a) Parte da memória com cinco segmentos alocados a processos e três
segmentos de memória livre.
- b) O mapa de bits.
- c) As mesmas informações do mapa de bits em uma lista encadeada.
Gerenciamento de Memória com
Listas Encadeadas

É possível utilizar diversos algoritmos para alocar memória a
um processo recém-criado (ou a um processo já existente em
disco que esteja sendo transferido para a memória).
• First-Fit (O Primeiro que Couber). O gerenciador de memória procura ao
longo da lista de segmentos de memória por um segmento livre que seja
suficientemente grande para esse processo.
• Next-Fit (O Próximo que Couber). Funciona da mesma maneira que o
algoritmo First-Fit, exceto pelo fato de sempre memorizar a posição em que
encontra um segmento de memória disponível de tamanho suficiente.
• Best-Fit (O que Melhor Couber). Esse algoritmo pesquisa a lista inteira e
escolhe o menor segmento de memória livre que seja suficiente ao processo.
• Worst-Fit (O que Pior Couber), isto é, sempre escolher o maior segmento de
memória disponível.
OBS: First e Best são melhores que Worst em termos de velocidade e utilização
de espaço.
Memória Virtual


O tamanho total do programa pode exceder a quantidade
de memória física disponível para ele.
Sendo assim, o sistema operacional mantém as partes
ativas do programa na memória e o restante em disco.
Técnica de Paginação

Exemplo de mapeamento:
• Um computador pode gerar endereços virtuais de 0 a 64 K.
• Contudo, esse computador tem somente 32 KB de memória física.
• Embora seja possível escrever
programas de 64KB, eles não podem
ser totalmente carregados na
memória para serem executados.
• Uma cópia completa do
código do programa, deve estar
presente em disco, de modo que
partes possam ser carregadas
dinamicamente na memória,
quando necessário.
Técnica de Paginação

O espaço de endereçamento virtual é dividido em unidades denominadas
páginas.

As unidades em memória física são denominadas molduras de página.

As páginas e as molduras de página são sempre do mesmo tamanho.

No exemplo dado, as páginas têm 4 KB,
mas páginas de 512 bytes a 64 KB têm
sido utilizadas em sistemas reais.
• Com 64 KB de espaço de endereçamento
virtual e 32 KB de memória física, podemos ter
16 páginas virtuais e oito molduras de página.
Técnica de Paginação

Qual endereço físico a MMU (Memory Management Unit) deve
apontar quando a instrução for MOV REG, 8192?
É transformada em “MOV REG 24576”, pois o endereço
virtual 8192 está na página virtual 2, e essa página está
mapeada na moldura de página física 6 (endereços
físicos de24576 a 28671).
Estrutura de uma Tabela de Páginas

Como é uma entrada na tabela de páginas?
• O tamanho da tabela geralmente é de 32 bits.
• O campo mais importante é o Número da Moldura de Página, do qual se
refere a página da memória RAM.
• Próximo a ele temos o bit presente/ausente. Se esse bit for 1, a entrada será
válida e poderá ser usada. Se ele for 0, a página virtual não estará presente
na memória, ocorre uma falta de página. (Page Fault)
• Os bits de proteção dizem quais tipos de acesso são permitidos à página. Em
sua configuração mais simples, esse campo contém um bit, com 0 para
leitura/escrita e 1 somente para leitura. Uma forma mais sofisticada tem 3
bits, 1 bit para habilitar/desabilitar cada uma das operações básicas na
página: leitura, escrita e execução.
Memória Virtual
Intervalo de Memoria em K
Indice
60
64
X
56
60
X
52
56
X
48
52
X
44
48
7
40
44
X
36
40
5
32
36
X
28
32
X
24
28
X
20
24
3
16
20
4
12
16
0
8
12
6
4
8
1
0
4
2
28
32
24
28
20
24
16
20
12
16
8
12
4
8
0
4
Memória Virtual
Intervalo de Memoria em K
Indice
60
64
X
56
60
X
52
56
X
48
52
X
44
48
7
40
44
X
36
40
5
32
36
X
28
32
X
24
28
X
20
24
3
16
20
4
12
16
0
8
12
6
4
8
1
0
4
2
Page Fault
28
32
24
28
20
24
16
20
12
16
8
12
4
8
0
4
Memória Virtual
Intervalo de Memoria em K
Indice
60
64
X
56
60
X
52
56
X
48
52
X
44
48
7
40
44
X
36
40
5
32
36
X
28
32
X
24
28
X
20
24
3
16
20
4
12
16
0
8
12
6
4
8
1
0
4
2
Escolhe a célula mais
antiga e salva em disco...
28
32
24
28
20
24
16
20
12
16
8
12
4
8
0
4
Memória Virtual
Intervalo de Memoria em K
Indice
60
64
X
56
60
X
52
56
X
48
52
1
44
48
7
40
44
X
36
40
5
32
36
X
28
32
X
24
28
X
20
24
3
16
20
4
12
16
0
8
12
6
4
8
X
0
4
2
Refaz o apontamento
virtual...
28
32
24
28
20
24
16
20
12
16
8
12
4
8
0
4
Memória Virtual

A MMU é mostrada como parte do chip da CPU porque
atualmente isso é comum, porém poderia ser um chip
separado, como ocorria no passado.
Tabela de Páginas


O objetivo da tabela de páginas é mapear páginas virtuais em
molduras de página física.
Matematicamente, a tabela de páginas é uma função que usa o
número da página virtual como argumento e tem o número da
moldura de página física correspondente como resultado.
Tabela de Páginas

Dois pontos importantes devem ser considerados:
•A tabela de páginas pode ser extremamente
grande.
- Com um tamanho de página de 4 KB, um espaço de endereçamento de 32 bits
tem um milhão de páginas virtuais; um espaço de endereçamento de 64 bits
tem mais do que se possa imaginar.
- Com um milhão de páginas virtuais no espaço de endereçamento virtual, a
tabela de páginas deve ter um milhão de entradas.
•O mapeamento deve ser rápido.
Tabela de Páginas
Atividades
1.
O que é memória virtual?
2.
O que é paginação?
1.
O que são endereço virtuais?
2.
O que são endereços físicos?
3.
O que são páginas?
4.
O que são molduras de páginas?
5.
6.
7.
8.
Qual o número de páginas possível para uma memória virtual com
endereços de 6 bits?
Dado 256KB de tamanho total da memória virtual, com 8KB para cada
página. Quantos bits são necessários para o endereçamento de cada umas
dessas páginas?
Qual moldura de página está o endereço virtual 1459KB de acordo com o
exemplo da figura da aula.
Qual o endereço físico correspondente ao endereço virtual 1459KB.
Algoritmo de Substituição de Página


Quando uma falta de página ocorre, o sistema
operacional precisa escolher uma página a ser removida
da memória a fim de liberar espaço para uma nova
página a ser trazida para a memória.
Embora seja possível escolher aleatoriamente uma
página a ser descartada, o desempenho do sistema será
muito melhor se a página escolhida for uma que não
estiver sendo muito usada.
O Algoritmo de Substituição de
Página Ótimo

Alguns algoritmos
• O algoritmo ótimo retira da memória a página que vai demorar
mais tempo para ser referenciada novamente.
• O algoritmo NUR (Não Usada Recentemente) remove uma página
não referenciada e não modificada.
• No algoritmo FIFO, a página mais antiga é removida e a nova
página é adicionada no final da lista.
• Entre outros…
Atividades
1.
Qual o objetivo dos algoritmos de substituição de páginas?
2.
Por que o algoritmo ótimo não é implementável em sistemas
reais?
Trabalho de Casa

Busque na Internet
•Quais sistemas operacionais operam com
memória virtual, e como configurá-los?
Referências


Sistemas Operacionais Modernos – 3ª Edição. A.
Tanenbaum, 2008.
Modern Operating Systems 3 e. Prentice-Hall, 2008.
Download

Gerenciamento de Memória