48
1/48 Sistemas Operacionais Gestão de memória - Hardware de memória Prof. Carlos Maziero DInf UFPR, Curitiba PR Abril de 2019

Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

1/48

Sistemas OperacionaisGestão de memória - Hardware de memória

Prof. Carlos Maziero

DInf UFPR, Curitiba PR

Abril de 2019

Page 2: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

2/48

Conteúdo

1 Organização da memória

2 Memória virtual

Memória virtual por partições

Memória virtual por segmentos

Memória virtual por páginas

3 Localidade de referências

4 Organização do espaço de endereços

Page 3: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

3/48

A memória física

Espaço de memória RAM do computador

Grande conjunto de bytes com endereços individuais

Conteúdo:

Sistema operacional

Aplicações em execução

Bu�ers de entrada/saída

Dividida em áreas com diferentes finalidades

Page 4: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

4/48

Organização básica da memória

interrupt vectors

BIOS data

Video RAM

VGA ROM

BIOS ROM

0

1MBLow memory

ACPI data

I/O mapping

3GB

16GB

4GB

free RAM

free RAM

free RAM(DOS area)

640KB

1MB

Page 5: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

5/48

Espaço de endereçamento

Faixa de endereços que o processador consegue gerar

Depende da arquitetura e tamanho de barramentos

80386: CPU 32 bits, bus 32 bits, 232 endereços

Core i7: (CPU 64 bits, bus 48 bits, 248 endereços

Não depende da quantidade de RAM disponível!

Endereço válido: existe um byte de RAM naquela posição

Endereço inválido: não existe RAM naquela posição

Page 6: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

6/48

Memória virtual

Separação entre memória RAM e espaço de endereçamento:

Endereços físicos : endereços acessadas na memória RAM

Endereços lógicos : endereços gerados pelo processador aoexecutar.

Ao executar, a CPU e os processos só veem endereços lógicos

A memória RAM é acessada por endereços físicos

Page 7: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

7/48

Memória virtual

A conversão Lógico→ Físico é feita pela MMU:

Hardware: Unidade de Gerência de Memória

Fica entre o processador e a memória RAM

Pode ser gerenciada pelo núcleo do SO

Gera IRq se a conversão L→ F não for possível

Page 8: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

8/48

Unidade de gerência de memória

processor

memory

MMU

control

data

address

bus

logical adress

physical address

interrupt

physical address

Page 9: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

9/48

Memória virtual

Memória virtual:

Forma como a CPU e o so�ware vêem a memória

Corresponde aos endereços lógicos

Tradução L→ F é feita pela MMU

Várias formas de implementar:

Por partições

Por segmentos

Por páginas

Por segmentos e páginas

Page 10: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

10/48

Memória virtual por partições

Definição de partição:

Área de RAM contígua (sem buracos) com T bytes

Endereços lógicos no intervalo [0 . . . T − 1]

As partições podem ser tamanhos iguais ou distintos

As partições podem ser tamanhos fixos ou variáveis

Cada partição é ocupada por um processo

Page 11: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

11/48

Memória virtual por partições

14.257

RAM

logical address

physical address

address translation mechanism

process pb

14.999

0

55.257

55.999

process pc

process pa

0

kernelarea

41.000

9.999

0

10.999

0

Page 12: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

12/48

Memória virtual por partições

Implementação da MMU:

Dois registradores:

Base (B): endereço físico inicial da partição ativaLimite (L): tamanho em bytes dessa partição

Valores de B e L ajustados a cada troca de contexto

Uma tabela contém B e L de todas as partições

Page 13: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

13/48

Memória virtual por partições

O<L

IRq: partition violation

14.25714257

2

15000 41000PTBR

10000 6000

11000 70000

15000 41000

... ...

partition table RAM

... ...

Active processpartition

limit

address

base

55.257

0

kernelarea

0

1

2

3

yes

nophysicaladdress

logicaladdress

MMU

55.257

0

14.999

41.000

Page 14: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

14/48

Memória virtual por partições

Vantagens:

Simplicidade

Rapidez

Desvantagens:

Processos podem ter tamanhos distintos das partições

Número de processos é limitado às partições

Processos maiores que a maior partição não podemexecutar

Dificuldade para compartilhar memória

Page 15: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

15/48

Memória virtual por segmentos

Cada processo tem um conjunto de áreas:

TEXT, DATA, BSS, HEAP, STACK

bibliotecas compartilhadas, etc.

Ideia: estender o modelo de partições:

O espaço de endereçamento é dividido em segmentosCada área do processo fica em um segmentoCada processo tem uma tabela de segmentos

Page 16: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

16/48

Memória virtual por segmentos

[3 : 6.914]

RAM

0

kernelarea

logicaladdress

0

1

1

0

3

2

2

38.914

physicaladdress

address translation mechanismprocess pa

process pb

Page 17: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

17/48

Memória virtual por segmentos

Usa endereços lógicos bidimensionais [S : O]

S: número do segmento na tabela do processo

O: o�set (posição) dentro do segmento

Tabela de segmentos contém:

Base e limite de cada segmento

Permissões do segmento (read, write, ...)

Outros flags

A tradução de endereços é similar ao modelo por partições

Page 18: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

18/48

Memória virtual por segmentos

O<L

IRq: segmentation violation

[3 : 6.914]6914

3

7500 32000STBR

5500 1200

4200 8000

10500 15000

7500 32000

segment table RAM

... ...

Active process

segment

limit

offset

base

38.914

0

kernelarea

0

1

2

3

yes

no

0

1 2

3

4

physicaladdress

logicaladdress

MMU

38.914

Page 19: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

19/48

No Intel 80.386

Duas tabelas de segmentos por processo:

Local Descriptor Table (LDT): segmentos locais do processo

Global Descriptor Table (GDT): segmentos compartilhadosentre vários processos (DLLs, bu�ers, etc)

Cada tabela tem até 8.192 entradas

Registradores para os segmentos mais usados:

CS: Code Segment, código em execução

SS: Stack Segment, pilha do processo

DS, ES, FS, GS: Data Segments, dados usados pelo processo

Page 20: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

20/48

Memória virtual por páginas

Dividir RAM e espaço de endereçamento em blocos:

Endereços lógicos são divididos em páginasEndereços físicos são divididos em quadrosAmbos têm o mesmo tamanho (geralmente 4.096 bytes)

A tradução L→ F consiste em mapear páginas em quadros

O endereços lógicos continuam lineares (unidimensionais)

Page 21: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

21/48

Memória virtual por páginasRAM

0

kernelarea

pageframes

address translation mechanism

process pa

process pb

pages0

0

Page 22: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

22/48

Tradução páginas→ quadros

Mapear as páginas usadas pelos processos em quadros de RAM

Usa uma Tabela de Páginas (page table):

Cada entrada da tabela corresponde a uma página

A entrada contém o número do quadro e outros flags

Cada processo possui sua tabela de páginas

Page Table Base Register (PTBR) indica a tabela ativa

O número de página é extraído do endereço lógico

Page 23: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

23/48

Estrutura do endereço lógico

CPU de 32 bits com páginas de 4.096 bytes (212 bytes):

01803E9Ah →

page: 20 bits︷ ︸︸ ︷0000 0001 1000 0000 0011

o�set: 12 bits︷ ︸︸ ︷1110 1001 10102

page=01803h︷ ︸︸ ︷0000 0001 1000 0000 0011

o�set=E9Ah︷ ︸︸ ︷1110 1001 10102

→ page = 01803h o�set = E9Ah

Page 24: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

24/48

Estrutura do endereço lógico

CPU de 32 bits com páginas de 4 KBytes:

Endereços lógicos de 32 bits e páginas com 4 Kbytes

4 Kbytes são 212 bytes: o deslocamento usa 12 bits

Page Number: 20 bits mais significativos

O�set: 12 bits menos significativos

Os 20 bits mais significativos definem 220 páginas

Espaço total: até 1.048.576 páginas com 4.096 bytes cada

Page 25: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

25/48

Tradução de endereços

Passos da MMU para a tradução L→ F :

1 Decompor o endereço lógico:

número da página (bits mais significativos)o�set (bits menos significativos)

2 Consultar a tabela de páginas ativa:

obter o número do quadro correspondente à páginase a página não está mapeada, gerar uma falta de página

3 Construir o endereço físico:

número do quadro (bits mais significativos)o�set (bits menos significativos)

Page 26: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

26/48

Tradução de endereços

0180 3E9A

1803

E9A

PTBR

page table

Active process

page

offset0002 FE9A

physicaladdress

logicaladdress

MMU

0

RAM

0

kernelarea

2F

E9A

frame

13 - - - - 76- 2F 1A

0 18031

1

2

3

Page 27: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

27/48

Flags de controle das páginas

Valid: página mapeada no espaço do processo

Writable: página pode ser acessada em escrita

User: indica código de usuário ou de núcleo

Present: a página está presente na memória RAM

Accessed: a página foi acessada recentemente

Dirty: página foi modificada recentemente

Outros flags, para uso do núcleo do SO

Conteúdo depende da arquitetura do processador

Page 28: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

28/48

Tamanho da tabela de páginasEm uma CPU de 32 bits com páginas de 4 Kbytes:

Uma entrada na tabela: ∼ 32 bits

Tabela com 220 páginas: 4 Mbytes de RAM

Desperdício de RAM em processos pequenos

20 páginasmapeadas

100 páginasmapeadas

1.048.576 ponteiros de 32 bits = 4 MBytes

0 1 2 3

1.048.456 páginas não-mapeadas

Page 29: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

29/48

Tabelas de páginas multi-níveis

São estruturadas como árvores:

tabela de páginas de primeiro nível (diretório de páginas)

tabelas de páginas de segundo nível

tabelas de páginas de terceiro nível

...

Número de níveis depende da arquitetura:

2 níveis: Intel 80.386

3 níveis: Sun Sparc, DEC Alpha

4 níveis: Intel core, Intel i3/i5/i7

Page 30: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

30/48

Tabela de páginas com 2 níveis

0 1 2 3 1023

3 x 1.024 ponteiros de 32 bits = 12 KBytes

0 1 2 1023 0 1 2 3 10239998 1004

100 páginasmapeadas

20 páginasmapeadas

Cada subtabela ocupa uma página (4.096 bytes)

Page 31: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

31/48

Estrutura do endereço lógico

CPU de 32 bits, páginas de 4 KBytes, dois níveis (10 bits cada):

01803E9Ah →

p2:10 bits︷ ︸︸ ︷0000 0001 10

p1:10 bits︷ ︸︸ ︷00 0000 0011

o�set:12bits︷ ︸︸ ︷1110 1001 1010

p2=0006h︷ ︸︸ ︷0000 0001 10

p1=0003h︷ ︸︸ ︷00 0000 0011

o�set=E9Ah︷ ︸︸ ︷1110 1001 1010

→ p2 = 0006h p1 = 0003h o�set = E9Ah

Page 32: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

32/48

Tradução de endereços pela MMU

1 Decompor o endereço lógico L:

índice externo com 10 bits (p2)índice interno com 10 bits (p1)o�set com 12 bits (O)

2 Usar p2 como índice na tabela externa:

obter o endereço da tabela internase não estiver mapeada, page fault

3 Usar p1 como índice na tabela interna:obter o número do quadro Qse não estiver mapeada, page fault

4 Construir o endereço físico com Q e O

Page 33: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

33/48

Tabelas multi-níveis

0180 3E9A3

E9A

PTBR

page table

Active process

p1

offset

0002 FE9A

physicaladdress

logicaladdress

MMU

0

RAM

0

kernelarea

2F

E9A

frame

- - - -

0 6

6 p2

2B

AA

13

2F

-

-

3

0

1

1

2

3

4

Page 34: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

34/48

Economia da tabela multi-níveis

Para um processo pequeno (2 páginas):

Com um nível: 4 × 220 = 4 MBytes

Com dois níveis: 4 × (210 + 2 × 210) = 12 KBytes

Para um processo grande (220 páginas):

Com um nível: 4 × 220 = 4 MBytes

Com dois níveis: 4 × (210 + 210 × 210) ≈ 4, 004 MBytes

CUSTO: cada tradução precisa mais acessos à RAM (tabelas)

Page 35: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

35/48

Cache da tabela de páginas

Muitas traduções P → Q são repetidas

TLB - Translation Lookaside Bu�er:

cache interno da MMU para traduções recentes

armazena traduções P → Q recentes

funciona como uma tabela de hash em hardware

pequeno: entre 16 e 256 entradas

É um cache rápido:

um acerto (cache hit) custa 1 ciclo de clock

um erro custa de 10 a 30 ciclos de clock

Page 36: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

36/48

Funcionamento do TLB

Para traduzir um endereço lógico L, a MMU:

1 decompõe L em P (página) e O (o�set)

2 verifica se P → Q está no cache TLB

3 se estiver (TLB hit), pega Q

4 caso contrário (TLB miss), busca Q na tabela de páginas(passos 4-6)

7 usa Q e O para obter o endereço físico F

8 a tradução P → Q é adicionada ao TLB

Page 37: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

37/48

Cache da tabela de páginas

0180 3E9A3

E9A

PTBR

page table

Active process

p1

offset

0002 FE9A

physicaladdress

logicaladdress

MMU

0

RAM

0

kernelarea

2F

E9A

frame

- - - -

0 6

6 p2

2B

AA

13

2F

-

-

3

0

1

1

2

4

5

TLB

6

8

7

3

Page 38: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

38/48

Desempenho do TLB

Considerando o seguinte sistema:

Frequência de CPU de 2 GHz (relógio de 0,5 ns)

Tempo de acesso à RAM de 50 ns

Tabelas de páginas com 3 níveis

TLB com custo de acerto de 0,5 ns e de erro de 10 ns

Calcular tempo médio de acesso à RAM:

sem TLB

com TLB e taxa de acerto de 95%

Page 39: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

39/48

Desempenho do acesso à RAM

Sem TLB: tmed =

tables︷ ︸︸ ︷3 × 50 ns +

address︷︸︸︷50 ns = 200 ns

Com TLB (hit): tmed = thit + taddress

Com TLB (miss): tmed = tmiss + ttables + taddress

tmed (95%) = 95% × (0, 5 ns + 50 ns)

+ 5% × (10 ns + 3 × 50 ns + 50 ns)

= 58, 475 ns

tmed (90%) = 66, 45 ns

Page 40: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

40/48

Cache da tabela de páginas

Fatores que influenciam a taxa de acertos do TLB:

Tamanho do TLB: quanto mais entradas, mais acertos

Política de substituição das entradas do TLB

Trocas de contexto exigem a limpeza do TLB

Padrão de acessos à memória (localidade de referências)

Page 41: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

41/48

Localidade de referências

Concentração dos acessos à memória no espaço e/ou tempo.

Impacta na eficiência dos mecanismos de gerência de memória.

Três formas básicas:

Temporal: um recurso usado há pouco tempo seráprovavelmente usado novamente em breve;

Espacial: um recurso será mais provavelmente acessadose outro recurso próximo a ele já foi acessado;

Sequencial: após o acesso a um recurso na posição p, hámaior probabilidade de acessar um recurso em p + 1

Page 42: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

42/48

Localidade de referências

Exemplo: visualizador de imagens gThumb (ambiente Gnome):

Page 43: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

43/48

Localidade de referênciasExemplo: Preenchimento de uma matriz por linhas:

1 unsigned char buffer[4096][4096] ;2

3 int main ()4 {5 for (int i=0; i<4096; i++) // percorre as linhas do buffer6 for (int j=0; j<4096; j++) // percorre as colunas do buffer7 buffer[i][j]= (i+j) % 256 ;8 }

Ou por colunas:

1 ...2 for (j=0; j<4096; j++) // percorre as colunas do buffer3 for (i=0; i<4096; i++) // percorre as linhas do buffer4 buffer[i][j]= (i+j) % 256 ;5 ...

Page 44: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

44/48

Padrão de acessos à memória

i

j

página

0

1

2

3

4095

4

409543210

Page 45: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

45/48

Diferenças de desempenhoPor linhas: ∼ 5 páginas distintas em 100.000 acessos

Por colunas: ∼ 3.000 páginas distintas em 100.000 acessos

�al o impacto sobre o desempenho do TLB?

Page 46: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

46/48

Localidade de referências

Fatores que influenciam a localidade de referências:

As estruturas de dados usadas pelo programa

vetores e matrizes têm mais localidade de referênciaslistas encadeadas e árvores podem ter baixa localidade

Os algoritmos usados pelo programa

acessos por linhas ou por colunas

A qualidade do compiladorcolocar variáveis usadas juntas nas mesmas páginasalinhar as estruturas de dados nas páginas

Page 47: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

47/48

Espaço de endereçamento

Na maioria dos sistemas operacionais atuais:

O início do espaço de endereçamento é do processo

O final do espaço de endereçamento é do núcleo

O núcleo faz parte do espaço do processo

Páginas do núcleo protegidas por flags (page table)

Endereços de páginas importantes do núcleo ficam na TLB

Page 48: Sistemas Operacionais - Gestão de memória - Hardware de ...wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=socm:socm-slides-1… · Dividir RAM e espaço de endereçamento em blocos:

48/48

Espaço de endereçamento

Linux 32 bits

1 GB kernel space

0x00000000

user space

0xbfffffff0xc0000000

0xffffffff

3 GB

2 GB kernel space

0x00000000

user space

0x7fffffff0x80000000

0xffffffff

2 GB

8 TB kernel space

0x000000000000

user space

0xffffffffffff

8 TB

Windows 32 bits Linux 64 bits Windows 64 bits

128 TB kernel space

0x000000000000

user space

0x7fffffffffff0x800000000000

0xffffffffffff

128 TB

0x07ffffffffff

0xf80000000000

not used

Layouts sendo revisados devidos ao bug MeltDown (2018).