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 ):
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.
|
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.