Launchd
既存のしくみによるサービス制御についての不満の一つは、それらを集中管理するための方法がなく、OS上に散らばっているということである。Appleはlaunchctlでこれに対処した。
launchctlはそれ自身、コマンドラインや、標準入力、対話モードから操作可能なコマンドである。~/.launchd.conf や /etc/launchd.conf に書くことでコマンドを保存できる。スーパーユーザー権限でlaunchctlはシステム全体の変更ができる。
launchdには、システムのブートと、サービスをロードし維持するという二つの主なタスクがある。
PowerPC MacにおけるMac OS X Tigerのシステムの起動の概略を以下に示す。(Intel Macでは、Open FirmwareはEFIに、BootXは boot.efi にそれぞれ置き換えられている):
Open Firmwareがハードウェアを初期化し、それからBootXをロードする。
BootXがカーネルをロードし、スピンカーソルを表示、すべての必要なカーネル機能拡張をロードする。
カーネルがlaunchdをロードする。
launchdは /etc/rc を実行し、/System/Library/LaunchDaemons と /Library/LaunchDaemons を参照して、必要に応じてplistにもとづいた動作を行い、ログインウインドウを起動する。
ステップ4でlaunchdはジョブを実行するために二つのフォルダを参照する。LaunchDaemonsフォルダには、rootとして実行する(ふつうバックグラウンドの)プロセスの項目がある。LaunchAgentsフォルダには、ユーザかユーザランドのコンテキストで実行される、エージェントアプリケーションと呼ばれるジョブがある。