SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e...

21
SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração de espaços de endereçamento, há um outro problema a ser resolvido: gerenciar o bloatware. O problema de programas maiores que a memória está presente desde o início da computação.

Transcript of SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e...

Page 1: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

Memória virtual

Embora registradores-base e registradores-limite possam ser usados para criar a abstração de espaços de endereçamento, há um outro problema a ser resolvido: gerenciar o bloatware. O problema de programas maiores que a memória está presente desde o início da computação.

Page 2: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

Memória virtual

Uma solução adotada na década de 1960 foi a divisão do programa em módulos, denominados sobreposições (overlays) ou módulos de sobreposição. A divisão de programas grandes em módulos menores era um trabalho lento e propenso a erros. Poucos programadores eram bons nisso. Não demorou muito para se pensar em também atribuir essa tarefa ao computador.

Page 3: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

Memória virtual

Para isso, foi concebido um método, que ficou conhecido como memória virtual. A ideia básica por trás da memória virtual é que cada programa tenha seu próprio espaço de endereçamento, que é dividido em blocos chamados de páginas. Cada página é uma série contígua de endereços.

Page 4: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

Memória virtual

Essas páginas são mapeadas na memória física, mas nem todas precisam estar na memória física para executar o programa. Quando o programa referencia uma parte de seu espaço de endereçamento que está na memória física, o hardware executa o mapeamento necessário dinamicamente.

Page 5: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

Memória virtual

Quando o programa referencia uma parte de seu espaço de endereçamento que não está em sua memória física, o sistema operacional é alertado para obter a parte que falta e reexecutar a instrução que falhou. Se um programa estiver esperando por outra parte de si próprio ser carregada na memória, a CPU poderá ser dada a outro processo.

Page 6: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

Paginação

A maioria dos sistemas com memória virtual utiliza uma técnica denominada paginação. Em qualquer computador existe um conjunto de endereços de memória que os programas podem gerar ao serem executados. Quando um programa usa uma instrução do tipo MOV REG, 1000, ele deseja copiar o conteúdo do endereço 1000 para o registrador REG.

Page 7: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

Paginação

Esses endereços gerados pelo programa são denominados endereços virtuais e constituem o espaço de endereçamento virtual. Em computadores sem memória virtual, o endereço virtual é idêntico ao endereço físico. Quando a memória virtual é usada, o endereço virtual não é colocado diretamente no barramento de memória.

Page 8: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

Paginação

Em vez disso, ele vai a uma MMU (memory management unit), que mapeia endereços virtuais e endereços físicos.

Page 9: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

Paginação

Um exemplo de computador que pode gerar endereços virtuais de 16 bits, de 0 a 64k, esse computador tem somente 32 KB de memória física. Assim, embora seja possível escrever programas de 64 KB, eles não podem ser totalmente carregados na memória para serem executados e sim partes carregadas dinamicamente na memória quando necessário.

Page 10: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

Paginação

Page 11: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

Paginação

O que acontece se um programa tenta usar uma página virtual não mapeada? A MMU constata que essa página virtual não está mapeada ( o que é indicado pelo X na figura) e força o desvio da CPU para o sistema operacional. Essa interrupção é denominada falta de página (page fault). O sistema operacional, então, escolhe uma moldura de página pouco usada e a salva em disco, ou seja, escreve seu conteúdo de volta no disco.

Page 12: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

Paginação

Em seguida, ele carrega a página virtual referenciada pela instrução na moldura de página recém liberada, atualiza o mapeamento da tabela de páginas e reinicia a instrução causadora da interrupção.

Page 13: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

PaginaçãoTabelas de páginasNo caso mais simples, o mapeamento dos endereços virtuais em endereços físicos pode ser resumido da seguinte forma: o endereço virtual é dividido em números de página virtual (bits mais significativos) e um deslocamento (bits menos significativos). Por exemplo, com um endereço de 16 bits e um tamanho de página de 4 KB os 4 bits superiores poderiam especificar uma dentre as 16 páginas virtuais e os 12 bits inferiores especificariam, então, o deslocamento do byte (de 0 a 4095) dentro da página selecionada.

Page 14: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

PaginaçãoTabelas de páginasO objetivo da tabela de páginas é mapear páginas virtuais em molduras de página física. Matematicamente falando, a tabela de páginas é uma função que usa o número da página virtual como argumento e tem o numero da moldura de página física correspondente como resultado. Usando o resultado dessa função, o campo que endereça a página virtual em um endereço virtual pode ser substituído pelo campo que endereça a moldura de uma página física, formando, assim, um endereço da memória física.

Page 15: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

PaginaçãoSegmentação A memória virtual discutida até agora é unidimensional porque o endereçamento virtual vai de 0 a algum endereço máximo, um após o outro. Para muitos problemas, ter dois ou mais espaços de endereçamentos separados pode ser muito melhor do que ter somente um.

Page 16: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

PaginaçãoSegmentação Imagine o que ocorre se um programa tem um número excepcionalmente grande de variáveis, mas uma quantidadenormal do restante. A região do espaço de endereçamento alocada para a tabela desímbolos pode se esgotar,mas talvez existam várias entradas livres nas outras tabelas.

Page 17: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

PaginaçãoSegmentação Uma solução extremamente abrangente e direta é prover a máquina com muitos espaços de endereçamento completamente independentes, chamados de segmentos. Cada segmento é constituído de uma sequencia linear de endereços, de 0 a algum máximo. Segmentos diferentes podem ter tamanhos diferentes.

Page 18: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

PaginaçãoLinuxNo Linux, a idéia básica por trás da paginação é simples: um processo não precisa estar inteiro na memória para que seja executado. É necessário simplesmente que a estrutura do usuário e as tabelas de páginas estejam lá. Se isso acontecer, o processo é considerado ‘na memória’ e pode ser escalonado para a execução.

Page 19: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

PaginaçãoLinuxAs páginas de código dados e segmentos de pilhas são levadas para a memória dinamicamente, uma a uma conforme são referenciadas. Se a estrutura do usuário e as tabelas de páginas não estiverem na memória, o processo não pode ser executado até que o trocador as traga.

Page 20: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

PaginaçãoLinuxUma parte da paginação é implementada pelo núcleo e a outra, pelo novo processo denominado daemon de paginação.

Page 21: SISTEMAS OPERACIONAIS I Memória Virtual e Paginação Memória virtual Embora registradores-base e registradores-limite possam ser usados para criar a abstração.

SISTEMAS OPERACIONAIS IMemória Virtual e Paginação

Exercícios:

1) Conceitue memória virtual2) Descreva como funciona o processo de paginação3) Resuma a paginação no Linux.