| 開発者 | アイントホーフェン工科大学(Technische Hogeschool Aindhoven); エドガー・ダイクストラら |
|---|---|
| 書かれた | Electrologica X8 アセンブリ言語 |
| 作業状態 | 製造中止 |
| 初回リリース | 1965年 |
| 最終リリース | 最終回 / 1968年 |
| マーケティングターゲット | 研究 |
| 利用可能 | 英語 |
| 更新方法 | ソースコードからコンパイルする |
| プラットフォーム | エレクトロロジカX8 |
| カーネルタイプ | レイヤード |
| デフォルトの ユーザーインターフェース | 紙テープ |
THEマルチプログラミング システムまたはTHE OSは、 Edsger W. Dijkstra率いるチームによって設計されたコンピュータオペレーティング システムで、1965 年から 1966 年にかけてのモノグラフ[1]で説明され、1968 年に出版されました[2]。Dijkstra はシステムに名前を付けたことはなく、「THE」は単に「Technische Hogeschool Eindhoven」の略称で、当時はオランダのアイントホーフェン工科大学のオランダ語名でした。THE システムは主にバッチ システム[3]であり、マルチタスクをサポートしていました。マルチユーザーオペレーティング システムとして設計されたものではありませんでした。SDS 940によく似ていましたが、「THE システム内のプロセスセットは静的でした」。[3]
THEシステムは、ソフトウェアベースのページング 仮想メモリの最初の形式を導入したようです(Electrologica X8はハードウェアベースの メモリ管理をサポートしていませんでした)。[3]これにより、プログラムはドラムメモリ上の物理的な場所を使用する必要がなくなりました。これは、修正されたALGOL コンパイラ(ダイクストラのシステムでサポートされている唯一のプログラミング言語)を使用して、「システムルーチンへの呼び出しを自動的に生成し、要求された情報がメモリ内にあることを確認し、必要に応じてスワップする」ことで実現しました。[3]ページング仮想メモリは、入出力(I/O)デバイスデータのバッファリング、オペレーティングシステムコードの大部分、および ALGOL 60コンパイラのほぼすべてにも使用されました。このシステムでは、セマフォがプログラミング構造として初めて使用されました。
デザイン
THE マルチプログラミング システムの設計は、階層構造を使用している点で重要であり、この階層構造では、「上位」レイヤーは「下位」レイヤーのみに依存します。
- レイヤー 0 は、オペレーティング システムのマルチプログラミングの側面を担当していました。中央処理装置(CPU) に割り当てるプロセスを決定し、セマフォでブロックされたプロセスを考慮しました。割り込みを処理し、プロセスの変更が必要なときにコンテキスト スイッチを実行しました。これが最下位レベルです。現代の言葉で言えば、これはスケジューラでした。
- レイヤー 1 はプロセスにメモリを割り当てることに関係していました。現代の言葉で言えば、これはページャーです。
- レイヤー 2 は、オペレーティング システムとシステム コンソール間の通信を処理します。
- レイヤー 3 は、コンピューターに接続されたデバイス間のすべての I/O を管理します。これには、さまざまなデバイスからの情報のバッファリングが含まれます。
- レイヤー 4 はユーザー プログラムで構成されます。合計 5 つのプロセスがあり、ユーザー プログラムのコンパイル、実行、印刷を処理します。処理が完了すると、スケジュールキューに制御が戻されます。スケジュール キューは優先度に基づいており、最近開始されたプロセスと I/O のためにブロックされたプロセスを優先します。
- レイヤー 5 はユーザーです。Dijkstra 氏が指摘しているように、「私たちによって実装されたものではありません」。
上位層は下位層にのみ依存できるという制約は、システムについての推論(準形式的手法を使用)をより扱いやすくし、システムを段階的に構築およびテストしやすくするために設計者によって課されました。レイヤーは、レイヤー 0 から順に実装され、各レイヤーによって提供される抽象化が順に徹底的にテストされました。カーネルをレイヤーに分割するこの方法は、 Multicsの後のリングセグメント化モデルといくつかの点で似ています。Windows NTやmacOSなど、その後のいくつかのオペレーティングシステムでは、レイヤー化がある程度使用されていますが、通常はレイヤーが少なくなっています。
システムのコードは、オランダのElectrologica X8コンピュータ用にアセンブリ言語で書かれました。このコンピュータは、27ビットのワードサイズ、48キロワードのコアメモリ、[3] 512キロワードのドラムメモリ(LRUキャッシュアルゴリズム用のバックアップストアを提供)、紙テープリーダー、紙テープパンチ、プロッタ、プリンタを備えていました。
参照
- RC 4000 マルチプログラミング システム
- リング(コンピュータセキュリティ)
- オペレーティングシステムのタイムライン
- ソースコードは http://archive.computerhistory.org/resources/text/Knuth_Don_X4100/PDF_index/k-1-pdf/k-1-C1063.6-source-THE-os.pdf で入手できます。
参考文献
- ^ Dijkstra, Edsger W.「THE」マルチプログラミングシステムの構造 (EWD-196) (PDF) 。EW Dijkstra アーカイブ。テキサス大学オースティン校アメリカ歴史センター。 (転写)(1965年6月14日)
- ^ Dijkstra, EW (1968)、「THE マルチプログラミングシステムの構造」、Communications of the ACM、11 (5): 341–346、doi : 10.1145/363095.363143、S2CID 2021311
- ^ abcde Silberschatz, Abraham; Peterson, James L. (1988 年 5 月)、「13: Historical Perspective」、Operating System Concepts、p. 512
