Existem duas definições comuns de "processo em segundo plano", uma em termos gerais e uma precisa e específica para o unix.
Em um sentido amplo, você pode chamar de "processo em segundo plano" qualquer processo que não esteja interagindo com o usuário sentado no console. Nesse sentido, o Apache é um processo em segundo plano.
Na terminologia do unix, o “processo em segundo plano” tem uma definição precisa. Um processo em segundo plano é um processo iniciado a partir de um terminal, mas atualmente está proibido de interagir com o terminal. (Estou simplificando, não considerando grupos de processos.) Você normalmente obtém um processo em segundo plano iniciando um trabalho em segundo plano em um shell:
$ myprogram &
[1] 12345
$
ou iniciando um programa, suspendendo-o e permitindo que ele continue em segundo plano:
$ myprogram
^Z
[1]+ Stopped myprogram
$ bg
[1]+ myprogram &
$
Se você iniciar um programa sem &
, ele estará em primeiro plano. Só pode haver um único processo em primeiro plano em um determinado terminal de cada vez. (Ou, em geral, um único grupo de processos, se o processo de primeiro plano iniciar alguns subprocessos.) Os shell internos bg
e fg
alteram qual processo está em primeiro plano. Quando um processo está em segundo plano, se ele tentar ler ou gravar no terminal, ele é parado por um sinal SIGTTIN ou SIGTTOUT .
Eu acho sua intuição que o Apache não é um processo em segundo plano porque está interagindo com o usuário por causa do HTTP. O Apache não está interagindo com o usuário: ele está interagindo com um navegador da Web remoto (que está interagindo com o usuário) ou com um cliente automatizado (que não está interagindo com o usuário). Se você considerar qualquer processo que interaja com um processo interativo como interativo, qualquer processo é interativo, o que o torna um conceito inútil.
A definição citada combina os processos em segundo plano com processos ociosos. Não há nenhuma razão para que um processo em segundo plano seja suspenso ou trocado mais do que um processo em primeiro plano. Um processo em segundo plano pode estar fazendo algum cálculo pesado, por exemplo. Por outro lado, se o usuário se afastar do console e houver outros processos ativos, os processos em primeiro plano podem ser trocados.