serel provides synchronisation primitives to init [1] that allow a computer's services to start and run in parallel. This reduces boot time because service startup is often the most time-consuming phase of the boot process, and because dependencies between services seem to be relatively rare.
serel is designed to be useful on a wide array of operating system platforms, even though there is considerable diversity in the way that operating systems start services [me00]. Aiming to support diversity, serel is designed so as not to be responsible for starting services. Init starts services; platforms are free to use the serel framework in diverse ways.
In order for serel to be usable as early as possible within user-space, the implementation does not depend on any services started by init.
Table 1. Phases of boot
Phase | Description |
---|---|
Bios | The bios locates and initialises hardware. A boot loader may run. Control passes to the kernel. |
Kernel | The kernel starts and passes control to init in user space. |
User-space - "basic" services | The "basic" services may include: filesystem check and mount, load and initialise device drivers, and initialise system time. . |
User-space - "optional" services | The "optional" services may include: logging, networking, mail, network filesystems, web server, the windowing system etc. |
The name "serel" derives from "SErvices and RELationships". The name hints at the core idea - that explicit service relationships allows operating systems to boot faster.
serel is open-source software, licensed under the GNU General Public Licence, Version 2.
More information on serel is available at http://www.fastboot.org.
[1] | On many *nix systems, the first user-space process is named init. init (or a child like rc) is responsible for starting system services. |