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