49
1 Gerenciamento de Memória Capítulo 4

Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

1

Gerenciamento de Memória Capítulo 4

Page 2: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

2

Roteiro: •  Introdução e Motivação para Memória Virtual

(VM) •  Overlays: Gerenciamento na Idade da Pedra •  Paginação por demanda (Demand Paging) •  Espaço de Endereçamento Virtual •  Área de Swap •  Políticas de Reposição de Páginas •  Aspectos de Implementação

Page 3: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Introdução •  Importante função de um S.O. é gerenciar o recurso

memória principal principal (mem. física, RAM, core) •  Acesso à memória RAM é rápido, poucos ciclos de CPU

(p.ex. DDR4-SDRAM leva 5 nanosegundos em uma CPU de 3.7 GHz = 18.5 ciclos)

•  Memória principal: um recurso relativamente caro e limitado (1GB p/ PC aprox. R$ 45)

•  Tamanho dos programas aumentou muito (Chrome 200MB, Slack: 300 MB): melhor GUI, mais funções e menos otmizações L

•  Um S.O. usa memória secundária (disco) para armazenar dados que “não cabem” na memória principal

•  Acesso a essa memória secundária é ordens de grandeza mais lenta (1-15 milisegundos, ou 106 mais lento que acesso a RAM) 3

Page 4: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Introdução •  Papel do Subsistema Gerenciador de Memória (GM) é

de mover dados entre a memória principal e a secundária de forma transparente

•  Como se o sistema dispusesse de muito mais memória do que apenas a RAM

4

Page 5: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Introdução •  O Ger.Memória interage com uma componente de

hardware: Memory Management Unit (MMU) •  A MMU é responsável por buscar e armazenar dados na

memória principal, na posição certa •  A MMU traduz endereços lógicos (do programa

executável) para endereços físicos (da memória RAM)

5

Page 6: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Duas MMUs

6

Duas MMUs competem pelo acesso á memória principal.

Page 7: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Ausência de qualquer GM •  Mono-programação: Um único programa na

memória principal, carregado com endereço inicial conhecido;

•  Sem qualquer tradução de endereços; os endereços do executável são endereços físicos da memória RAM;

•  Linking é muito mais simples, pois referências a outros módulos podem ser calculadas estaticamente

•  Assim era nos primeiros computadores (anos 50-60), PCs (anos 70) e atualmente em sistemas embarcados, de tempo real, micro-controladores.

7

Page 8: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Existem processadores sem MMU? •  Praticamente todos de 8 ou 16 bits

–  PIC18 (8 bits Microchip) –  CC430 (16 bits RISC, Texas Instruments) –  XAP4 (16 bits, Cambridge Consultants)

•  Vários de 32 bits: –  Cortex-M0 (32 bits ARM) –  Cortex-M3 (32 bits ARM)

Usados em sistemas embarcados: Equipamentos médicos e hospitalares, Controle Industrial, Sistema Interconectado no Carro, Eletrônicos, Equipamentos de Segurança.

8

Em praticamente todo equipamento inteligente que executa um único programa de controle.

Page 9: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Monoprogramação

9

Principais Problemas: •  Tamanho de programas fica limitado ao tamanho da RAM •  Só é possível executar um único processo por vez. Se

este faz E/S, a CPU irá esperar ociosa. Toda concorência somente usando threads.

•  Portanto, para computadores de propósito geral (incluindo smartphones e tablets), multi-programação é essencial!!

ende

reço

s

a) o processo na mem. alta b) o núcleo na mem. alta c) núcleo e drivers nas extremidades da memória

Page 10: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Requisitos de um GM 1.  Executar programas que sejam maiores do que o tamanho da

RAM 2.  Permitir que mais de um programa execute ao mesmo tempo

(concorrentemente) 3.  Permitir que programas parcialmente carregados possam

inciar a execução (isso reduz o tempo de início do programa) 4.  Permitir programas re-alocáveis, que possam executar em

qualquer parte da memória RAM e possam ser movidos de um lugar para outro

5.  Permitir que processos possam solicitar mais memória ao longo de suas execuções.

6.  Livrar o programador da tarefa de alocar e desalocar recursos de memória (exceto, demandas específicas: malloc)

7.  Permitir o compartilhamento de código e dados entre processos 10

Page 11: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Memória Virtual Todos esses requisitos são atendidos pelo conceito de memória virtual. •  Dá a ilusão ao programa de que dispõe de muito mais

memória do que a memória RAM disponível •  Introduz o conceito de Espaço de Endereçamento

(Address Space), que difere do espaço ocupado na RAM

•  O programa executando na CPU gera referências a uma memória virtual (Espaço de Endereçamento), e esses endereços logicos são então traduzidos para endereços físicos.

•  Essa tradução é feita pela MMU - várias vezes para cada instrução de máquina

•  GM e núcleo precisam interagir com a MMU para garantir que a tradução seja feita corretamente. 11

Page 12: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Exemplo: Instruções com Endereçamento Indireto

12

Page 13: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Memória Virtual Tudo que é bom tem seu preço… •  Tabelas de tradução (de end-lógicoè end-físico)

precisam ser mantidas pelo GM e o núcleo; isso consome memória do sistema

•  O custo de tempo da tradução é somado ao tempo de acesso à memória,

•  Especialmente, se a parte acessada não está na memória RAM, pois envolverá leitura do disco!

•  Atividades do GM consomem aprox 10% do tempo de um sistema normal. Em casos extremos pode chegar até 70-90% 13

Page 14: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Memória Virtual

14

Fonte: Fabián Bustamante

Page 15: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Gerenciamento de Memória na idade da pedra

15

Page 16: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Overlays •  Versões iniciais do UNIX executavam em um

PDP-11 (16 bits, memória para os processos: 128 KB)

•  Software overlay: reuso de partes de memória quando não são mais necessárias. Exemplo: código de incialização do sistema podeia ser sobre-escrito, ou tabelas em diferentes fases da compilação

•  O programador tinha que decompor seu código em segmentos e indicar quais segmentos podiam sobre-escrever outros

•  Isso resolve o problema de espaços de evdereçamento > RAM

16

Page 17: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Overlays

17

•  Segmento root fica sempre residente na RAM.

•  O tamanho da Overlay Region deve ser o tamanho do maior overlay.

•  Assim que é feita uma referência a um novo overlay este é copiado para a memória.

•  Se houvesse chamadas entre os overlays, execução ficaria extremamente lenta

Overlays

Page 18: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Overlays – Exemplo Compilador

18 80K

Page 19: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Swapping •  Processos eram carregados em espaços contíguos de RAM •  Apenas um pequeno número de processos “cabia” na memória

principal para serem executados concorrentemente •  Sempre que um processo fosse suspenso ou fazia uma E/S de

longa duração, era copiado para uma área de swap (uma partição do disco sem Sistema de Arquivos)

•  Área de swap para cada processo é alocada no momento da criação do processo (para garantir que tem espaço)

19

Page 20: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

20

Swapping: Exemplo

Fig.: Sequência de alocação de memória usando swapping para 4 processos.

Carregamento de processos de tamanhos diferentes e em diferentes

regiões de memória pode causar: –  fragmentação de memória: acúmulo de pequenas regiões de

memória não utilizada –  Realocação para “de-fragmentacão de memória” é processo custoso

Page 21: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

21

Gerenciamento de espaços disponíveis

Fig: Ocupação da memória com 5 processos e 3 lacunas usando Bit Map e Lista encadeada

Idéia: dividir a memória em unidades de alocação de n bytes (1 KB no Minix) e representar a ocupação de (livre/ocupado) de lotes de unidades usando um bit map ou então uma lista encadeada

Bit Map: armazenamento compacto e simples, mas busca por determinado tamanho de lote livre pode envolver análise de várias palavras (no bit map)

Lista ligada : cada nó contém o endereço inicial e o tamanho de uma partição ocupada ou livre

Page 22: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Gerenciamento de Memória Virtual

Introduzido pelo UNIX 3BSD em 1980 para um VAX de 32 bits (= espaço de endereçamento de 4GB). A partir daí, todas as versões do UNIX tiveram GM baseado em Demand Paging Ideia principal: •  Espaço de endereçamento dos procesos e memória RAM são

logicamente divididos em páginas de mesmo tamanho (2X bytes) •  Endereços virtuais (lógicos) do processo são decompostos pela MMU

em um número de página (indice de página) e um offset •  Cada página só é carregada para um quadro de página (page frame)

da RAM quando ela é acessada •  Permite que processos executem mesmo se estão apenas

parcialmente na RAM •  Quando não está na RAM, a página tem uma cópia na área de Swap

22

Page 23: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Politicas de Carregamento de páginas •  Paginação por demanda (Demand paging)

–  Somente quando é feita uma referência para um endereço na página

–  Pode acontecer várias vezes para uma instrução (p.ex. endereçamento indireto de 1 ou 2 operandos)

–  Instrução é re-executada quando todas as páginas necessárias estão na RAM

•  Pré-paginação: –  Carrega na RAM várias páginas consecutivas do

espaço de endereçamento (em setores vizinhos na partição de swap)

–  As páginas adicionais podem não ser necessárias (referenciadas no futuro próximo)

23

Page 24: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Memória Virtual

24

Espaço de Endereçamento do Processo E suas páginas

Memória física com Quadro de páginas (page frames)

Partição de Paginação (ou swapping) Paginas

Page 25: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

O Espaço de Endereçamento Virtual

É composto dos seguintes “segmentos”: –  Text (Execute-only) –  Dados Inicializados (p.ex. strings, const) –  Dados não inicializados (variáveis globais) –  Pilha (controlada pelo runtime) –  Heap (alocado com malloc) –  Shared libraries (Execute-only) –  Shared memory

•  Text, shared libraries e shared memory são compartilhados por processos

•  Na prática, cada segmento têm sua tabela de tabela de páginas.

25

Page 26: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Paginação Por Demanda

26

Page-fault

Swap area

Page 27: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

Page Fault: passo-a-passo Sempre que o endereço acessado “cai” em uma página que não está na RAM: Etapas: 1.  Trap para o núcleo do S.O. (salva o contexto) 2.  Escolhe algum quadro de página para ser substituido

(sobre-escrito) 3.  Possivelmente precisa copiar conteúdo do frame para

partição de swap/paginação 4.  Requisita uma leitura de disco para ler a página requisitada

(E/S bastante demorado) -> aloca CPU para outro processo 5.  Chega a interrpção do disco (E/S da paginação finalizada) 6.  Atualiza a tabela de páginas do processo 7.  Coloca o processo na fila de prontos 8.  Eventualmente aloca CPU para o proceso (carrega o

contexto da CPU) 27

Page 28: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

29

Controle de acesso Além do número do quadro, cada entrada da Tabela de πáginas contém bits para o tipo de acesso permitido:

Exemplo: R: somente-leitura W: leitura-e-escrita X: somente-execução • se tipo do acesso viola o permitido, a MMU gera a interrupção “violação de acesso de memória” • a validade de uma operação sob um endereço lógico pode ser testada em paralelo com a tradução para o endereço físico correspondente

.

Page 29: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

30

Entrada da Tabela de Páginas

Resumo dos campos/flags: •  Caching: se faz sentido guardar essa entrada da TP no cache •  Referenced: se houve acesso a algum endereço da página nos

últimos ∆t •  Modified: se houve acesso de escrita a algum endereço da página

nos últimos ∆t •  Protection: Controle de acesso (como visto antes) •  Present: se página está na memória RAM •  Número do quadro na memória física (page frame number)

Page 30: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

31

Tabela de Páginas Possíveis implementações da Tabela de Páginas (TP): 1) TP em registradores da CPU dedicados, que são carregados através de

instruções privilegiadas (ex. DEC PDP-11)‏ Vantagem: não necessita de MMU e tradução é veloz Desvantagem: número de entradas é pequeno (tipicamente 16-256)‏

2) TP é mantida em memória principal (do núcleo)

- mantém-se um registrador com o endereço inicial da tabela é PTBR + #página_virtual Vantagem:

•  possibilita tabelas de páginas arbitrariamente grandes •  a troca de contexto envolve somente PTBR

Desvantagem: •  tempo de acesso à memória duplica, devido ao acesso inicial à tabela

de páginas

Page 31: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

32

Tabela de Páginas Possíveis implementações (cont.): 3) utilização de um Translation Look-aside Buffer (TLB)

- TLB = vetor associativo que permite comparação paralela com suas entradas (de 8 - 128 entradas) - é usado como um cache das entradas da TabPaginas recentemente acessadas (è princípio de localidade)‏ - quando uma página lógica não possui uma entrada no TLB (TLB miss): * acesssa-se a TabPaginas e coloca-se a entrada no TLB * se a página está em memória, operacão é completada; senão gera-se uma interrpção Page-fault Obs: cada troca de contexto, o TLB precisa ser zerado Vantagem: tradução rápida Desvantagem: requer gerenciamento do conteúdo do TLB (substituição de entradas)

Page 32: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

33

Translation Look-aside Buffer (TLB)

A razão de (TLB hits/acessos à memória) determina a eficiência da tradução e é usada para calcular o tempo médio de acesso à memória

Razão de TLB hits depende do tamanho do TLB e da estratégia de troca de entradas

•  Pagina é comparada com todas as entradas do TLB ao mesmo tempo

•  Se entrda encontrada (TLB hit) e não é necesseario acessar TP

•  Se não, (TLB miss), TP precisa ser consultada.

Page 33: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

35

Tabela de Páginas de 2 níveis Resolve o problema de manter

grandes tabelas de página na memória (para todos os processos).

Ideia: A própria tab. de páginas é paginada (guarda apenas as partes da TabPagina cujo mapeamento esteja sendo usado).

Dois níveis: tabela raiz (de 1o. nível) e TabelaPagina de 2o. nível

A tabela raiz contém os ponteiros para essas partes da TabPaginas .

Offset = 12 bits Tam. página= 4K 32 bits page number è 220 entries!

Tab.Paginas raiz Tab.Paginas 2o. nivel

Page 34: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

43

Algoritmos de Substituição de Páginas A cada page-fault: •  o gerenciador de memória aloca um quadro de páginas

para a página requisitada e •  precisa escolher qual página (de um quadro de

páginas) deve ser removida da memória. O algoritmo de substituição de páginas determina qual

página deve ser descartada e para isso usa as informações estatísticas contidas nas tabelas de páginas.

Nessa seleção deve levar em conta que: –  uma página modificada precisa ser copiada para disco,mas

uma não-modificada pode ser sobreescrita –  não é boa idéia tirar uma página que “está em uso”, pois ela

terá que ser carregada em breve

Page 35: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

44

Algoritmo de substituição ideal •  Substitui a página que não será mais acessada,

ou então acessada no futuro mais distante –  Infelizmente, não é viável na prática, pois exigiria um

conhecimento sobre todos os acessos futuros

•  Usado apenas em simulações para avaliar o quanto os algoritmos concretos diferem do algoritmo ideal

Seq. de referência (indices de página)

Page 36: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

45

Algoritmo Página não recentemente Utilizada (Not Recently Used - NRU)

•  Cada página tem um bit de Referência (R) e de Modificação (M): –  Bits são setados sempre que página é acessada ou modificada –  Pagina é carregada com permissão somente para leitura e M=0. –  No primeiro acesso para escrita, o mecanismo proteção notifica o

núcleo, que seta M=1, e troca para permissão de escrita –  A cada interrupção do relógio, seta-se R = 0

•  Páginas são classificadas em 4 categorias 1)  Não referenciada, não modificada 2)  Não referenciada, modificada 3)  referenciada, não modificada 4)  referenciada, modificada

•  NRU escolhe primeiro qualquer página (em ordem descencente de categoria)

Razão da prioridade de categoria #2 sobre #3: É melhor manter páginas sendo referenciadas, do que modificadas mas pouco referenciadas.

Page 37: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

46

Algoritmo FIFO de substituição

•  Manter uma lista ligada de todas as páginas na ordem em que foram carregadas na memória

•  A página (mais antiga), no início da fila, é a primeira ser descartada

•  Principal Vantagem:

–  Simplicidade de implementação. •  Principal Desvantagem:

–  Não leva em conta se uma página está sendo frequentemente acessada ou não.

–  Por exemplo: a página mais antiga )a ser descartada) pode estar sendo acessada com alta frequência.

Page 38: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

47

Algoritmo da Segunda Chance •  É uma variante do algoritmo FIFO que leva em conta

acessos recentes às páginas: •  Funcionamento:

–  Páginas são mantidas em lista circular FIFO (ordenada por momento de carregamento)

–  Inspciona-se a página no começo da lista: –  Se página mais antiga possui bit R=0, ela é removida. –  Se tiver bit R=1, o bit é zerado, e a página é colocada no final da

fila,. Ou seja: dá se uma 2a chance.

R=1

R=0

A página é tratada como se fosse carregada recentemente.

Página carregada mais recentemente.

Página carregada há mais tempo.

Page 39: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

48

Algoritmo do Relógio

Todas as páginas carregadas estão em uma lista circular. Dois ponteiros giram em sentido horário •  O Primeiro ponteiro zera o bit de referência ( R) e o de modificacão

(M) •  Segundo ponteiro verifica um pouco depois se esses bits estão

setados. •  Obs: foi o algoitmo usado originalmente na MV do UNIX

Page 40: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

50

Algoritmo “Menos recentemente utilizada” Least Recently Used (LRU)

Assume que páginas usadas recentemente, deverão ser usadas em breve novamente.

Princípio básico: descartar a página que ficou sem acesso durante o maior periodo de tempo.

Exemplo: em memória física de 3 frames A Implementação ideal, porém impraticável:

–  Manter a lista de páginas, onde as páginas no final da lista são as mais recentes

–  É inviável pois demandaria uma manipulação da lista a cada acesso de memória!!

Page 41: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

51

Algoritmo “Menos recentemente utilizada” Least Recently Used (LRU)

•  Alternativa (necessita de apoio de hardware): –  usar um contador que é incrementado por hardware a cada acesso à

memória –  Cada vez que uma página é acessada, atualiza este contador na

entrada da TP correspondente –  Na hora da substituição, escolhe a página (ou moldura de página)

que está com o menor contador

Page 42: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

52

LRU com Hardware especial Manipular uma matriz n x n (para n entradas na TP) com o registro de

acessos recentes (linha i = contador da página i) Idéia: Ao acessar página i preencha toda linha i com bit 1 e, em seguida,

toda coluna i com bit 0. A página mais antiga é aquela com menor valor.

Acesso Pág. 0

Acesso Pág. 1

Acesso Pág. 2 Acesso Pág. 3 Acesso Pág. 2 Acesso Pág. 1

Acesso Pág. 0 Acesso Pág. 3 Acesso Pág. 3 Acesso Pág. 2

Page 43: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

53

Algoritmo do envelhecimento (Aging): Simulando LRU em Software

Manter um contador para cada página; •  Vetor de bits, onde bit I registra se página Pi foi acessada durante

último período de tempo (cada tick de relógio): •  faz-se um shift de um bit para a direita no contador de cada página e

adiciona-se o R-bit como bit mais significativo no contador •  Desvantagem: o vetor precisa ter tantos bits quanto houver de page

frames

Vetor de bits atualizado periodicamente

Cada page frame tem um contador

Page 44: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

54

Principais limitações do Algoritmo do Envelhecimento (comparado ao LRU)

•  Quando duas páginas possuem o mesmo valor de contador (de idade), não há como saber qual delas foi acessada por último (no último período de tempo)

•  Os contadores de idade têm um número finito de bits. Portanto quando o valor atinge 0, não há como distinguir se a última referência ocorreu há apenas n ticks do relógio ou há muito mais tempo.

èNormalmente, basta contador com 8 bits e períodos de 20 ms entre ticks. Se uma página não foi acessada a 160 ms, provavelmente não é mais relavente.

t Pag.X Pag.Y

período

Page 45: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

55

Least Frequently Used (LFU) Mantém-se uma estatística sobre a frequência de acesso a

cada página, e escolhe-se a página com menor frequência.

Desvantagem: requer um contador de acessos para cada página e as operações de divisão e de comparação da média poder ser onerosos

Page 46: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

56

Ultra-paginação (“Thrashing”) Fenômeno que ocorre quando o gerenciador de memória

fica sobrecarregado com transferência de páginas entre memória RAM e disco (swap).

Alta taxa de faltas de página: ocorre quando um processo possui muito menos páginas na memória do que o seu conjunto de páginas em uso.

# de páginas na memória

taxa de falta de páginas (page fault)

2 3 4 5 6 7 8 9 10 11

Page 47: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

57

O Conjunto de páginas em uso

•  O conjunto de uso (working set) é o conjunto das páginas acessadas pelas k referências mais recentes. O sistema de paginação deve gerenciar este conjunto usando envelhecimento.

•  Quando um processo é escolhido para execução seu working-set pode ser pré-paginado (em vez de fazer paginação por demanda)‏

A maioria dos processsos apresenta uma localidade de referência (a cada momento, acessa apenas uma fração pequena de suas páginas).

Tamanho do “working set” no instante t

t

# páginas

Page 48: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

58

O Working Set •  Working set W(t, Δ) é o conjunto de páginas

referenciadas no intervalo (t - Δ, t) •  O tamanho do working set muda dependendo do grau de

localidade dos acessos a memória •  Nos períodos de maior dispersão dos acessos, há

acessos a mais páginas, e o working set fica maior.

•  O Working set é uma aproximação do que o processo irá

acessar no futuro próximo, e indica quais páginas devem permanecer na RAM.

Page 49: Capítulo 4 Gerenciamento de Memória - PUC-Riomemória principal principal (mem. física, RAM, core) • Acesso à memória RAM é rápido, poucos ciclos de CPU (p.ex. DDR4-SDRAM

59

Algoritmo de substituição baseado no working set Mantém-se um contador virtual de tempo e periodicamente, atualiza-

se o contador em cada página que tenha o bit R=1.Working Set consiste das páginas com contador dentro da janela de tempo [t- τ, t]

Se R=0, não é feita autalização. Se (R==0 && age ≤ τ ) avança com tempo virtual e depois verifica novamente. Descarta-se páginas com R=0 e mais antigas do que τ.