O número e o tipo de daemons carregados na memória e executados pelo kernel em um sistema específico são definidos por uma interação complexa de vários fatores:
1.
o sistema de inicialização do sistema (init): Este é o driver principal. O sistema init (por exemplo, Systemd, sysvinit, runit) é responsável por iniciar, interromper e gerenciar Daemons. Ele lê arquivos de configuração (como `/etc/inittab` para arquivos da unidade Sysvinit ou Systemd) que especificam quais daemons devem ser iniciados no tempo de inicialização e em quais condições. Diferentes sistemas inits têm diferentes métodos e filosofias de configuração.
2.
arquivos de configuração: Esses arquivos detalham quais daemons executarem, seus parâmetros de execução (como argumentos da linha de comando), dependências entre daemons (que devem iniciar antes de outros) e os níveis de execução (sysvinit) ou estados de destino (SystemD). Essas configurações definem o conjunto fundamental de daemons.
3.
Runlevels/Target States: (Principalmente relevante para o Sysvinit) diferentes níveis de execução representam diferentes estados do sistema (por exemplo, modo de usuário único, modo multi-usuário). O sistema init carrega um conjunto diferente de daemons, dependendo do nível de execução ativo. O Systemd usa "alvos" mais flexíveis e poderosos que os níveis de execução.
4.
Dependências entre Daemons: Os daemons geralmente dependem de outros daemons estarem ativos. Por exemplo, um daemon do servidor da web pode depender de um daemon de rede em execução. O sistema init garante que as dependências sejam atendidas antes de iniciar um daemon.
5.
Serviços sob demanda: Alguns daemons podem não ser carregados na hora da inicialização, mas começaram dinamicamente quando necessário. Eles geralmente são acionados por solicitações de usuário ou outros eventos do sistema. Os serviços de rede, por exemplo, geralmente começam a ouvir apenas em uma porta quando uma conexão é tentada.
6.
scripts de inicialização automática: Alguns aplicativos ou pacotes de software instalam seus próprios scripts de inicialização que fazem com que o sistema init inicie os daemons associados após a inicialização ou conforme necessário.
7. Processos iniciados pelo usuário: Embora não sejam estritamente daemons no sentido tradicional, os usuários podem iniciar processos que são executados em segundo plano, agindo efetivamente como daemons (embora não tenham algumas das características dos daemons projetados adequadamente).
8. Módulos
kernel: Embora não estritamente daemons, os módulos do kernel (que estendem a funcionalidade do kernel) podem desencadear a criação ou modificação do comportamento dos daemons. Uma nova interface de rede pode exigir o início dos novos daemons relacionados à rede.
Em resumo, não é um único elemento, mas um esforço colaborativo entre a configuração do sistema init, seu entendimento das dependências e a startup dinâmica possivelmente dinâmica desencadeada por outros eventos que determina o conjunto preciso de daemons em execução em qualquer sistema. A complexidade surge da necessidade de gerenciar um conjunto diversificado de serviços do sistema de maneira eficiente e robusta.