==== 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.