| 開発者 | MITコンピュータサイエンス研究所( LCS) |
|---|---|
| OSファミリー | Unixライク |
| 作業状態 | 歴史的 |
| ソースモデル | オープンソース |
| 初回リリース | 1986年 |
| 利用可能 | 英語 |
| プラットフォーム | ニューマシン |
| カーネルタイプ | モノリシックカーネル |
| デフォルトの ユーザーインターフェース | コマンドラインインターフェース |
TRIX は、 1970 年代後半にMITのコンピュータサイエンス研究所(LCS)でSteve Ward教授とその研究グループによって開発された、ネットワーク指向の研究用オペレーティング システムです。NuMachine 上で実行され、カーネルにリモート プロシージャ コール機能が組み込まれていましたが、それ以外はバージョン 7 Unixと同等でした。
設計と実装
起動時に、NuMachine はシステム内の各 CPU に同じプログラムをロードし、各インスタンスに実行中の CPU の数値 ID を渡します。TRIX はこの設計を利用して、最初の CPU がグローバル データ構造を設定し、初期化が完了したことを示すフラグを設定します。[1] その後、カーネルの各インスタンスはグローバル データにアクセスできるようになりました。[1] システムは各 CPU に固有のデータもサポートしていました。[1]ファイルシステムへのアクセスは、ユーザー空間 のプログラムによって提供されました。[1] [2]
カーネルはドメイン内で実行される無名スレッドをサポートした。[1]ドメインはスタックポインタを持たない Unix プロセスに相当した[2] (ドメイン内の各スレッドにはスタックポインタがあった[2] )。スレッドはドメインを変更でき[1]、システムスケジューラはすべてのプロセッサをビジー状態に維持するために CPU 間でスレッドを移行した。[1] スレッドは 1 種類の排他制御プリミティブと 7 つの優先度のうちの 1 つにアクセスできた。[1]スケジューラは優先度の逆転を 回避するように設計された。[1] ユーザー空間プログラムはシステムコールを通じてスレッドを作成できたspawn。[1]
ガベージコレクターは定期的に未使用のドメインを識別し、解放します。[1]
さまざまな CPU 間の作業を調整するために使用された共有メモリ モデルは、メモリ バスの競合を引き起こし、非効率の原因になることが知られていました。 [1] [2] 設計者は、競合を軽減する設計を認識していました。[2] 実際、TRIX の元の設計では、非ブロッキング メッセージ パッシング メカニズムが使用されていましたが、[2]「この実装には、文献で見落とされがちな欠陥があることが判明しました」[2]。これにはパフォーマンスの低下が含まれます。[2]
TRIXオペレーティングシステムは最初NuMachineに実装されましたが、これはMITでNuMachineが利用可能だったためであり、アーキテクチャの特性によるものではありませんでした。[1] このシステムは簡単に移植できるように設計されました。[2]これは主にCで実装され、アセンブリコードはほとんどありませんでした。相互排他プリミティブは、アトミックテストとセット命令 を使用して任意のアーキテクチャに移植できました。[1]
GNUプロジェクトによる使用の試み
リチャード・ストールマンは1985年のGNU宣言で、GNUオペレーティングシステムの「初期カーネルは存在するが、Unixをエミュレートするにはさらに多くの機能が必要である」と述べています。[3]これはTRIXの作者がフリーソフトウェアとして配布することを決定したTRIXのカーネルへの言及でした。[4]
1986 年 10 月のスピーチで、ストールマンは次のように詳しく述べています。「TRIX カーネルは動作し、ある程度の Unix 互換性を備えていますが、さらに多くの機能が必要です。現在、TRIX カーネルは、古い Unix ファイル システムと同じディスク構造を使用するファイル システムを備えています。これにより、Unix でファイルを設定してから TRIX を実行できるため、デバッグが容易になりましたが、そのファイル システムには、必要と思われる機能がまったくありません。」[5] ストールマンが追加したいと考えていた機能 (ファイルのバージョン管理、削除の取り消し、ファイルがテープにバックアップされた日時、方法、場所に関する情報、アトミック ファイル更新) は、一般的に Unix に関連付けられていませんでした。
1986 年 12 月、開発者たちは GNU 用のカーネルを作成する最初の試みとして、TRIX のカーネルをベースとして使用しました。彼らは最終的に、主に次の理由から、Trix は出発点として使用できないと判断しました。
- それは「無名の高価な68000ボックス」[4]でしか動作しなかったため、他のアーキテクチャへの移植が必要となり、
- サーバーベースのオペレーティングシステムの基盤設計としては、Machマイクロカーネルの方が優れていると判断されました。 [要出典] この 2 回目の試みは、GNU Hurdへと発展しました。
参照
参考文献
- ^ abcdefghijklmn 「TRIX オペレーティング システムのマルチ プロセッサ実装」(PDF) 。2012 年 7 月 2 日閲覧。
- ^ abcdefghi 「TRIX: 通信指向のオペレーティングシステム」(PDF) 。2012年7月2日閲覧。
- ^ 「GNU 宣言」 。2010年 8 月 5 日閲覧。
- ^ ab リチャード・M・ストールマン(1987年1月)。「GNUプロジェクトの現状」。GNU速報。1 (2)。フリーソフトウェア財団。2018年5月12日閲覧。
- ^ 「RMS lecture at KTH」 1986年10月30日. 2018年5月12日閲覧。
さらに読む
- Ward, SA TRIX: ネットワーク指向のオペレーティングシステム。COMPCON、1980 年春、pp. 344–349。
外部リンク
- TRIX カーネル ソース コード (オンラインでも閲覧可能)
- GNU プロジェクトのWeb サイトにある Hurd の歴史
