アムステルダムVrije大学コンピュータサイエンス学科のAndrew S. Tanenbaum教授は現在WindowsやLinuxより安全なオペレーティングシステムを目指した MINIX 3 プロジェクトを率いて活動している。
欧州研究審議会(European Research Council)から今後の5年間に250万ユーロの研究資金を確保した教授の研究提案の中で、Tanenbaum教授が現在使われているオペレーティングシステムが安全でないと考える理由について次のように説明している。
最も重大な信頼性及び安全性の問題というのはオペレーティングシステムに関連する部分である。問題の核心は現在のシステムがPOLA(Principle Of Least Authority:最小権限の原則)に従っていない点にある。POLAによると、システムはある一つのコンポーネントにおける避けられないバグが他のコンポーネントに伝播しそこで損害を与えるようなことのないようコンポーネントに分割されるべきである。そして各コンポーネントはそのコンポーネントが実行する仕事に必要な権限だけを与えられるべきである。特に、他のコンポーネントに属するデータの読み込みや書き込みが出来てはならず、自らのアドレス空間以外のメモリを読み込めてはならず、自らの仕事の実行に無関係な命令を実行出来てはならず、触れるべきでない入出力デバイスに触れてはならない等。現在のオペレーティングシステムはこの原則を完全に侵害しており、その結果上に述べたような信頼性と安全性の問題を引き起こしている。
デバイスドライバがこの問題の主犯(Tanenbaum教授):
典型的なオペレーティングシステムではそのコードの約70%がデバイスドライバであり、デバイスドライバはソースコードの同じ行数あたりそれ以外と比べ3倍から7倍のバグを含んでいることが知られている。また、Windows XPのクラッシュの63%から85%はドライバの障害に起因するものであることがきちんと文書化されており、Linuxについてもこの結果と大きく異なると思えない。
OSアーキテクチャへのMINIXの一味違ったアプローチ:
Tanenbaum教授によると主な違いはより高度な安全性を得るためデバイスドライバをユーザモードで走らせること:
デバイスドライバはカーネル上位でユーザモードの下に実行され、メモリ管理のハードウェア機構により自身のメモリ領域しかアクセスできないよう厳しく制約を受けながら独立したプロセスとして実行される。デバイスドライバは入出力を実行する必要があるが、これはマイクロカーネルのサービスを呼び出すことで実現する(物理的デバイスに対するコマンド発行など)。マイクロカーネルがそのような呼び出しを実行する際、最初にその呼び出しが許されるものであることをチェックすることになる。従って、オーディオドライバからサウンドカードに対するコマンド発行の呼び出しは受け付けて処理するが、オーディオドライバからハードディスクに対するコマンド発行の呼び出しであれば拒絶することになる。
全般的な目的:
… オペレーティングシステムを、カーネルモードで動く小さなマイクロカーネルとオペレーティングシステムの実際の仕事を行う多数のユーザプロセスに再構成すること。マイクロカーネルだけではとても完全なオペレーティングシステムとならないが、この設計により大きな目標を達成することができる。その目標とは、オペレーティングシステムのコードの多くの部分をユーザ空間に移しプロセスに分割することで危険な(つまり制御)命令を実行できなくし、またメモリ管理ハードウェアにより当該プロセス外にあるメモリ領域へのアクセスを禁じることである。
現時点でMINIX 3は次のURLで公開しておりversion 3.1.3a主な機能には以下がある:
- POSIX互換性
- TCP/IPネットワーク機能
- X Window System
- 言語: cc, gcc, g++, perl, pythonなど
- 650種類以上のUNIX プログラム
- マルチユーザとマルチプログラミング
- ユーザプロセスとして動作するデバイスドライバ
- 高度な耐障害性
- 全ソースコード(C言語)提供
MINIXはPOSIX標準を実装しているため大部分のUNIXプログラムを殆ど修正なく実行できる。本プロジェクトはGoogle’s Summer of Code 2008の一部となっており、Googleに MINIX Discussions Groupが設けられている。