sistemas operativos: gestão de memóriapfs/aulas/so1011/at/10vm.pdf · cpu cont.memoria disco....

58
Sistemas Operativos: Gestão de Memória Pedro F. Souto ([email protected]) May 17, 2011

Upload: vuliem

Post on 15-Oct-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Sistemas Operativos: Gestão de Memória

Pedro F. Souto ([email protected])

May 17, 2011

Page 2: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Sumário

Conceitos e Técnicas Básicas

Swapping

Gestão da Memória Física

Memória VirtualFundamentosConversão de EndereçosPage FaultsAlgoritmos de Substituição de PáginasSwap AreaEnvolvimento do SOInteracção com E/S

Leitura Adicional

Page 3: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Sumário

Conceitos e Técnicas Básicas

Swapping

Gestão da Memória Física

Memória VirtualFundamentosConversão de EndereçosPage FaultsAlgoritmos de Substituição de PáginasSwap AreaEnvolvimento do SOInteracção com E/S

Leitura Adicional

Page 4: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Gestão de Memória

I Processadores são concebidos para:I executar instruções residentes em memória

semicondutora;I transferir dados de e para memória semicondutora.

MemoriaCPU Cont.Disco

Page 5: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Hierarquia de Memória

I Praticamente qualquer programador gostaria de dispôr dememória:

I em grande quantidade;I rápida;I não volátil.

I SO e os compiladores exploram a hierarquia de memóriapara satisfazer estes “desejos”:

Registers

Cache

Main memory

Magnetic tape

Magnetic disk

1 nsec

2 nsec

10 nsec

10 msec

100 sec

<1 KB

1 MB

64-512 MB

5-50 GB

20-100 GB

Typical capacityTypical access time

Page 6: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Gestão de Memória em Monoprogramação

I Executa apenas um processo de cada vez.

(a) (b) (c)

0xFFF …

0 0 0

User program

User program

User program

Operating system in

RAM

Operating system in

RAM

Operating system in

ROM

Device drivers in ROM

b) Disposição típica em palmtops ( ∼ sistemas embebidos).c) Disposição em MS-DOS (A parte em ROM é conhecida

por BIOS.)

Page 7: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Multiprogramação e Partições Fixas

(a)

Multiple input queues

Partition 4

Partition 3

Partition 2

Partition 1

Operating system

Partition 4

Partition 3

Partition 2

Partition 1

Operating system

700K

400K

100K

0(b)

Single input queue

200K

800K

I A memória é dividida em partições (possivelmente 6=s).a) o SO atribui a partição de menor tamanho capaz de conter

o processo;b) quando uma partição fica disponível, o SO atribui-a ao

processo capaz de a usar mais à frente na fila.

Page 8: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Problemas Introduzidos por MultiprogramaçãoRecolocação: a posição do código pode variar entre

execuções:I O loader pode alterar os endereços absolutos

de acordo com a posição onde o código écarregado.

I Usar um base register a inicializar com oendereço da partição atribuída ao processo.

Protecção: impedir que um processo aceda a código ou adados de outros processos ou do SO:

I Usar um limit register além do base register.

<CPUaddress

limit

NY

+

base

memory

Page 9: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Sumário

Conceitos e Técnicas Básicas

Swapping

Gestão da Memória Física

Memória VirtualFundamentosConversão de EndereçosPage FaultsAlgoritmos de Substituição de PáginasSwap AreaEnvolvimento do SOInteracção com E/S

Leitura Adicional

Page 10: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Swapping: Ideia

I Com partições fixas um processo é carregado numapartição quando chega à cabeça da fila correspondente, edepois fica em memória até terminar

I Se as necessidades de memória dos processos foremmuito variáveis, a memória física pode tornar-seinsuficiente para todos os processos.

I Uma solução possível é o recurso a swapping:I Passar um processo para o disco (swap out) e,

posteriormenteI Transferi-lo de novo do disco para a memória (swap in)

Page 11: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Swapping: Exemplo

(a)

Operating system����A (b)

Operating system

����AB(c)

Operating system

�A

B

C

(d)

Time

Operating system

��������BC (e)

D

Operating system�����BC (f)

D

Operating system

��������C (g)

D

Operating system

�A

C

I Com swapping o número, localização e tamanho daspartições varia dinamicamente

+ melhora a utilização da memória;- torna a gestão de memória mais complexa.

I Contudo swapping pode conduzir à fragmentação damemória:

I pode ser atenuada usando compactação;I mas compactação consome bastante CPU

Page 12: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Swapping: Tamanho das Regiões a AlocarI Qual o tamanho da região de memória a alocar quando um

processo é criado ou trazido para memória (swapped in)?

(a) (b)

Operating system

Room for growth

Room for growth

B-Stack

A-Stack

B-Data

A-Data

B-Program

A-Program��Operating

system

Room for growth

B

A����Actually in use

Room for growth

Actually in use

I Se o processo crescer em demasia e não houver maismemória para alocar, pode-se passá-lo para o disco(swap-out)

I Se disco estiver cheio, pode-se bloquear processo ... masnesse caso o processo ocupará memória

Page 13: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Sumário

Conceitos e Técnicas Básicas

Swapping

Gestão da Memória Física

Memória VirtualFundamentosConversão de EndereçosPage FaultsAlgoritmos de Substituição de PáginasSwap AreaEnvolvimento do SOInteracção com E/S

Leitura Adicional

Page 14: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Alocação Dinâmica de MemóriaI O SO tem que manter informação sobre o espaço de

memória disponívelI Tipicamente decompõe-se a memória física em unidades

de alocação, cujo tamanho é da ordem dos KBI Normalmente usa-se uma de 2 estruturas de dados

1. bitmaps;2. listas ligadas. �������� (a)

(b) (c)

A B C D E

8 16 24

Hole Starts at 18

Length 2

Process

P 0 5 H 5 3 P 8 6 P 14 4

H 18 2 P 20 6 P 26 3 H 29 3 X

1 1 1 1 1 0 0 0

1 1 1 1 1 1 1 1

1 1 0 0 1 1 1 1

1 1 1 1 1 0 0 0

Page 15: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Bitmaps vs. Listas

+ Bitmaps ocupam um espaço de memória fixo que dependedo tamanho da unidade de alocação

I blocos pequenos exigem mais memória para os bitmaps;I blocos grandes podem conduzir a fragmentação externa

- Pesquisa de espaço disponível para alocação pode serlenta

Page 16: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Algoritmos de Alocação Dinâmica de Memória

I A libertação de memória é relativamente simples:

becomes

becomes

becomes

becomes

(a) A X B����(b) A X��(c) X B���(d) X

Before X terminates ��A B�A��B����After X terminates

I A alocação é mais interessante:first fit: simples e eficiente;next fit: começa varrimeno onde parou da última vez - de

facto pior do que first fit ;best fit: tenta evitar fragmentação, mas . . .worst fit: tenta evitar fragmentos muito pequenos, mas . . .

Page 17: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Alicação Dinâmica de Memória: Truques

I Manter listas separadas para a memória ocupada e amemória livre

+ facilita alocação;+ pode-se usar a própria memória livre para implementar os

elementos da lista de memória livre;- penaliza a libertação da memória.

I Manter listas de memória livre, uma para cada um dostamanhos de blocos mais comuns (quick fit)

- problemas análogos aos do uso de listas separadas

Page 18: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Sumário

Conceitos e Técnicas Básicas

Swapping

Gestão da Memória Física

Memória VirtualFundamentosConversão de EndereçosPage FaultsAlgoritmos de Substituição de PáginasSwap AreaEnvolvimento do SOInteracção com E/S

Leitura Adicional

Page 19: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Memória Virtual (MV)

I Ideia:I Decompôr o espaço de endereçamento dum processo em

blocos.I Manter em memória apenas alguns desses blocos (código

e dados) do processo em execução.I Manter os outros blocos no disco:

I na área de swap;I no sistema de ficheiros (código, p.ex.).

I Transferir os blocos entre o disco e a memória, conformenecessário.

I MecanismosI Paginação;I Segmentação;

(ambos requerem suporte do HW).

Page 20: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

MV vs. swapping

+ Permite programas maiores do que a memória físicadisponível;

+ Possibilita ter mais processos em memória (ainda que sóparte deles);

+ Reduz tempo de arranque dum processo- Exige suporte do HW mais sofisticado

Page 21: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

MV Paginada

I A memória física está divididaem page frames, ou frames:

I o tamanho das frames édeterminado pelo HW (4 Kbyteou 8 Kbyte).

I O espaço de endereçamentoestá dividido em páginas:

I tipicamente de tamanho igualao das frames.

I O conteúdo das páginas étransferido de e para frames.

Virtual address

space

Physical memory address

60K-64K

56K-60K

52K-56K

48K-52K

44K-48K

40K-44K

36K-40K

32K-36K

28K-32K

24K-28K

20K-24K

16K-20K

12K-16K

8K-12K

4K-8K

0K-4K

28K-32K

24K-28K

20K-24K

16K-20K

12K-16K

8K-12K

4K-8K

0K-4K

Virtual page

Page frame

X

X

X

X

7

X

5

X

X

X

3

4

0

6

1

2

Page 22: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Conversão de Endereços em MV PaginadaI Paginação determina dois espaços de endereçamento:

virtual ou lógico que é o que o CPU conhece - ocódigo executável usa endereços virtuais oulógicos;

físico que é usado no barramento de endereços damemória.

I O mapeamento dos endereços dum espaço no outro érealizado pela Memory Management Unit (MMU):

CPU package

CPU

The CPU sends virtual addresses to the MMU

The MMU sends physical addresses to the memory

Memory management

unit

MemoryDisk

controller

Bus

Page 23: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Conversão de Endereços com uma Tabela (1/2)

I Em sistemas com MV paginada um endereço tem 2componentes:

Page # Offset

I O número da página, parte mais significativa do endereço;I O deslocamento (offset) na página, parte menos

significativa.

I Como frames e páginas têm o mesmo tamanho, a MMU sótem que mapear o número da página no número da frame.

I O mapeamento pode ser feito usando uma tabela,implementada como um vector:

I o número da página é usado como indíce para obter onúmero da frame que a contém.

Page 24: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Conversão de Endereços com uma Tabela (2/2)

Virtual address

space

Physical memory address

60K-64K

56K-60K

52K-56K

48K-52K

44K-48K

40K-44K

36K-40K

32K-36K

28K-32K

24K-28K

20K-24K

16K-20K

12K-16K

8K-12K

4K-8K

0K-4K

28K-32K

24K-28K

20K-24K

16K-20K

12K-16K

8K-12K

4K-8K

0K-4K

Virtual page

Page frame

X

X

X

X

7

X

5

X

X

X

3

4

0

6

1

2

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

000 000 000 000 111 000 101 000 000 000 011 100 000 110 001 010

0 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 Present/

absent bit

Page table

12-bit offset copied directly from input to output

Virtual page = 2 is used as an index into the page table Incoming

virtual address (8196)

Outgoing physical address (24580)

110

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

00 1 0 0 0 0 0 0 0 0 0 0 1 0 0

Page 25: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Page Table Entry

Caching disabled Modified Present/absent

Page frame number

Referenced Protection��I Se o CPU usar endereços de 32 bits, e páginas de 4 Kbyte(12 bits), a page table terá ∼4 Mbyte!!!

I Cada página pode conter até 1024 (210) elementosI Sendo necessárias 1024 (220/210) páginas

I Normalmente, um processo usa apenas uma fracção doseu espaço de endereçamento:

I A maioria dos elementos da page table não são usadosI Muitas das páginas da page table estão vazias

Page 26: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Tabelas com 2 NíveisI Permite não usar páginas da

tabela vaziasI Exige uma “tabela” adicional para

as páginasI Elementos correspondentes a

páginas vazias tem o bitPresent/absent a 0

I Os outros elementos apontampara páginas com conversões

I A conversão é feita em 2 passos:I Os 10 bits mais significativos

são usados para seleccionar apágina de 2o nível que poderáconter o elemento desejado

I Os 10 bits seguintes sãousados como indíce da “tabela”contida nessa página

(a)

(b)

Top-level page table

Second-level page tables

To pages

Page table for the top 4M of memory

6 5 4 3 2 1 0

1023

6 5 4 3 2 1 0

1023

Bits 10 10 12

PT1 PT2 Offset

I Este esquema pode ser generalizado a 3 ou mais níveis

Page 27: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Tabelas InvertidasI Alguns CPUs de 64 bits usam tabelas invertidas:

I têm um elemento por frame, em vez de ...I cada elemento contêm informação sobre (processo, página

virtual) contido pela frameI A tabela está organizada como uma hash table

I usa o endereço virtual da página como key

Traditional page table with an entry for each of the 252 pages

256-MB physical memory has 216

4-KB page frames Hash table216 -1

252 -1

216 -1

0 0Indexed by virtual

page

0Indexed

by hash on virtual page

Virtual page

Page frame

Page 28: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Desempenho da Conversão de Endereços

I Pode traduzir-se um endereço com tantos acessos àmemória quantos os níveis da page table

I no caso de tabelas invertidas são necessários 2 acessosno mínimo, mais se houver colisões.

I Obviamente, temos um problema:I cada acesso à memória, requereria acessos adicionais

para converter endereços.I A solução é usar uma cache, a Table Lookaside Buffer, de

elementos da page table usados em conversões recentes:

Valid Virtual Page Modified Protection Page Frame1 140 1 RW 311 20 0 R X 381 130 1 RW 291 129 1 RW 621 19 0 R X 50

Page 29: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Table Lookaside Buffer (TLB)

I A TLB usa memória associativa:I cada posição de memória consiste num par (key, value);I o endereçamento é feito comparando o valor do endereço

com o valor de key.

Em termos de implementação, a TLB é semelhante àcache de instruções ou dados.

I O número de posições da TLB não precisa ser muitoelevado:

I por causa da localidade no acesso à memória.I Quando da comutação de processos, o conteúdo da TLB

tem que ser invalidado, a menos que ...

Page 30: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

TLB Misses

I E se o endereço a converter não estiver na TLB (TLBmiss)?

I Há que consultar a page tableI Normalmente, o HW de gestão de memória, a Memory

Management Unit (MMU), processa automaticamente asTLB misses:

I A MMU precisa conhecer a localização da page table doprocesso em execução.

I A MMU de alguns CPUs RISC não processam TLB misses,deixam essa tarefa a cargo do SO.

Page 31: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Desempenho da Conversão de Endereços com TLB

I Seja:p a TLB hit ratiom o no de acessos à memória no caso duma TLB miss

I Admitindo que no caso de um TLB hit, o custo é zero, ocusto efectivo da utilização de MV paginada vem:

(1− p)mI Seja:

p = 0.98m = 3Então o custo será de: 0.06 acessos à memoria porconversão de endereço

Page 32: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Page Fault

Quando um processo tenta aceder a uma página e essapágina não está em memória ocorre uma page fault

I A MMU gera uma excepção, que é processada pelo pagefault handler :

I O page fault handler consulta uma outra estrutura dedados (address map do processo) para determinar:

I se a referência é válida: protecção;I e, em caso afirmativo, onde se encontra a página.

I O handler obtém uma frame livre.I Transfere a página do disco para a frame.I Actualiza a page table.

I O CPU reinicia a execução da instrução que causou apage fault :

I mais fácil dizer do que fazer, mas tem a ver com o HW.

Page 33: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Address Map

I É a estrutura de dados do SO que mapeia espaço nodisco:

I ficheiros;I partes da área de swap

no espaço de endereçamento dum processo.I É usada pelo page-fault handler para determinar:

I a validade da referência;I em caso positivo, qual a fonte da página referenciada.

I Quando o SO cria um processo:I mapeia o ficheiro com o código correspondente no espaço

de endereçamento desse processo;I reduz o tempo de arranque dum processo.

I transfere algumas páginas desse ficheiro para a memória(prepaging):

I evita uma page fault rate excessiva inicialmente.

Page 34: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

more /proc/1/maps

08048000-0804f000 r-xp 00000000 03:02 8954 /sbin/init0804f000-08050000 rw-p 00006000 03:02 8954 /sbin/init08050000-08054000 rwxp 00000000 00:00 040000000-40012000 r-xp 00000000 03:02 8862 /lib/ld-2.1.3.so40012000-40013000 rw-p 00011000 03:02 8862 /lib/ld-2.1.3.so40013000-40014000 rwxp 00000000 00:00 04001b000-400f0000 r-xp 00000000 03:02 8864 /lib/libc-2.1.3.so400f0000-400f4000 rw-p 000d4000 03:02 8864 /lib/libc-2.1.3.so400f4000-400f8000 rw-p 00000000 00:00 0bfffe000-c0000000 rwxp fffff000 00:00 0

Page 35: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Partilha de CódigoI O address map facilita a partilha de de memória entre

processos.I Um exemplo muito comum é o código de bibliotecas

partilhadas

Address−SpaceProcess 2

Address−SpaceProcess 1

SharedCode

Page 36: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

E se não houver qualquer frame livre?

I Se, quando duma page-fault, todas as frames estiveremocupadas, o SO tem que libertar uma:

I se a frame seleccionada tiver sido modificada, terá que sertransferida para o disco.

I Por razões de eficiência, o SO tipicamente executa umprocesso (pageout daemon) que procura manter um certonúmero de frames livres.

I Em qualquer dos casos, põe-se o problema:Que páginas transferir para o disco?

É bom que se faça uma boa escolha, doutro modo odesempenho sofre . . .

I Note-se que este problema é comum a qualquer tipo decache.

Page 37: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Algoritmos de Substituição de Páginas

222222222222222222222222222222222222222222222222222222222222222222222222Algorithm Comment222222222222222222222222222222222222222222222222222222222222222222222222

Optimal Not implementable, but useful as a benchmark222222222222222222222222222222222222222222222222222222222222222222222222NRU (Not Recently Used) Very crude222222222222222222222222222222222222222222222222222222222222222222222222FIFO (First-In, First-Out) Might throw out important pages222222222222222222222222222222222222222222222222222222222222222222222222Second chance Big improvement over FIFO222222222222222222222222222222222222222222222222222222222222222222222222Clock Realistic222222222222222222222222222222222222222222222222222222222222222222222222LRU (Least Recently Used) Excellent, but difficult to implement exactly222222222222222222222222222222222222222222222222222222222222222222222222NFU (Not Frequently Used) Fairly crude approximation to LRU222222222222222222222222222222222222222222222222222222222222222222222222Aging Efficient algorithm that approximates LRU well222222222222222222222222222222222222222222222222222222222222222222222222Working set Somewhat expensive to implement222222222222222222222222222222222222222222222222222222222222222222222222WSClock Good efficient algorithm222222222222222222222222222222222222222222222222222222222222222222222222111111111111111

111111111111111

111111111111111

Page 38: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Algoritmo Óptimo

I Quando da substituição duma página, expulsa-se a páginaque será referenciada no futuro depois de todas as outras.Problema O SO não consegue prever o futuro

I A utilidade deste algoritmo é que pode ser usado paracomparar a qualidade de algoritmos que são exequíveis:

I requer o registo das operações à memória por umprocesso;

I note-se que este registo descreve o acesso à memória doprograma em causa, para os dados de entrada usados

I convém que seja representativo

Solução Usar o passado recente para prever o futuroI Os diferentes algoritmos diferem nos pormenores

Page 39: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Algoritmo Not Recently Used (NRU)

I Cada page table entry (PTE) contém 2 bits:R-bit referecend bitM-bit modifiedactualizados em cada acesso à memória pela MMU.

I O R-bit é limpo periodicamenteI As páginas são classificadas em:

1. não referenciadas, não modificadas2. não referenciadas, mas modificadas3. referenciadas, não modificadas4. referenciadas, modificadas

I NRU selecciona a classe não vazia pela ordem indicada eexpulsa uma página desta classe

I NRU é intuitivo, de implementação eficiente edesempenho aceitável para muitas aplicações

Page 40: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Algoritmo Least Recently Used (NRU)

Ideia Assumir que páginas usadas mais recentemente serãousadas em breve

I expulsar a página menos usada recentemente

I Normalmente o HW não fornece os mecanismosnecessários para uma implementação eficiente destealgoritmo

I A sua implementação em SW não é viável na práticaI Porquê?

I A alternativa é tentar aproximar o LRU usando outrosalgoritmos

Page 41: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Algoritmo Not Frequently Used (NFU)

Ideia Associar a cada página um contador que é incrementadoperiodicamente, de acordo com o estado do R-bit

I expulsar a página cujo contador tem o valor mais baixoProblema Este algoritmo nunca esquece

I acessos num passado remoto têm o mesmo peso queacessos recentes

Solução Usar aging:I periodicamente, deslocar o valor do contador 1 bit para

a direita e inserir o R-bit como MSB

Page 42: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Algoritmo NFU with Aging: Exemplo

Page

0

1

2

3

4

5

R bits for pages 0-5, clock tick 0

10000000

00000000

10000000

00000000

10000000

10000000

1 0 1 0 1 1

(a)

R bits for pages 0-5, clock tick 1

11000000

10000000

01000000

00000000

11000000

01000000

1 1 0 0 1 0

(b)

R bits for pages 0-5, clock tick 2

11100000

11000000

00100000

10000000

01100000

10100000

1 1 0 1 0 1

(c)

R bits for pages 0-5, clock tick 3

11110000

01100000

00100000

01000000

10110000

01010000

1 0 0 0 1 0

(d)

R bits for pages 0-5, clock tick 4

01111000

10110000

10001000

00100000

01011000

00101000

0 1 1 0 0 0

(e)

Page 43: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Conceito de Working Set

I Com paginação pura, as páginas dum processo só sãotrazidas para a memória quando o processo tem umapage-fault.

I Quando um processo inicia, tem uma taxa de page-faultselevada, até que eventualmente essa taxa diminui:

I este comportamento deve-se à localidade de referência.I O conjunto de páginas acedidas por um processo num

determinado intervalo designa-se por working set.I Se o working set dum processo estiver em memória, um

processo tem um taxa de page-faults muito baixa,reciprocamente . . .

I Tipicamente, o working set dum processo varia no tempo.

Page 44: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Definição de Working SetWorking set conjunto de páginas acedidas nos k acessos à

memória mais receentes

w(k,t)

kI w(k , t) é o tamanho do working set no instante t

I w(k , t) é uma função monótona crescenteI Contudo w(k , t) não pode nunca ser superior ao no de

páginas do espaço de endereçamento do processoI Excepto para valores de k muito baixos, o tamanho do

working set dum processo é praticamente independente dek

Page 45: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Algoritmo Baseado no Working SetIdeia Expulsar as páginas que não fazem parte do working setProblema Como determinar se uma página faz parte do WS?Solução Manter um tempo virtual que é aproximadamente o

tempo de execução do processo.I Periodicamente, actualizar o tempo de acesso de

acordo com o R-bitI Expulsar apenas páginas que não são acedidas há

muito tempo

Information about one page 2084

2204 Current virtual time

2003

1980

1213

2014

2020

2032

1620

Page table

1

1

1

0

1

1

1

0

Time of last use

Page referenced during this tick

Page not referenced during this tick

R (Referenced) bit

Scan all pages examining R bit: if (R == 1) set time of last use to current virtual time if (R == 0 and age > τ) remove this page if (R == 0 and age ≤ τ) remember the smallest time

Page 46: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Algoritmo WSClock

I O algoritmo anterior é pouco eficiente pois exige um varrimentode toda a tabela de páginas dum processo sempre que ocorreuma page fault

I O tempo do último acesso émantido como no algoritmo do WS

I Quando ocorre uma page-fault ohandler analisa a páginaapontada pelo ponterio.

I O algoritmo só expulsa páginascuja idade é superior a τ

2204 Current virtual time

1213 0

2084 1 2032 1

1620 0

2020 12003 1

1980 1 2014 1

Time of last use

R bit

(a) (b)

(c) (d)

New page

1213 0

2084 1 2032 1

1620 0

2020 12003 1

1980 1 2014 0

1213 0

2084 1 2032 1

1620 0

2020 12003 1

1980 1 2014 0

2204 1

2084 1 2032 1

1620 0

2020 12003 1

1980 1 2014 0

Page 47: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Algoritmos de Substituição de Páginas

222222222222222222222222222222222222222222222222222222222222222222222222Algorithm Comment222222222222222222222222222222222222222222222222222222222222222222222222

Optimal Not implementable, but useful as a benchmark222222222222222222222222222222222222222222222222222222222222222222222222NRU (Not Recently Used) Very crude222222222222222222222222222222222222222222222222222222222222222222222222FIFO (First-In, First-Out) Might throw out important pages222222222222222222222222222222222222222222222222222222222222222222222222Second chance Big improvement over FIFO222222222222222222222222222222222222222222222222222222222222222222222222Clock Realistic222222222222222222222222222222222222222222222222222222222222222222222222LRU (Least Recently Used) Excellent, but difficult to implement exactly222222222222222222222222222222222222222222222222222222222222222222222222NFU (Not Frequently Used) Fairly crude approximation to LRU222222222222222222222222222222222222222222222222222222222222222222222222Aging Efficient algorithm that approximates LRU well222222222222222222222222222222222222222222222222222222222222222222222222Working set Somewhat expensive to implement222222222222222222222222222222222222222222222222222222222222222222222222WSClock Good efficient algorithm222222222222222222222222222222222222222222222222222222222222222222222222111111111111111

111111111111111

111111111111111

I O que é que o “utilizador”/programador pode fazer?I Pouco a menos que o SO suporte user-level pagers

Page 48: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

User-level Pager

DiskMain memory

External pager

Fault handler

User process

MMU handler

1. Page fault

6. Map page in

5. Here is page

User space

Kernel space

2. Needed page

4. Page arrives

3. Request page

I Mais um exemplo de separação entre mecanismos epolíticas

I Idealmente, o SO deveria suportar uma API quepermitisse expulsar páginas da memória

I O algoritmo de substituição precisa tipicamente de acederaos bits R E M.

Page 49: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Anomalia de Belady

I Intuitivamente:I quanto maior o número de page frames, i.e. memória,

menor será a taxa de page-faultsI Porém Belady mostrou que nem todos os algoritmos de

substituição de páginas garantem que assim é.I Alguns algoritmos apresentam casos patológicos nos quais

o aumento da memória conduz a mais page-faultsI Uma classe de algoritmos de substituição que não sofre

deste problema é conhecida por stack algorithmsI Estes algoritmos garantem que:

M(n, r) ⊆ M(n + 1, r)

onde M(f , r) dsigna o conteúdo da memória com f framesapós r referências

Page 50: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Swap Area

I É uma zona do disco para onde é transferido o conteúdodas páginas modificadas expulsas da memória:

I páginas de ficheiros não alteráveis, p.ex. código, nãoprecisam ser transferidas para a swap area.

I Pode ser implementada:I directamente sobre o disco – mais eficiente;I sobre ficheiros – fácil de ajustar o seu tamanho.

I Em qualquer caso, o SO tem que gerir o espaço disponívelna swap area.

I A alocação de espaço na àrea de swap pode ser:optimista só é alocada quando necessário – possibilidade

de deadlock?pessimista é reservada – pode não vir a ser usada e,

consequentemente, reduzir a utilização dos recursos.

Page 51: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Swap Area: Modos de Alocação.

0

4

3

6

6

43

0

7

5

21

Pages

Page table

Main memory Disk

Swap area

(a)

0

4

3

6

6

43

0

5

1

7

2

Pages

Page table

Main memory Disk

Swap area

(b)

Disk map

Page 52: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Working Set e ThrashingI Normalmente, a frequência de page faults depende do

número de frames atribuídas a um processo:

Pag

e fa

ults

/sec

Number of page frames assigned

A

B

I Quando a maioria dos processos não tem um número depáginas suficiente em memória, i.e. o seu working set, ocomputador pode entra num estado de thrashing:

usa a maioria dos seus recursos para transferirpáginas entre a memória principal e o disco

Page 53: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Escalonamento Multinível

I Se a frequência de page faults aumenta bastante,indicando a possibilidade de thrashing, o SO pode “fazer oswapout de processos”:

i.e. transferir todas as páginas dum ou maisprocessos para o disco.

I Ou seja, o SO poderá usar dois níveis de escalonamento:I O nível superior determina quais os processos em

memória.I O nível inferior faz o escalonamento dos processos em

memória.

Page 54: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Envolvimento do SO na Gestão de MV Paginada

I Criação dum processo:I criar page table.

I Comutação de processos:I configurar a MMU para o novo processo;I invalidar o TLB.

I Page-fault :I determinar e validar o endereço que a causou;I transferir página do disco para a memória, possivelmente

com troca.I Terminação dum processo:

I libertação da page table e das frames.I Outras tarefas:

I manter número mínimo de frames livres;I swap-out processos, se frequência de page-faults

excessiva.

Page 55: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Interacção com E/S

I Converter endereços para realizar E/S:I Dispositivos de E/S usam endereços físicos, não lógicos.

I Impedir que as páginas usadas numa operação de E/Ssejam expulsas enquanto a operação não terminar:

I pin-down/lock páginas na memória.

Page 56: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Algumas Questões

I Relacionadas com a implementação:I Qual deve ser o tamanho duma página?I Onde é que as tabelas devem residir?I Será que as páginas que constituem a tabela têm que estar

sempre em memória?I E as páginas com o SO?

I Outras:I Quantas page tables são necessárias?I Como é que a MV paginada assegura protecção entre

processos?I Que medidas se pode tomar para reduzir a frequência de

page-fault?I Por que razões a MV funciona, i.e. tem um desempenho

próximo do dum sistema com capacidade de memóriainfinita?

Page 57: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Sumário

Conceitos e Técnicas Básicas

Swapping

Gestão da Memória Física

Memória VirtualFundamentosConversão de EndereçosPage FaultsAlgoritmos de Substituição de PáginasSwap AreaEnvolvimento do SOInteracção com E/S

Leitura Adicional

Page 58: Sistemas Operativos: Gestão de Memóriapfs/aulas/so1011/at/10vm.pdf · CPU Cont.Memoria Disco. Hierarquia de Memória I Praticamente qualquer programador gostaria de dispôr de memória:

Leitura Adicional

Modern Operating Systems, 2nd. Ed.

I Secção 4.1: Fundamentos (4.1.1, 4.1.2 e 4.1.5)I Secção 4.2: SwappingI Secção 4.3: Memória VirtualI Secção 4.4: Page Replacement AlgorithmsI Secção 4.6: Design Issues (até 4.6.2 inclusivé).I Secção 4.7: Implementation Issues (excepto 4.7.3).