gerência de memória memória ... -...

17

Click here to load reader

Upload: vophuc

Post on 11-Nov-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

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

Carlos Gustavo A. da Rocha

Page 2: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

● Memória virtual● O tamanho das memórias aumenta rápido :)

– Mas o tamanho dos softwares aumenta mais rápido :(● Devido a isto os SOs devem ser capazes de

– Executar um programa que é muito grande para caber na memória; ou

– Executar vários programas, onde cada um deles, individualmente, cabe na memória, mas o conjunto não

Page 3: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

● Memória virtual● A técnica empregada pelos SOs para tornar isto

possível é chamada de memória virtual– Por meio dela o SO realiza o gerenciamento de memória– É uma técnica “antiga”, implementada em computadores

de grande porte desde a década de 60– O tamanho total de cada programa (código, dados, pilha

etc), ou conjunto deles, pode exceder a quantidade total de memória RAM física disponível

● O SO irá manter apenas as partes “ativas” de cada programa na RAM, e o restante no disco

Page 4: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

● Memória virtual● A ideia básica por trás da memória virtual é que

cada programa possui seu próprio espaço de endereçamento, que é dividido em pedaços chamados de páginas– Estas páginas são “mapeadas” na memória RAM física– A cada momento, apenas parte das páginas precisa

estar na RAM física para que o programa possa executar

Page 5: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

● Paginação● É a técnica empregada por quase todos os

computadores para implementar a memória virtual● As instruções executadas durante a execução de

um programa irão referenciar endereços de memória, como por exemplo

MOV REG, 1000– Solicita a cópia do conteúdo da posição de memória

RAM “1000” para o registrador “REG” da CPU

Page 6: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

● Paginação● Em computadores sem memória virtual, endereços

presentes no código dos programas são “reais” e referenciam uma posição da memória RAM física– No exemplo anterior, a posição de memória RAM física

1000 seria copiada para o registrador REG existente na CPU do computador

Page 7: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

● Paginação● Em computadores com memória virtual, endereços

presentes no código dos programas são chamados de endereços virtuais, e fazem parte do seu espaço de endereçamento virtual

Page 8: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

● Paginação● Quando uma instrução tenta cessar um endereço

de memória (virtual) ele será repassado para um componente de hardware da CPU, chamado de MMU, que o converterá para um endereço real, da memória RAM física

Page 9: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

● Paginação – Exemplo ● Em um computador fictício bastante simples cada

programa pode ocupar até 64Kb de memória– Contudo a memória RAM física é de 32Kb

● O espaço de endereçamento (ou memória virtual) de cada processo é dividida em “páginas”, neste exemplo, de 4Kb cada– Cada uma dessas páginas pode ou não estar na

memória RAM real da máquina

Page 10: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb28 - 32kb32 - 36kb36 - 40kb40 - 44kb44 - 48kb48 - 52kb52 - 56kb56 - 60kb60 - 64kb

0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb28 - 32kb32 - 36kb36 - 40kb40 - 44kb44 - 48kb48 - 52kb52 - 56kb56 - 60kb60 - 64kb

0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb

28 - 32kb

Memória VirtualProcesso “A”

Memória VirtualProcesso “B”

Memória RAM

XXXX

XXXXX

X

XXXX

XXXX

XXXX

XXX

Livre

Page 11: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

● Paginação – Exemplo● A memória RAM real da máquina também é

dividida, em 8 páginas de 4k cada● Os processo “A” e “B” possuem, cada um, sua

própria memória virtual, com 16 páginas de 4k cada– Para cada um deles parte das páginas está “mapeada”

em uma parte da memória RAM real, mostrado na figura pelas setas

– Todo o restante de cada processo não está realmente na memória RAM, mas em um outro dispositivo como o disco ou na área de swap

Page 12: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

● Paginação – Exemplo● Todas as instruções executadas por qualquer

processo, que façam qualquer tipo de referência à memória passam pela MMU do processador– A MMU conhece e gerencia o mapeamento da memória

virtual para a memória RAM real de todos os processos● Caso o processo “A” execute a instrução

MOV REG, 1000

● Será automaticamente “traduzida” pela MMU paraMOV REG, 21480

Page 13: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

● Paginação – Exemplo● Contudo o que irá acontecer, caso o processo “B”

execute a instrução “ADD REG, 5000”– O endereço virtual 5000 está na segunda página da

memória virtual do processo “B”, mas está página atualmente não está na memória RAM

– Este evento é chamado de “falta de página” (page fault)– Neste momento, o processo “B” será bloqueado, e a

MMU, juntamente com o SO, irá tentar mapear esta página virtual do processo em uma página real da memória RAM que esteja livre

Page 14: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb28 - 32kb32 - 36kb36 - 40kb40 - 44kb44 - 48kb48 - 52kb52 - 56kb56 - 60kb60 - 64kb

0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb28 - 32kb32 - 36kb36 - 40kb40 - 44kb44 - 48kb48 - 52kb52 - 56kb56 - 60kb60 - 64kb

0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb

28 - 32kb

Memória VirtualProcesso “A”

Memória VirtualProcesso “B”

Memória RAM

XXXX

XXXXX

X

XXXX

XXXX

XXXX

XX

Page 15: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

● Paginação – Exemplo● Contudo o que irá acontecer, caso o processo “B”

execute a instrução “ADD REG, 5000”– Neste exemplo, isto foi possível, pois existia uma página

da memória RAM real ainda livre → “12 - 16Kb”

– Após a MMU realizar este novo mapeamento, e copiar o conteúdo da página (por exemplo do swap ou disco) para a memória RAM, o processo “B” será desbloqueado e poderá continuar a executar

– A instrução “ADD REG, 5000” será traduzida para “ADD REG, 12292”

Page 16: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

● Paginação – Exemplo● Uma situação mais “trabalhosa”, para o SO e MMU

irá ocorrer na próxima falta de página, pois agora toda a memória RAM real está “alocada”– O SO e MMU terão que “escolher”alguma página que já

esteja na RAM e retira-la, copiado-a para a área de SWAP, e abrindo espaço para um novo mapeamento

– A decisão de qual página sairá da memória RAM é feita por um “algoritmo de substituição de páginas” sendo ele de vital importância para o funcionamento dos SOs “reais”

Page 17: Gerência de Memória Memória ... - diatinf.ifrn.edu.brdiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1379492:... · Sistemas Operacionais carlos.rocha@ifrn.edu.br Gerência

Sistemas [email protected]

Gerência de Memória

0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb28 - 32kb32 - 36kb36 - 40kb40 - 44kb44 - 48kb48 - 52kb52 - 56kb56 - 60kb60 - 64kb

0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb28 - 32kb32 - 36kb36 - 40kb40 - 44kb44 - 48kb48 - 52kb52 - 56kb56 - 60kb60 - 64kb

0 - 4kb4 - 8kb8 - 12kb12 - 16kb16 - 20kb20 - 24kb24 - 28kb

28 - 32kb

Memória VirtualProcesso “A”

Memória VirtualProcesso “B”

Memória RAM

XXXX

XX

XX

X

XXXX

XXXX

XXXX

XX

X

Swap