SO-07 Gerenciamento de Memória: Memória Virtual

62
Gerenciamento de Memória Memória Virtual

description

Gerenciamento de Memória. Memória Virtual (Sistemas Operacionais)

Transcript of SO-07 Gerenciamento de Memória: Memória Virtual

Page 1: SO-07 Gerenciamento de Memória: Memória Virtual

Gerenciamento de Memória Memória Virtual

Page 2: SO-07 Gerenciamento de Memória: Memória Virtual

2 Memória Virtual Eduardo Nicola F. Zagari

  Introdução   Paginação sob Demanda   Substituição de Páginas

  Algoritmos de Substituição de Páginas   Procedimentos de Armazenamento de Páginas

  Política de Alocação Local versus Alocação Global   Thrashing   Working Set (Conjunto de Trabalho)   Freqüência de Interrupção de Página Ausente   Tamanho da Página   Tamanho da TLB   Bloqueio de Páginas na Memória   Estrutura de Programas   Exemplos de Sistemas Operacionais

Page 3: SO-07 Gerenciamento de Memória: Memória Virtual

3 Memória Virtual Eduardo Nicola F. Zagari

  Todas as estratégias de gerência até agora mantêm processos inteiros na memória

  Em muitos casos, não é necessário o programa inteiro estar em memória:   código de tratamento de erro   vetores, listas e tabelas geralmente alocam mais memória do que

usam   certas opções e características de programas raramente são

usadas   Vantagens de executar programas parcialmente em memória:

  programa não é limitado pelo tamanho da memória   um maior número de processos podem ser carregados ao mesmo

tempo aumentando a utilização da CPU   menor necessidade E/S para carregar ou fazer swapp de processos

Page 4: SO-07 Gerenciamento de Memória: Memória Virtual

4 Memória Virtual Eduardo Nicola F. Zagari

  Técnica de Memória Virtual: separação da memória lógica de usuário e memória física   Somente parte dos programas precisam estar carregados na

memória para execução   Espaço de endereçamento lógico pode, portanto, ser muito maior

que o espaço de endereçamento físico   Permite que espaços de endereçamento sejam compartilhados por

vários processos   Possibilita criação de processos de forma mais eficiente

  Memória virtual pode ser implementada via:   Paginação por demanda   Segmentação por demanda

Page 5: SO-07 Gerenciamento de Memória: Memória Virtual

5 Memória Virtual Eduardo Nicola F. Zagari

Mapa da Memória

Memória Virtual

Memória Física

Página n

Página 0 Página 1 Página 2

Memória Secundária

Memória Virtual MAIOR que

Memória Física

Page 6: SO-07 Gerenciamento de Memória: Memória Virtual

6 Memória Virtual Eduardo Nicola F. Zagari

  Similar ao sistema de swapping, mas aplicado somente à página requisitada e não a todo o processo

  Traz uma página para a memória somente quando ela é requisitada   Menor necessidade de I/O   Menor necessidade de memória   Respostas mais rápidas   Maior número de usuários

  Página requisitada ⇒ referência para ela   Referência inválida ⇒ aborta   Ausente da memória ⇒ traz para memória

  Suporte de hardware : bit de presença/ausência (ou válido/inválido)   Page-fault (trap) : interrupção por falta de página

Page 7: SO-07 Gerenciamento de Memória: Memória Virtual

7 Memória Virtual Eduardo Nicola F. Zagari

  Um bit de presença/ausência é associado com cada entrada da tabela de página: (0 ⇒ ausente da memória , 1 ⇒ presente na memória)

  Inicialmente o bit é ajustado para 0 em todas as entradas   Exemplo:

  Durante uma tradução de endereço, se o bit de presença/ausência na entrada da tabela de página estiver igual a 0 ⇒ FALTA DE PÁGINA (page fault).

1 1 1 1 0

0 0

# Bloco Bit de presença/ausência

Tabela de Páginas

Page 8: SO-07 Gerenciamento de Memória: Memória Virtual

8 Memória Virtual Eduardo Nicola F. Zagari

Tabela de Páginas

Memória Virtual

Página A

A B C D E F G H

Memória Secundária

Página B Página C Página D Página E Página F Página G Página H

0 1 2 3 4 5 6 7

bloco bit presença/ausência

0 1 2 3 4 5 6 7

4

6

9

p

p

p

a

a a

a a

0 1 2 3 4 5 6

Memória Física

7 8 9

Página A

Página C

Página F

Page 9: SO-07 Gerenciamento de Memória: Memória Virtual

9 Memória Virtual Eduardo Nicola F. Zagari

Tabela de Páginas

a Vá para X

S.O.

Memória Física

Bloco Livre

3

4

2

5

1

6

Page 10: SO-07 Gerenciamento de Memória: Memória Virtual

10 Memória Virtual Eduardo Nicola F. Zagari

  Referência: verifica na tabela do processo se referência é válida   Trap: se a referência for inválida ERRO; se for válida, mas a página

não está na memória, gera interrupção de falta de página   Página na memória secundária: localiza um bloco livre   Carrega página: realiza uma operação no disco (E/S) para ler a

pág. desejada e carregá-la p/ o bloco livre   Modifica tabela de páginas: terminada a op. de E/S, atualiza a

tabela p/ indicar que a pág. está na memória   Reinicia execução da interrupção: como o estado do processo foi

salvo, reinicia a interrupção que causou a falta de página (endereço de pág inexistente na mem.)

1

3 4

2

5

6

Page 11: SO-07 Gerenciamento de Memória: Memória Virtual

11 Memória Virtual Eduardo Nicola F. Zagari

  Paginação por demanda pura:   não levar nenhuma página para memória até que ela seja

requisitada

Queda de desempenho?

Padrão de localidade de referência

Tempo de execução Núm

ero

da p

ágin

a

Page 12: SO-07 Gerenciamento de Memória: Memória Virtual

12 Memória Virtual Eduardo Nicola F. Zagari

S.O. 5 4

Tabela de Páginas do usuário 1

p

Memória Lógica do usuário 1

H Carregar M

J M

0 1 2 3

Memória Lógica do usuário 2

A B D E

0 1 2 3

3 p

p a

bloco bit presença/ausência

7 2

Tabela de Páginas do usuário 2

a 6 p

p p

PC

0 1 2 3 4 5 6

Memória Física 7

Carregar M B

M

D H

J A E

Page 13: SO-07 Gerenciamento de Memória: Memória Virtual

13 Memória Virtual Eduardo Nicola F. Zagari

  Substituição de página: quando ocorre uma falta de página e não existe nenhum bloco disponível, um bloco que não está sendo usado no momento é selecionado e liberado. A rotina de tratamento de uma page-fault: 1.  Localizar a página desejada no disco 2.  Localizar um bloco livre:

  se existir um bloco livre, usá-lo   caso contrário, usar um algoritmo de substituição de página para

selecionar a que será substituída   Salvar a página a ser substituída no disco e atualizar as tabelas

de blocos e páginas de acordo 3.  Ler a página desejada no “novo” bloco e atualizar as tabelas 4.  Reiniciar o processo do usuário

Page 14: SO-07 Gerenciamento de Memória: Memória Virtual

14 Memória Virtual Eduardo Nicola F. Zagari

  Se não existe nenhum bloco livre note que são necessárias 2 transferências de página   para reduzir esta sobrecarga, usa-se um bit de modificação

 ele é ativado pelo hardware sempre que qualquer palavra ou byte desta página é alterado, de forma a indicar que a página foi modificada

 se a página é selecionada para ser substituída: – bit de modificação ativado deve ser gravada no disco – bit de modificação não ativado não é necessário ser

regravada no disco (o bloco é sobreposto)

Page 15: SO-07 Gerenciamento de Memória: Memória Virtual

15 Memória Virtual Eduardo Nicola F. Zagari

  Menor taxa de falta de página   Ex: seqüência de referências a endereços de memória 0100, 0432, 0101, 0612, 0102, 0103, 0104, 0101, 0611, 0102, 0103, 0104, 0101, 0610, 0102, 0103, 0104, 0101, 0609, 0102, 0105

  Se cada página tiver 100 bytes, os acessos serão às pags.: 1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1

Número de blocos

Núm

ero

de in

terr

upçõ

es

de p

ágin

as a

usen

tes

Page 16: SO-07 Gerenciamento de Memória: Memória Virtual

16 Memória Virtual Eduardo Nicola F. Zagari

  Algoritmo FIFO (First-In, First-Out) ou PCPS (Primeiro a Chegar, Primeiro a Sair)

  Algoritmo Ótimo   Algoritmo NRU (Not Recently Used)   Algoritmo LRU (Least Recently Used)

  NFU (Not Frequently Used)   Aging

  Algoritmo da Segunda Chance   Algoritmo do Relógio   Algoritmo MFU

Page 17: SO-07 Gerenciamento de Memória: Memória Virtual

17 Memória Virtual Eduardo Nicola F. Zagari

  A página que foi primeiro utilizada (first-in) será a primeira a ser retirada (first-out)

  Fila (lista encadeada) de páginas

  Falta de página

  Simples   A princípio: razoável que a página há mais tempo no working set

deva ser retirada 1o mas isto nem sempre é verdade...

Início: Página mais velha Fim: Página mais nova

Retira página do início Insere página nova no fim

Page 18: SO-07 Gerenciamento de Memória: Memória Virtual

18 Memória Virtual Eduardo Nicola F. Zagari

0 0 0 3 3 3 2 2 2 1 1 1 0 0 2 7 7 7

1

2

1

2

1

2

0

4

0

4

0

4

3

0

3

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 0

3

0

2

7

2

7

2

7

1

15 faltas de páginas

1

3

Page 19: SO-07 Gerenciamento de Memória: Memória Virtual

19 Memória Virtual Eduardo Nicola F. Zagari

0 1 0

2 1

3 2

0 3

1 0

1 0

1 0

4 1

2 4

2 4

0 1 2 3 3 3 4 0 1 2 3 4 0 1 2 2 2 3 4 0 1 2 3

0 1 1 1 2 3 4 0 1 2

0 1 2 3 0 1 4 4 4 0 1 2 3 0 1 4 0 1 2 3 4

2 3 3

F F F F F F F F F = 9 fault pages

0 1 2 3 0 1 4 0 1 2 3 4

F F F F F F F F F F = 10 fault pages 0 0 0 1 2 3 4 0 1

3 blocos

4 blocos

Page 20: SO-07 Gerenciamento de Memória: Memória Virtual

20 Memória Virtual Eduardo Nicola F. Zagari

7 7 7 2 2 2 2 2 7 1

  Trocar a página que não será usada no período mais longo   Desempenho – deseja-se um algoritmo que resulte em um

número mínimo de faltas de páginas (page faults).

0 0 1

0 1

0 3

4 3

0 3

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1

0 1

0 1

9 faltas de páginas

2 3

Page 21: SO-07 Gerenciamento de Memória: Memória Virtual

21 Memória Virtual Eduardo Nicola F. Zagari

  Problema: saber quando cada página será referenciada Impossível de se implementar

  Utilidade: Comparação com relação aos demais algoritmos

Page 22: SO-07 Gerenciamento de Memória: Memória Virtual

22 Memória Virtual Eduardo Nicola F. Zagari

  Hardware: 2 bits de estado associados a cada página   Bit R (referência): ativado quando a página é referenciada   Bit M (modificação): ativado quando ela é modificada

  Bits ativados por hardware e desativados por software

bit de referência bit de modificação bit presença/ausência bits de proteção

bloco

entrada da tabela de páginas

Page 23: SO-07 Gerenciamento de Memória: Memória Virtual

23 Memória Virtual Eduardo Nicola F. Zagari

  Se o hardware não dispõe dos bits R e M: Simulados por software

 Processo iniciado Ausente na memória (tabela de páginas zerada)

 Referência a uma página falta de página  SO ativa bit R (tabela interna), atualiza tabela de páginas, seta

proteção para “Somente Leitura” e retoma instrução  Se instrução de escrita nova falta de página  SO ativa bit M e muda modo da página para “Leitura/Escrita”

Page 24: SO-07 Gerenciamento de Memória: Memória Virtual

24 Memória Virtual Eduardo Nicola F. Zagari

  Escolhe a página que não foi recentemente utilizada   Algoritmo:

  Processo iniciado bits de página (R e M) iguais a zero   Periodicamente, bit R é zerado   Falta de página SO inspeciona páginas e as classifica:

 Classe 0: não referenciadas, não modificadas  Classe 1: não referenciadas, modificadas  Classe 2: referenciadas, não modificadas  Classe 3: referenciadas, modificadas

  NRU remove página aleatória da classe não vazia de numeração mais baixa

Atenção

Page 25: SO-07 Gerenciamento de Memória: Memória Virtual

25 Memória Virtual Eduardo Nicola F. Zagari

  Seleciona a página usada há mais tempo, isto é, o objetivo é retirar aquela que está há mais tempo sem ser referenciada

  Realizável alto custo

  Manter lista

dificuldade: atualizar a cada referência à memória

Início: Página usada mais recentemente Fim: Página usada menos recentemente

Page 26: SO-07 Gerenciamento de Memória: Memória Virtual

26 Memória Virtual Eduardo Nicola F. Zagari

1 1 3 3 2 2 2 2 2 7 3

7 7 0

7 0

2 0

2 0

4 0

4 0

4 3

0 3

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 1 3

1 0

1 0

12 faltas de páginas

1 2

Page 27: SO-07 Gerenciamento de Memória: Memória Virtual

27 Memória Virtual Eduardo Nicola F. Zagari

  Implementação por hardware: 2 maneiras   Contador: um contador é adicionado à CPU e incrementado

automaticamente a cada referência à memória. Toda vez que é feita uma referência à página, o conteúdo do contador é copiado para o campo instante-de-uso na entrada da tabela de páginas referente à página acessada.

seleciona-se a página com o menor contador   Matriz nxn (onde n é o número de blocos): toda vez que a página k é

referenciada colocam-se todos os bits da linha k em 1 depois, zeram-se todos os bits da coluna k

em cada instante, a página LRU corresponde à linha com o menor valor binário armazenado

Page 28: SO-07 Gerenciamento de Memória: Memória Virtual

28 Memória Virtual Eduardo Nicola F. Zagari

  Considere a seguinte ordem de referências às paginas

0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0

0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0

0 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0

0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0

0 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0

0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0

0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0

0 1 1 0 0 0 1 0 0 0 0 0 1 1 1 0

0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0

0 1 0 0 0 0 0 0 1 1 0 0 1 1 1 0

0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3

0 1 2 3

0 1 2 3 2 1 0 3 2 3

Page 29: SO-07 Gerenciamento de Memória: Memória Virtual

29 Memória Virtual Eduardo Nicola F. Zagari

  Implementação por Pilha – mantém uma pilha do número das páginas em uma lista duplamente encadeada da seguinte forma:   Página referenciada:

 Mova-a para o topo  Requer que 6 ponteiros sejam atualizados

  Não há a necessidade de busca para substituição

Page 30: SO-07 Gerenciamento de Memória: Memória Virtual

30 Memória Virtual Eduardo Nicola F. Zagari

Page 31: SO-07 Gerenciamento de Memória: Memória Virtual

31 Memória Virtual Eduardo Nicola F. Zagari

  requer um contador em software associado a cada página   a cada interrupção de tempo, SO faz

  Falta de página SO escolhe página com menor Cont

  Problema: nunca esquece referências anteriores

Cont ← Cont + bit R

Page 32: SO-07 Gerenciamento de Memória: Memória Virtual

32 Memória Virtual Eduardo Nicola F. Zagari

  Algoritmo Aging (Envelhecimento): modificação do NFU   Contadores são sempre deslocados um bit antes de serem

somados com o bit R   Bit R é adicionado ao bit mais à esquerda do contador, ao invés de

ser somado ao mais à direita   Falta de página SO escolhe página com menor Cont

Page 33: SO-07 Gerenciamento de Memória: Memória Virtual

33 Memória Virtual Eduardo Nicola F. Zagari

1 0 1 0 1 1

Bits R das páginas

1 1 0 0 1 0

11000000 10000000 01000000 00000000

01000000 11000000

Bits R das páginas

1 1 0 1 0 1

11100000 11000000 00100000 10000000

10100000 01100000

Bits R das páginas

0 1 1 0 0 0

01111000

10110000

10001000

00100000

00101000

01011000

Bits R das páginas

1 0 0 0 1 0

11110000 01100000 00010000 01000000

01010000 10110000

Bits R das páginas

10000000 00000000 10000000 00000000

10000000 10000000

Cont 0

Cont 1

Cont 2

Cont 3

Cont 4

Cont 5

Page 34: SO-07 Gerenciamento de Memória: Memória Virtual

34 Memória Virtual Eduardo Nicola F. Zagari

  É um algoritmo FIFO modificado   Possui um bit de referência (bit R) que indica se página foi

referenciada   Se página mais antiga possui R = 0 (não foi referenciada)

ela é escolhida   Caso contrário,

R é feito zero (R ← 0) e ela vai para o final da fila A busca continua

Page 35: SO-07 Gerenciamento de Memória: Memória Virtual

35 Memória Virtual Eduardo Nicola F. Zagari

  Retira página velha não referenciada no último intervalo de tempo

  Problema: Se todas as páginas foram referenciadas, então algoritmo degenera para um FIFO puro

F G H A B C D E Bit R = 1

14 15 18 0 3 7 8 12

A 20

Falta de Página no instante t = 20

F G H B C D E 14 15 18 3 7 8 12

Bit R = 0

Instante:

Page 36: SO-07 Gerenciamento de Memória: Memória Virtual

36 Memória Virtual Eduardo Nicola F. Zagari

  Semelhante ao da Segunda Chance, mas mais eficiente   Falta de Página inspeciona página para a qual o ponteiro está

apontando:  Se bit R = 0 retire a página  Se bit R = 1 faça R ← 0 e avance o ponteiro

F

G

H A

B

C

D E

Page 37: SO-07 Gerenciamento de Memória: Memória Virtual

37 Memória Virtual Eduardo Nicola F. Zagari

  Escolhe a página mais freqüentemente usada   Argumento: uma página com contador de valor baixo, foi,

provavelmente, trazida para a memória recentemente e ainda será usada

Page 38: SO-07 Gerenciamento de Memória: Memória Virtual

38 Memória Virtual Eduardo Nicola F. Zagari

  Reserva de blocos   não é necessário esperar que a página selecionada seja transferida

para o disco   Lista de páginas modificadas

  automação através do dispositivo de transferência de páginas   minimiza probabilidade da página selecionada não estar atualizada

no disco   Manter registros de qual página está no conjunto de blocos

reservados   pode-se evitar E/S, aproveitando-se a antiga página contida na

reserva de blocos

Page 39: SO-07 Gerenciamento de Memória: Memória Virtual

39 Memória Virtual Eduardo Nicola F. Zagari

  Substituição Global:   permite alocar para um determinado processo qualquer bloco da

memória, mesmo que já esteja alocado a outro processo   Desempenho do processo depende do comportamento dos demais

  Substituição Local:   o bloco alocado a um processo deve pertencer ao conjunto de

blocos reservado para este processo   Poucos blocos: pode provocar queda de desempenho, mesmo

havendo blocos livres ou usados com menos freqüência   Muitos blocos: pode provocar desperdício

  Na prática os algoritmos globais funcionam melhor

Page 40: SO-07 Gerenciamento de Memória: Memória Virtual

40 Memória Virtual Eduardo Nicola F. Zagari

Memória Física

0 1 2 3 4 5 6 7 8 9 10

Idade

11

10 7 5 4 3 9 4 6 2 5

5 6

A1 A2 A3

B0

B2 B3

A0

C1

B1

A4

B4 B5 C1 C2 12

12

Substituição Local

A1 A2 A3

B0

B2 B3

A0

C1

B1

A6

B4 B5 C1 C2

Substituição Global

A1 A2 A3

B0

B2 A6

A0

C1

B1

A4

B4 B5 C1 C2

Page 41: SO-07 Gerenciamento de Memória: Memória Virtual

41 Memória Virtual Eduardo Nicola F. Zagari

  Considere que o sistema monitore a utilização da CPU   Se for baixa aumenta o grau de multiprogramação

  Considere também que é usado um algoritmo de trocas de páginas global

  Agora suponha que um processo entre em uma nova fase, que precise de mais páginas   Ele “rouba” blocos dos outros processos, aumentando a taxa de falta

de páginas, conseqüentemente, diminuindo a utilização da CPU realimentando o ciclo

  Dizemos que há thrashing (paginação excessiva) qdo ele está consumindo mais tempo em substituição de páginas do que na execução do seu código

Page 42: SO-07 Gerenciamento de Memória: Memória Virtual

42 Memória Virtual Eduardo Nicola F. Zagari

Grau de Multiprogramação

Util

izaç

ão d

a C

PU Paginação Excessiva

Page 43: SO-07 Gerenciamento de Memória: Memória Virtual

43 Memória Virtual Eduardo Nicola F. Zagari

  Por que a Paginação funciona?Princípio (Modelo) da Localidade   Processo migra de uma localidade para outra.   Localidades podem se sobrepor.

  Inicialização de um processo Paginação sob Demanda Funciona devido à localidade de referências

  Por que então ocorreria thrashing ?Σ tamanhos das localidades > tamanho total da memória

Page 44: SO-07 Gerenciamento de Memória: Memória Virtual

44 Memória Virtual Eduardo Nicola F. Zagari

Page 45: SO-07 Gerenciamento de Memória: Memória Virtual

45 Memória Virtual Eduardo Nicola F. Zagari

  Para prevenir thrashing deve-se fornecer aos processos o número de blocos que ele precisa

  Conjunto de Trabalho   É o conjunto de páginas referenciadas por um processo durante um

determinado intervalo de tempo   É o conjunto de páginas constantemente referenciadas pelo processo

e que deve permanecer na memória para que ele execute de forma eficiente

Mas o que fazer quando um processo sofre swap in?

Page 46: SO-07 Gerenciamento de Memória: Memória Virtual

46 Memória Virtual Eduardo Nicola F. Zagari

  Modelo do Conjunto de Trabalho:   SO mantém controle sobre o conjunto de trabalho dos processos   SO carrega antes as páginas do CT de um processo, ao colocá-lo

em execução, reduzindo o no de falta de páginas (pré-paginação)

  Uma forma de implementação é através do algoritmo aging:   qualquer página contendo um bit 1 entre os n bits mais significativos

do contador será considerada membro do CT do processo à qual ela pertence

Quais páginas devem fazer parte do CT de um processo?

Page 47: SO-07 Gerenciamento de Memória: Memória Virtual

47 Memória Virtual Eduardo Nicola F. Zagari

Page 48: SO-07 Gerenciamento de Memória: Memória Virtual

48 Memória Virtual Eduardo Nicola F. Zagari

  SO monitora a quantidade de páginas (Di) nos conjuntos de trabalho de todos os processos

  Se Σi (CTi) for maior que o no de blocos livres thrashing   Neste caso, SO seleciona um processo para sofrer swapping

  Working Set grande Menor taxa de falta de página Menor número de processos na memória

Alocação local: número de páginas iguais ou número de páginas proporcionais (nem considera thrashing)

Alocação global: tamanho do CT pode variar muito mais rápido do que os bits de envelhecimento

Problema de thrashing persiste...

Page 49: SO-07 Gerenciamento de Memória: Memória Virtual

49 Memória Virtual Eduardo Nicola F. Zagari

  Para evitar o thrashing: Alg. PFF (Page Fault Frequency)   Controla diretamente a taxa de interrupções por F.P.

 F.P. muito alta processo necessita de mais blocos  F.P. muito baixa processo está com blocos em excesso

  Estipula-se um limite máximo e um limite mínimo para a taxa de interrupções por F.P.  Processos acima do máx recebem mais blocos  Processos abaixo do mín removem-se blocos

  Se a taxa de interrupções cresce e não há blocos disponíveis seleciona-se um processo e o suspende blocos liberados são redistribuídos ou colocados à disposição

  Swapping usado para redução de demanda potencial por memória

Page 50: SO-07 Gerenciamento de Memória: Memória Virtual

50 Memória Virtual Eduardo Nicola F. Zagari

Número de blocos

Taxa

de

inte

rrup

ções

de

pág

ina

ause

nte

Limite Mínimo

Limite Máximo

Diminuir número de blocos

Aumentar número de blocos

Page 51: SO-07 Gerenciamento de Memória: Memória Virtual

51 Memória Virtual Eduardo Nicola F. Zagari

  Tamanho é sempre potência de 2 (29 - 214 bytes)   SO pode escolher tamanho:

  hardware projetado para pags. de 512 bytes   SO enxerga pag. 0 e 1, 2 e 3, ... como páginas de 1k, alocando

sempre 2 blocos consecutivos na memória para elas   Tamanho ótimo:

  Páginas pequenas:  Menor desperdício: em média 1/2 página é perdida com

fragmentação interna no fim de um segmento  Reduz a possibilidade de espaços inativos dentro de uma

página

Page 52: SO-07 Gerenciamento de Memória: Memória Virtual

52 Memória Virtual Eduardo Nicola F. Zagari

  Páginas grandes:  Menor número de páginas menor tabela de páginas  Transferir páginas pequenas toma quase tanto tempo quanto

transferir páginas grandes para o disco (movimento da cabeça e latência rotacional)

 Menor a taxa de falta de páginas   Tamanho ótimo: 1448 bytes (valor teórico)   A maioria dos computadores comerciais têm páginas de 512 a

8k bytes   Historicamente, este valor tem aumentado...

Page 53: SO-07 Gerenciamento de Memória: Memória Virtual

53 Memória Virtual Eduardo Nicola F. Zagari

  Alcance da TLB - A quantidade de memória acessível a partir da TLP.

  Alcance da TLB = (Tamanho da TLB) X (Tamanho da Página)

  Idealmente, o Conjunto de Trabalho de cada processo deveria ser armazenado inteiramente na TLB.

Page 54: SO-07 Gerenciamento de Memória: Memória Virtual

54 Memória Virtual Eduardo Nicola F. Zagari

  Considere o exemplo:   Processo emite chamada de sistema de E/S   Processo é suspenso   Novo processo gera falta de página   Se alocação global existe chance da página escolhida para ser

removida ser a página contendo o buffer de E/S   Como o DMA (acesso direto) não tem como identificar em que

página está escrevendo inconsistência

  Primeira Solução:   Operações de E/S usarem um buffer dentro do kernel a cópia

pode resultar em uma sobrecarga inaceitável

Page 55: SO-07 Gerenciamento de Memória: Memória Virtual

55 Memória Virtual Eduardo Nicola F. Zagari

Page 56: SO-07 Gerenciamento de Memória: Memória Virtual

56 Memória Virtual Eduardo Nicola F. Zagari

  Segunda Solução:   Bloquear páginas envolvidas em E/S, não permitindo que sejam

removidas durante a operação de E/S bit de bloqueio   Outro uso do bit de bloqueio:

  Processo provoca interrupção por falta de página   Página é carregada   Processo volta para a fila de pronto   Outro processo (de maior prioridade) ganha a CPU e provoca falta

de página   Escolhe página não referenciada e nem modificada: A candidata

perfeita a própria página do processo de baixa prioridade

Page 57: SO-07 Gerenciamento de Memória: Memória Virtual

57 Memória Virtual Eduardo Nicola F. Zagari

  Paginação por demanda foi projetada para ser transparente aos programas de usuário, mas...

  Considere páginas de 1024 bytes. Para iniciar com ʻaʼ cada elemento de uma matriz de 1024 x 1024:

char A[1024][1024];

for (j=0; j<1024; j++) { for (i=0; i<1024; i++) { A[i][j] = ‘a’; } }

char A[1024][1024];

for (i=0; i<1024; i++) { for (j=0; j<1024; j++) { A[i][j] = ‘a’; } }

Page 58: SO-07 Gerenciamento de Memória: Memória Virtual

58 Memória Virtual Eduardo Nicola F. Zagari

Taxa de faltas =

128 linhas X 128 colunas

16.384 faltas

Taxa de faltas =

128 colunas

128 faltas

  A matriz é armazenada por linhas: A[0][0], A[0][1], A[0][2], ... , A[0][1024], A[1][0], A[1][1], ... , A[1024][1024]

  Se a página tem tamanho 1024 bytes cada linha ocupa uma página

Page 59: SO-07 Gerenciamento de Memória: Memória Virtual

59 Memória Virtual Eduardo Nicola F. Zagari

  Windows NT

  Solaris 2

Page 60: SO-07 Gerenciamento de Memória: Memória Virtual

60 Memória Virtual Eduardo Nicola F. Zagari

  Usa paginação sob demanda com clustering. Clustering traz para memória páginas “ao redor” da página faltante.

  São atribuídos aos processos um Conjunto de Trabalho Mínimo e um Conjunto de Trabalho Máximo.

  Conjunto de Trabalho Mínimo é o menor número de páginas que o processo tem garantido possuir em memória.

  Conjunto de Trabalho Máximo é o maior número de páginas que ele poderia possuir em memória ao mesmo tempo.

  Quando a quantidade de memória livre no sistema cai abaixo de um limiar (threshold), o módulo chamado automatic working set trimming é executado para restabelecer a quantidade de memória livre.

  Working set trimming remove páginas dos processos que têm páginas acima do seu Conjunto de Trabalho Mínimo (em excesso).

Page 61: SO-07 Gerenciamento de Memória: Memória Virtual

61 Memória Virtual Eduardo Nicola F. Zagari

  Mantém uma lista de páginas livres para atribuir aos processos em falta.

  Lotsfree – parâmetro limiar para começar a paginação.

  Paginação é executada pelo processo pageout.

  Pageout busca páginas usando o algoritmo do relógio modificado.

  Scanrate é a taxa na qual as páginas são buscadas. Ela varia de slowscan para fastscan.

  Pageout é chamado mais ou menos freqüentemente dependendo da quantidade de memória livre disponível.

Page 62: SO-07 Gerenciamento de Memória: Memória Virtual

62 Memória Virtual Eduardo Nicola F. Zagari