知識ベース

アクセントカーネル

アクセントは、カーネギーメロン大学(CMU)で開発されたオペレーティングシステムカーネルでした。アクセントは、ロチェスター大学で開発されたAlephカーネルの後続として開発され、その問題のいくつかを修正し、ミニコンピューターではなくワークステーションマシン(具体的にはThree Rivers PERQ)のネットワークのハードウェアサポートを再ターゲット化しました。アクセントは、1981年から1985年まで実行されたCMUのSPICEプロジェクトの一部でした。アクセントの開発は、有名なマッハカーネルに直接つながりました。

元のAlephプロジェクトでは、データのコピーを使用して、プログラムが通信できるようにしました。アプリケーションはポートを開くことができます 。これにより、他のプログラムから送信されたデータを受信できるようになります。アイデアは、マシン上のリソースを制御する多数のサーバーを作成し、エンドユーザーに届くまでデータを渡すことでした。この点では、概念はUnixと似ていましたが、実装はメモリの代わりにメッセージを使用して大きく異なりました。これには、多くの問題があります。特に、Data General Eclipseでのメモリのコピーは非常に高価でした。

1979年、Alephのエンジニアの1人であるRichard RashidがCMUに向かい、問題を回避する新しいバージョンのAlephの作業を開始しました。特に、MMUを使用して、MMUを使用してマッピングを介してメモリの大きなブロックを「コピー」し、メモリが2つの異なる場所にあるように見えるワークステーションマシンを対象としました。コピーオンライトアルゴリズムを使用して、あるプログラムまたは別のプログラムによって変更されたデータのみを物理的にコピーする必要があります。

違いを理解するために、1つのファイルを別のファイルにフィードする2つの対話型プログラムを検討してください。 Alephでは、プロバイダーからのデータを(Eclipseの機能により)一度に2kBずつユーザープロセスにコピーする必要があります。アクセントの下では、MMUに送信されるいくつかの命令の費用で、ユーザープロセスにデータが単に「表示」されます。ユーザープロセスがデータを変更した場合にのみ、何かをコピーする必要があり、その場合でも、実際に変更されたデータの部分のみがコピーされます。

Alephの別の問題は、ポートが順番に割り当てられた一意のIDによって識別されることでした。プログラムがそれらを「推測」することは簡単であり、それによって、許可されていないコンピューター上のリソースにアクセスすることができました。これにより、Alephシステムはかなり不安定になりました。

これに対処するために、アクセントはポートIDをカーネル内部のみに作成しました。ポートを開くプログラムのインスタンスは、カーネルのマッピングに保存された異なるIDを渡されました。配信のためにメッセージがカーネルに送信されるたびに、まず、プログラムのマッピングテーブルと比較することにより、プログラムが問題のポートにアクセスできることを確認します。ポート番号が機能しなくなったと推測すると、プログラムのポートIDはカーネル内の「実際の」IDの手がかりを与えず、カーネルから明示的に渡されていないIDについて話そうとしてもエラーになります。したがって、Accentのポートは機能を表し、有効なポートIDが渡された結果としてリソースを使用する権利を付与します。機能にサブジェクト固有の識別子を使用するこの種の機能システムは、Cリストシステムと呼ばれます。

数年後、アクセントプロジェクトはますます面白くなくなり始めました。 1980年代初頭、多くの人は、マシンにCPUを追加することでパフォーマンスの将来的な向上がもたらされると考えていました。問題に加えて、より強力な新世代のワークステーションが登場していました。つまり、とにかくアクセントをそれらに移植する必要があることを意味していました。同様に、Unixは、オペレーティングシステムの設計とユーザーアプリケーションの開発プラットフォームの両方で、実験的な作業に最適なオペレーティングシステムに成長しまし

これらの変更に対処するために、アクセントに関する作業を終了し、再度開始することが決定されました。新しいシステムは、Unixカーネル内でAccentのポートシステムを使用し、有名なMachカーネルを作成します。

アクセントの機能:

  • ポート機能
  • コピーオンライト仮想メモリ管理
  • 分散ファイル管理
  • 分散プロセス管理
  • 保護されたメッセージベースのプロセス間通信
  • 異なるマイクロコード化された命令セットでプロセスを実行する機能。