Estudo sobre os tipos de gerenciamento do SO Linux

O objetivo deste artigo é explicar o funcionamento dos gerenciamentos de memória, arquivos e processos e entrada/saída do sistema operacional Linux. Com isso procura-se entender um pouco mais sobre este sistema operacional obtendo resultados para que se iniciem novas pesquisas sobre este. Palavras-chave: Gerenciamento, Linux, SO.

[ Hits: 149.957 ]

Por: Silas Antônio Cereda da Silva em 07/12/2007


Gerenciamento de memória no Linux



No Linux a memória funciona da seguinte maneira, processos que estão em execução têm prioridade na memória, quando termina um processo e se tiver espaço na memória, ficam resíduos desse processo na memória para uma futura volta desse processo ser mais rápida. Caso essa memória RAM esteja lotada com processos que estão em execução, aí começa a utilização da memória SWAP (troca). (LIMA, 2007)

Cada processo do Linux, em uma máquina de 32 bits, dispõe de 3GB de espaço de endereçamento virtual para si próprio, com 1GB restante reservado para suas tabelas de páginas e outros dados do núcleo. O 1GB do núcleo não é visível quando o processo executa no modo usuário, mas torna-se acessível quando o processo faz uma chamada ao núcleo. O espaço de endereçamento é gerado quando o processo é criado e sobrescrito em uma chamada ao sistema exec.

O espaço de endereçamento virtual é dividido em áreas ou regiões organizadas em páginas. Contíguas e homogêneas. Isso quer dizer que cada área consiste de uma série de páginas consecutivas com proteção e propriedades de paginação idênticas. O segmento de código e os arquivos mapeados são exemplos de áreas. Pode haver vazios no espaço de endereçamento virtual entre essas áreas. Qualquer referência à memória para um vazio resulta em uma falta de página fatal. O tamanho de página é fixo.

O Linux usa um esquema de paginação de três níveis. Embora tenha sido utilizado no processador Alpha, esse esquema também é empregado de maneira modificada em todas as arquiteturas. Cada endereço virtual é quebrado em até quatros campos. O campo diretório é usado como índice do diretório global, sendo que existe um privado para cada processo. O valor encontrado é um ponteiro para um dos diretórios intermediários de página, o qual é indexado por um campo do endereço virtual. A entrada selecionada aponta para a tabela de página final, a indexada pelo campo página do endereço virtual. A entrada encontrada aponta para a página requisitada. No Pentium, que usa paginação em dois níveis, cada diretório intermediário de página tem somente uma entrada, de modo que, efetivamente, a entrada do diretório global é quem escolhe a tabela de página a usar.

O Linux gerencia a memória usando o algoritmo companheiro, com a adição de um vetor no qual o primeiro elemento é a cabeça de uma lista de blocos com tamanho de uma unidade, o segundo elemento é a cabeça de uma lista de blocos com tamanho de duas unidades, o próximo elemento aponta para blocos de quatro unidades e assim por diante. Dessa maneira qualquer bloco de potência de dois pode ser encontrado rapidamente.

Esse algoritmo gera uma considerável fragmentação interna, pois, se você deseja um bloco de 65 páginas, você tem de solicitar e obter um bloco de 128 páginas.

Para amenizar esse problema, o Linux tem uma segunda alocação de memória que obtêm blocos, usando o algoritmo companheiro, e depois os retalha (unidades menores) para gerenciar unidades menores separadamente. Um terceiro alocador de memória também é utilizado quando a memória solicitada precisa ser contígua somente no espaço virtual, mas não na memória física. (TANEMBAUM, 2005)

Para a proteção existe um gerenciador de memória virtual evitando que processos no modo Kernel e no modo User se misturem.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Gerenciamento de memória no Linux
   3. O sistema de arquivos do Linux
   4. Gerenciamento de E/S
   5. Gerência de processos
   6. Conclusão
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Programas equivalentes Linux vs Windows

Montando um sistema Helpdesk com servidor Linux e Java em um ambiente corporativo ou na Internet

Instalação do Android 2.2 (codinome Froyo) no Samsung Galaxy GT-I7500/GT-I7500L

ownCloud - Em poder de suas mãos (Private Cloud)

FOG Project - Configurando meu primeiro servidor de imagens

  
Comentários
[1] Comentário enviado por nigthwing em 08/12/2007 - 02:37h

Só um cometário sobre a introdução.
O minix que eu saiba não é uma versão simplificada do Unix, mas sim um S.O. semelhante ao Unix para a plataforma x86, mais especificamente para o processador 8086. O Linux tb, mas direcionado para o processador 80386.
O Unix é proprietário e por isso não há versões não oficiais dele. Veja o que aconteceu com o FreeBSD a alguns anos (em 93 se não me engano).

[2] Comentário enviado por aleksandre em 08/12/2007 - 05:35h

Muito bom esse artigo!
Parabéns!

[3] Comentário enviado por morco em 08/12/2007 - 11:05h

Parabéns, muito bom!!!

me fez ver que tenho muito mais a aprender ..... e me deu um foco melhor

ty^^

[4] Comentário enviado por maran em 09/12/2007 - 10:24h

Belo artigo...
Serve para vermos que temos muito a aprender...

Te Mais...

[5] Comentário enviado por removido em 16/12/2007 - 14:08h

=P Legal, vo ver se coloco meu artigo de descrição do linux que eu fiz na facul...

[6] Comentário enviado por damisgarcia em 16/11/2012 - 10:45h

Belo artigo. Estou fazendo uma pesquisa de gerência de memória no Linux queria saber se vocês conhecem outro artigo que possa agregar a este.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts