gerenciamento de memória

32
Gerenciamento de Memória Walter Fetter Lages [email protected] Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo Real Copyright (c) Walter Fetter Lages – p.1

Upload: elliando-dias

Post on 05-Dec-2014

4.195 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Gerenciamento de Memória

Gerenciamento de MemóriaWalter Fetter [email protected]

Universidade Federal do Rio Grande do SulEscola de Engenharia

Departamento de Engenharia ElétricaENG04008 Sistemas de Tempo Real

Copyright (c) Walter Fetter Lages – p.1

Page 2: Gerenciamento de Memória

Introdução

• Alocação e desalocação de memória• Estática• Dinâmica

• Memória virtual• Overlay• Paginação

• Segmentação de memória

Copyright (c) Walter Fetter Lages – p.2

Page 3: Gerenciamento de Memória

Sistemas Monotarefa

• Um único programa na memória• O programa utiliza toda a memória• O programa deve ter todos os drivers de I/O

• Divisão da memória entre o programa e o sistemaoperacional

Copyright (c) Walter Fetter Lages – p.3

Page 4: Gerenciamento de Memória

Sistemas Multitarefa

• Partições fixas• Partições definidas manualmente pelo

operador• Uma partição de tamanho suficiente é alocada

para cada tarefa• Em geral, o número de tarefas > número de

partições =>diversas politicas para utilizaçãodas partições

• Uma fila de tarefas para cada partição• Uma fila única• Fila única com best-fit• Fila única com best-fit e máximo de

skip-overCopyright (c) Walter Fetter Lages – p.4

Page 5: Gerenciamento de Memória

Partições Fixas

Copyright (c) Walter Fetter Lages – p.5

Page 6: Gerenciamento de Memória

Partições Variáveis

• O tamanho das partições varia conforme acriação/destruição das tarefas

• Fragmentação de memória• Compactação de memória

• Consome muito tempo -> normalmente feitodurante a alocação/desalocação de memóriaem sistemas não tempo real

• Espaço para a memória das tarefas crescer• Alocação dinâmica de memória para dados

Copyright (c) Walter Fetter Lages – p.6

Page 7: Gerenciamento de Memória

Lay-out de Memória das Tarefas

Copyright (c) Walter Fetter Lages – p.7

Page 8: Gerenciamento de Memória

Métodos de Gerenciamento

• Bit-map• Memória dividida em unidades de alocação• Existe um bit-map para sinalizar se cada

unidade de alocação está alocada ou livre• Procura por espaços livres não é eficiente

Copyright (c) Walter Fetter Lages – p.8

Page 9: Gerenciamento de Memória

Métodos de Gerenciamento

• Listas ligadas• Existe uma lista ligada que relaciona os

blocos de memória alocados e livres• Normalmente a lista é ordenada por endereço

• Algoritmos de Alocação de memória• First-fit• Next-fit• Best-fit• Worst-fit• Quick-fit

Copyright (c) Walter Fetter Lages – p.9

Page 10: Gerenciamento de Memória

Métodos de Gerenciamento

• Buddy System• Utiliza o fato dos endereços serem binários• Existe uma lista de blocos livres de tamanho

1, 2, 4, 8 ... tamanho da memória• Ineficiente no uso da memória• Fragmentação interna

Copyright (c) Walter Fetter Lages – p.10

Page 11: Gerenciamento de Memória

Buddy System

Copyright (c) Walter Fetter Lages – p.11

Page 12: Gerenciamento de Memória

Relocação

• Em sistemas multitarefa, cada tarefa terá umendereço inicial diferente. Como oprogramador/compilador/linker saberá oendereço inicial (e endereços de subrotinas,dados, etc...) da tarefa?• Problema da relocação• Gerar apenas código com endereços relativos

• Código relocável• Relocação durante a carga da tarefa na

memória

Copyright (c) Walter Fetter Lages – p.12

Page 13: Gerenciamento de Memória

Segmentação

• Associa-se a cada área de memória um valor debase e um valor de limite

• base=endereço inicial• limite=endereço máximo ou tamanho• Todas as tarefas são codificadas assumindo que a

sua área de memória começa em 0• Quando a tarefa é selecionada para executar, base

e limite são carregados em registradores especiaisna CPU

Copyright (c) Walter Fetter Lages – p.13

Page 14: Gerenciamento de Memória

Segmentação

• Endereço final = Offset + base• Soma feita por hardware a cada acesso à

memória• Endereços são verificados quanto ao limite

• Uma tarefa não pode acessar a área das outras

Copyright (c) Walter Fetter Lages – p.14

Page 15: Gerenciamento de Memória

Segmentação

• O seletor e descritor de segmento são controladospelo sistema operacional

• O offset é controlado pelo programa de aplicação• Proteção

• Usualmente o descritor de segmentos temalguns bits associados que são utilizados paradeterminar as características de proteção dosegmento

• Permissões de leitura, escrita, execução• Cache de descritor de segmento

• Evita dois acessos a memória• Alterado apenas quando o registrador de

seletor de segmento é alterado Copyright (c) Walter Fetter Lages – p.15

Page 16: Gerenciamento de Memória

Segmentação no ix86

• Local Descriptor Table (LDT)• Global Descriptor Table (GDT)

Copyright (c) Walter Fetter Lages – p.16

Page 17: Gerenciamento de Memória

GLDT e LDT

Copyright (c) Walter Fetter Lages – p.17

Page 18: Gerenciamento de Memória

Segmentação no ix86

Copyright (c) Walter Fetter Lages – p.18

Page 19: Gerenciamento de Memória

Seletor de Segmento no ix86

Copyright (c) Walter Fetter Lages – p.19

Page 20: Gerenciamento de Memória

Descritor de Segmento

Copyright (c) Walter Fetter Lages – p.20

Page 21: Gerenciamento de Memória

Segmentação no 8086/8088

• Processadores sem modo protegido• Sem proteção, não tem sentido a existência de

permissões e limite no segmento• O descritor de segmento resume-se à base• Como os registradores são de 16 bits

decidiu-se limitar o início de segmentosapenas alinhados com "parágrafos"

• Segmentação mal implementada• O "tamanho máximo"do segmento é 64KB• O limite do segmento não é garantido• Na verdade é apenas um esquema para

endereçar 1MB utilizando 2 registradoresCopyright (c) Walter Fetter Lages – p.21

Page 22: Gerenciamento de Memória

Segmentação no 8086/8088

• Endereço físico=reg. de segmento * 16 + offset• Endereço físico=reg. de segmento « 4 + offset

Copyright (c) Walter Fetter Lages – p.22

Page 23: Gerenciamento de Memória

Memória Virtual

• Paginação• Falta de

página• Page-table

• Endereço• Virtual• Físico

Copyright (c) Walter Fetter Lages – p.23

Page 24: Gerenciamento de Memória

Tabela de Páginas

Copyright (c) Walter Fetter Lages – p.24

Page 25: Gerenciamento de Memória

Hardware de Paginação

• Usualmente a tabela de páginas é mantida emmemória e não em registradores• Registrador de base da tabela de páginas• Translation look-aside buffer (TLB)

• Evita dois acessos a memória• Memória associativa

• Páginas também podem ter bits de proteçãoassociados• Bit de presença/ausência

Copyright (c) Walter Fetter Lages – p.25

Page 26: Gerenciamento de Memória

Páginas de 4KB no ix86

Copyright (c) Walter Fetter Lages – p.26

Page 27: Gerenciamento de Memória

Páginas de 4MB no ix86

Copyright (c) Walter Fetter Lages – p.27

Page 28: Gerenciamento de Memória

Segmentação e Paginação no ix86

Copyright (c) Walter Fetter Lages – p.28

Page 29: Gerenciamento de Memória

Proteção de Memória no ix86

Copyright (c) Walter Fetter Lages – p.29

Page 30: Gerenciamento de Memória

Proteção de I/O no ix86

• Existe um nível de privilégio de I/O• Apenas processos com nível de privilégio

menor ou igual podem executar instruções deI/O

• Associado a cada processo pode existir umbitmap de permissões de I/O• Apenas as portas habilitadas podem ser

acessadas• Hardware Virtual

• Virtualização de dispositivos

Copyright (c) Walter Fetter Lages – p.30

Page 31: Gerenciamento de Memória

Verificação de Privilégios

Copyright (c) Walter Fetter Lages – p.31

Page 32: Gerenciamento de Memória

I/O Permission Bit Map

Copyright (c) Walter Fetter Lages – p.32