Gerenciamento de Memória Prof. Clodoaldo Ap. Moraes Lima Paginação Espaço de endereço de um processo pode ser não contíguo; ao processo é alocado memória física sempre que disponível. Divide memória física em blocos de tamanho fixo chamados de frames (tamanho é potência de, entre 5 bytes 89 bytes). Divide memória lógica em blocos de mesmo tamanho chamados de páginas. Mantém informação sobre todos frames livres Para executar um programa de tamanho de n páginas, necessário encontrar n frames e carregar o programa. Prepara uma tabela de páginas para traduzir endereços lógicos em físicos Fragmentação interna
Paginação 3 Tradução de endereços Endereço gerado pela CPU é dividido em: Numero da pagina (p) usado como índice para a tabela de páginas que contém endereço base de cada página na memória física. Deslocamento na pagina (d) combinado com o endereço base define o endereço de memória física que é enviado para a unidade de memória. 4
Arquitetura Espaço de endereço virtual Página Virtual Endereço Memória virtual Page frame 5 Arquitetura f Endereço lógico Endereço físico p d f d p f Tabela Página Memória física 6
Exemplo Número frame 0 3 4 3 7 Tabela página Memória Lógica Memória Física 7 Exemplo 8
Paginação Não há fragmentação externa Qualquer frame pode ser alocado para o processo que precisa dele. Pode haver fragmentação interna o último frame pode não estar cheio. Tamanhos típicos de páginas 4 KB e 8KB Possibilidade de endereçamento 3 bits de endereçamento virtual Tamanho de memória endereçada ^3 bits = 4 GB 9 Paginação O sistema mantém informação sobre os frames livres Estrutura da tabela de frame Indica se os frames estão ou não alocados Se estão, para que pagina de que processo Para executar um processo de n páginas, é necessário ter n frames livres Cada processo tem sua tabela de páginas A tabela é preenchida quando o processo é carregado Paginação aumenta o tempo de troca de contexto 0
Frames livres Lista de frame livre 4 3 8 0 5 Lista de frame livre 5 Novo processo Novo processo Tabela de Página do novo processo Implementação da Tabela de Páginas Cache disabilitado Modificada Residência (Presente/Ausente) Número da página frame Referenciado Proteção
Aspecto importante Paginação Distinção clara entre a visão que o usuário tem de seu programa na memória e a memória física real Usuário: imagina o programa em espaço de endereçamento contíguo No sistema: o programa está fragmentado A tradução de endereços lógicos para físicos é implementada pelo S.O 3 Implementação da Tabela de Páginas Tabela de páginas é mantida em memória principal. Registrador de base da tabela de páginas (RBTP) aponta para a tabela de páginas. Registrador de tamanho da tabela de páginas (RTTP) indica tamanho da tabela de páginas. Neste esquema todo acesso dados/instrução requer dois acessos a memória. Um para a tabela de páginas e um para dados/instrução. Este problema pode ser resolvido através do uso de hardware especial (cache de procura rápida) chamado de memória associativa (translation look-aside buffers TLBs) 4
Memória Associativa Memória Associativa procura paralela, # Página # Frame Tradução de endereço (A, A ) Se A está na memoria associativa (registrador), pega o # frame. Caso contrário, pega o # frame da tabela páginas na memória 5 Paginação c/ TLB CPU Endereço Lógico p d Número Página Número Frame TLB TLB sucesso f d Endereço Físico TLB falta p f Tabela de Página Memória Física 6
Estrutura da Tabela de Páginas Tamanho da tabela de páginas Exemplo: espaço de endereçamento lógico de 3 bits; Tamanho da página de 4KB Tabela de páginas ^3/^ = ^0 = milhão de entradas Tabela muito grande Solução: dividir a tabela de páginas em partes menores Várias técnicas Tabelas de Página Hierárquica Tabelas de Páginas invertidas Tabelas de Páginas com hashing 7 Tabela de Página Hierárquica Particiona espaço de endereço lógico em múltiplas tabelas de páginas. Solução simples: dividir a tabela de página em dois níveis: a própria tabela é paginada. Exemplo: Máquina de 3 bits com páginas de 4 KB Um endereço lógico consiste de número de páginas de 0 bits deslocamento de bits Como a tabela é paginada, o número de páginas é dividido em: Um número de página de 0 bits Um deslocamento de bits 8
Exemplo de paginação em dois níveis Um endereço lógico fica: Número da Página deslocamento P 0 P 0 d P é um índice na tabela de páginas no primeiro nível P é o índice da tabela de páginas no segundo nível 9 Exemplo de paginação em dois níveis Esquema de tradução de endereços para uma arquitetura de paginação em dois níveis. Endereço lógico p p d p p Tabela de página interna d Página da Tabela de página Memória Física 0
Esquema de tabela de páginas em dois níveis Tabela de página interna Página da Tabela de página Tabela de página Memória Exemplo Assume que temos um programa que consiste de 3 partes Texto (necessita de 4 MB = bytes) Dados (necessita de 4 MB) Pilha (necessita de 4 MB) 3 3 - Pilha Espaço de endereçamento Virtual do Programa 3 0 Dados Texto Região Vazia
0 0 P P d Endereço Virtual 3 bit Tabelas de páginas Nível superior 03 0 0 6 5 4 3 0 Tabelas de Páginas segundo nível 03 3 0 03 3 0 03 3 0 Page Frame Page Frame Page Frame 3 Example endereço virtual é 0x00403004 Em hex 00 40 30 04 Virtual address 406596 em decimal Em binario 0 bit 0 bit bit 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 P P d P = P = 3 d = 4 Primeiro, veja a entrada da tabela de página do nível superior. Na entrada (P = ), pegue o endereço da correspondente tabela de pagina do segundo nível. Na tabela de página do segundo nível, veja a entrada 3 (P = 3). Pegue o endereço do frame localizado na memória onde os dados atuais estão armazenado. Vá para a localização na memória e recupere o valor (dado). 4
Tabela de Página Invertida Assumindo Espaço de endereçamento de 64 Tamanho da página de 4KB. Tamanho da Memória física de 56 MB. Número de entradas necessárias = (56x 0 )/4x 0 = 64K 6 - EntradadaTabelade Pag Page frame 0 Entrada da Tabela de Pag Tabela de Página Invertida Pag. Virtual Modificada Referência 5 Tabela de Página Invertida Uma entrada para cada página real da memória Entrada consiste do endereço virtual da página armazenada na posição de memória, com informação sobre o processo que é dono da página. Diminuição da memória necessária para armazenar cada tabela de página, mas aumenta o tempo necessário para pesquisar a tabela quando uma referência a página ocorre. Compromisso tempo x espaço : diminuo espaço para armazenar cada tabela de páginas mas aumenta o tempo de busca na tabela quando a referencia a uma página ocorre A tabela é ordenada pelo endereço físico Há somente uma tabela de páginas E somente uma entrada para cada página da memória física 6
Tabela de Página Invertida 7 Tabela de Página com Hashing Uso comum em arquiteturas com espaço de endereçamento > 3 bits Função hash é aplicada ao número da página virtual Hash com listas encadeadas Cada elemento em cada lista contém O número da página virtual O número do frame Um apontador para o próximo O número da página virtual é submetido a uma função hash para a tabela de página. Esta tabela contém uma cadeia de elementos cuja hash aponta para a mesma posição. Os números da página virtual são comparados na cadeia em busca de igualdade. Quando encontrada, o correspondente frame físico é extraído. 8
Tabela de Página com Hash Endereço Lógico Endereço Físico Função Hash Memória Física Tabela de Hash 9 Tabela de Página com Hash 6 - Tabela Hash Pag. Virtual Page Frame. Pag. Virtual Page Frame. 0 Pag. Virtual Page Frame Pag. Virtual Page Frame.. Indexado pelo valor de hash sobre o número da página virtual 30