アクセントカーネル

Accent はオペレーティング システムカーネルであり、 Mach カーネルの前身であることで最も有名です。もともとカーネギーメロン大学(CMU) で開発された Accent は、ロチェスター大学で開発されたAleph カーネルの影響を受けています。Accent は Aleph を改良し、いくつかの問題を修正し、ミニコンピュータではなくワークステーションマシン (具体的にはThree Rivers PERQ )のネットワークにハードウェア サポートを再ターゲットしました。Accent は、1981 年から 1985 年まで実行された CMU のSPICE プロジェクトの一部でした。Accentの開発は、 NeXTSTEPGNU Hurd、およびmacOSiOSなどの最新の Apple オペレーティング システムで使用されている Mach の導入に直接つながりました。

歴史

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

1979年、Alephのエンジニアの一人、リチャード・ラシッドがCMUに移り、Alephの問題点を回避した新バージョンの開発に着手しました。特に、AccentはMMUを搭載したワークステーションマシンをターゲットにし、MMUを用いてマッピングによって大きなメモリブロックを「コピー」することで、メモリが2つの異なる場所にあるように見せかけました。これにより、あるプログラムによって変更されたデータのみが、コピーオンライトアルゴリズムを用いて物理的にコピーされるようになりました。

違いを理解するために、2つの相互に作用するプログラムを考えてみます。一方が他方にファイルを送ります。Alephでは、Eclipseの機能により、プロバイダーからのデータは一度に2KBずつユーザープロセスにコピーする必要がありました。Accentでは、MMUに数命令送るだけで、データはユーザープロセスに「現れる」だけです。ユーザープロセスがデータを変更した場合にのみコピーが必要で、その場合でも実際に変更されたデータ部分のみがコピーされます。

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

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

数年後、Accentプロジェクトは次第に面白味を失い始めました。1980年代初頭には、将来的なパフォーマンス向上はマシンのCPU数を増やすことで実現できると多くの人が考えていましたが、Accentカーネルはそれに対応できるほどの能力を備えていませんでした。さらに問題となったのは、より高性能なワークステーションの新世代が登場し、いずれにせよAccentをそれらのワークステーションに移植する必要が出てくる可能性が高かったことです。同様に、Unixはオペレーティングシステムの設計だけでなく、ユーザーアプリケーションの開発プラットフォームとしても、実験的な作業に最適なオペレーティングシステム へと成長しました。

これらの変化に対処するため、Accentの開発を中止し、やり直すことが決定されました。新しいシステムは、AccentのPortsシステムをUnixカーネル内で利用し、有名なMachカーネルを構築することになりました。

Accent のいくつかの機能:

参考文献