Memória Gestão do espaço lógico Paginação Segmentação com paginação
Paginação Divide-se a memória física em pequenos blocos de tamanho fixo chamados de páginas físicas (ou frames) o tamanho é uma potência de 2 entre 52 bytes e 892 bytes. Divide-se o espaço de endereçamento lógico em blocos do mesmo tamanho chamados de páginas (ou páginas virtuais). A memória física de um processo não necessita de ser contígua atribui-se páginas de memória física ao processo onde quer que estas estejam disponíveis Não há fragmentação externa Há fragmentação interna (em média ½ página) Arquitectura de Computadores (28/29): Memória 562
Tabela de páginas MMU usa um tabela de páginas que traduz endereços virtuais do programa nos endereços físicos atribuídos O SO manterá informação sobre todas as frames livres e ocupadas Para executar um programa com n páginas, precisa de encontrar n frames livres e carregar lá o programa Gere, para cada programa, uma tabela de páginas que traduz endereços virtuais nos endereços físicos que lhe foram atribuídos Arquitectura de Computadores (28/29): Memória 563
Paginação: atribuição não contígua O processo B termina e inicia-se o processo D: 2 3 4 5 6 7 8 9 2 3 4 A. A. A.2 A.3 B. B. B.2 C. C. C.2 C.3 2 3 4 5 6 7 8 9 2 3 4 A. A. A.2 A.3 C. C. C.2 C.3 2 3 4 5 6 7 8 9 2 3 4 A. A. A.2 A.3 D. D. D.2 C. C. C.2 C.3 D.3 D.4 Arquitectura de Computadores (28/29): Memória 564
Gestão de memória física por páginas Transformação de endereços: A MMU converte endereços virtuais em endereços físicos através de um tabela gerida pelo SO (a tabela de páginas) Endereços virtuais : : Endereços físicos : : CPU P-: N-: Tabela de páginas Memória central Arquitectura de Computadores (28/29): Memória 565
Parâmetros Transformação de endereços P = 2 p = tamanho da página (usa p bits). N = 2 n = espaço virtual (endereço tem n bits) M = 2 m = espaço físico (endereço tem m bits) n p p Número de página virtual deslocamento Endereço virtual Note-se que os bits correspondentes ao deslocamento (dentro da página) Tabela de páginas não mudam durante a transformação m p p Número da página física deslocamento Endereço físico Arquitectura de Computadores (28/29): Memória 566
Suporte da tabela de páginas Onde se guarda a tabela de páginas de um processo? No caso do Pentium a tabela tem 2 2 entradas; se cada uma tiver 4 bytes, são 4 Mbytes! E há uma tabela de páginas por processo Não é tecnicamente viável guardar a tabela de páginas na MMU Solução: Guardar a tabela de páginas em memória central (RAM) Page-table base register (PTBR) base da tabela Page-table length register (PTLR) tamanho da tabela Arquitectura de Computadores (28/29): Memória 567
Suporte da tabela de páginas Endereço virtual: Página virtual Desloc. Endereço físico: Página física Desloc. RAM Interrupção < x Page table lengthregister Tamanho de uma entrada + Tabela de páginas Page table base register Arquitectura de Computadores (28/29): Memória 568
Suporte da tabela de páginas Neste esquema, cada acesso a dados ou código obriga a dois acessos à memória:.ler a tabela de páginas obtendo a página física 2.Ler/escrever o dado ou ler a instrução. O problema dos dois acessos à memória pode ser resolvido por hardware especial de consulta rápida chamado translation look-aside buffer (TLB) que se baseia numa memória associativa Funciona como uma cache da tabela de páginas Arquitectura de Computadores (28/29): Memória 569
TLB - Memória associativa Transformação de endereços: A A Se A está na memória associativa, TLB responde logo com o número da frame A MMU Senão está, obtém o número da frame da tabela de páginas na memória Arquitectura de Computadores (28/29): Memória 57
Tempo de acesso efectivo Pesquisa associativa = ε unidades de tempo Tempo de acesso à RAM é T unidades de tempo Hit rate (α) percentagem das vezes em que o número da frame está numa entrada do TLB Tempo de acesso efectivo (TAE) TAE = αε + ( α)(t + ε) + T tempo para obter o endereço real Nota: sem cache de memória Arquitectura de Computadores (28/29): Memória 57
Exemplo T de 5ns TLB de 5ns e supondo um hit-rate de 95% αε + ( α)(t + ε) + T =.95x5 +.5x55 + 5 = 57.5ns Considerando a cache de memória.? αε + ( α)(t + ε) + Tc Tc: Tempo médio tendo em conta a cache Supondo Tc=.9x5+.x5=9.5ns.95x5 +.5x55 + 9.5 = 7ns Arquitectura de Computadores (28/29): Memória 572
Memória virtual A separação de espaços permite que o programa use um espaço virtual: Endereços independentes da localização física do programa Cada programa tem o seu espaço de endereços ( etc ) Pode usar endereços que não existem na memória física Só ocupa na memória física o espaço realmente necessário Não precisa de ter tudo carregado na memória física carrega só as páginas usadas Espaço virtual pode ser maior que o físico (real) A arquitectura está limitada pela memória virtual não pela física possibilidade de expansão Permite partilha de partes do espaço de endereçamento entre processos Arquitectura de Computadores (28/29): Memória 573
Paginação a pedido VM pode ser suportada através de paginação a pedido Todas as páginas virtuais da imagem do processo estão em disco, chamado disco de paginação ou disco de swap As páginas só vêm para memória central (RAM) quando são referenciadas, i.e. quando há um endereço virtual emitido pelo CPU correspondente a essa página virtual Procura-se manter as páginas mais usadas em memória real Working Set É completamente transparente para o utilizador/programador Arquitectura de Computadores (28/29): Memória 574
Motivações para a memória virtual Simplificar a gestão de memória Múltiplos processos residem em memória central cada um com o seu próprio espaço de endereçamento cada um tem a sua tabela de páginas Fornece protecção só o SO pode alterar as tabelas de páginas Só o código e dados activos (working set) é que estão em RAM; mais RAM pode ser atribuída ao programa se necessário Usar a RAM como Cache para o Disco A soma dos espaços de endereçamento dos vários processos pode exceder o tamanho da memória física O espaço de endereçamento de um processo pode exceder a dimensão da memória física Arquitectura de Computadores (28/29): Memória 575
Tabela de páginas Arquitectura de Computadores (28/29): Memória 576
Tabela de páginas Número de página virtual Memória física resident Tabela de páginas (em memória) indica qual a página física ou o endereço em disco Armazenamento em disco (partição dedicada ou ficheiro de sistema) Arquitectura de Computadores (28/29): Memória 577
Falta de página (Page Fault) A primeira referência a uma página P provoca uma excepção (page fault) e o SO intervém SO olha para a tabela de páginas para decidir se é: Referência inválida aborta o programa Obtém uma frame (página física) vazia F Se a página está em disco: Carrega a página nessa frame Actualiza a tabela de páginas: Tab_paginas[P].frame = F Tab_paginas[P].residente = Retoma a execução da instrução que provocou a excepção F P Arquitectura de Computadores (28/29): Memória 578
Hardware/Software na paginação a pedido Hardware: trata das operações mais críticas: Obter o endereço real a cada acesso Software: o SO trata os casos excepcionais e que exigem politicas mais complicadas: Caso a página referenciada não esteja em memória o SO avalia qual dos casos seguintes se trata: Referência inválida abortar a execução do programa Página em disco é preciso trazer a página virtual para RAM O SO gere a memória, que páginas ocupadas por que programas Arquitectura de Computadores (28/29): Memória 579
Exemplo de arquitectura com paginação Características duma arquitectura (ISA) 6 bits de endereços (virtuais e reais) páginas de 2KBytes Endereços: endereço virtual 6bits espaço de 2 6 = 64K supondo uma RAM instalada 32KBytes, então o espaço real está limitado a esse valor Endereços de 6 bits, páginas de 2KBytes (bits): Espaço de endereços tem 64K/2K = 32 páginas Na realidade a RAM tem 32K/2K = 6 páginas Arquitectura de Computadores (28/29): Memória 58
Interpretação dos endereços Endereços de 6 bits, páginas de 2KBytes (bits) RAM instalada de 32KBytes 65535 5 bits bits Número de página deslocamento na página 2 2K 2 5 32 32767 6 páginas instaladas Espaço real instalado 32 páginas 2K Espaço Virtual Arquitectura de Computadores (28/29): Memória 58
65535 3 3 29 Tabela de páginas Tabela de páginas (32 entradas) válido residente dirty pág. física (5bits) 32767 5 4 3 2 3 2 3 3 Arquitectura de Computadores (28/29): Memória 582 3 2
65535 3 3 29 Exemplo de um programa pilha Tabela de páginas 2 3 4 5 válido residente dirty pág. física (5bits) 32767 5 4 3 SO 3 2 3 2 dados código 3 3 disco (memória secundária) Arquitectura de Computadores (28/29): Memória 583
65535 3 3 29 Exemplo de um programa pilha PC = fetch Mem[] válido residente pág. física (5bits) 2 3 4 5 dirty 249 32767 5 4 3 2 SO 3 2 3 2 dados código 3 3 Tabela de páginas disco (memória secundária) Arquitectura de Computadores (28/29): Memória 584
65535 3 3 29 Exemplo de um programa pilha 645 3 mov [645], 5 2 3 4 5 válido residente dirty pág. física (5bits) 2 4 4 28673 32767 5 4 3 2 SO 3 2 3 2 dados código 3 3 Tabela de páginas Arquitectura de Computadores (28/29): Memória 585 3 disco (memória secundária)
Resumo Mapear o espaço virtual de um programa em memória: Criar tabela de páginas Resolução de endereço Cache de endereços na TLB Carregamento dinâmico a pedido Tabela de páginas preenchida durante a execução Memória Virtual usando memória física e o disco Memória Física como cache do espaço virtual Arquitectura de Computadores (28/29): Memória 586
CPU com paginação e cache interna dados modo de endereço endereço endereçamento cálculo virtual cálculo do real do endereço real endereço efectivo (MMU) Cache L endereço real dados BUS interface TLB Arquitectura de Computadores (28/29): Memória 587
Segmentação vs. paginação Segmentação define porções lógicas de tamanho variável que são visíveis para o programador Exemplo: o segmento da pilha e do código No caso do IA-32 pode-se aceder a um endereço usando o SS ou CS como base Paginação é transparente para o programador. Consiste em dividir a memória e o espaço de endereçamento dos programas e porções do mesmo tamanho. Paginação é mais fácil de gerir pelo sistema Segmentação permite introduzir partilha e protecção de memória de uma forma simples Arquitectura de Computadores (28/29): Memória 588
Segmentação com paginação O programa é dividido em segmentos Cada segmento é dividido em páginas Com a sua tabela de páginas O programa tem então várias tabelas de páginas O endereço é dividido em 3 partes. Indica a tabela de páginas a utilizar: define o segmento 2. Número da página 3. Deslocamento Útil porque permite segmentação do ponto de vista do utilizador e paginação do ponto de vista do sistema Arquitectura de Computadores (28/29): Memória 589
Memória virtual no Intel Pentium 4 Páginas de 4KBytes Endereço de 32 bits 2 bits (página) + 2 bits (deslocamento) Tabela de páginas M entradas (cada 4 Bytes) TLB para acessos a dados de 64 entradas TLB para acessos a código de 64/28 entradas Também permite páginas de 4MBytes e segmentação com paginação Arquitectura de Computadores (28/29): Memória 59