I gave talk about this topic on CODE Beam V Americas, but I wasn't really satisfied with it. In this post I will try to describe what my presentation was meant to be about.
If you are wondering about the presentation, the slides are on SpeakerDeck.
Most of the operating systems are multi-process and multi-user operating systems. This has a lot of positive aspects, like to be able to do more than one thing at the time at our devices, but it introduces a lot of complexities that in most cases are hidden from the users and developers. These things still need to be handled in one or another way. The most basic problems are:
System supervisor is a process started early in the OS boot, that should handle starting and managing all other processes that will be run on our system. It is often the init process (first process started by the OS that is running with PID 1) or it is first (and sometimes only) process started by the init process. Popular examples of such supervisors (often integrated with init systems):
launchd that is used on Darwin (macOS, iPadOS, iOS, watchOS) systems that uses XML-based plists for services descriptionrunit which is small init and supervisor, but quite capable, for example used by Void Linuxsystemd (this is the name, not "SystemD") that was created by Red Hat employee, (in)famous Lennart Poettering, and later was adopted by almost all major Linux distributions which spawned some heated discussion about itIn this article I will focus on systemd, and its approach to "new-style system daemons".
DISCLAIMER