Grupo de processos - Process group

Em um sistema operacional em conformidade com POSIX , um grupo de processos denota uma coleção de um ou mais processos . Entre outras coisas, um grupo de processo é usado para controlar a distribuição de um sinal ; quando um sinal é direcionado a um grupo de processo, o sinal é entregue a cada processo que é membro do grupo.

Da mesma forma, uma sessão denota uma coleção de um ou mais grupos de processos. Um processo não pode criar um grupo de processos que pertença a outra sessão; além disso, um processo não tem permissão para ingressar em um grupo de processos que seja membro de outra sessão - ou seja, um processo não tem permissão para migrar de uma sessão para outra.

Quando um processo substitui sua imagem por uma nova imagem (chamando uma das funções ), a nova imagem está sujeita à mesma associação de grupo de processos (e, portanto, de sessão) da imagem antiga. exec

Formulários

A distribuição de sinais para grupos de processos forma a base do controle de tarefas empregado por programas shell . O driver de dispositivo TTY incorpora a noção de um grupo de processo em primeiro plano , para o qual ele envia sinais gerados por interrupções de teclado , notadamente SIGINT ("interrupção", Control+ C), SIGTSTP ("parada de terminal", Control+ Z) e SIGQUIT ("quit", Control+ \). Ele também envia os sinais SIGTTIN e SIGTTOU para quaisquer processos que tentam ler ou escrever no terminal e que não estão no grupo de processos em primeiro plano. O shell, por sua vez, particiona os pipelines de comando que cria em grupos de processos e controla qual grupo de processos é o grupo de processos de primeiro plano de seu terminal de controle , determinando assim quais processos (e, portanto, quais pipelines de comando) podem realizar I / O para e do terminal a qualquer momento.

Quando o shell é um novo processo filho para um pipeline de comando, tanto o processo shell pai quanto o processo filho transformam imediatamente o processo filho no líder do grupo de processos do pipeline de comando. Desta forma, é garantido que a criança seja o líder do grupo de processo antes que o pai ou a criança confie neste ser o caso. fork

Onde uma interface de usuário textual está sendo usada em um sistema do tipo Unix, as sessões são usadas para implementar as sessões de login . Um único processo, o líder da sessão , interage com o terminal de controle para garantir que todos os programas sejam encerrados quando um usuário "desligar" a conexão do terminal. (Onde um líder de sessão está ausente, espera-se que os processos no grupo de processos de primeiro plano do terminal lidem com bloqueios.)

Onde uma interface gráfica de usuário está sendo usada, o conceito de sessão é amplamente perdido e a noção do kernel de sessões é amplamente ignorada. As interfaces gráficas com o usuário, como onde o gerenciador de exibição X é empregado, usam um mecanismo diferente para implementar sessões de login.

Detalhes

A chamada do sistema é usada para criar uma nova sessão contendo um único (novo) grupo de processos, com o processo atual como o líder da sessão e o líder do grupo de processos desse único grupo de processos. Os grupos de processos são identificados por um número inteiro positivo, o ID do grupo de processos , que é o identificador do processo que é (ou era) o líder do grupo de processos. Os grupos de processos não precisam necessariamente ter líderes, embora sempre comecem com um. As sessões são identificadas pelo ID do grupo de processos do líder da sessão. POSIX proíbe a mudança do ID do grupo de processo de um líder de sessão. setsid

A chamada do sistema é usada para definir o ID do grupo de processo de um processo, juntando assim o processo a um grupo de processo existente ou criando um novo grupo de processo dentro da sessão do processo com o processo se tornando o líder do grupo de processo do recém-criado grupo. POSIX proíbe a reutilização de um ID de processo onde um grupo de processos com aquele identificador ainda exista (ou seja, onde o líder de um grupo de processos saiu, mas outros processos no grupo ainda existem). Dessa forma, garante que os processos não se tornem acidentalmente líderes de grupos de processos. setpgid

A chamada do sistemakill é capaz de direcionar sinais para processos individuais ou para grupos de processos.

Veja também

Referências

  1. ^ IEEE e The Open Group (2018). “3. Definições” . As especificações da base do grupo aberto, problema 7 . § 296 . Página visitada em 2020-08-30 . Uma coleção de processos que permite a sinalização de processos relacionados.
  2. ^ a b kill  - Referência de interfaces de sistema, The Single UNIX Specification , Issue 7 from The Open Group
  3. ^ IEEE e The Open Group (2018). “3. Definições” . As especificações da base do grupo aberto, problema 7 . § 343 . Página visitada em 2020-08-30 . Uma coleção de grupos de processos [...]. Cada grupo de processos é membro de uma sessão.
  4. ^ setsid  - System Interfaces Reference, The Single UNIX Specification , Issue 7 from The Open Group
  5. ^ setpgid  - System Interfaces Reference, The Single UNIX Specification , Issue 7 from The Open Group

Leitura adicional