Baixe o app para aproveitar ainda mais
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
Compartilhar