Sistemas Operativos

Propaganda
Sistemas Operativos
Gestão de Memória (MMU)
IA32_vol3A.pdf
“Operating Systems: Internals and Design Principles”, William Stallings, cap 7
Alguns slides adaptados dos slides do professor Jorge Martins
Centro de Cálculo
Instituto Superior de Engenharia de Lisboa
João Pedro Patriarca
([email protected])
Motivação / objectivos
• De uma forma geral, a motivação é promover uma melhor utilização dos
recursos disponíveis (neste caso memória)
• Manter em memória processos capazes de realizar trabalho útil
• Características a considerar
–
–
–
–
–
Deslocalização
Proteção
Partilha
Organização lógica
Organização física
• Providenciar o conceito de Memória Virtual
– Criar a ilusão que cada processo tem disponível todo o seu espaço de
endereçamento
– Conseguir executar o maior de número de programas possível mantendo uma
celeridade de execução global satisfatória
• Combinação conjunta de esforços entre hardware e sistema operativo
CCISEL
Sistemas Operativos: Gestão de Memória
Experiência
1. exp4.c: exemplo para observar a gestão de memória
através da aplicação Task Manager
Termos relevantes (glossário)
• Memória real, física ou principal
• Memória secundária
• Memória virtual, espaço de endereçamento de um processo ou
espaço de endereçamento virtual
• Endereço físico
• Endereço virtual ou linear
• Endereço lógico
CCISEL
Sistemas Operativos: Gestão de Memória
Esquemas para gestão de memória
• Esquemas sem expressividade atual (presente em sistemas antigos da IBM)
– Partição fixa
– Partição dinâmica
• Esquemas usados pelos Sistemas Operativos atuais
– Segmentação
– Paginação
– Combinação entre segmentação e paginação
CCISEL
Sistemas Operativos: Gestão de Memória
Esquema para gestão de memória
Partição fixa
• Memória dividida num conjunto de partições fixo
• Partições de dimensões iguais
– Fragmentação interna para processos com dimensão inferior à partição
– Sobreposição de módulos para processos com dimensão superior à partição
• Partições de dimensões diferentes
– Atenua os problemas presentes no esquema anterior mas não resolve
– Importante conhecer antecipadamente a dimensão do processo (nem sempre é
possível)
• Algoritmo para posicionamento
– Partições de dimensão iguais
• Qualquer partição livre é candidata
• Qualquer partição cujo processo residente não esteja preparado para executar
– Partições de dimensão diferentes
• Uma fila de espera associada a cada partição para uma melhor utilização da
memória
• Uma fila de espera única para melhorar a eficiência do sistema
CCISEL
Sistemas Operativos: Gestão de Memória
Partição fixa
CCISEL
Sistemas Operativos: Gestão de Memória
Esquema para gestão de memória
Partição dinâmica
• Partições em número e dimensão variável
• Muito semelhante ao algoritmo estudado (em PSC) para alocação
dinâmica
• Elimina a fragmentação interna
– Aloca o espaço estritamente necessário para alojar o processo
• Favorece a fragmentação externa
– Compactação como técnica para combater a fragmentação externa
• Algoritmo para posicionamento
– First-fit e Next-fit, Best-fit
CCISEL
Sistemas Operativos: Gestão de Memória
Modos de operação da arquitetura IA32
• Modo real
– Modo compatível com o 8086
– Modo de arranque do CPU após reset
– Suporta apenas o modelo de memória real address – espaço de
endereçamento físico igual a 1 MB
• Modo protegido
– Modo de operação normal do CPU
– Usa o modelo de memória segmentado com possibilidade de usar
também o modelo paginado (relevante apenas o modelo paginado nas
arquiteturas atuais)
• System managment mode – não é relevante no âmbito do estudo
• Modo IA32e
– Modo possível em arquitecturas de 64 bits
– Dois sub-modos:
• modo compatível – compatível com o modelo de memória Protected mode
• modo 64 bits: 64 bits de endereço linear e mais de 64 GB de endereçamento
físico
CCISEL
Sistemas Operativos: Gestão de Memória
Esquema para gestão de memória
Segmentação
• Originalmente (modo real) – arquitetura 8086
–
–
–
–
Arquitetura a 16 bits com espaço de endereçamento físico de 1 MByte
Registos de segmento: , , e
Endereço físico =
Dimensão de um segmento variável com limite máximo igual a 64 KBytes
• Atualmente – introdução de uma tabela de descritores para
providenciar deslocalização (Descriptor Table)
– Os registos de segmento passam a chamar-se registos Seletores de
Segmento
– exemplo para x86
CCISEL
Sistemas Operativos: Gestão de Memória
Registos de gestão de memória
CCISEL
Sistemas Operativos: Gestão de Memória
Tabela de descritores
• Tabela de dimensão variável
• Pode conter até 8192 entradas
– A primeira entrada não é usada
• Cada entrada constituída por 8 bytes
• Registo GDTR (x86) guarda endereço linear base da tabela
• Registos de segmento fazem cache da informação do descritor
CCISEL
Sistemas Operativos: Gestão de Memória
Modelo de segmentação usado pelos Sistemas Operativos
atuais
• Basic Flat model
– 2 descritores no mínimo: CS e DS
– Todos os descritores com os mesmos valores:
• Base address = 0
• Limit = 0xFFFFFFFF
• Outros modelos possíveis
– Protected Flat Model – o campo limite do descritor é validado
– Multi-segment Model
CCISEL
Sistemas Operativos: Gestão de Memória
Esquema para gestão de memória
Paginação
• Princípios:
– Memória principal dividida em frames de
dimensão reduzida e fixa
– Espaço de endereçamento dos processos
igualmente dividido em páginas de dimensão
igual à dimensão das frames
– Endereço virtual/linear versus endereço físico
• O sistema operativo mantém uma tabela de páginas (PT) por
processo
• Como converter um endereço virtual/linear num endereço físico?
CCISEL
Sistemas Operativos: Gestão de Memória
Paginação
Estrutura de suporte
• A conversão é muito simples se a dimensão da página corresponder
a uma potência inteira de 2
• Considerações na decisão da dimensão da página
• Dimensão atual de uma Page Frame = 4 KBytes
– Tabela de páginas também em memória (tal como as tabelas com descritores de
segmento)
CCISEL
Sistemas Operativos: Gestão de Memória
Paginação
Estrutura de suporte (exemplo para x86)
CCISEL
Sistemas Operativos: Gestão de Memória
Paginação
PDE e PTE (exemplo para x86)
PTE
PDE
PTE/PDE
(P) Present (bit 0) – indica se a página está associada a uma Page Frame
(R/W) Read/Write – indica se a página pode ser escrita
(S/U) Superuser/User – indica se a página pode ser acedida em User Mode
(D) Dirty – indica se a página foi alterada
(A) Accessed – indica se a página foi acedida
(PS) Page Size (bit 7 of PDE) – indica a dimensão da página: 0 → 4 KB; 1 → 4 ou 2 MB
G, PAT, PDC, PWT: presentes em arquitecturas Intel actuais (não são relevantes para o estudo)
CCISEL
Sistemas Operativos: Gestão de Memória
Exercício com paginação
Considere um processador com endereços virtuais de 36 bits que utiliza
uma estrutura de paginação de dois níveis. Os endereços virtuais são
divididos em: 11 bits para a diretoria de páginas e 11 bits para as
tabelas de páginas de 2º nível.
Sabendo que as tabelas de páginas ocupam sempre uma página,
a) qual a dimensão das tabelas de páginas e de cada PTE?
b) quantas páginas existem no espaço de endereçamento virtual?
Justifique devidamente as respostas.
CCISEL
Sistemas Operativos: Gestão de Memória
Arquitetura segmentada/paginada (exemplo x86)
CCISEL
Sistemas Operativos: Gestão de Memória
Paginação
Necessidade de cache TLB (Translation Lookaside Buffer)
CCISEL
Sistemas Operativos: Gestão de Memória
TLB - cache de PTE’s
Operação da TLB dentro do sistema (hardware + software)
CCISEL
Sistemas Operativos: Gestão de Memória
Cache (de PTE’s e de dados) - overall system
CCISEL
Sistemas Operativos: Gestão de Memória
Variantes de CPUs modernos da família x86
Tabela de páginas invertida
•
Problema: as dimensões das tabelas de páginas são proporcionais ao espaço de
endereçamento de um processo e existe uma por processo
– Característica especialmente preocupante em sistemas de 64 bits
•
TP invertida: tabela única no sistema; cada entrada representa uma Page Frame
•
Invertida porque indexa a tabela com endereços físicos em vez de endereços
virtuais
CCISEL
Sistemas Operativos: Gestão de Memória
Variantes de CPUs modernos da família x86
3 modos de paginação
CCISEL
Sistemas Operativos: Gestão de Memória
Variantes de CPUs modernos da família x86
Páginas de 4M Bytes
PDE
• Quando tem sentido usar?
– Algumas partes do SO estão sempre residentes na memória principal.
Colocá-las em páginas de 4 MBytes reduz o número de entradas
ocupadas na TLB.
CCISEL
Sistemas Operativos: Gestão de Memória
Variantes de CPUs modernos da família x86
CR3 and Paging-Structure Entries with 32-Bit Paging
CCISEL
Sistemas Operativos: Gestão de Memória
Variantes de CPUs modernos da família x86
Physical Address Extensions (PAE) – páginas de 4K e 2M
•
•
•
Embora com capacidade
para endereçar 4 PBytes,
os endereços virtuais
estão limitados a 32 bits,
logo é permitido aceder
apenas a 4 GBytes num
dado instante
CCISEL
Sistemas Operativos: Gestão de Memória
Problema: mais
memória física
que memória
virtual
Traduz endereços
virtuais de 32 bits
para endereços
físicos de 52 bits
CCISEL
Sistemas Operativos: Gestão de Memória
CCISEL
Sistemas Operativos: Gestão de Memória
Paginação na arquitetura x86-64 (modo 64 bits)
•
CCISEL
Sistemas Operativos: Gestão de Memória
Problema: espaço
de endereçamento
virtual maior que
endereçamento
físico
CCISEL
Sistemas Operativos: Gestão de Memória
Memória Virtual
•
Esquema onde memória secundária pode ser endereçada como se tratasse de
memória principal (executáveis e Page Files)
– Interrupção por aceder a uma página ausente na memória principal (Page Fault)
– Todos os processos têm disponível todo o seu espaço de endereçamento
– A memória global ocupada pelos processos pode ser superior à dimensão da
memória física
– O espaço de endereçamento virtual é distinto do espaço de endereçamento físico
• Todos os endereços virtuais (lógicos) são traduzidos automaticamente para endereços
físicos em tempo de execução
• Um processo pode ser removido e novamente colocado em memória em endereços
diferentes múltiplas vezes
• Um processo pode ser dividido em páginas e/ou segmentos e as páginas e/ou segmentos
geridos em memória individualmente
•
Um processo não precisa ter todos as suas páginas/segmentos em memória para
poder ser executado
– Alta disponibilidade
• Mais processos em memória
• A dimensão de um processo pode ser superior à memória principal
•
•
Dados de leitura/escrita podem ser partilhados entre processos
Minimização do tempo de carregamento de programas
CCISEL
Sistemas Operativos: Gestão de Memória
Bibliografia
• Aspectos teóricos – William Stallings, sec 7.1 a 7.4, sec 8.1 e 8.2
• Exemplos x86 – IA32_vol3A.pdf (cap. 3 – segmentation, cap. 4 –
paging)
CCISEL
Sistemas Operativos: Gestão de Memória
Download