Definição de um processo


Um processo é uma instância em execução de um programa executável iniciado. A partir do momento em que um processo é criado, ele consiste nos seguintes itens:

  • Um espaço de endereço de memória alocada

  • Propriedades de segurança, incluindo credenciais do proprietário e privilégios

  • Um ou mais threads de execução do código do programa

  • Um estado de processo

O ambiente de um processo é uma lista de informações que inclui os seguintes itens:

  • Variáveis locais e globais

  • Um contexto de agendamento atual

  • Recursos alocados do sistema, como descritores de arquivo e portas de rede

Um processo pai existente duplica seu próprio espaço de endereços, que é conhecido como um processo fork, para criar uma estrutura de processo filho.

Cada novo processo recebe uma única ID de processo (PID) para fins de rastreamento e segurança. A PID e a ID do processo pai (PPID) são elementos do novo ambiente de processo. Qualquer processo pode criar um processo filho.

Nota

Todos os processos são descendentes do primeiro processo do sistema, systemd, em um sistema da Red Hat.

Por meio da rotina fork, um processo filho herda:

  • As identidades de segurança

  • Os descritores de arquivo atuais e anteriores

  • Os privilégios de porta e de recurso

  • As variáveis de ambiente

  • O código do programa.

Um processo filho pode então executar seu próprio código do programa.

Normalmente, um processo pai hiberna enquanto o processo filho é executado, configurando uma solicitação de espera a ser sinalizada quando da conclusão do filho.

Depois que o processo filho é encerrado, ele fecha ou descarta seus recursos e ambiente e deixa um recurso zumbi, que é uma entrada na tabela de processos. O pai, sinalizado ativo quando o filho saiu, limpa a tabela de processo da entrada do filho, liberando, assim, o último recurso do processo do filho. O processo pai continua com sua própria execução de código do programa.

Referências