Você está na página 1de 26

Sistemas Operacionais

Sistemas Operacionais

Gerência de Memória

Memória virtual

Edson Moreno

http://www.inf.pucrs.br/~emoreno

Slides baseados nas apresentações dos prof. Tiago Ferreto e Alexandra Aguiar

Introdução

Problema

Memória principal pode não comportar todos os processos ativos

Solução

Emprego de memória virtual

Memória virtual

Esquema de armazenamento no qual a memória secundária é endereçado como parte da memória principal

Gerência de Memória Virtual

Mapeamento

Gerência de Memória Virtual Mapeamento

Gerência de Memória Virtual

Mapeamento

Processador

Apenas executa/opera no espaço de endereçamento virtual

Deve existir mecanismo que transforme os endereços virtuais em reais.

Mapeamento

Permite tradução um endereço do espaço virtual para espaço real.

Sistemas modernos

Tarefa de tradução de endereços virtuais é realizada por

Hardware + sistema operacional

Não deve comprometer desempenho

Deve ser transparente a usuários e suas aplicações.

Gerência de Memória Virtual

Mapeamento

Tradução

Unidade de gerência de memória (Memory Management Unit - MMU) em HW

Acionado sempre que se faz referência a um endereço virtual

Depois de traduzido

Endereço real pode ser utilizado para o acesso à memória principal.

Cada processo tem o seu espaço de endereçamento

Responsabilidade do mecanismo de tradução

Manter tabelas de mapeamento exclusivas para cada processo

Relacionar os endereços virtuais do processo às posições na memória real

Gerência de Memória Virtual

Mapeamento

Gerência de Memória Virtual Mapeamento

Gerência de Memória Virtual

Mapeamento

A tabela de mapeamento

Estrutura de dados existente para cada processo.

Quando um determinado processo está sendo executado

Tradução dos endereços baseado na tabela de mapeamento do processo

Se um outro processo vai ser executado

Sistema deve passar a referenciar a tabela do novo processo.

A troca de tabelas de mapeamento é realizada através de um registrador Indica a posição inicial da tabela corrente

Da mudança de contexto Registrador é atualizado com o endereço da nova tabela

Gerência de Memória Virtual

Mapeamento

Tabelas mapeiam blocos de dados

Tamanho determina o número de entradas existentes nas tabelas de mapeamento.

Quanto maior o bloco

Menos entradas existem nas tabelas de mapeamento

Menor o tamanho das tabelas de mapeamento

Técnicas empregadas pelos sistemas operacionais

Paginação

Segmentação

Segmentação com paginação

Gerência de Memória Virtual

Memória Virtual por Paginação

A memória virtual por paginação

Blocos de mesmo tamanho nos espaços de endereçamento

Virtual (memória secundária)

Páginas virtuais

Real (memória principal)

Páginas reais / quadros

Tabela de página

Individual a cada processo possui

Cada página virtual do processo

Presente na tabela (entrada na tabela de páginas - ETP)

Contém informações de mapeamento

Permitem ao sistema localizar a página real correspondente

Gerência de Memória Virtual

Memória Virtual por Paginação

Gerência de Memória Virtual Memória Virtual por Paginação

Gerência de Memória Virtual

Memória Virtual por Paginação

Além da informação sobre a localização da página virtual

Bit de validade (valid bit)

Indica se uma página está ou não na memória principal.

Zero indica página virtual não presente na memória principal

Um indica a página está localizada na memória.

Bit verificado sempre quando de uma requisição

Ausência de um página na MP acarreta uma falha (page fault)

Sistema transfere a página da memória secundária para a principal

Realizando uma operação de E/S conhecida como paginação.

Gerência de Memória Virtual

Memória Virtual por Paginação

Número de page faults gerado por um processo depende de:

Como o programa foi desenvolvido

Qual a política de gerência de memória implementada

O overhead (sobrecarga) gerado pelo mecanismo de paginação

Inerente à gerência de memória virtual

Excesso de operações de E/S pode comprometer o desempenho

Gerência de Memória Virtual

Memória Virtual por Paginação

Quando ocorre um page fault

Processo em questão passa do estado de execução para espera

Aguarda até que a página seja transferida para a memória principal.

Na troca de contexto

Tabela de mapeamento é salva

Informações do novo processo escalonado são restauradas.

Após a transferência da página para a memória principal

Processo é recolocado na fIla de processos no estado de pronto

Quando reescalonado poderá continuar sua execução.

Gerência de Memória Virtual

Memória Virtual por Paginação

Gerência de Memória Virtual Memória Virtual por Paginação

Gerência de Memória Virtual

Políticas de Busca de Páginas

MMU

Permite a execução de um programa sem que seu código esteja completamente

residente na memória principal

Política de busca determina quando uma página deve ser carregada.

Estratégias para este propósito

Paginação por demanda

Paginação antecipada.

Paginação por demanda

Páginas transferidas da memória secundária para a principal quando referenciadas.

É possível que partes não executadas do programa nunca sejam carregadas

Paginação antecipada

Além da página referenciada, carrega páginas que podem ou não ser necessárias

Permite economia de tempo, mas pode causar perda de tempo e desperdiçar

memória

Gerência de Memória Virtual

Políticas de Alocação de Páginas

A política de alocação de páginas

Determina quantos frames cada processo pode manter na memória principal.

Alternativas de alocação

Fixa

Processo tem um número máximo de frames que pode ser utilizado

Caso o número de páginas reais seja insuficiente

Página do processo deve ser descartada

Variável

Número máximo de páginas pode variar durante sua execução

Emprega sua taxa de paginação e da ocupação da memória principal

Gerência de Memória Virtual

Translate Lookaside Buffer (TLB)

Gerência de memória virtual

Mapeamento implica em pelo menos dois acessos à memória principal

à tabela de páginas

à própria página.

Maioria das aplicações

Referencia um número reduzido de frames na memória principal

Princípio da localidade

Temporal e espacial

Uma pequena fração da tabela de mapeamento é realmente necessária.

Gerência de Memória Virtual

Translate Lookaside Buffer (TLB)

Translation Lookaside Buffer (TLB)

Permite mapear endereços virtuais em endereços físicos

Pode não requer acesso à tabela de páginas

Traduções prévias podem estar armazenadas na TLB

Funciona como uma memória cache

Foco está na resposta a endereços virtuais previamente buscados e traduzidos

Mantendo apenas as traduções dos endereços virtuais das páginas mais recentemente referenciadas

Utiliza o esquema de mapeamento associativo

Gerência de Memória Virtual

Translate Lookaside Buffer (TLB)

Tradução de um endereço virtual

Verifica primeiro o TLB

Caso o endereço virtual (tag) esteja na cache

Endereço físico é utilizado

Eliminando o acesso à tabela de mapeamento (TLB hit).

Caso o endereço não esteja na cache

Tabela de mapeamento deve ser consultada (TLB miss).

Se a página estiver na memória principal

Tradução do endereço virtual é colocada no TLB

Endereço é traduzido.

Caso contrário

Ocorre um page fault

A página é carregada para a memória

A tabela de mapeamento é atualizada

Informação é carregada para a TLB.

Gerência de Memória Virtual

Translate Lookaside Buffer (TLB)

ENDEREÇO LÓGICO

TABELA

DE

PÁGINAS

PAGE

FAULT

Disco

TLB MISS

TLB

Envia dado

para a CPU

PAGE

HIT

MISS

TLB HIT

MEMÓRIA

CACHE

CACHE HIT

CACHE MISS

MEMÓRIA

PRINCIPAL

HIT

CPU

Gerência de Memória Virtual

Swapping em Memória Virtual

A técnica de swapping

Pode ser aplicada em sistemas com memória virtual

Permite aumentar o número de processos que compartilham a memória principal

Aumenta o grau de multiprogramação do sistema.

Empregando quando

Existem novos processos para serem executados

Não há memória principal livre suficiente para alocação

Sistema utiliza o swapping

Selecionando um ou mais processos para saírem da memória

Oferecer espaço para novos processos.

Depois de escolhidos

Sistema retira os processos da memória principal para a secundária (swap out) Páginas ou segmentos gravados em um arquivo de swap (swap file)

Gerência de Memória Virtual

Swapping em Memória Virtual

Gerência de Memória Virtual Swapping em Memória Virtual

Gerência de Memória Virtual

Swapping em Memória Virtual

Políticas que podem ser aplicadas na escolha dos processos

Principalmente escolhe considerando o estado do processo e sua prioridade. Com base no estado dos processos

Seleciona, inicialmente, os processos que estão no estado de espera.

Seleção pode ser refinada em função do tipo de espera de cada processo.

Com base na prioridade

É possível que não existam processos suficientes no estado de espera para atender as necessidades de memória do sistema. Escolhe os processos no estado de pronto com menor prioridade

Gerência de Memória Virtual

Swapping em Memória Virtual

O arquivo de swap

Compartilhado por todos os processos que estão sendo executados no ambiente.

Quando um processo é criado

Sistema reserva um espaço no arquivo de swap para o processo.

Quando um processo é eliminado

Sistema libera a área alocada.

Gerência de Memória Virtual

Thrashing

Thrashing

Excessiva transferência blocos entre a memória principal e a secundária.

Na memória virtual por paginação

Thrashing ocorre em dois níveis No próprio processo

Excessiva paginação ocorre devido ao elevado número de page faults

Processo passa mais tempo esperando por páginas do que executado No sistema

Processos competindo por memória principal que espaço disponível

Solução o Reduzir o número de páginas de cada processo na memória

Gerência de Memória Virtual

Thrashing

Desempenho da máquina

Começa a diminuir a partir de um determinado número de processos ativos

Característica dinâmica que depende:

Da arquitetura da máquina Do tamanho da MP

Do número de processos ativos

Do tipo de processos que estão ativos (io-bound, cpu-bound)

tipo de processos que estão ativos ( io-bound, cpu-bound )  Taxa de utilização do processador

Taxa de utilização do processador cai exponencialmente quando em trashing