Processsos linux

Disponível somente no TrabalhosFeitos
  • Páginas : 7 (1514 palavras )
  • Download(s) : 0
  • Publicado : 9 de abril de 2013
Ler documento completo
Amostra do texto
Introdução
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 oLinux 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.
Primeiros Processos
Durante a fase de inicialização do Linux a função ``start_kernel'' é responsável por criar um thread, este é o processo de número zero, oprimeiro e o ascendente de todos os outros processos. Após inicializar toda a estrutura de dados para este processo esta mesma função é 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 processoa 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 filhos em poucos segundos e eventualmente morrem.
Existem alguns outros processos que também são criados pelo kernel durante a fase de inicialização e destruídos assim que o sistema desliga. Outros são criados sob demanda, assimque surge a necessidade deles são carregados.
Estados
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é quedeterminada 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 umachamada de sistema para retornar informações sobre o processo morto - ``wait'', as informações não são descartadas pois ainda podem ser utilizadas.
Limite de Recursos
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. Esseslimites são:
RLIMIT_AS
O tamanho máximo que um processo pode ter em bytes. O kernel checa esse valor quando um processo utiliza a chamada de sistema ``malloc'' ou similar.
RLIMIT_CORE
Quando um processo é abortado, o kernel pode gerar um arquivo core contendo as informações desse aborto. Este valor é utilizando para limitar o tamanho desse arquivo. Caso o valor seja zero O, o arquivo não é criado.RLIMIT_CPU
O tempo máximo em segundos que um processo pode ser executado. Caso esse limite seja ultrapassado o kernel envia um sinal SIGXCPU para tentar pacificamente finalizar sua execução, se isso não acontecer ele envia um SIGKILL e mata o processo.
RLIMIT_DATA
O tamanho máximo do heap ou memória de dados em bytes. O kernel checa esse valor antes de expandir o heap de um processo....
tracking img