Gestão de memória - Memory Management Unit (MMU) A distinção entre espaço de edereçamento virtual e espaço de endereçamento físico é fundamental na eficiente gestão do recurso memória física (RAM) por parte dos sistemas operativos. Há que atender nomeadamente a: protecção partilha memória virtual Criar a ilusão que cada processo tem disponível memória física para todo todo o seu espaço de endereçamento A ilusão é conseguida criando uma extensão em disco da memória disponível. Conseguir executar o maior de número de programas possível mantendo uma celeridade de execução global satisfatória (evitar trashing). A concretização destes objectivos com um misto de mecanismos hardware e políticas e algoritmos implementados pelo SO. Nesta primeira parte iremos estudar os mecanismo hardware de suporte, a chamada MMU. 13-03-2015 Sistemas Operativos 1
Arquitecturas de MMU Suporte hardware à construção de espaços de endereçamento virtual Arquitectura Segmentada Arquitectura Paginada Arquitectura Segmentada/Paginada Memória física Espaço de endereça mento virtual MMU 13-03-2015 Sistemas Operativos 2
Arquitectura Segmentada (Segmentação) Endereço Virtual Segmentado RAM S n-1 Selector S 0 O n-1 Offset O 0 Tabela de Descritores de segmento + Endereço Físico Segmento Físico Registo interno, alterável por instrução privilegiada, que indica o endereço físico da tabela de segmentos Limite Permissões A, M, P, R/W,E Endereço Base R/W r/w or r/o E - executable P- present A- accessed M- modified 13-03-2015 Sistemas Operativos 3
Visão aplicacional de arquitectura segmentada Na arquitectura segmentada os segmentos são visíveis às aplicações e resultam de um modelo de programação orientada à organização do código e dados em módulos, ocupando segmentos distintos. Daqui resultam mecanismo de ponteiros necessariamente mais sofisticados: Ex: necessidade de ponteiros dentro do mesmo segmento, que apenas necessitam de offset e ponteiros para segmentos externos, que têm de incluir selector e offset. Segmentos aplicacionais dentro de um processo.o espaço virtual é segmentado Memória Segmentos Físcos (SF) MMU Segmentada SFN SF1 Espaço livre Espaço ocupado 13-03-2015 Sistemas Operativos 4
Características da Segmentação Vantagens Mapeamento simples o que reduz a complexidade do hardware. A associação de uma cache de segmentos em uso evita o acesso constante à tabela de descritores. Facilita a recolocação de código e dados. Facilita a criação de regiões de memória partilhada entre processos. Desvantagens Modelo de ponteiros complexo. Gestão mais complexa da memória disponível. O facto dos blocos a gerir terem dimensões variáveis gera problemas já vistos na implementação de heaps, nomeadamente a fragmentação externa. Implementação de memória virtual pouco eficiente, devido ao tempo dispendido em escritas/leituras do disco. 13-03-2015 Sistemas Operativos 5
Arquitectura Paginada (Paginação) A N Endereço virtual linear Número da Página Offset A 0 RAM (page frames) Tabela de Páginas Índice da PTE Registo interno que indica o endereço físico da tabela de páginas Page Table Entry Flags Page Frame Number Endereço Base da Page Frame Page frame 13-03-2015 Sistemas Operativos 6
Visão aplicacional de arquitectura paginada Na arquitectura paginada as páginas são transparentes às aplicações: O espaço de endereçamento que as aplicações vêm é sempre linear, tal como o espaço de endereçamento físico. A organização lógica nada tem a ver com a organização física (ex: uma instrução ou uma variável global podem começar no final de uma página e terminar na página seguinte ocupando endereços físicos não adjacentes. Páginas lógicas e páginas físicas têm sempre a mesma dimensão. O espaço virtual é linear, dividido, de forma transparente, em páginas lógicas (ou virtuais), de dimensão constante Memória física MMU Paginada Espaço livre Espaço ocupado O tamanho das pág físicas (page frames) é igual ao das páginas virtuais 13-03-2015 Sistemas Operativos 7
Arquitectura Paginada (exemplo para x86) tabela de páginas de 1º nível (page directory) 1023 1023 tabelas de páginas de 2º nível Memória física (page frames) Flags Page Frame Number 0 Flags Page Frame Number 0 Page Frame CR3 31 22 21 12 11 0 index 1 index 2 offset Endereço virtual linear 13-03-2015 Sistemas Operativos 8
Entrada de tabela de páginas PTE (Page Table Entry) (exemplo para i386) 31 12 11 8 0 20 bits mais significativos do endereço da page frame Available S R 0 0 D A 0 0 / / P U W P Present (indica que a página está associada a uma page frame) R/W Read/Write (indica se a página pode ser modificada) S/U Supervisor/User (indique que a página pode ser usada em user mode) 0 bits reservados (já utilizados em versões mais recentes do CPU) Bits alterados automaticamente pela MMU: A Acessed (indica que a página for acedida) D Dirty (indica que a página foi modificada Available Disponíveis para uso pelo Sistema Operativo 13-03-2015 Sistemas Operativos 9
Arquitectura Segmentada/Paginada (exemplo para x86) Endereço Virtual Segmentado 15 Selector 0 31 Tabela de Descritores (GDT,LDT) Offset 0 1023 RAM (page frames) Descritor de Segmento Endereço Base + 0 PTE 1023 PTE Page frame 0 31 22 21 12 11 0 Endereço virtual linear Offset CR3 13-03-2015 Sistemas Operativos 10
Exercício 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, indique: qual a dimensão das tabelas de páginas e de cada PTE? quantas páginas existem no espaço de endereçamento virtual? 13-03-2015 Sistemas Operativos 11
Variantes em CPU s modernos da família x86 Physical Address Extensions (PAE) 40 Page Frame Base PTEs passaram a 64 bits devido ao aumento de bits na PTE para especificar a page frame 13-03-2015 Sistemas Operativos 12
Paginação na arquitectura x64 40 PTEs passaram a 64 bits devido ao aumento de bits na PTE para especificar a page frame 13-03-2015 Sistemas Operativos 13
Paginação A necessidade da cache TLB (Translation Lookaside Buffer) O que fazer à TLB na comutação de processos? Retirado do livro Operating Systems de William Stallings, 6ª Edição 13-03-2015 Sistemas Operativos 14
Cache (de PTE s e de dados) - overall system 13-03-2015 Sistemas Operativos 15
Inverted Page tables Process Id Estruturas globais e não por cada processo Retirado do livro Operating Systems de William Stallings, 6ª Edição 13-03-2015 Sistemas Operativos 16
Objectivos de aprendizagem Compreender e enunciar as principais características das arquitecturas segmentada e paginada. Identificar vantagens/desvantagens de cada um dos modelos. Nas arquitecturas paginadas: explicar a necessidade de existência de arquitecturas multi-nível explicar a necessidade da cache TLB sintetizar características da arquitectura (dimensões de PTE, de página (lógica e física), de espaços de endereçamento virtual e memória física, número de níveis, etc.), a partir de informações parcelares sobre a arquitectura. Enunciar e compreender as flags típicas presentes num PTE justificar as dimensões típicas das páginas nas arquitecturas actuais. 13-03-2015 Sistemas Operativos 17
Bibliografia Stallings, Operating Systems, 6ª Ed. Cap. 8, Virtual Memory Secção 8.1, Hardware and Control Structures Solomon,Russinovitch- Windows Internal, 5ªEd Cap. 9, Memory Management Secção 9.6, Address Translation 13-03-2015 Sistemas Operativos 18