DebianSistemas operacionais

Debian optou pelo Systemd ao Upstart, entenda a diferença entre os dois

Qual a diferença entre Systemd e Upstart no fim das contas?

Recentemente virou notícia o fato de Debian ter escolhido o sistema de inicialização Systemd, muito popular nas distribuições Linux atuais, ao Upstart desenvolvido pela Canonical. Isso gerou mais uma discussão no cenário Linux, e rapaz… como tem discussão por aqui ultimamente, a verdade é que muitos defendem um, outros tantos defendem o outro mas ninguém explica as diferenças entre ambos e quais as vantagens de um ou de outro, é isso que eu quero explicar para vocês.

Qual a diferença entre Systemd e Upstart?

Essa é certamente uma dúvida que permeia quem leu a tal notícia, mas já vou te adiantando independente de um ou de outro isso pouco vai afetar a vida de um usuário final, como este artigo tende a ser mais técnico do que o normal, se você não tiver interesse nesse tipo assunto está convidado a ver qualquer outro artigo aqui do blog, caso contrário seja bem vindo ao barco Linux. =)

Em resumo: Acho que isso serve para você entender os dois, na hora de iniciar um sistema Linux depois que o Kernel é carregado pelo GRUB ( por ser outro gerenciador de booloader como o Lilo também), depois de realizar as suas tarefas básicas, como montar o sistema raiz, verificar os módulos de drivers incluídos nele mesmo ou fornecidos por um initdr, o Kernel entrega o controle do sistema operacional para o processo “init” que se encarrega de iniciar todos os outros processos e tarefas, como gerenciador de rede, Bluetooth, cron, acpid, cups e todos os outros que carregam junto com o sistema operacional, finalizando com o servidor gráfico e o gerenciador de login.

Todos os recursos do sistema operacional que você está usando e que são iniciados juntamente com a distro se devem ao seu carregamento através do processo “init”, inclusive se você rodar o comando:

pstree | less

Vai ver que o processo “init” é o pai de todos os outros, como no exemplo abaixo: 

árvore de processos Linux init

É esse processo de inicializam, ou como se comporta essa inicialização que chamamos de Systemd ou de Upstart, também existem outros mais antigos como o Sysvinit, utilizado pelo Debian até a sua versão atual e que agora será substituído pelo Systemd.

Antigamente o Sysvinit é que dizia como a inicialização do GNU/Linux se daria (init), quais os processos seria chamados e em que ordem, na prática, antigamente ele funcionava como um sistema em série, um novo processo era iniciado somente depois que outro era concluído e assim sucessivamente até a inicialização do sistema ser completada. Nessa época os processadores tinham apenas um núcleo e não era de interesse de ninguém que processos fossem iniciados de maneira paralela pois isso ao invés de agilizar a inicialização iria deixar ela mais lenta em processadores mono nucleados, mas isso mudou e mudou muito!

Praticamente todos os computadores atuais tem processadores com mais de um núcleo e por isso o Sysvinit se mostrava defasado e precisou sofrer alterações, o Debian deu um jeito de criar scripts para permitir o uso de multi núcleos na hora de iniciar os processos do sistema mesmo utilizando Sysvinit, esse procedimento vem sendo usado desde então, já outros sistemas preferiram criar o seu próprio método de inicialização, especialmente liderado pela Red Hat e pela Novell ( RHEL, Fedora e openSUSE) aconteceu então a criação do Systemd, a Canonical por sua vez criou também o seu próprio sistema e usa o Upstart, assim como a maioria de seus derivados diretos.

Upstart

O Upstart surgiu antes dos processadores multi núcleo. a ideia era reformar por completo o sistema de init, o objetivo do Upstart era substituir o binário /sbin/init por um outro que fosse capaz de tomar decisões de inicialização com base em eventos.

 Um evento pode iniciar um serviço que, por sua vez, dispara um outro evento ao ser carregado e este pode disparar outro serviço, e assim por diante, além disso o Upstart supervisiona os serviços com competência, pois serviços que venham a morrer inesperadamente podem ser iniciados novamente sem que seu processo-pai sequer tome conhecimento da morte prematura. A comunicação dos serviços com o próprio init, no Upstart, ocorre por meio do D-Bus, o “novo” barramento padrão de sistemas GNU/Linux.

As FAQ do Upstart dão uma ideia dos objetivos desse projeto, que incluem:

  • Substituir os daemons cron, atd e anacron,
  • Talvez substituir o inetd,
  • Jamais, em hipótese alguma, substituir hal, udev, DeviceKit e acpid.

Systemd

o Systemd tem uma funcionalidade semelhante ao Upstart mas ele vai além, ele abandona o uso de scripts para a inicialização mesmo que possa chamar scripts para iniciar serviços e tenta retirar dos scripts a “inteligência” de verificação de dependências, transferindo-a para outras instâncias, como o barramento D-Bus, o autofs e os sockets de rede. 

O paralelismo, portanto, alcança seu maior grau possível, muitas vezes deixando a cargo de subsistemas do kernel o encaminhamento de sinais que farão cada serviço ser iniciado.O systemd lança mão do recurso de cgroups para catalogar de forma automática e inescapável os PIDs dos processos iniciados por cada serviço, e assim consegue garantir que, ao parar determinado serviço, todos os processos que tenham sido iniciados por ele sejam terminados.

Desempenho

Comparar o desempenho de sistemas de init diferentes é, provavelmente, uma tarefa impossível. Em primeiro lugar, cada sistema é adotado por uma distribuição GNU/Linux diferente, então a comparação já se torna injusta a partir deste ponto. Além disso, a decisão sobre qual momento representa o fim do processo de inicialização seria, inevitavelmente, arbitrária e contrária à opinião de muitas pessoas.

Portanto, termino este post com uma afirmação inegavelmente subjetiva: nos sistemas que já testei, minha percepção foi que o Upstart e o systemd são os mais velozes, enquanto que o novo sysvinit paralelo do Debian contribuiu muito pouco para abreviar seu tempo de inicialização, por isso a necessidade de atualização.

No final das contas ambos os sistemas fazem o que prometem com muito pouca diferença de tempo, pra não dizer nenhuma, não tem porque querer trocar o sistema de inicialização da sua distro, use o que vem por padrão e seja feliz, como eu falei no início, a nível de usuário final isso não faz rigorosamente nenhuma diferença, pelo menos por enquanto.

Este é um assunto bem técnico e eu não sou especialista mas espero que o artigo tenha contribuído para o seu entendimento e conhecimento.

Referência.

Quer continuar por dentro de tudo o que acontece por aqui?

Então curta nossa página no FACEBOOK, siga o blog no TWITTER  – Siga também nossos escritores 

@dionatanvs +Dionatan Simioni + Elian Medeiros 

Baixe o APP do Diolinux para o seu Smartphone

Se você tiver alguma dúvida procure um de nossos grupos de discussão no Facebook:

Usuários Linux – RS    Android World Brasil   

Canais no YouTube

Diolinux   Strondus Games  

Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!