gerencia de memoria

39
1 Gerência de Memória 1. Introdução Realocação e Proteção 2. Gerência básica de Memória Registradores base e limite MMU e troca de contexto Multiprogramação c/ partições fixas 3. Swapping 4. Gerência de Memória no Minix 5. Paginação (Memória Virtual) Algoritmos para troca de páginas Questões de Projeto e Implementação Tabelas de páginas invertidas 6. Segmentação 2 Gerência de Memória Lei de Parkinson: “Programas sempre se aumentarão de tamanho, demandando toda a memória disponível” O ideal seria ter memória: Infinitamente grande, c/ acesso rápido, não-volátil e barata Hierarquia de memoria 0.5-1 MB de cache , muito rápida, cara 0.5- 2 GB de RAM de velocidade e preço médios 10 1 -10 2 GB de disco: lento, mas barato Gerente de Memória opera a hierarquia de memória Quais partes da memória estão sendo usadas, e quais não Aloca memória para processos Garante proteção entre processos Faz o swapping transparente entre memória principal e disco

Upload: raparigol

Post on 25-Jun-2015

180 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Gerencia de Memoria

1

Gerência de Memória1. Introdução

• Realocação e Proteção2. Gerência básica de Memória

• Registradores base e limite • MMU e troca de contexto• Multiprogramação c/ partições fixas

3. Swapping4. Gerência de Memória no Minix5. Paginação (Memória Virtual)

• Algoritmos para troca de páginas• Questões de Projeto e Implementação• Tabelas de páginas invertidas

6. Segmentação

2

Gerência de MemóriaLei de Parkinson: “Programas sempre se aumentarão de

tamanho, demandando toda a memória disponível”• O ideal seria ter memória:

– Infinitamente grande, c/ acesso rápido, não-volátil e barata• Hierarquia de memoria

– 0.5-1 MB de cache , muito rápida, cara– 0.5- 2 GB de RAM de velocidade e preço médios– 101-102 GB de disco: lento, mas barato

• Gerente de Memória opera a hierarquia de memória– Quais partes da memória estão sendo usadas, e quais não– Aloca memória para processos– Garante proteção entre processos– Faz o swapping transparente entre memória principal e disco

Page 2: Gerencia de Memoria

3

GM para Monoprogramação(sem swapping ou paginação)

Para S.Os com único usuário e dispositivos simples(embarcados). Execuçaõ de 1 programa por vez.

• Ciclo básico: Comando usuário carregamento execução• Baixa utilização de CPU

Formas (ultrapassadas) de organizar a memória

4

Efeito da Multiprogramação

Utilização da CPU como função do grau de multiprogramação (=número de processos na memória)

Degree of multiprogramming

Page 3: Gerencia de Memoria

5

Realocação e Proteção

São dois problemas introduzidos pela Multiprogramação:• Realocação: não se sabe de antemão em qual região de memória o

processo vai ser executado– Endereço de variáveis e do código não podem ser absolutos

• Proteção: evitar que um processo acesse uma região usada poroutro processo

Solução 1: modificar endereços quando processo é carregado (oligador/carregador precisa ter um bit map sobre quais palavras doprograma precisam ser atualizadas)– Como endereços são absolutos, seria possível acessar qualquer endereço de

memória, e um programa pode construir dinamicamente instruçõesSolução melhor: Mapeamento para a memória física ocorre em tempo

de execução e é relativa a dois registradores: base e limite– Qualquer acesso além do limite é considerado erro e processo é abortado

6

Registradores Base e LimitePara cada processo, existe um par, base register (BR), e

limit register (LR), que determinam a região dememória usada pelo processo

• A cada troca de contexto, o (BR/LR) precisa ser trocado

CPU

BRRAM

End. lógico End. Físico≤ LR? Sim

Não+

Falha de acesso

Page 4: Gerencia de Memoria

7

Técnicas baseadas em realocaçãoOrganização da memória:a) com partições fixas (BR e LR só podem assumir

determinados valores)Fila por tamanho de partição VS Fila única

b) com divisão/agrupamento de partiçõesFila únicapartições tem 2x palavras (p.ex.: 210 ↔ 2 partições de 29)

c) Memória RAM sem partições (BR e LR assumem qualquervalor)

Outra questão:• Processos/jobs mantém a mesma região durante toda a sua

execução OU• Processos podem ser retirados da memória, e posteriromente

voltar à memória em outra região/partição (swapping)

Organização de Memória

(a) (b) (c)

Page 5: Gerencia de Memoria

9

Multiprogramação com partições fixas

Exemplos: IBM OS/360(+) simples de implementar

Filas de entrada separadas:(-) processos menores não podem ser colocados em partições grandes

disponíveis.Fila única:

– Seleção “First-Fit”, “Best Fit”, “Worst Fit”

11

SwappingEm sistemas com compartilhamento de tempo (timesharing)

memória principal pode não ser suficiente para todos osprocessos (e.g. muitos processos interativos de muitosusuários)

• Ideia básica: usar espaço em disco como extensão damemória RAM, e colocar lá os processos enquanto estãobloqueados, carregando-os de volta para a memória assimque são desbloqueados

Duas alternativas:• Copiar a imagem inteira (swapping)• Permitir que processo fique parcialmente em memória, e

parcialmente em disco (paginação) MemóriaVirtual

Page 6: Gerencia de Memoria

12

Swapping

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

– Buracos de memória não utilizada de tamanho qualquer– Um mesmo processo pode ocupar diferentes partições ao longo de sua

execução

Quando um processo é bloqueado (espera por E/S) ele pode ser swappedout, e depois swapped in para memória principal.

Permite manter um número maior de processos ativos, aumentando autilização da CPU

13

Swapping

• Compactação de memória é muito cara– da ordem de segundos para alguns MBs de RAM

Principal problema do swapping com partições de tamanho variável:• Manter a informação sobre espaços não utilizados (livres)• Evitar uma fragmentação externa da memória (= muitos espaços

pequenos não utilizados)p1

p3

p4

OS

Page 7: Gerencia de Memoria

14

SwappingComo lidar com processos que crescem (em demanda de

memória)?• Tentar alocar uma partição para o processo que é vizinha de uma partição não

usada.• Alocar uma partição conjunta para a pilha e o heap, e faze-los crescer em

sentidos opostos.• Se processo usa todo espaço de memória disponível, fazer um swap out, e um

swap in em uma partição maior (se disco de swap está cheio, processo precisaser terminado)

15

Gerenciamento de espaços disponíveis

Fig: Representação da ocupação da memória com 5 processos e 3 lacunas em BitMap ou Lista encadeada

Idéia: dividir a memória em unidades de alocação de n bytes1

e representar a ocupação de (livre/ocupado) de lotes deunidades como bit map ou lista encadeada

Bit Map: armazenamento compacto e simples, mas busca pordeterminado tamanho de lote livre pode envolver análise devárias palavras

Lista ligada : cada nó contém o endereço inicial e o tamanho deuma partição ocupada ou livre (1) Um Minix ‘Click’ = 1KB

Page 8: Gerencia de Memoria

16

Gerenciamento de Memória com Listas

Fig: Quando X é swapped out: quatro combinações de nós na lista

• Quando processo é swapped out, a lacuna correspondente precisaser combinada com espaços vizinhos livres.

• Quando processo é swapped in, percorre-se a lista buscando umespaço livre suficientemente grande (lista geralmente ordenada porendereços de memória)

Possíveis critérios de escolha de espaço livre:• First Fit – aloca o primeiro espaço encontrado• Best Fit – percorre toda a lista e aloca o menor possível espaço pode deixar

fragmentos muito pequenos para alocação para outros processos• Worst Fit – percorre toda a lista e aloca o maior possível espaço

17

Gerenciamento de Memória com ListasQualquer um dos algoritmo é mais eficiente se houverem 2 listas:lista de partições usadas e lista de espaços livres• Listas são mantidas ordenadas por tamanho (# de unidades de alocação)• Problema: há uma complexidade extra quando quando ocorre uma liberação de

memória (precisa-se verificar se há espaços adjacentes livres e inserir o novoespaço na posição correta da lista).

Alternativa:Quick Fit: mantém listas separadas por tamanho do espaço livre (2K, 4K, 8K, etc.)• Problema: ao liberar memória, o novo espaço criado precisa ser inserido na fila

correspondente (possivelmente, após combinação com áreas vizinhas)

4K8K16K32K64Kother

Page 9: Gerencia de Memoria

Gerenciamento de Memória em Minix3• Implementado pelo PM• Sem swapping e nem paginação (processo carregado

permanece exatamente na partição alocada)• Motivos:

– Ser compatível com processador Intel 8088, que não possui MMU– Menor complexidade do código– Possibilitar a portabilidade para outras arquiteturas (sist.

embarcados), também sem MMU– Dado o tamanho da memória RAM, swapping tornou-se menos

necessário• Memória com partições variáveis• Espaços livres em lista encadeada e seleção usando First

Fit• O mapa de memória (qual segmento está alocado em qual

endereço de memória) é mantido pelo system task (nonúcleo) separação de política e mecanismo

19

Gerenciamento de Memória em Minix3• Fork duplica a imagem do pai para o filho• Exec libera espaço ocupado (cópia da imagem pai) e procura-se por

espaço livre que comporte a nova imagem• Processo não aumenta o seu tamanho, e é determinado pelo cabeçalho

no executável.• Cada processo contém 2 (ou 3) segmentos, que são mapeados para

uma partição contígua de memória– Texto (segmento I) , dados (D) e pilha– Segmentos I e D podem ser alocados juntos (modo combinado) ou

separado

• Pilha e heap crescem em sentidos opostos.• Somente quando heap é atualizado (BRK system

call) o limite da pilha é atualizado• Motivo: compatibilidade com 8088 e

processadores mais simples, que não possueminterrupção que detecta avanço da pilha sobre oheap

text

data

pilha

Page 10: Gerencia de Memoria

20

Gerenciamento de Memória no Minix3• Na tabela de processos (mproc.h), campo mp_seg[] é um

vetor para os segmentos de texto, heap e pilha.• Cada elemento deste vetor contém os endereços virtual e

real de cada segmento

text

data

stack

200K (0x32000)

203K (0x32c00)

207K (0x33c00)208K (0x34000)

210K (0x34800)

Obs: 0 significasegmentos combinados I+D;Tudo em unidades de ‘Click’ =1KB

0x8

0x70x2

0xc8

0xc8

0xd0

Chamadas de sistema relacionadas agerência de memória

• fork() - cria processo filhoPM clona a imagem do chamador, que é posicionada naprimeira lacuna disponível.

• exec() - carrega executável a ser executado por chamadorPM libera a área de memória do chamador e procura outralacuna suficentemente grande para o executável indicado

• Exit() - termina o chamdor e libera a memória que estavaalocada a ele

• wait()• brk()

Page 11: Gerencia de Memoria

Criação de novo processo

Passo-a-passo da chamada fork()1. Verificar se tabla de processos, mproc, está OK (não está

cheia)2. Tentar alocar memória para os segmentos de dados e da

pilha3. Copiar os dados e a pilha do pai para a memória do filho4. Encontrar uma entrada na tab de processos e copiar nela

os dados da entrada do pai5. Inserir o mapa de memória do filho na sua entrada6. Escolher um PID para o filho e escrever na sua entrada

da mproc7. Informar o núcleo e o sistema de arquivos sobre o filho8. Apresentar o mapa de memória do filho para o núcleo9. Enviar mensagens de resposta para o pai e o filho

Page 12: Gerencia de Memoria

Passo-a-passo da chamadaexecve(name, argv, envp)

1. Verificar permissões: o arquivo é executável?2. Ler o cabeçalho do executável para obter o tamanho dos segmentos e

total (usuário pode alterar com chmem= tam exec)3. Acessar os argumentos e as variáveis de ambiente do processo

chamador4. Alocar nova memória5. Criar uma pilha contendo (argv) na nova imagem de memória6. Liberar memória antiga desnecessária7. Copiar o segmento de dados e de código na nova imagem de

memória8. Verificar e manipular os bits setuid e setgid9. Atualizar a entrada do processo na tabela de processos (p.ex. Com o

novo mapa de memória)10. Informar o núcleo que o processo está pronto para executar

A chamada wait()Feita por um pai para se sincronizar com o término do filho.

Um processo só termina completamente quando tiver dadoexit() ou tiver sido abortado (por sinal kill) e o pai tiverexecutado wait.

Sem esse wait, processos ficam “zumbi”, onde mantém aentrada na tabela de processos, mas

• deixa de ser escalonado e• seu temporizador é desligado• sua memória é liberada

Quando o pai de um zumbi também terminou, o zumbí passaa ser filho do processo init.

Page 13: Gerencia de Memoria

36

Memória VirtualÉ necessária, quando o total de memória necessária para um

conjunto de processos excede o tamanho da memória física.Também aqui, usa-se parte do disco como extensão damemória RAM.

Usa a técnica de paginação:• Espaço de endereçamento lógico de cada processo e memória

física são divididos em partições de mesmo tamanho fixo(chamados de páginas e quadro de páginas)

• Em vez de fazer o swap in/out de uma imagem inteira deprocesso, cada página pode ser movida do disco para amemória e vice-versa.

• Em cada acesso a memória o hardware verifica se a páginacorrespondente está na memória, e se não for o caso, então umtratador de páginas faltantes (page-fault) a copia para lá.

• A espera pela cópia para a memória de uma página éequivalente a um bloqueio por E/S

37

PaginaçãoRequer da existência de suporte por hardware (Memory

Management Unit -MMU)– MMU intercepta qualquer acesso à memória (p/ instruções e dados)– Mapeia endereços lógicos para endereços físicos (através de uma tabela

de página)– Quando página acessada não está em memória, gera uma interrupção de

falta de página (page fault), que causa a interrupção do processo emexecução e o seu bloqueio até que a página tenha sido copiada

Page 14: Gerencia de Memoria

38

Exemplo Memória VirtualExemplo: tamanho página = 4KB (varia

de 512 Bytes a 64 KB)Um espaço de endereçamento virtual de

64K é mapeado em 32KB dememória RAM

Número da página é usada como índicepara a tabela de páginas (TP)

Cada entrada na TP contém, entreoutros:

• Bit presença: se página está emmemória

• Se estiver, o número do quadrocorrespondente

Endereço lógico X é mapeado paraendereço físico:TP(X/ 4K) + X % 4K

39

Tabela de Páginas

Exemplo: Operaçãointerna a uma MMUcom 16 páginas detamanho 4 KB cada

Composição do endereçológico:

• Bits mais significativos =número da página

• Bits menos significativos =deslocamento do endereçodentro de uma página

Page 15: Gerencia de Memoria

40

Paginação• Região de memória física ocupada por um processo não precisaser contíguo• Memória física é particionada em quadros de página (frames) detamanho 2x bytes• Espaço de endereçamento lógico é dividido em páginas detamanho 2x bytes• Cada endereço lógico é composto do par (número-da-página,deslocamento), onde número-página é usado como índice parauma entrada na tabela de páginas

Exemplo: páginas de 4 K para endereços de 32 bits:

Número-da-página deslocamento

20 bits 12 bitsObs:

- Em paginação, de certa forma, tem-se um registrador de realocaçãopor página- Evita fragmentação externa, mas causa fragmentação interna

41

Paginação

memória

física

memória

lógica

P0

P1

P2

P3

0

1

2

3

4

5

6

7

P2

P1

P0

P30

1

2

3

4

6

2

1

0

pg oCPU

tabela de

páginas

fr o

Processo pode ser executado, contanto que haja um número mínimo depáginas na memória (as páginas sendo acessadas)

O espaço de endereçamento lógico é contiguo, o espaço físicoequivalente é distribuído/separado.

A tradução é feita de forma transparente pela MMU, que além da TP,mantém um cache das páginas recentemente consultadas.

pg: no. da páginafr: no. do quadroo: offset (deslocamento)

Page 16: Gerencia de Memoria

42

PaginaçãoCada processo P possui a sua tabela de páginas, que precisa ser carregada na

MMU a cada troca de contexto.Para tal, cada entrada TabelaProcessos(P) contém um ponteiro para a tabela de

páginas de P. O dispatcher é o encarregado de "carregar" a nova tabela depáginas na MMU.

Como qualquer acesso à memória ocorre através do mapeamento pela TP. Issofornece também automaticamente um mecanismo de proteção...... contanto que o preenchimento da tabela de página seja feita em modoprivilegiado (supervisor)!!

=> à medida que as páginas vão sendo alocadas, o núcleo preenche as entradasna tabela de página.

Além disto, kernel precisa manter informações sobre o conjunto de quadrosdisponíveis na memória principal:Para isso, uma uma tabela de quadros (frame-table), com uma entrada porquadro, informando se o mesmo está alocado, e para qual página de qualprocesso.

=> De uma geral, a paginação aumenta o tempo de troca de contexto. Por que?

43

Controle de acessoA paginação pode ser facilmente estendida para incorporar controle de

acesso para cada página:• além do nº do quadro, cada entrada da TP contém bits para o tipo deacesso permitido:

somente-leitura, leitura-e-escrita ou somente-execução• se acesso requisitado viola o permitido, a MMU gera outra interrupção(violação de acesso de memória)• a validade de uma operação sob um endereço lógico pode ser testadaem paralelo com a obtenção do endereço físico correspondente.

Além disto, pode se usar bits valido/inválido para marcar as páginaslógicas que efetivamente compõem o espaço de endereçamentológico do processo• é útil para espaços de endereçamentos grandes e utilizados de formadescontínua• note-se que devido ao problema do não alinhamento de dados com oslimites das páginas, esse tipo de controle de acesso não é muito preciso.

Page 17: Gerencia de Memoria

44

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• Present: se página está na memória• Número do quadro na memória física

45

A tabela de páginasPossíveis implementações:1) TP é um conjunto de registradores dedicados, que são carregados

através de instruções privilegiadas (ex. DEC PDP-11)Pró: não necessita de MMU e tradução é velozContra: número de entradas é pequeno (tipicamente 16-256)

2) TP é mantida em memória principal- mantém-se um registrador com o endereço base da tabela (ProcessTable Base Register, PTBR) e entrada na tabela = PTBR +#página_virtualPrós:

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

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

Page 18: Gerencia de Memoria

46

A tabela de páginasPossíveis implementações (cont.):3) utilização de um Translation Look-aside Buffer (TLB)

- TLB = vetor associativo que permite comparação paralela com suasentradas (de 8 - 128 entradas; Intel 80486 tem 32 entradas)- mantém-se apenas as entradas da TabPaginas das páginasrecentemente acessadas ( princípio de localidade)- quando uma página lógica é acessada e seu mapeamento não estáno TLB (TLB miss) então:

* acessa-se a TabPaginas na memória e substitui-se a entrada noTLB* dependendo se a página está em memória ou não, continua-se aexecução, ou gera-se uma interrpção Page-fault

- a cada troca de contexto, o TLB precisa ser limpoPró: tradução rápidaContra: requer gerenciamento do conteúdo do TLB (substituição deentradas)

47

Translation Look-aside Buffer

memória

lógica

memória

física

P0

P1

P2

P3

4

5

6

7

P2

P1

P0

P30

1

2

3

pg oCPU

tabela de

páginas

TLB

fr o

TLB hit

pg

TLB miss

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

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

Page 19: Gerencia de Memoria

48

Funcionamento do TLBAo receber um novo no. de página (np) todas as

entradas do TLB são comparadas em paralelo:• Se np é encontrado e tipo de acesso é válido, então

usa-se a entrada do TLB ( endereço do quadro)• Se tipo de acesso é inválido, gera-se uma falha de

proteção (e processo é abortado)• Se np não é encontrado na TLB, (TLB miss), faz-

se uma consulta a TP em memória, obtém-se oend. do quadro, e copia-se a entrada completa daTP pata o TLB (para agilizar acessos futuros)

• Quando houver acesso p/escrita, copia-se o flag deescrita (Modify bit) de TLB para TP

Obs: Pode-se aumentar a eficiência da paginação,aumentando-se o tamanho do TLB.

49

TLBs – Translation Lookaside BuffersPossível configuração do TLB para um programa com:• Um loop que percorre páginas 19-21, acessando um veror

nas páginas 129-130. O índice do veror está em pagina 140 ea pilha em 860-861.

Page 20: Gerencia de Memoria

50

TLBs – Translation Lookaside BuffersEm arquiteturas RISC (MIPS, Alpha), TLB misses são tratados

pelo Sistema Operacional e não pelo hardwate (MMU).Quando a MMU gera um TLB-miss, o núcleo faz o troca da

entrada da TLB.Desvantagem:: gerenbiamento do TLB muito mais lento do que

se for por hardware

• Vantagem: Torna o circuito da MMU bem mais simples, epermite a implementação em hardware, se outras funçõesque aumentem a eficiência.

• Possíveis otimizações:– Pré-carregar as entradas TLB para um processo que vai ser

escalonado, e não apenas popular o TLB a medida que a TP vá sendousada

– Manter em algumas entradasespeciais do TLB o número das páginasonde estão as tabelas de páginas dos processos

Tabelas de página

• Principal problema é que a própria TP precisa estarem memória.

• E pior, precisa-se manter uma TP por processo emexecução.

• Então, dependendo do número de entradas de cadaTP (que depende do tamanho da página), pode serinviável, manter todas elas na memória do núcleo.

• O que fazer?

Page 21: Gerencia de Memoria

52

Tabela de Páginas de 2 níveisResolve o problema de manter

grandes tabelas de página namemória (para todos osprocessos).

Com TP de 2 níveis, pode-separticionar a TP principalem páginas e manter apenasas páginas da TP cujomapeamento esteja sendousado.

Uma tabela de 1o. nível contémos ponteiros para essaspartes da TP.

Second-level page tables

Top-level page table

Offset = 12 bitsTam. página= 4K32 bits page number 220 entries!

53

Tabela de páginas InvertidasPara arquiteturas de 64 bits, o espaço de endereçamento lógico é

264 bytes! Mesmo se o se tamanho de página é 4KB, isso leva aTPs muito grandes, e.g. 252 ≈ alguns Tera Bytes!).

Por isso, em alguns sistemas usa-se uma TP invertida:• Uma entrada p/ cada quadro de página• Cada entrada contém uma lista de (processID, no. da página)

Contra: a tradução de endereços lógicos para reais fica muito maislenta, i.e. para cada página p, precisa-se fazer uma varredurapela TP invertida para encontrar o quadro correspondente.

Só é viável, se o TLB for usado para guardar as associaçõescorrentes. Somente quando ocorre um TLB miss, a TP invertidaprecisa ser pesquisada. Na maioria dos sistemas, usa-se umafunção de hash para indexar as entradas da TP invertida.

Page 22: Gerencia de Memoria

54

Tabela de Páginas Invertidas

Comparação de TP tradicional e TP invertida.

55

Algoritmos de Substituição dePáginas

A cada page-fault, o gerenciador de memória precisaescolher uma página (de um quadro de páginas) aser removida da memória, para dar lugar para anova página a ser carregada.

O Algoritmo de substituição de páginas determinaqual página deve ser removida e usa asinformações estatísticas contidas nas tabelas depáginas.

Nessa seleção deve levar em conta que:– página modificada precisa ser copada para disco e não

modificada pode ser sobreescrita– não é boa opção remover página usada com frequencia,

pois essa terá que ser tradiza de volta em breve

Page 23: Gerencia de Memoria

56

Algoritmo de substituição ideal

• Substitui a página que será acessada no futuromais remoto– Infelizmente, não é viável na prática, pois

demandaria conhecimento sobre todos os acessosfuturos

• Usado apenas em simulações para avaliar oquanto os algoritmos concretos estão do ideal

57

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

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

notifica o núcleo, que seta M=1, e troca bits de proteção para acesso deescrita

– A cada interrupção do relógio, seta-se R = 0• Páginas são classificadasem categorias

1. Não referenciada, não modificada2. Não referenciada, modificada3. referenciada, não modificada4. referenciada, modificada

• NRU escolhe qualquer página da categoria mais baixa

Lógica da prioridade de (2) sobre (3): É melhor manter páginassendo referenciadas, do que modificadas mas poucoreferenciadas.

Page 24: Gerencia de Memoria

58

Algoritmo FIFO de substituição

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

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

• Principal Vantagem:– Simplicidade de implementação

• Principal Desvantagem:– Não é levado em conta se uma página está sendo

frequentemente acessada não.– Por exemplo: a página mais antiga pode estar sendo acessada

com alta frequência

59

Algoritmo da Segunda Chance• Uma variante do algoritmo FIFO que leva em

conta acessos recentes.– Páginas são mantidas em fila FIFO (ordenada por instante de

carregamento)– 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

Page 25: Gerencia de Memoria

60

Algoritmo do Relógio

Trata-se simplesmente de uma implementação alternativa para o algoritmo da 2a. chance.

61

Algoritmo Menos recentemente utilizadaLeast Recently Used (LRU)

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

Princípio: descartar a página que ficou sem acesso durante operiodo de tempo mais longo

• Implementação ideal, mas impraticável:– Lista de páginas ordenadas pelo acesso mais recente– É inviável pois demandaria uma manipulação da lista a cada

acesso de memória!!• 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– Seleciona a página com o menor contador– Periodicamente, zera o contador

Page 26: Gerencia de Memoria

62

LRU com Hardware especial

Exemplo: sequência de páginas acessadas: 0,1,2,3,2,1,0,3,2,3

Manipular uma matriz n x n (para n entradas na TP) como registro deacessos recentes.

Ao acessar página i preencha toda linha i com bits 1 e toda coluna icom bits 0. Página mais antiga é a com menor contador.

63

Algoritmo do envelhecimento -Simulando LRU em Software

A cada tick de relógio, bit R reflete se página foi acessadadurante último período de tempo:

• faz-se um shift de 1 bit para a direita no contador de cadapágina e adiciona-se o R-bit como bit mais significativo nocontador

Page 27: Gerencia de Memoria

64

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

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

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

Normalmente, basta contador com 8 bits eperíodos de 20 ms entre ticks. Se uma página nãofoi acessada a 160 ms, provavelmente não é maisrelavente.

Questões de projeto de paginaçãoQuando um programa gera muitas faltas de página parapoucas instruções executadas, ele se encontra emUltapaginação (thrashing)

Deve-se tentar minimizar a taxa de page faults:• para processos em execução, manter suficiente númerode páginas na memória• para processos que tenham sido movidos para disco eestejam retornando, evitar que as páginas sejamrequisitadas por demanda• Por isso, precisa-se identificar qual é o conjunto depáginas em uso corrente por cada processo

Page 28: Gerencia de Memoria

66

Ultrapaginação (Thrashing)Fenômeno que ocorre quando o gerenciador de memória

fica sobrecarregado com cópias de páginas entrememória e disco.

Alta freuência de faltas de página: ocorre quando umprocesso possui menos páginas na memória do que oseu working-set.

# de páginas na memória

# taxa de falta de páginas por tempo

67

O Conjunto de trabalho

• O conjunto de trabalho (working set) é o conjunto das páginasacessadas pelas k referências mais recentes. O sistema depaginação identificar este conjunto usando envelheciemnto.

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

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

Tamanho do conjunto no instante t

t

# páginas

Page 29: Gerencia de Memoria

68

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

contador em cada página para idetificar o WS (dependendo do bit R)Descarta-se a acesso mais velho que τ

Se (R==0 && age ≤ τ ) avança com tempo virtual e depois verifica novamente

70

Resumo dos algoritmos de susbtituição

Page 30: Gerencia de Memoria

75

Politica de Substituição Local vs. Global?

(a) Configuração original (b) politica local (c) politica global

• O número de quadros de páginas alocados a cada processo devevariar?

• A página a ser substituida deve ser do processo que causou a faltade página (pol. local), ou de qualquer processo (pol. global)?

Processo Acausou opage-fault

76

Política de Alocação Local x GlobalPrós and Contras de uma Política Global:(+) consegue uma alocação mais eficiente da memória,

pois leva em conta flutuações no conjunto de trabalhode todos os processos

(-) favorece os processos com maior prioridade noescalonamento (geralmente, os mais orientados a E/S)e penaliza processos mais orientados a CPU

(-) alocação é mais complexa, pois precisa monitorar oconjunto de trabalho de todos os processossimultaneamente e comparar a idade do todas aspáginas

(-) o conjunto de trabalho de um processo pode variarmuito rapidamente, e o alg. de envelhecimento nãoreflete isso imediatamente

(-) pode tornar a execução de um processo inviável senão possuir número mínimo de quadros de página.

Page 31: Gerencia de Memoria

77

Política de Alocação Local x Global

Freqüência de faltas de página como função donúmero de molduras de página alocado

(A)= taxa inaceitavelmente alta de page-fault,(B)= taxa muito baixa de page-faults, pode-se diminuir # de quadros do processo.

78

Controle de Carga

• Mesmo com um bom projeto, o sistema ainda pode sofrerpaginação excessiva (thrashing)

• Quando o algoritmo PFF indica– alguns processos precisam de mais memória– mas nenhum processo precisa de menos

• Solução :Reduzir o número de processos que competem pelamemória– levar alguns deles para disco e liberar a memória a eles alocada– reconsiderar grau de multiprogramação

• Existem algoritmos orientados a taxa global de faltas depágina.

Page 32: Gerencia de Memoria

79

A questão do tamanho de páginaTamanho de página pequenos:• Vantagens

– Melhor aproveitamento da memória físcica: menosfragmentação interna

– mais programas usando a memória– melhor alinhamento de segmentos de código e de

estruturas de dado às páginas• Desvantagens

– programas precisam de mais páginas, tabelas depágina maiores, mais tempo para carregar entradas detabela nos registradores da MMU

– Transferência de página menor ou maior de/para discodemanda aproximadamente o mesmo tempo (mas éfeito de forma mais frequente)

80

Tamanho de Página• Custo associado ao tamanho de

página: tamanho da tabela de páginasvs. fragmentação interna

• Onde– s = tamano médio do processo em bytes– p = tamanho da página em bytes– e = tamanho da entrada da tabela de página

Espaço da tabelade páginas

Fragmentaçãointerna

O resultado é:

!

custo adicional =s " e

p+p

2

!

p = 2 " s " e

Page 33: Gerencia de Memoria

84

Questões de ImplementaçãoQuatro momentos em que SO trata de paginação:1. Criação do processo

− Determinar tamanho do processo− Criação ta TP

2. Quando processo ganha CPU− Re-setar MMU para novo processso− Limpar TLB

3. Interrupção de falta de página− Identificar qual é o endereço lógico causador da falta− Escolhe página a ser substituida− Carrega página requisitada para memória− Completa a instrução de máquina

4. Quando processo termina− Desaloca TP e páginas na memória e na área de swaping

86

Instruction Backup

An instruction causing a page fault

Page 34: Gerencia de Memoria

87

Bloqueando páginas na memóriaEm políticas globais de substituição de páginas, pode haver

uma interferência entre paginação e requisições de E/S,que requerem a retenção (bloqueio) temporária depáginas na memória.

Exemplo:1. Processo1 faz requisição de leitura de dados de um dispositivo

para um buffer em uma página na memória2. Enquanto espera, outro processo 2 causa uma falta de página3. Por azar a página do buffer de propcesso1 foi escolhida para

substituição4. Dispositivo não conseguiria copiar dados para o buffer5. Logo, há necessidade de manter as páginas que são fonte/destino

de dados de E/S

89

Separação de Política e Mecanismo

• Paginador em espaço do usuário trata os pedidos de faltade página e implementa o algoritmo de substituição.

• O núcleo trata do carregamento de MMU

Page 35: Gerencia de Memoria

90

SegmentaçãoPaginação resolveu o problema da fragmentação externa, mas o

espaço de endereçamento (lógico) de um processo é linear.Segmentação permite enxergar um espaço de endereçamento

como uma coleção de espaços de endereçamento (segmentos)independentes e de tamanho variável

Segmentos são gerados na compilacão e/ou estão na forma debibliotecasExemplos:programa principal, pilha de execução, tabela de símbolos,código de funções, variáveis não inicializadas, bibliotecascompartilhadas, vetores & matrizes, blocos de variáveis globais(common block - Fortran), etc.

91

Segmentação: Exemplo Compilação

• Espaço Virtual com vários segmentos que podemcrescer (e acabar usando a memória livre reservada)

Page 36: Gerencia de Memoria

92

Segmentação

Ideia central: Permitir que cada segmento creça independentemente. cada segmento constitui um espaço de endereçamento independente.

93

Segmentação• Segmento = entidade (parte) lógica do programa que contém

um único tipo de dados e do qual o programador estáconsciente. Exemplos: procedimentos, pilha, tabelas, bibliotecas

Vantagens da segmentação:• facilita definir e controlar modos de acesso diferenciados para

cada parte do programa• segmentos podem crescer independentemente (tabelas

dinâmicas, pilhas de threads)• facilita o compartilhamento de partes do programa (p.ex. shared

libraries)• Facilita a ligação de código. Por ex.: se em cada segmento

existe apenas 1 procedimento (end. 0 do segmento n), pode-semodifica-lo sem que seja necessário alterar qq referência a esteprocedimento (isto não acontece quando vários procedimentosestão em uma mem. virtual contígua)

Segmentação cria um espaço virtual multi-dimensional.

Page 37: Gerencia de Memoria

94

SegmentaçãoAlguns sistemas permitem ao programador possa indicar

quais partes do programa devem ser segmentosindependentes.

Endereço lógico consiste de:• nºde segmento (s) e deslocamento no segmento (d)• cada processo tem uma tabela de segmentos, que éfornecida à MMU para tradução de endereços.• cada entrada na tabela consiste de par (base, limite),com endereço base e um limite

• como visto anteriormente:se (d <= limite[s]) então end-fisico = base[s] + d

senão "acesso não autorizado" (TRAP)

95

Tabela de Segmentos (TS)CPU

translation HW

memória

+

end. físico

<yes

trap

base

base +

limit

s d

limit base

• idealmente, TS deve ser armazenada em registradores rápidos ou em vetoresassociativos que permitam consulta paralela (tipo TLB)

• quando TS é mantida em memória, cada processo tem um ponteiro indicandoo início da tabela (base register - STBR) e um contador do número máximode entradas na tabela (length register- STLR).

• antes de cada acesso é verificado se s <= STLR, e só então são consultadoslinit[STBR+ s] e base[STBR+ s]

Page 38: Gerencia de Memoria

96

Implementação de SegmentaçãoSegmentos podem ser carregados em qualquer espaço livre da memória, logo:• precisa-se controlar a lista de lacunas disponíveis• pode causar fragmentação externa (sequencia a-d)Pode-se fazer compactação de memoria para agrupar segmentos e criar uma lacuna

maior.

97

Segmentação (3)

Comparação entre paginação e segmentação

Page 39: Gerencia de Memoria

98

Segmentação com Paginação• Principal vantagem: Permite segmentos muito grandes• Cada segmento é um espaço de endereçamento completo, que é paginado da

mesma forma como um espaço de endereçamento uni-dimensional• Somente as partes de cada segmento que estão em uso, precisam estar na

memória física• Cada processo tem sua TabSegmentos, composta de Descritores• Cada Descritor contém:

– Ponteiro para endereço da TabPaginas– Tamanho do Segmento em páginas– Bits de proteção

• Quando um segmento está sendo usado (acessado), sua tabela de páginasprecisa estar em memória

• Se o segmento puder ser muito grande (232 endereços), então a propria tab. depáginas deverá ser paginada

• Endereço Virtual:

s p os= indice na tab de segmentosp= indice na tab de paginaso= offset na página

102

Segmentação com paginaçãono MULTICS

Conversão de um endereço que consiste de 2 partes para um endereçofísico de memória.

Para agilizar o acesso, MULTICS usa um TLB de 16 palavras, em que umpar (s,p) pode ser consultado em paralelo.