Gestão de Memória Não-Contígua Reserva de memória não-contígua significa que a memória atribuída a um objecto pode ser composta de bocados espalhados pela memória física. Embora os endereços virtuais sejam contíguos, os endereços físicos não o são. Motivação: Resolver os problemas de fragmentação apresentados pelos métodos baseados em memória contígua. MNC:1 Paginação Divisão da memória física em quadros de tamanho fixo e constante Divisão da memória virtual em páginas A reserva de memória resume-se a encontrar um n o suficiente de quadros para suportar as páginas. Ex: Sistema com 16M - 24 bits e páginas de 4K 4096 Páginas Endereço Virtual = NumerodeP agina Offset {}}{ { }}{ 110110111011 }{{} 101010101010 }{{} 12bits 12bits MNC:2
Tradução de Endereços Page-Map Table (PMT) - Construída durante o carregamento do processo para estabelecer a relação entre os endereços virtuais e físicos. Exemplo de conversão de 0000 01000 02000 03000 LD A 0 0 3 4 5 0 0 1 2 3 0 1 2 3... PMT FFD 100 103 DE0... C DE0450h endereços virtuais, gerados pelo processo, em endereços físicos através da utilização de PMT. MNC:3 Reserva de Páginas A eficiência depende essencialmente da rapidez com que se consegue localizar páginas livres. Para facilitar a operação utilizam-se listas ligadas em vez de tabelas. Assumindo que os quadros livres estão distribuidas pela memória de forma aleatória. O número de entradas x da MMT que tem de ser pesquisadas para encontrar n quadros livres é x = n q (1) onde q é a probabilidade de um quadro estar disponível, que se relaciona com a quantidade de memória disponível u da seguinte forma. q = u 100 (2) MNC:4
Hardware de suporte à paginação As funções são essencialmente as de conservar a memória necessária para armazenar as tabelas de mapeamento e acelerar a tradução dos endereços virtuais em físicos. As PMTs tendem a ter um tamanho elevado, pois deverão ser suficientemente grandes para suportar o tamanho máximo do espaço de endereçamento de um processo. Ex: Sistema com 16M, com páginas de 256bytes, o tamanho das PMT deverá ser de 64K entradas. Sendo nestes sistema as entradas de 16 bits, o que implica o uso de 128K para armazenar a PMT. Dado que existe uma PMT por processo activo, o armazenamento de todas as PMT consome uma parte significante da memória. MNC:5 Como o espaço de um processo pode ser muito inferior ao máximo, não faz sentido ter tamanhos fixos para as PMTs. PMTLR - Page-Map-Table Limit Register PMTBR - Page-Map-Table Base Register Estes dois registos são guardados no PCB Mesmo com estes registos, a tradução de endereços introduz um acesso à memória adicional o que vai reduzir a largura de banda da memória disponível em 50%. Solução: Utilizar memória associativa de elevada velocidade para armazenar um subconjunto das entradas das PMTs. Esta memória é designada por Translation Lookaside Buffer (TLB), ou cache de mapeamento. MNC:6
Uso de TLB CPU Endereço Virtual N. Pagina PAGE IN CACHE? NAO Offset SIM TLB i j k l 600 c PMT < PMTLR? SIM + c NAO PMTBR FAULT MNC:7 Tempo Efectivo de Acesso Com TLB, o tempo de tradução passa a ser t eff = t traducao + t acesso (3) t traducao = h.t tlb + (1 h)(t tlb + t acesso = t tlb + (1 h).t acesso (4) em que h é hit ratio e t tlb é o tempo de resposta da TLB. Logo em sistemas com TLB. t eff = t tlb + (2 h).t acesso (5) MNC:8
Protecção A protecção pode ser conseguida utilizando bits de protecção ou chaves de acesso. Não permite isolar zonas do processo, pois não há separação de zonas de código, dados, pilha ou outras como acontece com a utilização da segmentação. Partilha A partilha é simples, pois pode-se facilmente mapear uma página no espaço de endereçamento de varios processos. MNC:9 Vantagens Reserva e libertação de páginas é muito simples Não há fragmentação externa Não requer compactação Desvantagens Overhead: PMT por processo Overhead: MMT por sistema Fragmentação de página, na última página de cada processo MNC:10
Memória Virtual Memória Virtual é um esquema de gestão de memória em que Apenas uma parte do espaço de endereçamemto dos processos é carregado em memória física. Permite a execução de processos parcialmente carregados A soma dos espaços virtuais dos vários processos pode exceder a memória física instalada Ex: O processador Vax suporta 4Giga Bytes de memória virtual, no entanto os modelos antigos apenas suportam 8Mega de memória física. A memória restante é mantida em memória secundária. MNC:11 Características Transparente para o programador. Dá a ilusão de existir muito mais memória instalada Vantajoso para o S.O. pois um processo pode ser carregado em memória mesmo que exista pouca memória disponível. Pode-se acelerar a execução de processos importantes, dando-lhes mais memória física. NOTA: A velocidade de execução com memória virtual é sempre menor ou igual do que sem memória virtual. MNC:12
Funcionamento Formalismo Considerando um espaço V e um espaço M em que V = {0, 1,, v 1} M = {0, 1,, m 1} O S.O faz o mapeamento f : V M (6) Sendo a função f(x) definida como r x V : f(x) = falha se r M : r = x se r M : r = x (7) MNC:13 OK, gostei do formalismo e agora? A função de mapeamento f : V M é suportada pela PMT. Como detectar a não existência de determinada página em memória física? Adicionando à PMT um bit de presença a cada entrada que indica se a página está presente ou não. E depois, se a página não estiver presente em memória física? Se não está em memória física RAM, teremos que a ir buscar ao disco (ao ficheiro de swap) ou outro. Mas para isso teremos que arranjar um quadro disponível para nele carregar a página. A localização da página em disco é feita com o auxílio de mais uma tabela - File Map Table (FMT). MNC:14
Interrupção de Instruções Consideremos a instrução seguinte DECBRZ R1,addr 1. Fetch e descodificação do opcode (lê M[PC]) 2. R1- -; 3. PC++; 4. if (R1==0) PC=PC=M[PC]; else PC++; Esta instrução implica duas referências a memória: leitura do opcode, leitura do endereço destino do salto. O que fazer se o endereço destino estiver numa página não presente em memória principal? MNC:15 Hipoteses desfazer e recomeçar continuar do ponto onde foi interrompida teste prévio das referências Outro exemplo: BLOCK MOVE ou BLOCK TRANSLATE Todas as hipoteses requerem que o processador possua suporte específico. Por exemplo o processador 68000 da Motorola não suportava a interrupção de instruções. Isto levou a que fosse reescrito o microcódigo e assim surgiu o 68010. MNC:16
Gestão de memória virtual Componentes 1 PMT por processo. Neste caso a PMT pode ser maior do que as utilizadas sem memória virtual. MMT + lista de quadros livres 1 FMT/processo para endereçar as páginas residentes em disco registos PMTBR e PMTLR TLB MNC:17 Pretendendo-se carregar em memória apenas uma parte de um processo é necessário definir um conjunto de políticas: Reserva: Que quantidade de memoria física reservar para cada processo activo? Carregamento: Que partes do processo carregar de memória secundária e quando devem ser carregados? Substituição: Quando é necessário trazer um item de memória secundária para memória principal e não existem páginas livres, quais os items a sofrer a acção de despejo? Colocação: Onde colocar um item novo? MNC:18
Padrões de comportamento dos programas Os padrões das referências a memória, durante a execução dos programas, são de extrema importância em sistema de memória virtual. No padrão acima é visivel a existência de localidade espacial e temporal. MNC:19 O processo que gera a falha de página é suspenso até existir memória disponível para carregar a página em falta. 1 página é retirada de memória principal para dar lugar aquela que falta. A primeira opção raramente é utilizada, a segunda implica 1. escolha da vítima 2. página (vítima) modificada? Não... Sim É necessário gravar o seu conteúdo É necessário a introdução de um bit para se saber se a página foi ou não modificada: dirty bit ou written into bit. MNC:20
Cadeias de Referência a Memória...,14489,1448B,14494,14496,A1F8,14497,14499,2638E,1449A,... Interessa apenas o número das páginas referenciadas, assumindo que utilizamos páginas de 4K temos..., 14, 14, 14, 14, A, 14, 14, 26, 14,... (8) Como apenas interessam as referências a páginas diferentes removemos as referências sucessivas à mesma página..., 14, A, 14, 26, 14,... (9) A cadeia de referências obtida é utilizada para analizar o comportamento dos algoritmos de substituição. MNC:21 Politicas de Substituição First-in-First-Out (FIFO) Least Recently Used (LRU) Optimal (OPT) Clock As politicas de substituição podem ser LOCAIS ou GLOBAIS. MNC:22
Políticas de Reserva Menos memória por processo menos page faults menor grau de multiprogramação Mais memória por processo mais page faults maior turnaround time Problema Com pouca memória e com um processador que efectue o reinício das instruções a instrução add @X,@Y pode levar à ocorrência de thrashing. Endereçamento indirecto: 8 referências a memória = 3 fetch opcode e dados + 2 endereços + 2 operandos + 1 resultado MNC:23 Paranchor Curve MNC:24
Frequência de Faltas de Página (PFF) O S.O. define um valor crítico P para a frequência crítica de faltas de página O S.O. mede o tempo virtual do processo e guarda o tempo da PF mais recente no PCB respectivo Quando ocorre uma falha de página: Se a última F.P. ocorreu há menos de T = 1/P, o processo está a operar acima do limiar PFF. É adicionada mais uma página ao conjunto. Caso contrário, o processo está abaixo do PFF, e um quadro ocupado por uma página cujo bit referenced não está a 1 é libertado para albergar a nova página O S.O. varre e põe a 0 os bits de todas as páginas residentes. As páginas que não acedidas desde o último varrimento são libertadas. MNC:25 Working Set Durante determinado periodo de tempo, um processo em execução, utiliza um subconjunto das suas páginas. Os padrões de referência a memória de um processo exibem uma grande correlação entre o passado e o futuro imediatos. A frequência com que cada página é acedida é uma função que varia lentamente com o tempo. Princípios do Working Set: 1. Um programa só deverá ser executado se o seu WS estiver em memória. 2. Uma página não deverá ser retirada de memória se esta pertence ao WS de um processo. MNC:26
Hardware de Suporte A Gestão de Memória requer: Capacidade de interromper as instruções e recomeçá-las Um conjunto de bits de estado por página associados comn o seu descritor. TLB para acelerar a tradução dos endereços (no caso da paginação). Bits utilizados na maioria das implementações: Presença, Dirty (written into), referenced. MNC:27 TLB Usar todas as entradas da TLB para o processo em execução ou para todo o sistema? A primeira opção implica o custo de carregar toda a TLB quando ha troca de processos e quando ocorrem interrupções. A outra opção requer TLBs multi-contexto. Isto implica que a cada entrada da TLB esteja associado o ID do processo. Escolha do tamanho das Páginas utilização da memória e custo eficiência do transporte das páginas MNC:28
Protecção e Partilha Mantêm-se as caracteristicas do sistema base (paginação ou segmentação). Quando há objectos partilhados estes deverão estar sempre em memória principal... Paginação / Segmentação Ambos os métodos apresentam vantagens e desvantagens, não havendo um que seja globalmente superior. Alguns sistemas utilizam combinações de segmentação e paginação. Uma abordagem comum é a de utilizar segmentação (visível para o utilizador) mas os segmentos são divididos em páginas. Nestes casos um endereço virtual terá 3 partes: número do segmento, número da página, offset na página. MNC:29 Segmentação e Paginação Combinados ENDEREÇO VIRTUAL SEG. PAGINA OFFSET + MEM NAO NAO <=LIMIT? SIM ACESSO AUTORIZADO SIM + <=SDTLR? SDTBR + PMT NAO BASE TAMANHO DIREITOS DE ACESSO MNC:30
Tradução Hierarquica de Endereços e MMUs PCB Endereço Virtual Nivel 1 Nivel 2 Offset + Nivel 1 de mapeamento + Tabelas do nivel 2 + Endereço Fisico MNC:31