10/11/2014
1
Gerenciamento de Memória
Prof. Alexandre Beletti Ferreira
Gerência de Memória
• Sistemas Monoprogramáveis = gerenciamento simplificado
• Sistemas Multiprogramáveis = gerenciamento crítico (muitos usuários / aplicações)
2
10/11/2014
2
Sem abstração de memória
• Comp. Grande Porte (antes de 1960)
• Microcomputdores (antes de 1970)
• PCs (antes de 1980)
• Exemplo: MOV REG,[1000]
3
Código Absoluto X Código Relativo
(a) Programa A (16K)(b) Programa B (16K)(c) Os dois Programas
A instrução no endereço 16384 irá saltar para a área de outro processo.
O IBM 360 resolvia comuma constante de relocação.Processo lento e precisalocalizar o que é endereço eo que é valor.
4
10/11/2014
3
Abstração de Memória
• Espaço de Endereçamento é análogo ao conceito de Processo (criar uma memória virtual como também cria uma UCP virtual)
5
Registrador Base e Limite
CDC 6600 implementava8088 não tinha o limite, porém múltiplos registradores
O hardware tratou o JMP 28 como um JMP 16412, protegendo o outro processo.
Se a memória fosse grande o suficiente isso bastaria...
6
10/11/2014
4
Gerenciamento de Memória Livre
• Gerenciamento com mapa de bits (b)
• Gerenciamento com listas encadeadas (c)
7
Memória Virtual
• Memória Virtual = Memória Principal (RAM) + Memória Secundária (HD)
• Simulação de um espaço de memória maior do que a memória real
• Não existe vínculo direto dos endereços dos programas aos endereços físicos
• Somente partes dos processos estão na RAM, permitindo um número maior de processos
8
10/11/2014
5
Histórico
• 1960 = Atlas (Univ. Manchester)
• 1972 = System 370 (IBM)
• A maioria dos computadores atuais implementa memória virtual (exceto supercomputadores)
9
Espaço de Endereçamento Virtual
• Processo = Contexto de Hardware + Contexto de Software + Espaço de Endereçamento
• Espaço de Endereçamento = Endereçamento Virtual
• O programador que faz uso de linguagem de alto nível não tem acesso aos endereços reais
• Mesmo o de baixo nível, fica sujeito as restrições impostas pelo Modo Usuário
10
10/11/2014
6
End. Real X End. Virtual
• Exemplo: MOV REG,[1000]
• Em computadores sem memória virtual o endereço virtual é idêntico ao físico
• Em computadores com memória virtual o endereço virtual precisa ser tratado pela MMU
11
Espaço de Endereçamento Virtual
CONTINUA12
10/11/2014
7
Espaço de Endereçamento Virtual
CONTINUA13
Mapeamento
• O processador trabalha com endereços reais
• MMU (hardware) junto ao SO (software) traduz endereços virtuais em reais
14
10/11/2014
8
Tabela de Mapeamento
15
Espaço Virtual X Tamanho do Bloco
• Se o mapeamento fosse para cada célula de memória principal, o espaço da tabela seria tão grande quanto o espaço de endereçamento virtual de cada processo.
• Quanto maior o bloco, menos entradas na tabela de mapeamento e, consequentemente, tabelas de mapeamento que ocupam menos espaço na memória
CONTINUA16
10/11/2014
9
Modelos de Memória Virtual
• Paginação = Bloco de Tamanho Fixo
• Segmentação = Bloco de Tamanho Variável
• Segmentação com Paginação = Híbrido
17
Paginação
• Blocos Fixos = Páginas
• Espaço Virtual = Páginas Virtuais
• Espaço Real = Páginas Reais ou Frames
• Cada processo possui sua própria tabela de páginas
• Cada página virtual do processo possui uma Entrada na Tabela de Páginas (ETP)
18
10/11/2014
11
Endereço Virtual
• Endereço Virtual = Número da Página Virtual (NPV) + Deslocamento
• Deslocamento = Posição do Endereço Virtual Em Relação ao Início da Página
• Endereço Real (Físico) = Endereço do Frame + Deslocamento
• ETP possui também o bit de validade, que indica se uma página virtual está ou não na RAM
CONTINUA21
Tradução do Endereço Virtual
22
10/11/2014
12
Page Fault
• Processo tenta acessar página que não está na RAM (bit de validade = 0)
• SO transfere página da memória secundária para a memória principal (PAGE IN)
• Taxa de Paginação = Número de Page Faults
• Page Fault gera uma mudança do estado do processo: Execução -> Pronto
CONTINUA23
Mecanismo de Tradução
24
10/11/2014
13
MMU – 16 páginas de 4K
25
TLB (memória associativa)
• Hardware presente na MMU para mapear endereços virtuais em físicos sem passar pela tabela de páginas
• As páginas mais acessadas são referenciadas
26
10/11/2014
14
Políticas de Busca de Páginas
• Por Demanda (Demand Paging)
Ex: Rotinas de tratamento de erro podem nunca ser carregadas
• Antecipada (Prepaging)
Ex: Se o programa estiver sequencialmente no disco pode ser uma vantagem (“otimização”)
27
Políticas de Alocação de Páginas
• Alocação Fixa
Número Máximo de Frames por Processo
Pode gerar excesso de Page Faults
• Alocação Variável
Altas taxas de paginação geram ampliação do limite máximo de Frames
28
10/11/2014
15
Políticas de Substituição de Páginas
• Página foi modificada = Page Out (salvar)
• Página não modificada = Substitua
• Dirty/Modify Bit = Indica páginas modificadas
• Substituição Local = páginas do próprio processo
• Substituição Global = páginas de todos processos
29
Local (b) e Global (c)
30
10/11/2014
16
Algoritmos de Substituição de Páginas
• Ótimo
• Aleatório
• FIFO (First In First Out)– FIFO com Buffer
– FIFO Circular
• LFU (Last Frequently Used)
• LRU (Last Recently Used)
• NRU (Not Recently Used)
31
Swapping em Memória Virtual
• Insuficiência de memória principal
• Processos são selecionados para saírem da RAM
• Swap out = Retirar processo da RAM
• Swap in = Retorno de um processo a RAM
• Swap file = Arquivo/Partição de Troca
• Existem várias políticas de seleção de processos (Ex: estado do processo ou prioridade)
CONTINUA32
10/11/2014
17
Swapping em Memória Virtual
33
Segmentação
• A memória virtual “tradicionalmente” vai de 0 até um endereço máximo em um espaço unidimensional
• Dividir em espaços de endereçamento separado pode otimizar alguns procedimentos
34
10/11/2014
18
Memória Segmentada
35
Implementação de Segmentação Pura
36Checkboarding(segmentação externa) Compactação
10/11/2014
19
Paginação X Segmentação
37
Segmentação Paginada – Pentium Intel
• Possui 16K segmentos independentes
• Cada segmento com até um bilhão de palavras de 32 bits
• Faz uso de duas tabelas:
• LDT = Local Descriptor Table
• GDT = Global Descriptor Table
• Cada programa possui a sua LDT mas a GDT é compartilhada por todos
38
10/11/2014
20
Segmentação Paginada – Pentium Intel
• Carrega um seletor para aquele segmento dentro de um dos registrados: CS, DS, ES, SS, FS e GS
• Resumidamente, temos a memória acessada como segmentos e dentro dos segmentos podemos ter:
• Paginação Desabilitada ou Habilitada.
39
Paginação Desabilitada X Habilitada
• Desabilitada:
Endereço Linear = Interpretado como endereço físico
• Habilitada:
Endereço Linear = Endereço Virtual e mapeado sobre um endereço físico (como já vimos desde o início...)
40
10/11/2014
21
Referências
• TANENBAUM,A.S., Sistemas Operacionais Modernos - 3ª edição. Peason, 2010.
• SILBERSCHATZ, A., GALVIN, P.B., GAGNE, G.,Fundamentos de Sistemas Operacionais. LTC, 2010.
• MACHADO F.B.M., MAIA L.P.,Arquitetura de Sistemas Operacionais. LTC, 2013.
• TANENBAUM,A.S., WOODHULL, ,Sistemas Operacionais - Projeto e Implementação - 3ª edição. Bookman, 2008.
41