Aula 10.1 (27/10/2016) - Gerenciamento de Memória

Propaganda
Gerenciamento de Memória
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
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.
Partições Variáveis:
Algoritmos de Alocação de área livre

Qualquer um dos algoritmos anteriores é mais eficiente se:
• Houverem 2 listas: lista de partições usadas + lista de espaços livres
• Listas são mantidas ordenadas por tamanho (nr. de unidades de alocação)
Problema: há uma complexidade extra quando ocorre uma liberação de memória
(precisa-se verificar se há espaços adjacentes livres e inserir o novo espaço na
posição correta da lista).

Alternativa:
• Quick Fit: mantém listas separadas por tamanho do espaço livre (2K, 4K, 8K,
etc.)
• Problema: ao liberar memória, o novo espaço criado precisa ser inserido na
fila correspondente (possivelmente, após combinação com áreas vizinhas)
Swapping

Principal problema do swapping com partições de tamanho variável:
• Manter a informação sobre espaços não utilizados (livres)
• Evitar uma fragmentação externa da memória (= muitos
espaços pequenos não utilizados)
Compactação de memória é muito cara
– da ordem de segundos para alguns MBs de RAM.
Gerenciamento de Espaço Livre



Quando o processo é swapped out, a lacuna correspondente
precisa ser combinada com espaços vizinhos livres.
Quando processo é swapped in, percorre-se a lista buscando
um espaço livre suficientemente grande (lista geralmente
ordenada por endereços de memória)
Quando X é swapped out: quatro combinações de nós na lista
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.
Memória Virtual (Paginação)



É necessária, quando o total de memória necessária para um
conjunto de processos excede o tamanho da memória física.
Também aqui, usa-se parte do disco como extensão da memória
RAM.
A grande maioria dos SO’s (exceto alguns para tempo real),
implementam Memória Virtual.
MV usa a técnica de paginação:
• Memória física e espaço de endereçamento lógico de cada
processo são divididos em partições de mesmo tamanho:
- Espaço do processo é dividido em páginas
- Memória é dividida em molduras de página
• Em vez de fazer o swap in/out de uma imagem inteira de
processo, cada página pode ser movida do disco para a memória e
vice-versa.
Paginação

Requer a existência de suporte por hardware (Memory
Management Unit - MMU)
• MMU intercepta qualquer acesso à memória (p/ instruções e dados)
• Mapeia endereços lógicos para endereços físicos (através de uma
Tabela de Página)
• Quando a página acessada não está em memória, gera uma
interrupção de falta de página (Page Fault), que causa a interrupção
do processo em execução e o seu bloqueio, até que a página tenha
sido transferida para a memória.
Paginação





A memória física é dividida em um número de partições de
mesmo tamanho, denominadas páginas físicas, quadros ou
frames ou molduras.
A memória lógica é dividida em partições do mesmo tamanho,
denominadas páginas lógicas (ou, simplesmente, páginas)
Cada página lógica é carregada em uma moldura de página
quando o processo é carregado na memória principal.
Nessa ocasião, uma Tabela de Páginas é criada.
Permite que o espaço físico ocupado por um processo seja
não contíguo.
Paginação
Exemplo: número de
páginas/processo
Processos A, B, C estão
prontos
A1
A2
A3
A
4
B
3
C
4
D
5
A4
B1
B2
B3
C1
C2
C3
C4
Paginação
B termina
D é submetido
A1
A1
A2
A2
A3
A3
A4
A4
D1
D2
D3
C1
C1
C2
C2
C3
C3
C4
C4
D4
D5
Paginação

Problemas tanto em particionamento fixo quanto dinâmico:
• fixo – fragmentação interna
• dinâmico – fragmentação externa e realocação dinâmica

Solução:
• Processo é dividido em páginas (blocos de processos)
• MP é dividida em quadros de mesmo tamanho

Páginas/quadros/molduras são de pequeno tamanho
(ex., 1K): fragmentação interna pequena.

Paginação elimina fragmentação externa.

SO mantém uma Tabela de Páginas por processo.
Paginação




Processo não precisa estar completamente na MP
(veremos adiante em Memória Virtual)
Processo não precisa ocupar área contígua em memória
Endereços são gerados dinamicamente em tempo de
execução
Somente um registrador então, não é suficiente
Tabela de Páginas
Exemplo em Memória Virtual
Espaço de
Endereçamento
Virtual
Página Virtual
Espaço de
Endereçamento
Físico
Moldura de
Página
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.
Paginação


Se um processo tem tamanho K, os seus endereços lógicos
(endereços especificados nas suas instruções) vão desde 0 até K-1.
Este é o espaço de endereçamento do processo.
Cada endereço lógico é quebrado em duas partes:
- número da página p
- deslocamento d (offset)

Endereço lógico: composto do par (número-da-página,
deslocamento), onde número-página é usado como índice para uma
entrada na Tabela de Páginas
15
10 9
Página (p)

0
deslocamento (d)
Acontece relocação dinâmica, pois cada endereço lógico é
traduzido em endereço físico em tempo de execução
Tabela de Páginas – bits de controle

Cada entrada da tabela possui alguns bits adicionais para
implementar proteção
• um bit para indicar se a página é de apenas leitura
(read only)
• um bit para indicar se a página é válida ou inválida

Vejamos:
Controle de Acesso

A paginação pode ser facilmente estendida para incorporar controle de acesso
para cada página:
• além do endereço do quadro da memória, cada entrada da TP contém bits
para o tipo de acesso permitido, podendo ser: somente-leitura, leitura-eescrita ou somente-execução
• se uma instrução viola o acesso permitido, a MMU gera outra interrupção
(violação de acesso de memória)
• a validade de uma operação sob um endereço lógico pode ser testada em
paralelo com a obtenção do endereço físico correspondente.

Além disto, pode-se usar bits válido/inválido para marcar as páginas lógicas
que efetivamente compõem o espaço de endereçamento lógico do processo
• é útil para espaços de endereçamentos grandes e utilizados de forma
descontínua
• note-se que devido ao problema do não alinhamento de dados com os limites
das páginas, esse tipo de controle de acesso não é muito preciso.
Entrada da Tabela de Páginas
Cache
desabilitado
Modificada
Presente/Ausente
Número da moldura de página
Referenciada
Proteçã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
Realocação


Mapeamento de endereços virtuais em reais
necessário, pois processos são alocados em espaço de
MP dinamicamente
Ex.: processo P1
P1:
executando
novo
bloqueado
Ao voltar para MP  P1 vai para end.
1024
pronto
P1 em end. de MP
500
P1 passa para
suspenso
Realocação

Mapeamento eficiente
• endereço físico só calculado quando acesso a MP
• endereços definidos: lógico, relativo, físico

Registradores:
• base – armazena o endereço inicial de MP do processo (quando
o processo passa para executando)
• limite – armazena endereço final do processo

Acesso ao endereço Z no programa
if (Z + base <= limite)
acesse Z+base
senão “trap”
Relocação
endereço relativo
registrador de base
PCB
somador
programa
registrador limite
comparador
endereço
absoluto
imagem do
processo na
memória
dados
int
pilha
Paginação
Paginação



Processo pode ser executado contanto que haja um número mínimo de páginas na memória (as páginas
sendo acessadas)
O espaço de endereçamento lógico é contiguo, o espaço físico equivalente é distribuído/separado.
A tradução é feita de forma transparente pela MMU, que além da TP, mantém um cache das páginas
recentemente consultadas.
Em suma Paginação







Cada processo P possui a sua Tabela de Páginas, que precisa ser carregada na MMU a
cada troca de contexto.
Para tal, cada entrada Tabela Processos(P) contém um ponteiro para a Tabela de
Páginas de P.
O dispatcher é o encarregado de "carregar" a nova tabela de páginas na MMU.
Como qualquer acesso à memória ocorre através do mapeamento pela TP. Isso
fornece também automaticamente um mecanismo de proteção...contanto que o
preenchimento da tabela de página seja feita em modo privilegiado (supervisor)!!
=> à medida que as páginas vão sendo alocadas, o núcleo preenche as entradas na
tabela de página.
Além disto, kernel precisa manter informações sobre o conjunto de molduras livres
na memória principal:
Para isso, usa-se uma tabela de molduras (tabela de moldura de páginas), com uma
entrada por moldura, informando se o mesmo está alocado, e para qual processo.
Implementação da Tabela de Páginas

Conjunto de registradores dedicados

Memória Principal

TLB ou Memória Associativa
Tabela de Páginas em
Conjunto de Registradores Dedicados




Na mudança de processo em execução estes registradores são
carregados com os valores correspondentes ao novo processo.
TP é mantida em um conjunto de registradores dedicados,
que são carregados através de instruções privilegiadas (ex.
DEC PDP-11)
Pró: não necessita de MMU e tradução é veloz.
Contra: número de entradas é pequeno (tipicamente, de 16 a
64 páginas)
Tabela de Páginas na
Memória Principal

Cada descritor de processo contém o endereço de sua respectiva tabela de páginas.

A UCP possui um registrador que aponta para a tabela de páginas atual


Para acessar um dado na memória são necessários dois acessos: um de
mapeamento (acesso à tabela) e outro para acessar o dado
TP é mantida em memória principal
• mantém-se um registrador com o endereço base da tabela (Process Table Base Register,
PTBR) e entrada na tabela = PTBR + #página_virtual

Prós:
• possibilita tabelas de páginas arbitrariamente grandes
• a troca de contexto envolve somente PTBR

Contras:
• tempo de acesso à memória duplica, devido ao acesso à tabela
Tabela de Páginas em
TLB ou Memória Associativa


Memória de alta velocidade (mas hardware caro), onde cada posição possui dois campos
(chave = número de página lógica, valor = página física correspondente)
Usa um Translation Look-aside Buffer (TLB, buffer para tradução de endereços) na MMU:
• TLB = vetor associativo que permite comparação paralela com suas entradas (de 8
- 128 entradas; Intel 80486 tem 32 entradas)
• mantém-se apenas as entradas da TabPaginas das páginas recentemente acessadas (
princípio de localidade)
• quando uma página lógica é acessada e seu mapeamento não está no TLB
• (TLB miss) então:
- acessa-se a TabPaginas na memória e substitui-se a entrada no TLB
- dependendo se a página está em memória ou não, continua-se a execução, ou
gera-se uma interrupção Page-fault
• a cada troca de contexto, o TLB precisa ser limpo

Vantagem: tradução rápida

Desvantagem: requer gerenciamento do conteúdo do TLB (substituição de entradas)
TLB - Translation Look-aside Buffer
Funcionamento da MMU com TLB

Ao receber um novo nº. de página (np) todas as entradas do TLB
são comparadas em paralelo:
• Se np é encontrado e tipo de acesso é válido, então usa-se a
entrada do TLB (endereço do quadro)
• Se tipo de acesso é inválido, gera-se uma falha de proteção (e
processo é abortado)
• Se np não é encontrado na TLB, (TLB miss), MMU consulta a TP em
memória, obtém o end. do quadro, e copia a entrada completa da
TP para o TLB (para agilizar acessos futuros)
• Quando houver acesso p/escrita, copia-se o flag de escrita (Modify
bit) de TLB para TP.
Obs: Pode-se aumentar a eficiência da paginação, aumentando-se
o tamanho do TLB.
TLB - Translation Look-aside Buffer

Possível configuração do TLB para um programa com:
• Um loop cujas instruções internas estão armazenadas nas
páginas 19-21, acessando um vetor nas páginas 129-130. O
índice do vetor está na pagina 140 e a pilha em 860-861.
TLB - Translation Look-aside Buffer




Em arquiteturas RISC(*), TLB misses são tratados pelo
Sistema Operacional e não pelo hardware (MMU).
Quando a MMU gera um TLB-miss, o núcleo faz o troca da
entrada da TLB.
Desvantagem: gerenciamento do TLB é muito mais lento do
que se for por hardware
Vantagem: Torna o circuito da MMU bem mais simples, e
permite a implementação em muitas arquiteturas;
Problema com Tabela de Páginas

Principal problema é que a própria TP precisa estar em memória.
-



Arquitetura de 32 bits.
Tamanho da página= 4K
Offset = 12 bits
Tabela de página = 220 entradas!
E pior, precisa-se manter uma TP por processo em execução.
Então, dependendo do número de entradas de cada TP (que
depende do tamanho da página e do número de bits da
arquitetura), pode ser inviável manter todas elas na memória do
núcleo.
O que fazer?
Tabela de Páginas Multinível
• Resolve o problema de
manter grandes tabelas de
página na memória (para
todos os processos).
• Com TP de 2 níveis, pode-se
particionar a TP principal em
páginas e manter apenas as
páginas da TP cujo
mapeamento esteja sendo
usado.
• Uma tabela de 1o. nível
contém os ponteiros para
essas partes da TP.
TP de nível 2
Tabela de Páginas Invertidas


Para arquiteturas de 64 bits, o espaço de endereçamento lógico é 264 bytes!
Exemplo: se o seu tamanho de página for 4KB, isso leva a TPs muito grandes, ex.
252 ≈ alguns Tera Bytes!).

Por isso, em alguns sistemas usa-se uma TP invertida:

Uma entrada para cada moldura de página

Cada entrada contém uma lista de pares: (processID, nº da página)



Desvantagem: a tradução de endereços lógicos para reais fica bem mais lenta.
Ex: para cada página p, precisa-se fazer uma varredura pela TP invertida para
encontrar a moldura correspondente.
Só é viável, se o TLB for usado para guardar as associações correntes. Somente
quando ocorre um TLB miss, a TP invertida precisa ser consultada.
Na maioria dos sistemas, usa-se uma função de hash para indexar as entradas da
TP invertida.
Comparação de TP tradicional e
TP invertida.
A questão do tamanho das páginas

Tamanho de página pequenos:

• Vantagens
• Melhor aproveitamento da memória física: menos fragmentação interna
• Mais programas usando a memória
• Melhor alinhamento de segmentos de código e de estruturas de dado às
páginas

• Desvantagens
• Programas precisam de mais páginas, tabelas de página maiores, mais
tempo para carregar entradas de tabela nos registradores da MMU.
• Transferência de página menor ou maior de/para disco demanda
aproximadamente o mesmo tempo (mas é feito de forma mais frequente)
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.
Algoritmos de Substituição de Páginas
O Algoritmo de Substituição
de Página Ótimo ou Ideal

Substitui a página que será acessada no futuro mais remoto
• Infelizmente, não é viável na prática, pois exigiria um
conhecimento sobre todos os acessos futuros.

Estimada através de...
• registro do uso da página em execuções anteriores do
processo ...
• apesar disto ser impraticável
54
O Algoritmo de Substituição de Página
Não Usada Recentemente (NUR)
Cada página tem os bits (R) Referenciada /
Acessada e (M) Modificada/Alterada

•
As páginas são classificadas


Bits são colocados em 1 quando a página é referenciada e
modificada

Classe 0: não referenciada, não modificada

Classe 1: não referenciada, modificada

Classe 2: referenciada, não modificada

Classe 3: referenciada, modificada
NUR remove página aleatoriamente
•
da classe de ordem mais baixa que não esteja vazia
55
Algoritmo de Substituição de Página
Primeira a Entrar, Primeira a Sair

Mantém uma lista encadeada de todas as páginas
• página mais antiga na cabeça da lista
• página que chegou por último na memória no final da lista

Na ocorrência de falta de página
- página na cabeça da lista é removida
- nova página adicionada no final da lista

Desvantagem
• página há mais tempo na memória pode ser usada com
muita freqüência
56
Algoritmo de Substituição de Página
Segunda Chance (SC)

Operação do algoritmo segunda chance
a)
b)
lista de páginas em ordem FIFO
estado da lista em situação de falta de página no instante 20, com o bit
R da página A em 1 (verificado se seu bit de referência tenha valor 1,
caso ele tenha valor 1, seu valor é mudado para 0 e esta página NÃO é
retirada, é tratada como mais recentemente carregada)
57
Algoritmo de Substituição
de Página Relógio




Todos as páginas carregadas estão em uma lista circular.
Ponteiro aponta para a página P15, a próxima página ser testada a partir da
página P14.
Note neste algoritmo, que a próxima página que será retirada não será nem as
páginas 15, 16, 1 e 2, pois seus bits de referência tem valores 1. a próxima vítima
será a página 3
Alternativa para o algoritmo da 2a. Chance (sem necessidade de manipular fila)
58
Menos Recentemente Usada (MRU)
ou LRU (Least Recently Used)

Assume que páginas usadas recentemente logo serão
usadas novamente
• retira da memória página que há mais tempo não é usada

Uma lista encadeada de páginas deve ser mantida
• página mais recentemente usada no início da lista, menos usada
no final da lista
• atualização da lista à cada referência à memória

Alternativamente manter contador em cada entrada da
tabela de página
• escolhe página com contador de menor valor
• zera o contador periodicamente
59
LRU



A implementação do algoritmo LRU é muito
custoso, segundo Tanenbaum, pois é preciso
manter uma lista encadeada de todas as
páginas na memória, com as páginas mais
recentemente utilizadas na frente e as
menos recentemente utilizadas no fundo.
Essa lista deve ser atualizada a cada
referência de página, o que pode gerar uma
grande modificação na lista.
Imagine que, uma página do fim da lista
(pouco referenciada) seja referenciada. É
preciso, então deslocar esta página para o
início da fila.
MRU usando matrizes




HW especial que mantém uma matriz n x n, onde n é o
número de molduras.
Inicialmente todos os bits da matriz são 0.
Sempre que a moldura k é referenciada, o hardware seta
todos os bits da linha k para 1, e depois zera todos os bits
da coluna k para zero.
Deste modo, a qualquer instante a linha com o menor valor
binário é a menos recentemente usada.
Simulação do LRU em Software (1)
LRU usando uma matriz – páginas referenciadas na
ordem 0,1,2,3,2,1,0,3,2,3
62
Algoritmo NFU (Não Frequentemente Usado)

Não Usada Frenquentemente

Um contador por página na memória




A cada tick, o S.O. percorre todas as páginas na memória e
soma
o bit R (0 ou 1) de cada página ao seu respectivo contador
Na ocorrência de falta de página, a página c/ o menor
contador é substituída
Problema: o algoritmo nunca esquece (reseta) o contador
Envelhecimento (Aging)
Simulação do LRU em Software

O algoritmo do envelhecimento (aging) simula o LRU em software

Note 6 páginas para 5 tiques de relógio, (a) – (e)
64
O Algoritmo de Substituição de Página
do Conjunto de Trabalho (1)
65
O Algoritmo de Substituição de Página
do Conjunto de Trabalho (2)
66
O Algoritmo de Substituição
de Página WSClock
Operação
do Algoritmo
WSClock
Considera:
Conjunto de Trabalho;
Referenciadas e;
Modificadas.
67
Revisão dos Algoritmos de
Substituição de Página
68
Modelagem de Algoritmos de
Substituição de Página – Anomalia de Belady

(a) FIFO com 3 molduras de página

(b) FIFO com 4 molduras de página

P mostra quais referências de página causaram faltas de página
69
Algoritmos de Pilha
Estado do vetor de memória, M, após cada item
na cadeia de referências ter sido processado
70
A Cadeia de Distâncias
Funções densidade de probabilidade para duas cadeias de
distâncias hipotéticas
71
A Cadeia de Distâncias

Cálculo da freqüência de faltas de página (PFF)
a) o vetor C
b) o vetor F
72
Questões de Projeto para Sistemas de
Paginação
Política de Alocação Local x Global (1)
(a) Configuração original (b) Substituição local
(c) Substituição global
73
Política de Alocação – Ultra-paginação
Local x Global (Thrashing)


Fenômeno que ocorre quando o gerenciador de memória fica
sobrecarregado com cópias de páginas entre memória e disco.
Alta frequência de faltas de página: ocorre quando um processo
possui menos páginas na memória do que o seu conjunto de
páginas em uso (working-set).
74
Controle de Carga


Mesmo com um bom projeto, o sistema ainda pode
sofrer paginação excessiva (thrashing)
Quando o algoritmo PFF indica
• alguns processos precisam de mais memória
• mas nenhum processo precisa de menos

Solução :
Reduzir o número de processos que competem pela
memória
• levar alguns deles para disco e liberar a memória a eles
alocada
• reconsiderar grau de multiprogramação
75
Espaços Separados de
Instruções e Dados
a)
Espaço de endereçamento único
b)
Espaços separados de instruções (I) e dados (D)
76
Páginas Compartilhadas
Dois processos que compartilham o mesmo código de
programa e, por conseqüência, a mesma tabela de
páginas para instruções
77
Política de Limpeza

Precisa de um processo que executa em background, um
daemon de paginação
• Inspeciona periodicamente o estado da memória
• Verifica se página modificadas foram escritas em disco.

Quando apenas algumas molduras de página estão disponíveis
• Seleciona páginas a serem removidas usando um algoritmo de
substituição

Pode ser implementada através de lista circular (relógio) com
dois ponteiros
• Ponteiro da frente controlado pelo daemon de paginação
• Ponteiro de trás usado para substituição de página (como no do relógio)
78
Questões de Implementação
Envolvimento do S.O. com a Paginação
Quatro circunstâncias de envolvimento:
Criação de processo
1.


determina tamanho do programa
cria tabela de página (swap area = área de troca de disco)
Execução de processo
2.


MMU reinicia tabela de páginas para novo processo
TLB é esvaziada
Ocorrência de falta de página
3.



determina endereço virtual que causou a falta
descarta, se necessário, página antiga (política de limpeza)
carrega página requisitada para a memória e aponta para instrução
Terminação de processo
4.

Libera tabela de páginas, páginas, e espaço em disco que as
páginas ocupam, caso não sejam compartilhadas.
79
Tratamento de Faltas de Página (1)
1)
2)
3)
4)
5)
Hardware desvia a execução para o núcleo (salva
estado atual do processo na pilha)
Salva conteúdo de registradores e outras informações
voláteis
SO determina a página virtual necessária que gerou a
falta de página.
SO checa validade de endereço, busca moldura de
página na memória.
Se moldura de página selecionada foi modificada (suja),
salvá-la em disco
80
Tratamento de Faltas de Página (2)
6)
7)
8)
9)
10)
SO escreve a página modificada em disco e busca em disco
página virtual referenciada
Tabela de páginas é atualizada
Estado da instrução que causou falta de página é
recuperado e aponta para a instrução
Processo que causou falta de página é escalado para
executar
Programa continua
81
Fixação de Páginas na Memória


Memória virtual e E/S interagem ocasionalmente
Processo emite chamada ao sistema para ler do
disco para o buffer
• enquanto espera pela E/S, outro processo inicia
• ocorre uma falta de página
• buffer do primeiro processo pode ser escolhido para ser
levado para disco

Solução possível (Retenção de Páginas = Pinning)
• Fixação de páginas envolvidas com E/S na memória
82
Memória Secundária
(a) Paginação para uma área de troca estática
(b) Páginas alocadas dinamicamente em disco
83
Separação da Política
e do Mecanismo
Tratamento de faltas de página com paginador externo
84
Segmentação




Divisão do espaço de endereçamento em um número de
partições com tamanhos distintos
Aproxima-se mais da visão do programador: um programa é
uma coleção de segmentos de tamanho variável
Os compiladores e montadores criam automaticamente os
segmentos que constituem o programa
Na carga do programa cada segmento recebe um número de
segmento específico
Segmentação (1)

Espaço de endereçamento unidimensional com tabelas crescentes

Uma tabela pode atingir outra
86
Segmentação



A memória lógica é constituída por um conjunto
de segmentos, cada um com um nome e um
tamanho (na prática, os segmentos são
identificados por números e não por nomes)
Páginas têm tamanho fixo, segmentação não.
Uma posição da memória lógica é referida por
um par (s, d)
- s é o número do segmento
- d é o deslocamento (offset ) dentro do segmento
Segmentação (2)
Permite que cada tabela cresça ou encolha,
independentemente
88
Segmentação
Subrotina
Pilha
Sqrt
Programa Principal
Array X
Espaço de Endereçamento Lógico do Processo
Segmentação




É necessário mapear cada endereço lógico do
tipo (s, d) para o endereços da memória física
correspondente
Para isso cada processo possui a sua tabela de
segmentos
A tabela de segmentos pode ser colocada em
registradores rápidos ou na memória principal.
Normalmente, é usado o esquema de memória
associativa (na tabela associativa ficam os
segmentos mais recentemente acessados e
seus endereços)
Tabela de Segmentos
Segmentação



Pode-se associar atributos aos segmentos, possibilitando
assim uma proteção ou compartilhamento destes segmentos
Bit de proteção associado a cada entrada da tabela de
segmentos
A segmentação facilita o compartilhamento entre usuários
Segmentação e Paginação

Espaço endereçamento
• Paginação
- Espaço de endereçamento lógico é um espaço único,
contínuo, cujos endereços vão desde zero até MAX (onde
MAX = tamanho do programa menos 1)
• Segmentação
- Espaço de endereçamento lógico é formado por um
conjunto de segmentos. Cada segmento é um espaço
contínuo, cujos endereços vão desde zero até MAX (onde
MAX = tamanho do segmento menos 1)
Segmentação e Paginação

Qual o melhor?
• Discussão antiga, sem vencedores

Fragmentação
• Paginação : apresenta fragmentação interna
• Segmentação : apresenta fragmentação externa

Administração
• Paginação é mais simples

Proteção (segurança) e compartilhamento
• Segmentação é melhor, pois:
- segmentos são unidades lógicas
- páginas são mais misturadas (dados, código)
Segmentação (3)
Comparação entre paginação e segmentação
95
Sistemas Combinados

Existem sistemas onde a paginação e a segmentação são
usadas em conjunto, procurando tirar proveito de ambos os
esquemas.
•Segmentação paginada (mais comum)
•Paginação segmentada (menos comum)
Segmentação Paginada
s d
Tabela de
Segmentos
S
>=
N
Base da
Tabela de
Páginas
Tamanho
do
Segmento
d
erro
p d’
MEM
+
f
f d’
Paginação por demanda


Um programa pode ser executado com poucas de suas
páginas na memória
Quando necessário, uma página é trazida do disco para
memória e utilizada (demanda)
Paginação por demanda




É uma extensão do mecanismo de paginação simples
As páginas de um processo podem estar presentes na
memória ou não.
As páginas não presentes estão marcadas como
inválidas
Se uma página inválida é referida, o SO verifica se ela
está em disco (page fault) ou se realmente é uma
página fora do espaço lógico do processo
Implementação de Segmentação Pura
(a)-(d) Desenvolvimento de fragmentação externa
(e) Remoção da fragmentação via compactação
100
Referências


Sistemas Operacionais Modernos – 3ª Edição. A.
Tanenbaum, 2008.
Modern Operating Systems 3 e. Prentice-Hall, 2008.
Download