EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma...

16
EA075 Memória virtual Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1

Transcript of EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma...

Page 1: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

EA075 Memória virtual

Faculdade de Engenharia Elétrica e de Computação (FEEC)

Universidade Estadual de Campinas (UNICAMP)

Prof. Levy Boccato

1

Page 2: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

2

Motivação Problema: programas cujos tamanhos ultrapassavam

a capacidade da memória física.

Projeto de software precisava incluir:

Divisão do programa em partes (segmentos);

Identificação de partes mutuamente exclusivas.

Durante a execução, comandos do programa traziam as partes (segmentos) necessários do disco para a memória antes de serem referenciadas.

Somente partes já presentes na memória poderiam ser referenciadas.

Page 3: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

3

Motivação Atualmente, um processo em execução utiliza a memória

para armazenar código e variáveis (dados).

Além disso, o processador deve executar vários processos, sendo que cada processo tem seu espaço de memória.

É necessário, portanto, compartilhar partes da memória física entre os processos.

Page 4: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

4

Motivação Surgem dois espaços de memória:

Espaço de memória endereçável por um processador (processo) – endereço virtual.

Memória física instalada – endereço físico.

A solução presente nos sistemas modernos de computação explora:

O conceito de memória virtual.

O particionamento da memória principal e dos processos em blocos (páginas ou segmentos).

Um mecanismo de gerenciamento automático de endereços virtuais / físicos.

Page 5: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

5

Memória Virtual Considere o seguinte cenário: a memória principal de um sistema

de computação foi particionada em pedaços iguais de tamanho fixo, denominados frames (blocos), e que cada processo também foi dividido em blocos de tamanho fixo, denominados páginas.

Quando o sistema operacional decide trazer um processo do disco para a memória principal, ele carrega as páginas que compõem este processo em blocos livres da memória principal.

Os blocos livres não são necessariamente adjacentes.

Se fossem, bastaria ajustar o endereço de base do processo carregado para converter os endereços lógicos (expressos como um deslocamento ou posição relativa ao início do programa) em endereços físicos.

No caso geral, o sistema operacional mantém uma tabela de página para cada processo.

Page 6: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

6

Memória Virtual Como é feito o ajuste dos endereços contidos no programa?

Cada endereço virtual consiste em um número de página e um endereço relativo dentro daquela página (offset).

O processador usa a tabela de páginas associada ao processo para gerar um endereço físico – dividido em número de bloco e endereço relativo dentro do bloco.

Como o tamanho de página é, predominantemente, feito igual ao tamanho do bloco, o offset é o mesmo nos endereços virtual e físico.

Exemplo:

13

14

25

Endereço virtual

1 30

Número da página

Offset

13 30

Endereço físico Tabela de páginas

Memória principal

Página 1 do processo

13

14

Número do bloco

Page 7: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

7

Memória Virtual Paginação por demanda: cada página de um processo somente é

trazida para a memória quando for necessária.

Ideia:

Carregar algumas páginas de um processo na memória principal.

Caso o programa desvie para uma instrução ou necessite de um dado contido em uma página que não esteja na memória principal, uma falta de página ocorrerá, o que leva o sistema operacional a trazer esta página do disco para a memória.

Assim,

Apenas algumas páginas de um processo permanecem na memória principal.

Mais processos podem ser mantidos na memória.

Tempo é reduzido, pois as páginas não utilizadas não entram e saem da memória.

É possível ter um processo com tamanho maior que toda a memória principal.

Page 8: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

8

Memória Virtual O sistema operacional precisa gerenciar este esquema de

paginação de forma inteligente.

Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco da memória principal a ser substituído. Entram em cena neste momento algoritmos de substituição de página,

que são bastante parecidos com as técnicas de substituição de linha em memórias cache.

Além disso, é preciso optar por uma política de escrita, tal qual ocorre com a memória cache.

Page 9: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

9

Memória Virtual Mapeamento de endereços via tabela de páginas

Tabela de páginas

Endereço virtual

Número de página virtual Offset

Número de bloco físico Offset

Endereço físico

Memória principal

Page 10: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

10

Memória Virtual Exemplo

Cada página equivale a 4k bytes – 12 bits para identificar um byte (offset).

Endereço virtual de 32 bits.

Ao todo, existem 220 páginas diferentes.

Então, a tabela de páginas possui 220 linhas.

Se cada linha contém 4 bytes – incluindo o endereço físico e outras informações -, a tabela de páginas deste processo ocupa cerca de 4 MB.

Número de página virtual Offset

12 bits 20 bits

Page 11: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

11

Memória Virtual Tabela de páginas invertida

Em geral, o número de páginas físicas (blocos) é menor que o número de páginas virtuais.

Ideia: a parte referente ao número de página virtual é mapeada em um valor usando uma função de hash (dispersão, espalhamento) simples. Este valor serve como índice para a tabela de páginas invertida.

Existe uma entrada (linha) na tabela de página invertida para cada bloco da memória física. Assim, uma proporção fixa da memória física é exigida para essa tabela, independentemente do número de processos ou páginas virtuais admitidas.

Como mais de um endereço virtual pode ser mapeado na mesma linha da tabela, uma técnica de encadeamento é usada para gerenciar as situações de conflito.

Page 12: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

12

Memória Virtual Tabela de páginas invertida

Exemplo: memória física dividida em N blocos

0x0001 0x013

hash

Offset Número da página virtual

Endereço virtual

Índice de 1 a N 0x63

Bits de controle (e.g., validade, dirty bit) e de identificação do processo

Número do bloco físico

0x01

Próximo

Page 13: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

13

Memória Virtual Tabela de páginas invertida

Exemplo: memória física dividida em N blocos

0x0001 0x013

hash

Offset Número da página virtual

Endereço virtual

Índice de 1 a N Número da página

Número do bloco

Número da página

Número do bloco

Número da página

Número do bloco

Havendo colisão, os pares (número de página virtual / número do bloco físico) associados a uma linha são organizados em uma lista.

Page 14: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

14

Memória Virtual Em tese, como a tabela de páginas é armazenada na memória,

cada referência de memória virtual pode causar dois acessos à memória física:

O primeiro para buscar a entrada apropriada da tabela de páginas.

O segundo para buscar os dados desejados.

Para evitar isto, usa-se uma memória cache especial para armazenar entradas da tabela de páginas, chamada de translation lookaside buffer (TLB).

Page 15: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

15

Memória Virtual Translation lookaside buffer (TLB): funciona da mesma

maneira que uma memória cache e deve conter as entradas da tabela de páginas que foram usadas recentemente.

Pelo princípio da localidade, a maior parte das referências à memória virtual será para locais que estão nas páginas usadas recentemente.

Page 16: EA075 Memória virtual - DCAlboccato/Cap.5.2-Memoria_virtual.pdf · paginação de forma inteligente. Por exemplo, ao trazer uma nova página do disco, ele precisa escolher um bloco

16

Memória Virtual O esquema de tradução de endereços via TLB e tabela de

páginas ocorre junto com o sistema de memória cache convencional:

1) O sistema de gerenciamento de memória consulta o TLB para ver se a entrada da tabela de página correspondente está presente. Se estiver, o endereço físico é gerado combinando o número de bloco com o offset.

2) Caso contrário, a entrada é acessada a partir de uma tabela de página (que está na memória).

3) Quando o endereço físico for gerado, a memória cache é consultada para ver se o bloco contendo a palavra desejada está presente.

4) Caso não esteja, a palavra desejada é recuperada da memória principal.