Detalhes dos Processos
100%

Processos · Lição 3

Detalhes dos Processos

Aprenda quais estados e recursos diferenciam um processo em execução de um programa armazenado no disco.

Um programa é formado por código executável e dados armazenados em um arquivo. Um processo é um contexto ativo de execução: ele inclui código mapeado, memória, credenciais, descritores de arquivos abertos, estado dos sinais, informações de escalonamento e uma ou mais threads. O mesmo programa pode ter várias instâncias de processos independentes.

Instâncias de Programas e PIDs

Por exemplo, inicie cat sem operandos em dois terminais. Cada instância aguarda uma entrada e possui seu próprio ID de processo:

$ pgrep -a cat
18420 cat
18457 cat

Os dois processos executam o mesmo programa, mas podem ter fluxos de entrada, conteúdos de memória, credenciais, diretórios de trabalho e durações diferentes. Um PID identifica um processo ativo por vez e pode ser reutilizado mais tarde, depois que esse processo termina.

O que diferencia duas instâncias em execução do mesmo programa?

Estado Acompanhado pelo Kernel

O kernel mantém as informações necessárias para escalonar e controlar cada processo, incluindo:

  • identificadores do processo e de seu pai
  • credenciais de usuário e grupo
  • mapeamentos de memória virtual
  • descritores de arquivos abertos e diretório atual
  • disposições de sinais e sinais pendentes
  • política de escalonamento, prioridade e estado de execução
  • dados de contabilização, como tempo de CPU

Alguns recursos subjacentes podem ser compartilhados. Processos relacionados podem compartilhar memória mapeada, e as threads de um mesmo processo compartilham um espaço de endereços e muitos recursos do processo. Portanto, um processo oferece limites de isolamento sem implicar que cada byte ou objeto do kernel seja fisicamente privado.

Qual componente mantém os estados de escalonamento e credenciais dos processos Linux?

Escalonamento da CPU e Memória

As threads executáveis disputam tempo de CPU. O escalonador do kernel escolhe qual thread será executada em qual CPU de acordo com a classe de escalonamento, a prioridade, a afinidade de CPU, a carga e a política. Isso não é uma promessa de que todos os processos receberão uma parcela igual.

Cada processo normalmente enxerga um espaço de endereços virtual. O kernel e o hardware mapeiam endereços virtuais para a memória física ou outro armazenamento de apoio, aplicam proteções e podem compartilhar páginas quando apropriado. Portanto, um valor de memória em ps ou top não é automaticamente a quantidade de RAM física exclusiva atribuída àquele processo.

O que o escalonador do Linux seleciona?

Encerramento do Processo e Liberação de Recursos

Quando um processo termina, o kernel libera a maioria de seus recursos privados, fecha os descritores restantes e registra informações de encerramento para o processo pai. Um pequeno registro na tabela de processos pode permanecer como zumbi até que o pai recupere o status de saída. Isso significa que “o processo terminou a execução” e “todos os vestígios desapareceram da tabela de processos” nem sempre ocorrem simultaneamente.

Por que um processo encerrado pode permanecer brevemente como zumbi?

Lição concluída

Você concluiu Detalhes dos Processos

Agora você sabe descrever um processo como algo além de um arquivo de programa.

  • Diferencie o código executável armazenado de uma instância ativa de processo.

  • Identifique os estados e recursos acompanhados pelo kernel.

  • Relacione o escalonamento às threads executáveis, não a parcelas iguais.

  • Reconheça que o status de saída pode permanecer até que o pai o colete.

Salve seu progresso

Crie uma conta gratuita para salvar esta lição e continuar em qualquer dispositivo.

Criar uma conta gratuita
Próxima Lição
Voltar para Processos