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: 159.345 ]

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


Gerência de processos



Nos sistemas operacionais, um processo é a forma de representar um programa em execução. É o processo que utiliza os recursos do computador - processador, memória, etc - para a realização das tarefas para as quais a máquina é destinada. (ALECRIM, 2005)

O modelo de gerenciamento de processos do Linux teve uma evolução notável.

Desde o seu início, auxiliado pelo modelo Bazaar1 de desenvolvimento, esses algoritmos foram enumeras vezes criticados e melhorados por eruditos ao redor do mundo, isso faz com que o Linux tenha hoje um dos melhores conjuntos de algoritmos para gerenciamento de processos já visto.

Um processo pode ser descrito como parte de um programa que está aparentemente rodando. Este aparente existe somente pelo fato de que determinado processo pode entrar e sair diversas vezes do processador em um único segundo, e em um determinado momento ele pode não estar no processador e mesmo assim aparentemente estar rodando.

Como qualquer sistema de compartilhamento de tempo o Linux consegue dar a impressão de execução simultânea dos processos, separando um espaço bastante curto de tempo para cada um deles. Para ter sucesso nesta tarefa ele segue uma serie de regras que não desperdiça tempo de hardware com operações desnecessárias e consegue escolher qual processo deve ser executado naquele exato momento.

O que decide essa escolha no kernel é o escalonador de processos, que em grande parte é responsável pela produtividade e eficiência do sistema. Mais do que um simples mecanismo de divisão de tempo, ele é responsável por uma política de tratamento dos processos que permite os melhores resultados possíveis.

A função do "start kernel" tem a responsabilidade de criar um thread, este é o processo de número zero, o primeiro e o ascendente de todos os outros processos.

Esta função também é responsável por chamar a função "Init", que por sua vez utiliza a chamada de sistema "execve" para rodar o executável init, que será o processo número 1, mais conhecido como init. Podemos chamar de Deus e pai de todos os outros processos, é o segundo processo a ser criado e um dos últimos a morrer. Seus filhos,vivem como nós seres humanos, eles nascem, se desenvolvem, tem uma vida mais ou menos produtiva, podem ter inúmeros.

Uma das coisas que o escalonador precisa ter ciência é em qual estado está cada processo, na estrutura que armazena os dados de cada processo temos um array de possíveis estados onde apenas uma das opções abaixo estará ativa.
  • TASK RUNNING - Em execução ou aguardando para ser executado.
  • TASK INTERRUPTIBLE - O processo está suspenso até que determinada condição se torne verdadeira.
  • TASK UNINTERRUPTIBLE - Como o estado anterior, exceto pelo fato de que o seu estado não será modificado quando receber um sinal. É importante para os processos que necessitam executar determinada tarefa sem ser interrompido.
  • TASK STOPPED - Execução do processo foi parada.
  • TASK ZOMBIE - O processo está terminado, mas o processo pai ainda não executou uma chamada de sistema para retornar informações sobre o processo morto "wait", as informações não são descartadas pois ainda podem ser utilizadas.

Por padrão o Linux limita os recursos que cada processo pode ter. Isto é, quanto de recursos do sistema ele pode utilizar. Isso é uma proteção para que caso o usuário faça algo errado, não prejudique a estabilidade do sistema.

Os processos do Linux são preemptivos, isso significa que quando um processo entra no estado TASK RUNNING o kernel vai checar se existe alguma prioridade maior do que o processo corrente. Caso exista, o processo corrente é interrompido e o que tem prioridade maior começa a rodar.

A prioridade de um processo no Linux está em constante alteração, o escalonador se mantém informado sobre o que os processos estão fazendo e assim torna-se possível ajustar a prioridade. Dessa maneira os processos que ficaram proibidos de utilizar o CPU por um longo intervalo de tempo, tem sua prioridade incrementada automaticamente, contrariamente os processos que passaram um longo período dentro do CPU são penalizados tendo sua prioridade decrementada.

O algoritmo de escalonamento do Linux funciona dividindo o tempo do CPU em fatias. Em uma única fatia cada processo tem um tempo especifico de duração que é computada assim que essa fatia inicia. Geralmente processos diferentes tem tempos de execução diferentes. Quando o tempo de execução de um processo termina ele é retirado do CPU e outro processo que está rodando é colocado no seu lugar.

Uma fatia termina quando todos os processos esgotaram seu tempo reservado de execução, assim o escalonador é responsável por calcular o tempo de execução para todos os processos e uma nova fatia inicia. Para o Linux escolher qual processo deve rodar ele precisar escolher qual tem a prioridade maior, existem dois tipos de prioridade:
  • Prioridade Estática - Definido pelo usuário para processos que necessitam de tempo real, os valores variam de 1 até 99 que nunca são modificados pelo escalonador.
  • Prioridade Dinâmica - Esta é aplicada para os processos convencionais. A prioridade dinâmica dos processos convencionais é sempre inferior aos processos com prioridade estática. Se existir um processo com prioridade estática no estado TASK RUNNING nenhum processo dinâmico irá rodar até que ele pare de executar.

(TOLEDO, 2005)

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

ISPConfig 3 no CentOS 6.4 64 bits

Eclipse no Debian pelo ambiente desktop (duplo-clique)

Shell do GNU/Linux

Iceweasel 4.0 no Debian Squeeze

Usando o SlackPorts

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts