60 likes | 146 Vues
Gerência de Memória no Linux. Algumas características do sistema de memória no Linux. Tamanho da página Linux no Alpha AXP: 8Kb Linux no Intel x86: 4Kb. Swapping Algoritmo de swap: LRU com aging. Modo de endereçamento físico e virtual Já imaginou o SO rodando em endereçamento virtual?
E N D
Gerência de Memória no Linux Algumas características do sistema de memória no Linux Tamanho da página Linux no Alpha AXP: 8Kb Linux no Intel x86: 4Kb Swapping Algoritmo de swap: LRU com aging Modo de endereçamento físico e virtual Já imaginou o SO rodando em endereçamento virtual? Ele teria que ter uma tabela de páginas para si mesmo! Layout de Memória para um programa
Gerência de Memória no Linux Controle de Acesso Abaixo, a Page Table Entry (PTE) ou Entrada da tabela de página Legenda (algumas flags): V – Valid: se a entrada é valida FOR – Fault on read: falta de página na leitura FOW – o mesmo acima, mas para escrita FOE – o mesmo acima, mas para execução KRE – código executando em modo kernel pode ler esta página PFN – page frame number: se V estiver setado, PFN terá o endereço físico da entrada
Gerência de Memória no Linux Cache Buffer Cache Page Cache Swap Cache Hardware Caches Tabela de Página do Linux O modelo ao lado é tão bem sucedido que ele é usado tanto para o processador Alpha que tem os três níveis quanto para o x86 que só tem dois níveis.
Gerência de Memória no Linux Alocação e Desalocação de páginas Alocação: Algoritmo Buddy-heap Desalocação: combinar os adjacentes se estiverem livres para formar blocos grandes.
Gerência de Memória no Linux Memória alta, baixa e zonas de memória Limitação do Kernel Qtd endereçavel: qtd. memória no seu espaço (menos) espaço dedicado ao codigo do kernel = 1Gb Região Alta: memória que o kernel não endereça Região Baixa: memória endereçavel pelo kernel (1Gb) Contorno da limitação: zone_dma: regiões que podem ser usadas para DMA. (molduras abaixo de 16 MB) zone_normal: regiões endereçadas normalmente. (molduras entre 16MB e 896 MB) zone_highmem: regiões mapeadas dinamicamente. (molduras acima de 896 MB) Importante: 128Mb restantes de 1Gb é um espaço onde são mapeadas as molduras de zone_highmem. Isto é, as molduras acima de 896Mb dispõem de 128Mb de espaço para serem mapeadas na zone_normal.
Gerência de Memória no Linux Referências Rusling, David A. (1999) “The Linux Kernel”, http://tldp.org/LDP/tlk/mm/memory.html Gonçalves, A. R.; Luvizotto, D. C. R.; Nascimento, H. A. A.; dos Santos L. G. A.; Martins, L. G. C. (2007) “Sistemas Linux: gerência de memória, sistema de arquivos, entrada e saída e estrutura de redes”, http://www.dca.fee.unicamp.br/~andreric/arquivos/sistemas_linux.pdf Francisco, D. R.; Póvoa, M. G.; Matsumoto, M. K.; Feniman, P. (2010) “Sistemas Operacionais: Teoria e Prática Estudo de Caso: Gerenciamento de Memória no Linux”, http://www.lsd.ic.unicamp.br/mc514/?q=node/94