process — Qual é a diferença entre um trabalho e um processo?
/Qual é a diferença entre um trabalho e um processo?
Qual é a diferença entre um "trabalho" e um "processo"?
20 de nov. de 2010 Olivier Lalonde
Um processo é qualquer programa em execução com seu próprio espaço de endereço.
Um trabalho é um conceito usado pelo Shell - qualquer programa iniciado interativamente que não se desanexe (ou seja, não um daemon) é um trabalho. Se você estiver executando um programa interativo, pressione CtrlZ suspendê-lo. Em seguida, você pode iniciá-lo novamente em primeiro plano (usando fg) ou em segundo plano (usando bg).
Enquanto o programa estiver suspenso ou em execução em segundo plano, você poderá iniciar outro programa - você terá dois trabalhos em execução. Você também pode iniciar um programa em execução em segundo plano, acrescentando um "&" como este: program &. Esse programa se tornaria um trabalho em segundo plano. Para listar todos os trabalhos que você está executando, você pode usar jobs.
Para obter mais informações sobre tarefas, consulte esta seção da página do manual do bash.
O UNIX possui conceitos separados "processo", "grupo de processos" e "sessão".
Cada Shell que você obtém no login torna-se o líder de seu próprio novo grupo de sessões e processos e define o grupo de processos de controle do terminal para si próprio.
O Shell cria um grupo de processos na sessão atual para cada "trabalho" iniciado e coloca cada processo iniciado no grupo de processos apropriado. Por exemplo, ls | head é um pipeline de dois processos, que o Shell considera um único trabalho e pertencerá a um único novo grupo de processos.
Um processo é um (conjunto de) encadeamentos de execução e outro contexto, como espaço de endereço e tabela de descritor de arquivo. Um processo pode iniciar outros processos; esses novos processos pertencerão ao mesmo grupo de processos que o pai, a menos que outra ação seja tomada. Cada processo também pode ter um "terminal de controle", que começa da mesma forma que seu pai.
O Shell tem o conceito de trabalhos "em primeiro plano" e trabalhos "em segundo plano". Trabalhos em primeiro plano são grupos de processos com controle do terminal e trabalhos em segundo plano são grupos de processos sem controle do terminal.
Cada terminal possui um grupo de processos em primeiro plano. Ao trazer um trabalho para o primeiro plano, o Shell o define como o grupo de processos em primeiro plano do terminal; ao colocar um trabalho em segundo plano, o Shell define o grupo de processos em primeiro plano do terminal como outro grupo de processos ou ele próprio.
Os processos podem ler e gravar no terminal de controle, se estiverem no grupo de processos em primeiro plano. Caso contrário, eles recebem os sinais SIGTTIN e SIGTTOU nas tentativas de leitura e gravação no terminal, respectivamente. Por padrão, esses sinais suspendem o processo, embora a maioria dos shells oculte SIGTTOU para que um trabalho em segundo plano possa gravar no terminal ininterruptamente.
20 de nov. de 2010 ephemient
Na computação, um trabalho é uma unidade de trabalho ou unidade de execução (que executa o referido trabalho). Um componente de uma tarefa (como uma unidade de trabalho) é chamado de tarefa ou etapa (se sequencial, como em um fluxo de tarefas). Como uma unidade de execução, um trabalho pode ser identificado concretamente com um único processo, que por sua vez pode ter subprocessos (processos filhos; o processo correspondente ao trabalho sendo o processo pai) que executa as tarefas ou etapas que compõem o trabalho do trabalho; ou com um grupo de processos; ou com uma referência abstrata a um processo ou grupo de processos, como no controle de tarefas do Unix.