sexta-feira, 19 de junho de 2009

Principais Características da Memória

O gerenciamento de memória no Linux é realizado com o auxílio de circuitos de hardware presentes nos microprocessadores. Tais circuitos em hardware permitem que o gerenciamento de memória seja mais eficiente e seguro, evitando erros causados por software no acesso à memoria.

O acesso à memória fisica não acontece direto do software. No software, especificamos o endereço lógico, que consiste do segmento e de um offset representando a distância entre o endereço que desejamos acessar e o início do segmento.

O endereço lógico é compilado por uma unidade de segmentação, que o transforma em um endereço virtual. Este endereço virtual é representado por um inteiro de 32 bits, e portanto, pode endereçar até 4GB, do endereço 0x00000000 até 0xffffffff.

O endereço virtual é transmitido a uma unidade de paginação, que é responsável por associar o endereço virtual ao endereço físico, representado por inteiros não negativos de 32 ou 36 bits. O endereço resultante é utilizado para acessar um dado presente na memória dos chips.

Através do processo de acesso à memória apresentado acima, podemos perceber que o Linux utiliza um modelo de segmentação com paginação.

Em sistemas com multiprocessadores, a memória é compartilhada entre todas as CPUs. Desse modo, para evitar que diferentes CPUs acessem a memória concorrentemente, existe um circuito de hardware utilizado para a proteção da memória. Este circuito, conhecido como “Memory Arbiter” é inserido entre o barramento e todo chip de memória e possui a finalidade de garantir o acesso exclusivo à memória nas operações de leitura e escrita.
Além do acesso exclusivo à região de memória compartilhada, o Linux dispõe de mecanismos para previnir a invasão de processos no espaço do kernel.

Como o Linux utiliza um modelo de segmentação com paginação, vamos analisar nos próximos posts, algumas das características necessárias para garantir a segurança do sistema, melhorar a eficiência e a capacidade do sistema.

Referências:
http://linux-mm.org/
Understanding the Linux Kernel 3rd Edition - O'Reilly
Modern Operating Systems 2nd Edition - A. S. Tanembaum