Processos no Linux

Este artigo descreve de maneira básica o tão importante conceito de processos no Linux e, em seguida, mostra quais os meios mais usados para controlá-los e manipulá-los.

[ Hits: 149.397 ]

Por: Emerson Alecrim em 23/11/2005


Introdução



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. A seguir, você verá os principais conceitos relacionados a processos no Linux e as ferramentas usadas para manipulá-los e gerenciá-los.

Composição de um processo


O sistema operacional lida com uma infinidade de processos e, por isso, é necessário ter meios que permitam controlá-los. Para isso, os processos contam com um conjunto de características, dentre as quais:
  • Proprietário do processo;
  • Estado do processo (em espera, em execução, etc);
  • Prioridade de execução;
  • Recursos de memória.

O trabalho de gerenciamento de processos precisa contar com as informações acima e com outras de igual importância para que as tarefas sejam executadas da maneira mais eficiente. Um dos meios usados para isso é atribuir a cada processo um PID.

PID e PPID


Um PID (Process Identifier) é um número de identificação que o sistema dá a cada processo. Para cada novo processo, um novo número deve ser atribuído, ou seja, não se pode ter um único PID para dois ou mais processos ao mesmo tempo.

Os sistemas baseados em Unix precisam que um processo já existente se duplique para que a cópia possa ser atribuída a uma tarefa nova. Quando isso ocorre, o processo "copiado" recebe o nome de "processo pai", enquanto que o novo é denominado "processo filho". É nesse ponto que o PPID (Parent Process Identifier) passa a ser usado: o PPID de um processo nada mais é do que o PID de seu processo pai.

UID e GID


Conforme já mencionado, cada processo precisa de um proprietário, um usuário que seja considerado seu dono. A partir daí, o sistema saberá, através das permissões fornecidas pelo proprietário, quem pode e quem não pode executar o processo em questão. Para lidar com os donos, o sistema usa os números UID e GID.

O Linux gerencia os usuários e os grupos através de números conhecidos como UID (User Identifier) e GID (Group Identifier). Como é possível perceber, UID são números de usuários e GID são números de grupos. Os nomes dos usuários e dos grupos servem apenas para facilitar o uso humano do computador.

Cada usuário precisa pertencer a um ou mais grupos. Como cada processo (e cada arquivo) pertence a um usuário, logo, esse processo pertence ao grupo de seu proprietário. Assim sendo, cada processo está associado a um UID e a um GID.

Os números UID e GID variam de 0 a 65536. Dependendo do sistema, o valor limite pode ser maior. No caso do usuário root, esses valores são sempre 0 (zero). Assim, para fazer com que um usuário tenha os mesmos privilégios que o root, é necessário que seu GID seja 0.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Sinais de processos
   3. Comandos nice e renice
   4. Verificando processos com o ps
   5. Verificando processos com o top
   6. Os recursos jobs, fg e bg, fuser, pstree, nohup
Outros artigos deste autor

O gerenciador de boot GRUB

Usando cron e crontab para agendar tarefas

Máquina Virtual Java (Java Virtual Machine)

Leitura recomendada

Computação Distribuída com TORQUE Resource Manager - Parte 2

Compilação, empacotamento, instalação e configuração do WINE-dev

Menu de Aplicativos do Window Maker

Se você não pode com seus inimigos, compre-os!

Criando pacotes pré-compilados no Gentoo

  
Comentários
[1] Comentário enviado por mascote24 em 23/11/2005 - 10:19h

Parabéns Weber, excelente artigo !

Para conhecer/saber como funcionam processos nos *nix está completo. Começar a aprender com este artigo é no mínimo começar por um bom começo.

Acrescentei-o aos meus favoritos.

[2] Comentário enviado por mms_ba em 23/11/2005 - 16:03h

Parabens pela qualidade/ conteúdo do material. :) Ja adicionei aqui nos favoritos.

[3] Comentário enviado por silviojunior em 23/11/2005 - 19:37h

Artigo de excelente qualidade!

[4] Comentário enviado por in54no em 23/11/2005 - 21:24h

Muito bom,
Parabens!

[5] Comentário enviado por Cybertitan em 24/11/2005 - 01:55h

Otimo artigo, resumiu muito bem, esta de parabens.

[6] Comentário enviado por luiscarlos em 24/11/2005 - 10:29h

Sempre percebi que a maquina depois de inciar mesmo com os serviços não essenciais todos parados, ainda rodam em médiua de 60 a 70 processos, a maioria em estado sleeping ou em espera, alguém sabe quais os processos minimos necessários para que a maquina funciona usando o mínimo de memória? eu gostaria de rodar uma console com o mínimo necessário e tmb depois rodar o KDE com o mínimo necesário, já retirei tudo que nao precisava, mas ainda tem muito processo, queria diminuir pra uns 30 no maximo

[7] Comentário enviado por xith em 24/11/2005 - 17:24h

Cara parabens pelo artigo, tirei uma duvida vital nele!
Excelente

[8] Comentário enviado por PCMasterPB em 26/11/2005 - 17:50h

Realmente muito bom esse artigo! Emerson, você está de parabéns!!!

[9] Comentário enviado por brunomark em 01/08/2006 - 19:41h

Excelente material Emerson, matéria fundamental para sobreviver no modo texto

[10] Comentário enviado por decohab em 17/10/2006 - 13:42h

Legal einh boa dica para iniciantes
Ai vai mais um bom tutorial pra galera GNU
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=4152&pagina=6

Só uma complementação a vezes até util para não deixar o SHELL preso é usar recursos em background .. util para quando se quer copiar arquivos acima de 200 megas e não se ker ficar preso esperando terminar.. basta usar no final do comando &.

ex.

# cp arquivo.xxx /home &

!!Valew!!!

[11] Comentário enviado por cassimirinho em 16/01/2008 - 13:52h

Uma pergunta sobre processos, a cada reinício do sistema o número do PID é sempre o mesmo pra cada "executável" ?

[12] Comentário enviado por stickybit em 21/01/2009 - 17:04h

Vale lembrar que, os números nice vão de -20a +19. Qualquer usuário pode iniciar um processo com um número nice positivo, mas apenas o superusuário (root) pode diminuir o número nice de um processo, aumentando com isso a sua prioridade.

[13] Comentário enviado por thiagomadeira em 04/01/2013 - 09:51h

Maninho muito bom o seu artigo, parabéns !!!

[14] Comentário enviado por removido em 23/01/2014 - 10:18h

Excelente artigo! Obrigado por compartilhar conhecimento!


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