Processo em segundo plano - Background process

Um processo em segundo plano é um processo de computador executado nos bastidores (ou seja, em segundo plano) e sem a intervenção do usuário. As tarefas típicas para esses processos incluem registro, monitoramento do sistema, agendamento e notificação do usuário. O processo em segundo plano geralmente é um processo filho criado por um processo de controle para processar uma tarefa de computação. Após a criação, o processo filho será executado por conta própria, realizando a tarefa independente do processo de controle, liberando o processo de controle de realizar aquela tarefa.

Em um sistema Windows , um processo em segundo plano é um programa de computador que não cria uma interface de usuário ou um serviço do Windows . Os primeiros são iniciados da mesma forma que qualquer outro programa, por exemplo, por meio do menu Iniciar . Os serviços do Windows, por outro lado, são iniciados pelo Service Control Manager . No Windows Vista e posterior, eles são executados em uma sessão separada . Não há limite para o quanto um serviço do sistema ou processo em segundo plano pode usar os recursos do sistema. De fato, na família Windows Server de sistemas operacionais Microsoft, espera-se que os processos em segundo plano sejam os principais consumidores dos recursos do sistema.

Em um sistema Unix ou semelhante ao Unix , um processo ou trabalho em segundo plano pode ser posteriormente identificado como aquele cujo ID de grupo de processo difere de seu ID de grupo de terminal (TGID). (O TGID de um processo é o ID do processo do líder do grupo de processo que abriu o terminal, que normalmente é o shell de login. O TGID identifica o terminal de controle do grupo de processo.) Este tipo de processo é incapaz de receber sinais de teclado de seu terminal pai e, normalmente, não enviará saída para esse terminal. Esta definição mais técnica não distingue se o processo pode ou não receber intervenção do usuário. Embora os processos em segundo plano sejam normalmente usados ​​para propósitos que precisam de poucos recursos, qualquer processo pode ser executado em segundo plano, e tal processo se comportará como qualquer outro processo, com as exceções fornecidas acima.

Serviços Windows

Na família de sistemas operacionais Windows NT , um serviço do Windows é um processo dedicado em segundo plano. Um serviço do Windows deve estar em conformidade com as regras de interface e protocolos do Service Control Manager , o componente responsável por gerenciar os serviços do Windows.

Os serviços do Windows podem ser configurados para iniciar quando o sistema operacional é iniciado e para serem executados em segundo plano enquanto o Windows estiver em execução. Alternativamente, eles podem ser iniciados manualmente ou por um evento. Sistemas operacionais Windows NT incluem inúmeros serviços que são executados no contexto de três contas de usuário : System, Network Servicee Local Service. Esses componentes do Windows são frequentemente associados ao Processo de host para serviços do Windows: svchost.exe . Como os serviços do Windows operam no contexto de suas próprias contas de usuário dedicadas, eles podem operar quando um usuário não está conectado.

Antes do Windows Vista , os serviços instalados como "serviços interativos" podiam interagir com a área de trabalho do Windows e mostrar uma interface gráfica do usuário . Com o Windows Vista, no entanto, os serviços interativos tornaram-se obsoletos e deixaram de funcionar corretamente, como resultado do Windows Service Hardening .

Os três principais meios de gerenciamento de serviços do Windows são:

  1. Snap-in de serviços para o console de gerenciamento Microsoft
  2. sc.exe
  3. Windows PowerShell

Daemon

Um daemon é um tipo de processo em segundo plano projetado para ser executado continuamente em segundo plano, esperando que ocorram eventos ou condições sejam atendidas. Esses processos normalmente usam recursos mínimos do sistema e executam tarefas que exigem pouca ou nenhuma entrada do usuário. Quando lançado com a função daemon , os daemons são desassociados de seu terminal pai.

Lançamento e retomada no Unix

A partir de uma linha de comando Unix, um processo em segundo plano pode ser iniciado usando o operador "&". O utilitário bg pode retomar um trabalho suspenso (enviando SIGCONT ), executando-o em segundo plano. Usar o utilitário fg também reconectará a entrada padrão ao terminal pai, trazendo-o para o primeiro plano. O utilitário de tarefas listará todos os processos associados ao terminal atual e pode ser usado para trazer os processos de segundo plano para o primeiro plano.

Quando uma sessão de login termina, por meio de logout explícito ou desconexão de rede, todos os processos, incluindo processos em segundo plano, serão encerrados por padrão, para evitar que se tornem processos órfãos . Concretamente, quando o usuário sai do processo de shell de lançamento, como parte de desligamento envia um desligamento do sinal ( SIGHUP ) a todos os seus postos de trabalho , para encerrar todos os processos no correspondente grupo de processos . Para que os processos continuem em execução, não é possível encerrar a sessão ou encerrá-la sem encerrar os processos. Um multiplexador de terminal pode ser usado para deixar uma sessão em execução, mas desconectar um terminal virtual dela, deixando os processos em execução como processos filho da sessão; o usuário pode então reconectar a sessão mais tarde. Ou o encerramento pode ser evitado iniciando o processo por meio do comando nohup (dizendo ao processo para ignorar SIGHUP) ou executando posteriormente disowncom o id do trabalho, que remove o trabalho completamente da lista de trabalhos ou simplesmente impede que SIGHUP seja enviei. No último caso, quando a sessão termina, os processos filhos não são encerrados, seja porque não são enviados SIGHUP ou porque o ignoram e, portanto, tornam-se processos órfãos, que são então adotados pelo processo init (o kernel define o processo init como pai), e eles continuam executando sem uma sessão, agora chamados de daemons .

Exemplo

Neste exemplo em execução no Unix , o utilitário sleep foi lançado em segundo plano. Posteriormente, a ferramenta ps foi executada em primeiro plano, onde gerou o texto abaixo. Ambos foram lançados do shell.

  PID TT  STAT    TIME COMMAND
54659 10  S    0:00.06 su (zsh)
54703 10  IN   0:00.00 - sleep 1000
54852 10  R+   0:00.00 - ps -U botty -axd

Smartphones

Muitas versões mais recentes de smartphones e sistemas operacionais de PDA agora incluem a capacidade de iniciar processos em segundo plano. Devido aos limites de hardware, os processos em segundo plano em sistemas operacionais móveis costumam ser restritos a certas tarefas ou níveis de consumo. No Android , o uso da CPU para processos em segundo plano é limitado a 5 - 10%. Os aplicativos de terceiros no iOS da Apple são limitados a um subconjunto de funções durante a execução em segundo plano. Tanto no iOS quanto no Android, os processos em segundo plano podem ser eliminados pelo sistema se estiverem usando muita memória.

Veja também

Referências