next up previous contents
Next: Quem somos Up: relatorio Previous: Introdução   Sumário

Objetivo

A hierarquia atual do sistema de memória virtual consiste basicamente de (em ordem decrescente de velocidade de acesso):

Scott F. Kaplan lançou um artigo [7] em que propõe, baseado em algumas simulações, uma nova arquitetura (veja Figura [*]):

Figura: Figura do [7] que ilustra a hierarquia proposta
\includegraphics[width=10cm]{new-hierarchy.eps}

Hoje em dia, a velocidade das CPUs aumenta bem mais rapidamente que a velocidade de disco e assim, segundo Kaplan, comprimindo-se alguns dados da memória vale a pena, pois aumenta o seu tamanho efetivo, apesar do overhead de processamento. Se realmente formos avaliar esse overhead, seria notado (e comprovado pelo Kaplan) que ele é menor que um I/O em disco. Pelo fato dessa compressão aumentar o tamanho efetivo da memória, menos páginas acabam tendo que ser gravadas em disco e assim o tempo de paginação diminui consideravelmente (veja Figura [*]). O Kaplan, em seus estudos, coloca de que maneira essa compressão precisa ser feita e de que maneira o cache precisa ser implementado. Observando esses detalhes, ele chegou a até 80% de diminuição do tempo de paginação.

O objetivo que guiou o grupo durante todo o andamento do projeto foi a implementação desse cache comprimido no sistema de gerenciamento de memória do kernel do Linux. Antes de mais nada, é preciso esclarecer o que é um kernel de um sistema operacional. O kernel age como uma camada entre os programas e o hardware. Em primeira instância, ele gerencia a memória para todos os processos e garante que os processos tenham ciclos de processamento do processador. Além disso, ele fornece uma interface para que os programas possam conversar com o hardware.

Figura: Figura do [7] que exibe diversos gráficos em que são comparados o swap out do sistema de memória virtual sem compressão (VM) e diversos algoritmos de compressão
\includegraphics[width=12cm]{compressed-caching.eps}

O Linux foi a escolha entre os sistemas operacionais, por se tratar, inicialmente, de um sistema com o código aberto. Por esse fato, é possível ter o seu código, estudá-lo e ainda modificá-lo, seguindo a licença GPL (pode ser vista em http://www.gnu.org/copyleft/gpl.html), sob a qual está disponível o kernel do Linux. Além disso, trata-se de um sistema com uma penetração muito grande no mercado e em desenvolvimento constante, o que até viabiliza, caso chegue-se a um nível comprovado de eficiência, incluir essas modificações na versão oficial.

No entanto, o que dificulta o uso desse código é que por ser desenvolvido por pessoas de todo mundo, muitas mãos mexem, o que é extremamente bom por um lado, mas por outro lado acaba tendo códigos de muitas pessoas. E esse fato inclue maneiras de programar, que ter por por conseqüência alguns códigos fáceis de serem entendidos e outros difíceis. Além disso, ainda existem partes bem-comentadas, enquanto outras não contêm uma linha deles. E não podemos nos esquecer que todo o código-fonte é voltado para um bom desempenho, o que prejudica a inteligibilidade.

Esse projeto nos permite atingir um grande objetivo que é o de ganhar conhecimentos avançados em questões de sistemas operacionais, em especial o Linux e o seu sistema de gerenciamento de memória.


next up previous contents
Next: Quem somos Up: relatorio Previous: Introdução   Sumário
Rodrigo Souza de Castro 2000-12-18