Accentはオペレーティングシステムカーネルであり、特にMachカーネルの前身として知られています。元々はカーネギーメロン大学(CMU)で開発されたAccentは、ロチェスター大学で開発されたAlephカーネルの影響を受けています。AccentはAlephを改良し、いくつかの問題を修正するとともに、ミニコンピュータではなくワークステーションマシン(特にThree Rivers PERQ )のネットワーク向けにハードウェアサポートを再設計しました。Accentは、1981年から1985年までCMUで実施されたSPICEプロジェクトの一部でした。Accentの開発は、 NeXTSTEP、GNU Hurd 、およびmacOSやiOSを含む最新のAppleオペレーティングシステムで使用されているMachの導入に直接つながりました。
オリジナルのAlephプロジェクトでは、プログラム間の通信を可能にするためにデータコピーが使用されていました。アプリケーションはポートを開くことで、他のプログラムから送信されたデータを受信できるようになっていました。そのアイデアは、マシン上のリソースを制御し、エンドユーザーにデータが届くまでデータを転送するサーバーを複数作成することでした。この点では、概念的にはUnixに似ていましたが、実装は大きく異なり、メモリではなくメッセージを使用していました。しかし、これには多くの問題があり、特にData General Eclipse上でのメモリコピーは非常にコストがかかることが判明しました。
1979年、Alephのエンジニアの一人であるリチャード・ラシッドはカーネギーメロン大学に移籍し、Alephの問題点を解消した新バージョンの開発に着手した。特にAccentはMMUを搭載したワークステーションをターゲットとし、MMUを用いてマッピングによって大容量のメモリを「コピー」することで、メモリがあたかも2つの異なる場所に存在するかのように見せかけた。物理的にコピーする必要があるのは、プログラムによって変更されたデータのみであり、その際、コピーオンライト方式が用いられた。
その違いを理解するために、2つのプログラムが相互に作用し、一方のプログラムがもう一方のプログラムにファイルを供給する場合を考えてみましょう。Alephでは、プロバイダからのデータは(Eclipseの機能のため)一度に2KBずつユーザープロセスにコピーする必要がありました。一方、Accentでは、MMUに数命令を送信するだけで、データはユーザープロセスに「出現」しました。ユーザープロセスがデータを変更した場合にのみコピーが必要となり、その場合でも、実際に変更されたデータ部分のみがコピーされました。
Alephのもう一つの問題点は、ポートが連番で割り当てられた固有のIDによって識別されていたことでした。プログラムは簡単にこれらのIDを「推測」することができ、それによって本来許可されていないコンピュータ上のリソースにアクセスできてしまう可能性がありました。このため、Alephシステムは非常にセキュリティが脆弱でした。
この問題を解決するため、AccentはポートIDをカーネル内部のみで使用できるようにしました。ポートを開くプログラムのインスタンスには、カーネル内のマッピングに格納された異なるIDが返されました。カーネルにメッセージが送信されるたびに、カーネルはまず、そのプログラムのマッピングテーブルと比較して、プログラムが該当ポートにアクセスできるかどうかを確認しました。ポート番号を推測することはもはや機能せず、プログラムのポートIDはカーネル内の「実際の」IDの手がかりにはならず、カーネルによって明示的に割り当てられていないポートで通信しようとするとエラーになりました。このように、Accentのポートは機能を表し、有効なポートIDが渡された結果としてリソースを使用する権利を付与しました。このように、機能に主体固有の識別子を使用する機能システムは、 Cリストシステムと呼ばれます。
数年後、Accentプロジェクトは次第に魅力を失っていった。1980年代初頭、多くの人々は、将来のパフォーマンス向上はマシンにCPUを追加することで実現できると考えていたが、Accentカーネルはそれに対応する能力を備えていなかった。さらに、より高性能なワークステーションの新世代が登場し、Accentはいずれにせよそれらに移植する必要が生じる可能性が高まっていたことも問題だった。同様に、Unixはオペレーティングシステムの設計だけでなく、ユーザーアプリケーションの開発プラットフォームとしても、実験的な研究に最適なオペレーティングシステムへと成長していた。
これらの変更に対応するため、Accentの開発を中止し、最初からやり直すことが決定された。新しいシステムでは、Unixカーネル内でAccentのポートシステムを使用し、有名なMachカーネルを作成する予定である。
Accentの主な特徴: