Upstart は、SysVinit の後継として開発された起動管理システムです。デーモンだけでなくタスクも含めた一連のプログラムを「ジョブ」として管理します。このジョブの起動や停止は、イベントに基づいて非同期に行われます。Upstart は、SysVinit との互換性を保ちつつ、より効率的な起動を実現しています。ブート時のタスクの起動やシャットダウン時のタスクの停止を同時に行うことで、システムの起動時間を短縮し、システムの動作管理も行います。最新のシステムでは Upstart を採用されることはなく、Systemd を使用することが一般的です。
Upstart の特徴は以下の通りです。
- サービスやタスクを「ジョブ」という単位で扱います。
- イベント駆動型を採用しており、サービスの起動を順番に待つのではなく、サービスが起動可能な状態になった時点で起動されます(並列処理)。
- ジョブの設定は /etc/init に配置されます。
技術的には、Upstart は従来の init プロセスが持っていた限界を克服するものです。従来の init は同期的にタスクを処理しており、現在のタスクが完了するまで次のタスクが開始されませんでした。しかし、Upstart のイベント駆動型モデルにより、タスクは非同期に実行され、イベントに応じて動作が開始されます。これにより、USB フラッシュドライブの挿抜やデバイスの発見、ファームウェアのロードなど、従来の init では対応が難しかった様々なタスクを効率的に処理できるようになります。
LPIC Upstart