Buscar

SOSI-aula5-memoriavirtual-completo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 81 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 81 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 81 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Operacionais 
- Gerência de Memória - 
Memória Virtual 
 É uma técnica sofisticada de gerência de memória 
 As memórias principal e secundária são combinadas, 
dando ao usuário a impressão de existir uma memória 
muito maior do que a MP 
 O conceito da memória virtual está em desvincular o 
endereçamento feito pelo programa dos endereços 
físicos da MP 
 Assim, o programa não fica limitado ao tamanho da memória 
física disponível 
 
Memória Virtual 
 Anteriormente, vimos que o uso de registradores base e 
limite eram usados para criar uma abstração de espaços 
de endereçamento 
 Porque usar a memória virtual? 
 Ainda existe um outro problema: gerenciar programas que 
utilizam quantidades excessivas de memória 
 Solução: usar a técnica de overlay? 
 A técnica de overlay exige que o programador se preocupe em 
dividir o seu código de forma que os módulos possam ser trazidos 
para a memória de forma independente → trabalho árduo e lento 
 A ideia é atribuir esta tarefa ao sistema 
 
Memória Virtual 
 Um programa em um ambiente de memória virtual faz 
referência a endereços virtuais 
 No momento da execução de uma instrução, o endereço 
virtual é traduzido para um endereço físico 
 Esta tradução é chamada mapeamento 
 O conjunto de endereços virtuais que um processo pode 
endereçar é chamado de espaço de endereçamento 
virtual 
 Analogamente o conjunto de endereços reais é 
chamado espaço de endereçamento real 
Memória Virtual 
 O espaço de endereçamento virtual não possui relação 
direta com o espaço de endereçamento real 
 
 
 
 
 Um programa pode fazer referência a endereços virtuais 
que estejam fora dos limites do espaço real 
E
sp
a
ço
 d
e
 e
n
d
e
re
ç
a
m
e
n
to
 v
ir
tu
a
l
E
sp
a
ç
o
 d
e
 e
n
d
e
re
ça
m
e
n
to
 r
e
a
l
Endereço virtual 0
Endereço virtual 1
Endereço virtual 2
Endereço virtual 3
Endereço virtual 4
Endereço virtual 5
.
.
.
Endereço virtual V
Endereço real 0
Endereço real 1
Endereço real 2
Endereço real 3
.
.
.
Endereço real R
Mapeamento 
 Nos sistemas modernos a tarefa de tradução de endereços 
virtuais é realizada pelo HW juntamente com o sistema 
operacional 
 O dispositivo de HW responsável por esta tradução é 
conhecido como MMU (Memory Management Unit) 
 O MMU é acionado sempre que é feita referência a um 
endereço virtual 
 Cada processo tem seu próprio espaço de endereçamento 
virtual 
 O mecanismo de tradução deve manter tabelas de mapeamento 
exclusivas para cada processo 
Mapeamento 
 O sistema deve fazer 
referência a tabela de 
mapeamento do processo 
em execução 
 Um registrador é usado para 
guardar o endereço da 
tabela de mapeamento 
corrente 
 As tabelas mapeiam blocos 
de dados 
 O tamanho do bloco da 
memória irá definir o 
número de entradas da 
tabela de mapeamento 
Processo A
Espaço de
endereçamento
virtual de A
Endereço virtual 1
.
.
.
Tabela de
mapeamento
de A
Espaço de
endereçamento
virtual de B
Endereço virtual 1
.
.
.
Tabela de
mapeamento
de B
Processo B
Memória Principal
Memória Virtual 
 Quando o programa é executado só uma parte do código fica 
residente na memória principal 
 O restante do código fica na memória secundária até o 
momento em que for referenciado 
 Assim, o sistema operacional utiliza a memória secundária 
como uma extensão da MP 
 O sistema operacional deve ser responsável por 
 Trazer parte do código referenciado que esteja na MP 
 Escolher qual parte do código residente na MP ira sofrer um 
swap out 
Paginação 
 A memória virtual por paginação é uma técnica onde o 
espaço de endereçamento virtual e real são divididos 
em blocos do mesmo tamanho 
 Divide a memória física em blocos de tamanho fixo chamados 
quadros (frames) 
 Divide a memória lógica em blocos de mesmo tamanho 
chamados páginas 
 Evita o problema de ajustar trechos de memória de 
tamanhos variáveis 
 Nos esquemas anteriores as partições tinham tamanhos 
variáveis 
Paginação 
 Quando um processo precisa ser executado, suas páginas 
são carregadas em qualquer quadro disponível 
 O mapeamento do endereço virtual em real é feito através da 
tabela de páginas 
 Cada processo possui 
sua própria tabela de 
páginas 
 A MMU é responsável 
por fazer a tradução 
Memória Virtual
.
.
.
.
Página virtual 0
Página virtual 1
Página virtual 2
Página virtual V
Tabela de
páginas
ETP
Memória Principal
Memória Secundária
.
.
.
Página real 0
Página real 1
Página real R
Paginação 
 Cada endereço virtual é dividido em duas partes: número da 
página (p) e deslocamento dentro da página (d) 
 O número da página é usado como índice da tabela de 
página, que conterá o endereço base de cada quadro (f) na 
memória física 
 O endereço real é 
obtido combinando o 
endereço do frame (f) 
com o deslocamento 
dentro da página (d) 
 
Paginação 
Exemplo: 
 Memória lógica de 16 bytes 
 (16 bytes = 128 bits = 27 bits) 
 
 Páginas de 4 bytes 
 (4 bytes = 32 bits = 25 bits) 
 Memória física de 32 bytes 
 (32 bytes = 256 bits = 28 bits) 
 
 Entrada da tabela de páginas 
 possui 3 bits e pode referenciar 
 até 23 frames 
 
f f f d d d d d 
p p d d d d d 
Paginação 
 Em geral, uma entrada da 
tabela de páginas possui 
4 bytes 
 Com 4 bytes (32 bits) pode-se 
referenciar até 232 quadros 
 Se o tamanho de um quadro é 
4 Kbytes (4096 bits = 212 bits), 
então é possível endereçar: 
 
212 x 232 = 244 bits = 4Tbytes 
Tabela de Páginas 
 Além da informação sobre a localização da página, a tabela 
de páginas possui outras informações como: 
 Bit de validade: indica se uma página está (1) ou não (0) na 
memória principal 
 Bit de proteção: indica qual tipo de acesso é permitido na 
página, onde 3 bits podem ser usados para habilitar e desabilitar 
cada uma das operações básicas em uma página (leitura, 
escrita e execução) 
 Bit de modificação: indica 1 quando a página foi escrita na 
memória principal 
 Bit de referência: indica 1 quando a página foi referenciada na 
memória principal 
Paginação 
 Quando um processo faz referência a um endereço virtual, a MMU 
verifica através do bit de validade se a página está na memória 
 Se for feita referência a um endereço de uma página que não está 
carregada na MP, então ocorre um page fault (falha de página) 
 Neste caso, o sistema transfere a página da memória secundária para 
a memória principal 
 O número de page faults gerados por cada processo em um 
determinado intervalo de tempo é definido como taxa de paginação 
do processo 
 Se a taxa de paginação dos processos atingir valores elevados, o 
excesso de operação de E/S poderá comprometer o sistema 
 
Paginação 
Endereço virtual
Tabela de páginas
Bit de validade
0
Memória Principal
Memória secundária
Page fault
Tabela de páginas
Bit de validade
1
Memória Principal
Memória secundária
Page in
Política de Busca de Páginas 
 Ao se carregar uma página para a memória pode-se adotar 
duas estratégias diferentes: paginação por demanda e 
paginação antecipada 
 Paginação por Demanda 
 As páginas do processo são transferidas da memória 
secundária para a principal apenas quando são referenciadas 
 Leva para a MP apenas as páginas realmente necessárias à 
execução do programa 
Política de Busca de Páginas 
 Paginação Antecipada 
 Além da página referenciada, carrega para a memória principal 
outras páginas que podem ser necessárias ao processo ao 
longo do processamento 
 Se o programa estiver armazenado sequencialmente no disco, 
economiza-se tempo ao levar um conjunto de páginas 
 Caso o programa não necessite da paginação antecipada, o 
sistema terá perdido tempo e ocupado memória 
desnecessariamente 
 
Política de Busca de Páginas 
 Pode se usar uma estratégia combinada: 
 A técnica de paginação antecipadapode ser empregada no 
momento da criação de um processo 
 Quando um processo é criado, diversas páginas do programa 
que estão na memória secundária devem ser carregadas para a 
MP  gera um alto número de page faults 
 Se o sistema optar por carregar um conjunto de páginas, a taxa 
de paginação do processo deverá cair imediatamente 
 Ao diminuir o número de page faults, diminui-se o tempo gasto 
com operações de E/S e o desempenho do sistema aumenta 
Working Set 
 MP contém páginas de diferentes processos 
 Durante a execução de um processo, algumas páginas são 
carregadas e outras são swapped out 
 Ao se escolher uma página para ser retirada da MP, existe a 
possibilidade de enviar para MS uma página de outro processo, 
logo antes desta ser utilizada 
 É importante reduzir a taxa de page faults, sem prejudicar os 
outros processos 
 Quando o sistema gasta a maior parte do tempo fazendo 
swapping, ocorre um problema conhecido como thrashing 
 
Working Set 
 Para evitar o thrashing é necessário adivinhar qual parte de 
código será mais necessária no futuro → princípio da 
localidade 
 Princípio da Localidade: 
É a tendência do processador 
referenciar instruções e 
dados na memória principal 
localizados em endereços 
próximos 
 Por exemplo, esta tendência 
pode ser justificada pela alta 
incidência de estruturas de 
repetição e acessos a vetores 
Página 0
Página 1
Página 2
Página 3
Página 4
Inicialização
WHILE () DO
 BEGIN
END;
Imprime resultados
Princípio da Localidade 
 Localidade espacial: 
 quando um item é referenciado, existe grande 
probabilidade que itens com endereços próximos 
sejam referenciados em seguida 
 Localidade temporal: 
Quando um item é referenciado, existe grande 
probabilidade que ele seja referenciado novamente 
em breve 
Working Set 
 O conceito de working set está diretamente ligado ao 
princípio da localidade 
 O working set de um processo é o conjunto de páginas 
constantemente referenciadas pelo processo 
 O working set deve 
 permanecer na MP para que o processo execute eficientemente 
 ter um limite máximo de páginas permitidas 
 Se o tamanho do working set for muito grande 
 Então, menor será a chance de falhas de página 
 Porém, menos processos irão compartilhar a memória 
 
Working Set 
 Uma maneira de implementar o modelo de working set é 
analisar a taxa de paginação de cada processo 
 Caso um processo tenha uma taxa de paginação acima 
de um limite definido pelo sistema 
 o limite de páginas reais deve ser aumentado na tentativa de 
alcançar o working set 
 Caso um processo tenha uma taxa de paginação abaixo 
de um certo limite 
 O sistema pode reduzir o limite de páginas sem comprometer o 
seu desempenho 
Política de Alocação de Páginas 
 Determina quantos quadros (frames) um processo pode 
manter na memória principal 
 Existem duas alternativas: fixa e variável 
 Na Política de Alocação Fixa 
 Cada processo tem um número máximo de frames que pode ser 
usado durante a execução 
 Na Política de Alocação Variável 
 O número máximo de frames alocado para um processo durante 
a sua execução pode variar 
Política de Alocação de Páginas 
 Política de Alocação Fixa 
 Se o número de frames alocado para um processo for pouco, 
uma página do próprio processo deve ser descartada para que 
outra seja carregada 
 O limite de frames deve ser definido no momento da criação do 
processo com base no tipo de aplicação que será executada 
 Se o limite for pequeno → o processo terá alto índice de page faults 
 Se o limite for alto → poucos processos compartilharão a memória, podendo 
aumentar o swapping de processos 
 O no de frames pode ou não ser igual para todos os processos 
 Alocar o mesmo número de frames parece justo, porém pode não ser uma 
boa opção, pois os processos possuem necessidades diferentes 
Política de Alocação de Páginas 
 Política de Alocação Variável 
 Durante a execução dos processos o número máximo de frames 
pode variar em função de sua taxa de paginação e ocupação da 
memória principal 
 Um processo com alta taxa de paginação 
 Pode ter o limite máximo de frames aumentado para diminuir o alto índice de 
page faults 
 Um processo com baixa taxa de paginação 
 Pode ter seus frames alocados para outros processos 
 Este mecanismo é mais flexível, porem exige que o SO monitore 
constantemente o comportamento dos processos 
Política de Substituição de Páginas 
 A política de substituição pode ser classificada segundo 
o seu escopo: local ou global 
 Escopo Local 
 Apenas as páginas do processo que gerou o page fault podem 
ser candidatas a substituição 
 As páginas dos demais processos não são avaliadas para 
substituição 
 Escopo Global 
 Todas as páginas alocadas na MP são candidatas a substituição 
 
Política de Substituição de Páginas 
 Existe uma relação entre o escopo da política de 
alocação e de substituição 
 A política de alocação fixa permite apenas a política de 
substituição com escopo local 
 A política de alocação variável permite as políticas de 
substituição com escopo local e global 
 Variável e Local: de tempos em tempos, o número de frames 
pode ser recalculado, mas a substituição é só local 
 Variável e Global: o número de frames varia quando os 
processos alocam frames de outros processos → Mais adotada 
 
Algoritmos de Substituição de Páginas 
 O maior problema na gerência da memória virtual com 
paginação não é decidir qual página será carregada na 
memória principal 
 A dificuldade é decidir qual página será retirada da memória 
principal 
 Os algoritmos de substituição de página têm o objetivo 
de selecionar os frames que tenham menor chance de 
serem referenciados em um futuro próximo 
 Quanto mais sofisticado o algoritmo de substituição de 
páginas, maior será a sobrecarga para o sistema 
operacional 
 
Algoritmos de substituição de páginas 
 OPT ou MIN: Algoritmo Ótimo 
 Possui a melhor taxa de falha de página dentre todos os 
algoritmos 
 Substitui a página que ficará mais tempo sem ser referenciada 
no futuro 
 Difícil saber de antemão a string de referência (a ordem em que 
as páginas serão referenciadas durante a execução) 
 Como produz um resultado ótimo, é usado para estudos 
comparativos para se testar a eficiência de outros algoritmos 
OPT 
 String de Referência: 
 
 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1 
 9 falhas de página 
Algoritmos de substituição de páginas 
 FIFO (First In First Out) 
 Quando uma página precisar ser substituída, a página mais 
antiga será escolhida para sair da memória 
 Fácil de entender e programar 
 É razoável pensar que uma página que já foi carregada para a 
MP há mais tempo, já tenha sido referenciada o suficiente 
 Porém, isto nem sempre é verdade e seu desempenho pode não 
ser bom 
 Pode ser que a primeira página carregada seja a mais utilizada no 
sistema 
 
FIFO 
 String de Referência: 
 
 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1 
 15 falhas de página 
FIFO 
 Anomalia de Belady: a taxa de falha de página pode 
aumentar enquanto a quantidade de quadros aumenta 
 String de Referência: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 
 
Algoritmos de substituição de páginas 
 LRU (Least Recently Used) 
 Substitui a página menos recentemente usada, ou seja aquela 
cuja última referência foi feita há mais tempo 
 Se for considerado o princípio da localidade, é provável que 
uma página que não tenha sido referenciada recentemente não 
seja usada novamente em um futuro próximo 
 Boa estratégia 
 Possui maior sobrecarga pois deve manter atualizado o 
momento do último acesso a cada página (usa um timestamp) 
LRU 
 String de Referência: 
 
 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1 
 12 falhas de página 
Algoritmos desubstituição de páginas 
 NRU (Not Recently Used) 
 Usa um bit de referência para indicar se a página foi usada 
recentemente ou não 
 Inicialmente, quando uma página é trazida para a memória, o 
seu bit de referência é zero 
 Quando uma página que já está na memória é referenciada o 
seu bit muda para 1 
 O algoritmo substitui a página que não foi usada recentemente 
 Pode ser mais eficiente ao se usar bits de referência adicionais 
Algoritmos de substituição de páginas 
 Bits de Referência adicionais (NRU diferenciado) 
 Ao invés de utilizar um bit para indicar se a página foi referenciada 
recentemente, utiliza-se uma cadeia de bits 
 Por exemplo, uma cadeia de 1 byte poderia indicar a referência a 
uma página nos 8 últimos períodos 
 Uma página com bits de referência: 
 00000000  Indica que a página não teve acesso nos 8 últimos 
períodos 
 11111111  Indica que uma página teve pelo menos 1 referência a 
cada período 
 11000100  foi usada mais recentemente do que a página 01110111 
Algoritmos de substituição de páginas 
 Bits de referência adicionais (NRU diferenciado) 
 Neste caso o algoritmo NRU trabalha com o bit de referência e o 
bit de modificação (dirty bit), criando 4 classes de páginas: 
 (0,0) não usada recentemente, nem modificada  melhor página 
para substituir 
 (0,1) não usada recentemente, mas modificada  não tão boa, 
pois precisará ser escrita antes da substituição 
 (1,0) usada recentemente, porém não modificada  é provável que 
logo seja usada novamente 
 (1,1) usada e modificada recentemente  é provável que logo seja 
usada novamente, além de ter que ser escrita no disco antes de ser 
substituída 
 
Algoritmos de substituição de páginas 
 No algoritmo que usa o bit de referência e o bit de 
modificação 
 A página substituída será aquela de menor classe 
 Considera também as páginas modificadas, tentando minimizar 
a quantidade de E/S necessária 
 
Algoritmos de substituição de páginas 
 Segunda Chance 
 Cria uma modificação no algoritmo FIFO, com o objetivo de não 
substituir uma página intensamente usada 
 O bit de referência da página mais antiga é inspecionado: 
 Se o bit = 0, então a substituição prossegue 
 Se o bit = 1, então a página recebe uma segunda chance, seu bit 
de referência é zerado e sua hora de chegada é reiniciada (vai pro 
fim da fila) 
 Se uma página é usada com frequência, e seu bit está sempre 
1, então ela não será substituída 
 
Algoritmos de substituição de páginas 
 Segunda Chance 
 Suponha uma falha de página no tempo 20 
 A página mais antiga é A 
 Suponha que A possui o bit de referência = 1 e não será 
substituída 
 
Algoritmos de substituição de páginas 
 Algoritmo do Relógio (Segunda Chance Melhorado) 
 É utilizado o mesmo algoritmo 
do segunda chance 
 Inspeciona o bit de referência 
 Porém, ao invés de inserir 
uma página que obteve uma 
segunda chance no final da 
fila, utiliza-se uma fila 
circular para melhorar o 
desempenho 
 
Algoritmos de substituição de páginas 
 Algoritmos baseados em contadores 
 São mantidos contadores com o número de referências feito a 
cada página 
 LFU (Least Frequently Used) 
 A página com a menor contagem é substituída 
 Privilegia páginas bastante utilizadas 
 Páginas recém trazidas terão contadores com valores baixos 
 MFU (Most Frequently Used) 
 A página com maior contagem é substituída 
 Baseia-se no argumento que a página com menor contagem acabou de ser 
trazida para a memória e ainda está para ser usada 
 
Tamanho da Página 
 Na paginação não existe fragmentação externa: todo quadro 
livre de memória poderá ser alocado a algum processo 
 Pode acontecer alguma fragmentação interna se os requisitos 
de memória de um processo não coincidirem com os limites 
da página 
 O último quadro alocado pode não estar completamente cheio 
 Exemplo: 
 Tamanho de Página = 2.048 bytes 
 Memória requerida pelo processo = 21.480 bytes 
 Processo alocará 11 quadros  10 completos (20.480 bytes) + 1.000 bytes 
 Resulta em uma fragmentação interna de 1.048 bytes, no último quadro 
 
Tamanho da página 
 O tamanho da página está associado a arquitetura do 
hardware 
 O tamanho da página é uma potência de 2 
 Normalmente está entre 512bytes e 16Mbytes 
 Se o tamanho da página é pequeno: 
 a fragmentação interna é menor 
 porém a tabela de páginas pode ficar muito grande 
 custos de E/S são menos eficientes 
Tamanho da Página 
 Considere o seguinte exemplo 
 32 bits para endereçamento virtual (232 endereços) 
 páginas de tamanho = 4 Kbytes = 212 bits 
 Qual seria o tamanho da tabela de página por processo se cada 
entrada da tabela de páginas ocupasse 4 bytes? 
 Desta forma teríamos o endereço virtual configurado da 
seguinte forma: 
 20 bits para indicar o número da página 
 12 bits para indicar o deslocamento dentro da página 
 Tamanho da página = 220  4 bytes = 4 Mbytes 
p = 20 bits d = 12 bits 
Exercício 1 
 Um sistema operacional implementa gerência de memória virtual 
por paginação. 
Considere endereços virtuais com 16 bits e a tabela de páginas de 
um processo com no máximo 256 entradas. 
 
Indique para cada endereço virtual a seguir a página virtual em que 
o endereço se encontra e o respectivo deslocamento dentro da 
página 
a) 30710 
b) 204910 
c) 230410 
256 entradas = 28 entradas 
São necessários: 8 bits para referenciar o 
número da página 
 
Sobram 8 bits para o deslocamento 
16 bits 
p p p p p p p p d d d d d d d d 
Exercício 1 
a) 30710 
 
 
 
 
b) 204910 
 
 
 
 
c) 230410 
0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 
Página Virtual: 1 
Deslocamento: 51 
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 
Página Virtual: 8 
Deslocamento: 1 
0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 
Página Virtual: 9 
Deslocamento: 0 
Exercício 2 
 Uma memória virtual possui páginas de 1024 endereços (para este 
exemplo, 1024 bytes). 
 
Existem 8 páginas virtuais e 4096 bytes de memória real. 
 
A tabela de páginas de um processo está descrita abaixo, sendo 
que o asterisco indica que a página não está na MP. 
a) Faça a lista/faixa de todos os 
endereços virtuais que irão 
causar page fault. 
b) Indique o endereço real 
correspondente aos 
seguintes endereços virtuais: 
0, 1023, 1024, 6500 e 3728. 
Página Frame 
0 3 
1 1 
2 * 
3 * 
4 2 
5 * 
6 0 
7 * 
Exercício 2 
 1024 endereços = 210 → 10 bits de deslocamento 
 8 páginas = 23 páginas → 3 bits para indicar o número da página 
 Endereço Virtual: 
 
 4096 bytes de memória virtual dividida em páginas de 1024 bytes 
→ 4 frames = 22 frames → 2 bits para indicar o número do frame 
 Endereço Real: 
p p p d d d d d d d d d d 
f f d d d d d d d d d d 
Exercício 2 
 Faça a lista/faixa de todos os endereços virtuais que irão causar 
page fault. 
 
Considerando que cada página possui 1024 endereços e as 
páginas 2, 3, 5 e 7 não estão na MP, então as seguintes faixas de 
endereços causarão page fault: 
 
 2048 – 3071 
 3072 – 4095 
 5120 – 6143 
 7168 – 8191 
 
 
 
 
 
 
Página Frame 
0 3 
1 1 
2 * 
3 * 
4 2 
5 * 
6 0 
7 * 
Exercício 2 
 Indique o endereço real correspondente 
aos seguintes endereços virtuais: 
 
0 
 
 
1023 
 
 
1024 
 
 
6500 
 
 
3728 
 
virtual 0 0 0 0 0 0 0 0 0 0 0 0 0 
real 0 0 0 0 0 0 0 0 0 0 0 0 
Página Frame 
0 3 
1 1 
2 * 
3 * 
4 2 
5 * 
6 0 
7 * virtual 0 0 0 0 0 0 0 0 0 0 0 0 0 
real 0 0 0 0 0 0 0 0 0 0 0 0 
virtual 0 0 0 0 0 0 0 0 0 0 0 0 0 
real 0 0 0 0 0 0 0 0 0 0 0 0 
virtual 0 0 0 0 0 0 0 0 0 0 0 0 0 
real 0 0 0 0 0 0 0 0 0 0 0 0 
virtual 0 0 0 0 0 0 0 0 0 0 0 0 0 
real 0 0 0 0 0 0 0 0 0 0 0 0 
TLB 
 Suporte do HW 
 Normalmente cada processo possui a sua própria tabela de páginas 
 A tabela de páginas pode ser implementada como um conjunto de 
registradores dedicados 
 Porém, se a tabela de páginasfor muito grande o uso de registradores 
se torna inviável 
 Nestes casos, a tabela de página é mantida na MP e um registrador 
(PTBR - Page Table Base Register) guarda o endereço da tabela de 
página 
 O problema é o tempo gasto para acessar um local de memória 
referenciado pelo usuário: são necessários dois acessos à memória (um 
para a tabela de página e outro para o endereço efetivo) 
 
TLB 
 Solução padrão é usar a TLB (Translation Look-aside buffer) 
 A TLB é implementada em um cache especial e fornece uma 
pesquisa rápida 
 Cada entrada da TLB consiste em duas partes: uma chave e um valor 
 A TLB contém apenas algumas entradas da tabela de páginas 
 Quando um endereço lógico é gerado pela CPU, seu número de página 
é buscado na TLB 
 Se o número de página for encontrado, seu número de quadro estará 
disponível imediatamente 
 Se o número de página não for encontrado (TLB miss), deve então ser feita 
uma referência a tabela de página 
 
Hardware de Paginação com TLB 
Paginação em Múltiplos Níveis 
 Em sistemas que implementam apenas um nível de 
paginação, o tamanho das tabelas de páginas pode ser um 
problema 
 
 
 
 Por exemplo, em um sistema 
onde vários processos estejam residentes na MP, é difícil e 
custoso gerenciar tabelas de 4 Mbytes 
0
1
2
(2 -1)
20
Tabela de páginas
Desloc.NPV
12 bits20 bits
Endereço Virtual
32 bits
4 Mb
Paginação em Múltiplos Níveis 
 Uma boa solução é usar tabelas de páginas em múltiplos 
níveis 
 No esquema da paginação com dois níveis existe uma tabela 
diretório que possui uma entrada para cada tabela de página 
 Neste caso, cada entrada da tabela diretório possuirá: 
 O número da página de nível 1 (entrada da tabela de diretório) 
 Permite localizar e endereço da tabela de páginas na tabela diretório 
 O número da página de nível 2 (entrada da tabela de página) 
 Permite localizar o endereço do frame na tabela de páginas 
 O deslocamento dentro da página 
 
 
Paginação em Múltiplos Níveis 
 Paginação em 1 nível 
 220 entradas na TP e cada 
entrada com 4 bytes 
 220 x 4 bytes = 4 Mbytes 
 Tamanho da TP = 4 Mbytes 
 Paginação em 2 níveis 
 210 entradas na tabela de 
diretório e cada entrada 
com 4 bytes 
 210 x 4 bytes = 4 Kbytes 
 Tamanho da Tabela de 
diretório = 4 Kbytes 
 
 
Tabela diretório
Desloc.
12 bits
NPV 1
10 bits
Endereço Virtual
NPV 2
10 bits
Tabela de páginas
frame
Paginação em Múltiplos Níveis 
 A paginação em 2 níveis pode ser estendida para mais 
níveis 
 A vantagem da paginação em múltiplos níveis é que 
estarão residentes na MP apenas as tabelas de páginas 
realmente necessárias 
 Reduz o espaço ocupado na memória principal 
 Para evitar que ocorra muito page fault, a ideia é que o 
princípio da localidade também seja aplicado às tabelas 
de mapeamento 
TLB 
 A gerência de memória virtual utiliza a técnica de 
mapeamento para traduzir endereços virtuais em reais 
 O mapeamento implica em pelo menos dois acessos à MP 
 Um acesso para a tabela de páginas 
 E outro acesso no endereço efetivo (frame) 
 Para agilizar o acesso: 
 A tabela de páginas pode ser implementada como um conjunto 
de registradores dedicados 
 Porém, se a tabela de páginas for grande o uso de registradores 
se torna inviável 
 
 
 
TLB 
 A solução: 
 Seguindo o princípio da localidade, a maioria das aplicações 
referencia um número reduzido de frames na MP por vez 
 Logo, apenas uma parte da tabela de páginas é realmente 
necessária na memória principal 
 Com base neste princípio foi introduzida uma memória 
especial chamada TLB (Translation Lookaside Buffer) 
 A TLB é implementada como uma memória cache 
 Possui o mapeamento apenas dos endereços virtuais mais 
recentemente referenciados 
 
 
TLB 
 A TLB fornece uma pesquisa rápida 
 Cada entrada da TLB consiste em duas partes: uma chave e um 
valor 
 A TLB contém apenas algumas entradas da tabela de páginas 
 Quando um endereço lógico é gerado pela CPU, seu número de 
página é buscado na TLB 
 Se o número de página for encontrado, seu número de quadro 
estará disponível imediatamente 
 Se o número de página não for encontrado (TLB miss), deve então 
ser feita uma referência a tabela de página 
 
Hardware de Paginação com TLB 
Segmentação 
 É a técnica de gerência de memória onde o espaço de 
endereçamento virtual é dividido em blocos de tamanhos 
diferentes chamados segmentos 
 Um programa é dividido logicamente em sub-rotinas e 
estruturas de dados, que são alocados em segmentos na 
memória principal 
PROGRAM Segmento;
 VAR A: ARRAY...
 C: ...
PROCEDURE X;
END;
FUNCTION Y;
END;
BEGIN
END.
Procedimento X
Programa Principal
Função Y
Array A
Variável C
.
.
.
Segmentação 
 A principal diferença entre paginação e segmentação é: 
 Na paginação os programas são divididos em páginas de 
tamanho fixo sem qualquer ligação com a sua estrutura do 
programa 
 A segmentação permite uma relação entre a lógica do 
programa e a sua divisão na memória 
Segmentação 
 A definição dos segmentos é realizada pelo compilador 
 O espaço de endereçamento virtual de um processo possui 
um número máximo de segmentos 
 Cada segmento pode variar de tamanho dentro de um limite 
 O tamanho do segmento pode ser alterado durante a 
execução do programa 
 Espaço de endereçamento independentes permitem que uma 
sub-rotina seja alterada sem a necessidade de recompilar o 
programa principal e outras sub-rotinas 
 
Segmentação 
 Segmentos possuem espaço de endereçamento 
independentes 
Segmentação 
 O mecanismo de mapeamento é semelhante ao da 
paginação, neste caso, os segmentos são mapeados através 
de tabelas de segmentos 
 Cada processo possui sua própria tabela de segmentos 
 Os endereços virtuais são compostos pelo número do segmento virtual 
e por um deslocamento 
 
 O número do segmento virtual identifica a entrada da tabela de 
segmentos que contém o endereço do segmento físico 
 O deslocamento indica a posição do endereço virtual em relação ao 
endereço inicial do segmento 
 O endereço físico é a combinação do endereço do segmento e do 
deslocamento 
 
No do segmento (sv) Deslocamento (d) 
Segmentação 
 Tradução do 
endereço virtual 
Deslocamento
Endereço virtual
Desloc.
End. do segmento
ETS
Tabela de segmentos
Desloc.
Segmento na
memória principal
Deslocamento
Endereço físico
Segmento virtual
Segmentação 
 Cada entrada da tabela de segmentos possui 
informações adicionais como: 
 Tamanho: especifica o tamanho do segmento 
 Bit de validade: indica se o segmento está na MP 
 Bit de modificação: indica se o segmento foi alterado 
 Bit de referência: indica se o segmento foi referenciado 
recentemente 
 Bit de proteção: indica o tipo de acesso ao segmento 
Segmentação 
 Uma vantagem da segmentação em relação a 
paginação é 
 A facilidade em lidar com estruturas de dados dinâmicas 
 O tamanho do segmento pode ser facilmente alterado 
 Na paginação, a expansão de um vetor implica na alocação de 
novas páginas e consequentemente no ajuste da TP 
 Diferentemente da paginação, a segmentação não 
possui fragmentação interna 
 Existe a fragmentação externa, quando áreas livres não são 
grandes o suficiente para alocar novos segmentos 
 
Segmentação 
 Fragmentação externa 
Segmentação 
 Apenas os segmentos referenciados são levados para a MP 
 Se as aplicações não forem desenvolvidas em módulos, 
grandes segmentos estarão na MP desnecessariamente 
 Para alocar segmentos na MP, o sistema operacional 
mantém informações com as áreas livres e ocupadas da 
memória 
 Quando um novo segmento é referenciado o SO seleciona 
um espaço livre suficiente para que o segmento seja alocado 
na MP 
 Pode ser adotada a política best-fit, first-fit ou worst-fit 
Segmentação com Paginação 
 Tem o objetivode combinar vantagens das duas 
técnicas 
 Paginação 
 Evita a fragmentação externa 
 Segmentação 
 Mais fácil para lidar com estruturas de dados dinâmicas, já 
que o tamanho do segmento pode ser facilmente alterado 
 
 
Segmentação com Paginação 
 Divide o espaço de endereçamento virtual em segmentos 
 Cada segmento é dividido em páginas 
 Na visão do programador a sua aplicação continua mapeada 
em segmentos de tamanhos diferentes 
 Por outro lado, o sistema trata cada segmento como um 
conjunto de páginas do mesmo tamanho 
 Assim, um segmento não precisa estar contíguo na memória 
 Elimina o problema da fragmentação externa encontrado na 
segmentação pura 
Segmentação com Paginação 
 O endereço virtual é formado por: 
 Número do segmento virtual 
 Número da página virtual 
 Deslocamento 
 O número do segmento virtual indica a entrada da tabela de 
segmentos 
 A tabela de segmentos indica o endereço da tabela de páginas que contém o 
endereço 
 O número da página identifica a entrada da tabela de páginas 
 O deslocamento indica a posição do endereço dentro da página 
 O endereço real é o endereço do frame encontrado na TP 
combinado com o deslocamento 
No do segmento (sv) No da página (p) Deslocamento (d) 
Segmentação 
com Paginação 
 Tradução do 
endereço virtual 
Endereço do frame Deslocamento
Deslocamento
Num.
segmento
Num.
página
Endereço virtual
Segmento virtual
End. da tabela de páginas
ETS
Tabela de segmentos
Endereço do frame
ETP
Tabela de páginas
Endereço físico
Paginação ✕ Segmentação 
Consideração Paginação Segmentação 
O programador precisa saber qual técnica 
está sendo usada? 
Não Sim 
O espaço de endereçamento virtual pode 
exceder o tamanho da memória física? 
Sim Sim 
Quantos espaços de endereçamento 
lineares existem? 
1 Vários 
Os procedimentos e dados podem ser 
distinguidos e protegidos separadamente? 
Não Sim 
O compartilhamento de procedimentos é 
facilitado? 
Não Sim 
Paginação ✕ Segmentação 
Consideração Paginação Segmentação 
Os programas são divididos em 
pedaços de tamanhos iguais 
Sim Não 
Possui fragmentação Sim, interna Sim, externa 
Por que esta técnica foi inventada? 
Para se obter um 
espaço de 
endereçamento maior 
do que a memória 
física 
Para permitir a divisão 
dos programas 
logicamente e facilitar o 
compartilhamento e 
proteção

Continue navegando