==== SERVICE LIST ==============================================================

overlordd	root process, manages all system-level services
launchd		launches executables
nsd		manages the system namespace (aka where all filesystems are
		mounted)
lockdownd	implements security and authentication
sessiond	manager and root process for a user session
airportd	manages sockets and network communications.
emdevd		host process for device drivers, one instance per system, hosts
		*all* devices
seatd		Manages and controls access to monitor and peripheral devices.
fsd		host process for filesystem driver, one instance per mounted
		filesystem


==== TASK HIERARCHY ============================================================

backboardd
+--launchd
+--nsd
+--lockdownd
+--deviced
+--airportd
+--sysfsd
+--seatd
+--sessiond
|  +--window-manager
|     +--file-browser
|     +--web-browser
+--sessiond
|  +--fbterm
|     +--bshell
|        +--vim
+--e2fsd
+--fatfsd


==== SERVICE DETAILS ===========================================================

## BACKBOARDD ####
 * Root task (ID 1) created by the kernel during boot
 * manages the startup and lifecycle of all system-level services
 * Every task is provided with a handle to backboardd as part of the initial
   task environment
 * Backboardd can be used to gain access to certain system-level services, such
   as the namespace and task launcher

## LAUNCHD ####
 * Task creation service
 * Accepts requests from clients to run executable files

## NSD ####
 * Manages the system namespace
 * Filesystems can be mounted in the system namespace to make them visible to
   clients.

## LOCKDOWND ####
 * Manages security and authentication
 * Provides security tokens that can be associated with privileges and used
   for authorisation.

## SESSIOND ####
 * Root process for user login sessions.
 * All child tasks receive a connection to the session controller.
 * Holds session-wide data

## DEVICED ####
 * Hosts all device drivers.
 * Device drivers are implemented as shared libraries that are loaded into
   the device server at runtime.
 * Also hosts the device filesystem (usually mounted at /dev)

## SEATD ####
 * Manages 'seats'.
 * A seat is all of the peripherals that a user needs to interact with the
   system. Includes the monitor, keyboard, and mouse.
 * Allows multiple tasks to access a single seat at once. The user can use a
   special keyboard shortcut to switch between tasks.

## AIRPORTD ####
 * Manages remote communications.
 * All open sockets are represented internally as connections to airportd.
 * Supports loadable modules, which provide support for different network features,
   such as unix sockets, internet sockets, and passing messages between remote machines.

