Pilotは、1977年初頭にXerox PARCによって設計された、シングルユーザー向けの
マルチタスクオペレーティングシステムです。このOSはMesa
プログラミング言語で記述され、約24,000行のコードで構成されています。
Pilotの概要
Pilotは、高度にネットワーク化された環境で他のPilotシステムと連携することを想定して設計されました。
[プロセス間通信]には、Pilotストリームインターフェースを利用し、ネットワーク上での効率的なデータ交換を可能にしています。仮想メモリとファイルストレージは一つのサブシステムに統合され、システムリソースの管理にはマネージャ/カーネルアーキテクチャが採用されています。
マルチタスクモデルに関しては、当初は非プリエンプティブ方式が検討されましたが、最終的にはモニターに基づいたプリエンプティブ(ブロックされるまで実行)方式が選択されました。この方式により、システムはより柔軟かつ効率的なタスク管理が可能となりました。
特筆すべきは、Pilotには「Co-Pilot」と呼ばれるデバッガが組み込まれていた点です。これにより、ディスクに保存されたオペレーティングシステムのフリーズしたスナップショットをデバッグすることが可能でした。Co-Pilotは、開発者がシステムの状態を詳細に把握し、問題を特定・解決する上で重要なツールとなりました。
Pilotのユニークな開発環境
典型的なPilotワークステーションでは、3つの異なるディスクボリューム上で、3つのオペレーティングシステムが同時に実行されていました。これらは、メインのオペレーティングシステムがクラッシュした場合のバックアップデバッガ「Co-Co-Pilot」、プログラムのコンパイルとバインドに使用されるメインのオペレーティングシステム「Co-Pilot」、そして3番目のディスクボリューム上で実行されるPilotの下位コピーです。この下位コピーは、起動してテストプログラムを実行する際に、メインの開発環境がクラッシュするリスクを回避するために利用されました。
特に注目すべきは、デバッガが別のディスクボリュームに格納されたプログラムの変数を読み書きできるように設計されていたことです。このアーキテクチャにより、開発者は下位のディスクボリュームに格納されたオペレーティングシステムコードを、セマフォロック付きでシングルステップ実行することが可能でした。これは、当時のオペレーティングシステムとしては非常にユニークな機能でした。
しかし、DシリーズのXeroxプロセッサのメモリとソースコードの規模が大きくなるにつれて、オペレーティングシステムのチェックポイントと復元(「ワールドスワップ」と呼ばれた)にかかる時間が非常に長くなるという問題が発生しました。下位のオペレーティングシステム環境でたった1行のコードを実行するために、60秒から120秒もかかることがありました。この問題に対処するため、最終的にはCo-Pilotに代わる共存デバッガが開発されました。
Pilotは、
Xerox Starワークステーションのオペレーティングシステムとして採用されました。これにより、Pilotは実際の製品として利用され、その技術的な革新性が広く認識されることとなりました。
参照項目
オペレーティングシステムのタイムライン(英語版)
参考文献
Horsley, T.R., and Lynch, W.C. (Sept. 1979). “Pilot: A software engineering case history.”. In Proc. 4th Int. Conf. Software Engineering, Munich, Germany: 94-99.
外部リンク
*
Pilot: An Operating System for a Personal Computer