Buscar

Cap 6 Gerencia de Memoria II

Prévia do material em texto

SISTEMAS 
OPERACIONAIS 
 
GERÊNCIA DE MEMÓRIA II 
Prof. Dr. Paulo Sampaio 
e-mail: pnms.funchal@gmail.com 
MEMÓRIA VIRTUAL 
 O conceito de realocação de memória possibilitou o 
desenvolvimento de um mecanismo mais sofisticado 
de utilização de memória denominado memória 
virtual 
MEMÓRIA VIRTUAL 
 A idéia da memória virtual é eliminar o vínculo entre 
o endereçamento feito pelo programa e os verdadeiros 
endereços físicos da memória principal 
 Com isso os programas deixam de estar limitados ao 
tamanho da memória principal, pois conseguem endereçar 
posições de memória muito maiores sem se preocupar com a 
localização real destes endereços 
 
 Segundo Deitel: 
 “O termo memória virtual é normalmente associado com a 
habilidade de um sistema endereçar muito mais memória do 
que a fisicamente disponível” 
MEMÓRIA VIRTUAL 
MEMÓRIA VIRTUAL 
A memória virtual de um sistema é: 
 
 O(s) arquivo(s) de troca (ou swap file(s)) gravado(s) no 
disco rígido 
 
A memória total de um sistema que possui 
memória virtual é a soma de: 
 
 Sua memória física, de tamanho fixo 
 A memória virtual 
 
 
MEMÓRIA VIRTUAL 
 O tamanho da memória virtual, chamado de 
arquivo de paginação no Windows XP, é definido, 
basicamente, pelo menor valor dentre os 
seguintes: 
 Capacidade de endereçamento do processador 
 Capacidade de administração de endereços do SO 
 Capacidade de armazenamento dos dispositivos de 
armazenamento secundário (unidades de disco) 
 
 
MEMÓRIA VIRTUAL - MAPEAMENTO 
 Um programa no ambiente de memória virtual 
não faz referência a endereços físicos de memória 
(endereço reais), mas apenas a endereço 
virtuais 
 
 No momento da execução de uma instrução, o 
endereço virtual é traduzido para um endereço 
físico, pois o processador acessa apenas posições 
da memória principal 
 Essa tradução de endereço é chamada de 
MAPEAMENTO 
 Quem realiza o mapeamento é o hardware, sob a 
orientação do SO 
 
MEMÓRIA VIRTUAL - MAPEAMENTO 
 Graças ao mapeamento, um programa não 
precisa estar necessariamente contíguo na 
memória real para ser executado 
 
 O mecanismo de tradução se encarrega de 
manter tabelas de mapeamento exclusivas 
para cada processo, relacionando os endereços 
virtuais do processo às suas posições na memória 
física. 
MEMÓRIA VIRTUAL - MAPEAMENTO 
MEMÓRIA VIRTUAL - 
IMPLEMENTAÇÃO 
 Existem dois mecanismos para implementar a 
memória virtual: 
 Paginação 
 É o mecanismo mais popular 
 Trabalha com blocos de memória de tamanho fixo, 
chamados de “páginas virtuais” (ou simplesmente 
“páginas”) 
 Segmentação 
 Apesar de ser menos utilizado, é o mecanismo mais 
adequado, se considerarmos o ponto de vista de 
programação 
 Funciona com blocos de memória de tamanho variável 
 Alguns sistemas adotam uma solução híbrida, 
combinando os dois mecanismos em uma terceira 
forma de trabalhar 
PAGINAÇÃO 
 Funcionamento: 
 O espaço de endereçamento total de memória do 
sistema (memória principal + arquivos de SWAP no 
disco) é chamado de “espaço de endereçamento 
virtual” 
 Este espaço é dividido em blocos de tamanho igual, 
chamados de “páginas” 
 Cada página possui um número que a identifica (para 
que possa se endereçada), começando de 0 (zero) e 
contém diversos endereços de memória 
PAGINAÇÃO 
 Funcionamento (continuação): 
 A memória física também é dividida em blocos de 
iguais, com o mesmo tamanho das páginas, chamados 
de “molduras de páginas” 
 Cada moldura de página também possui um número 
de identificação e corresponde a uma região da 
memória física, também começando de 0 (zero) 
 Cada moldura de página hospeda uma página virtual. 
Os endereços de memória usados pelos programas são 
virtuais e fazem referência a regiões em páginas 
virtuais(ou seja: o programa não conhece o endereço 
real na memória) 
PAGINAÇÃO 
 Funcionamento (continuação): 
 É preciso que algo realize a conversão entre os endereços 
virtuais e suas localizações reais 
 Em computadores que não possuem memória virtual, quem realiza 
esta conversão é o barramento da memória 
 Em computadores com memória virtual, o endereço virtual é 
enviado para um dispositivo de hardware chamado MMU (Memory 
Management Unit – Unidade de Gerenciamento de Memória) para 
ser convertido 
 A MMU é um circuito integrado (ou uma coleção deles), cuja 
função é fazer o mapeamento entre endereços virtuais e 
físicos 
PAGINAÇÃO 
PAGINAÇÃO 
 Para a paginação funcionar corretamente é necessário que 
exista em algum lugar informações de mapeamento que 
permitam descobrir quais os endereços que estão realmente na 
memória física, ou seja, é preciso que o sistema sempre tenha 
condições de responder as seguintes perguntas: 
 
 Quais os endereços virtuais estão realmente hospedados em 
molduras de página? 
 Quais os endereços virtuais estão armazenados fisicamente nos 
arquivos de SWAP? 
 Em outras palavras: onde fica a localização real de um 
determinado endereço virtual de memória? 
 
 Para responder a estas perguntas, o SO mantém “tabelas de 
páginas” que indicam a localização real de cada endereço 
virtual válido no sistema 
PAGINAÇÃO 
 Quando programas são executados, as páginas 
virtuais são transferidas da memória secundária 
para a memória principal e colocadas nas molduras 
de páginas 
 
 Com o decorrer da execução dos programas, o SO 
relaciona quais páginas virtuais estão sendo 
alocadas para cada um destes programas 
 
 No instante efetivo da execução, a MMU converte os 
endereços virtuais em endereços físicos, consultando 
as tabelas de páginas 
PAGINAÇÃO 
PAGINAÇÃO - EXEMPLO 
PAGINAÇÃO - EXEMPLO 
 Na figura anterior, cada página virtual possui 1 
Kb de tamanho, assim como as molduras de 
páginas da memória real 
 
 Note que o espaço de endereçamento virtual 
possui o dobro do tamanho da memória real 
(quantidade de páginas = 2 x quantidade de 
molduras) 
 
 Suponha que um determinado programa esteja 
manipulando o endereço 2060 (que, é claro, é um 
endereço virtual) 
PAGINAÇÃO - EXEMPLO 
Sabemos que o endereço 2060 deve ficar 
na página 2, porque: 
 O endereço inicial da página 0 é 0 
 O endereço inicial da página 1 é 1024 (1Kb) 
 O endereço inicial da página 2 é 2048 (2Kb) 
 O endereço inicial da página 3 é 3072 (3Kb) 
 Logo, o endereço 2060 fica antes do início da página 3 
e após o início da página 2 (ou seja: dentro da página 
2) 
A MMU consulta as tabelas de páginas 
para descobrir em que moldura está a 
página 2 (no nosso exemplo, está na 
moldura 1) 
PAGINAÇÃO - EXEMPLO 
O endereço virtual é formado pelo número 
da página virtual onde ele se encontra e 
um deslocamento dentro desta página. No 
nosso exemplo isso seria: 
 
 Endereço inicial da página virtual 2: 2048 
 
 Endereço virtual da instrução: 2060 
 
 Deslocamento = 2060 – 2048 = 12 
PAGINAÇÃO - EXEMPLO 
O endereço físico real é calculado 
somando-se o endereço inicial da moldura 
de página obtido pela MMU com o 
deslocamento 
 A página virtual 2 está na moldura 1, logo o endereço 
inicial da moldura é 1024 
 O deslocamento do endereço virtual 2060 é 12 
(calculado no item anterior) 
 O endereço real seria: 1024 + 12 = 1036 
 
Ou seja: o endereço virtual 2060 esta 
localizado fisicamente na memória, no 
endereço real 1036 
PAGINAÇÃO 
A tabela de página também guarda uma 
informação que indica se o endereço está ou 
não na memória principal (ele também pode 
estar armazenado em um arquivo de SWAP) 
 
 Isso é controlado por meio de um “bit de 
validade” 
 Se o bit de validade tem valor 0 (zero) significaque a 
página virtual não está na memória principal 
 Se o bit de validade tem valor 1 (um) significa que a página 
virtual está na memória principal 
PAGINAÇÃO 
CARACTERÍSTICAS DA PAGINAÇÃO 
 Tamanho de Página 
 Páginas grandes significam: 
 Processos compostos por menos páginas 
 Tabelas de páginas menores 
 Páginas pequenas significam: 
 Processos compostos por mais páginas 
 Tabelas de páginas maiores 
 
 O tamanho de página é imposto pelo hardware 
(MMU) 
CARACTERÍSTICAS DA PAGINAÇÃO 
 É necessária a existência de mecanismos de 
proteção 
 Para evitar que um processo acesse as áreas de outros 
processos indevidamente 
 Para garantir que um processo acesse apenas endereços 
válidos 
 Para garantir acessos autorizados a determinadas 
posições de memória (read-only, read-write, etc.) 
 É necessária a existência de mecanismos de 
compartilhamento 
 Para permitir que dois ou mais processos acesse áreas 
comuns 
EXEMPLO DE COMPARTILHAMENTO 
SISTEMAS 
OPERACIONAIS 
 
GERÊNCIA DE MEMÓRIA II 
Prof. Dr. Paulo Sampaio 
e-mail: pnms.funchal@gmail.com

Continue navegando

Outros materiais