オブジェクト指向オペレーティングシステム[ 1 ]とは、オブジェクト指向プログラミングの原則を用いて設計、構造化、運用されるオペレーティングシステムのことである。
オブジェクト指向オペレーティングシステムは、Unixのような非オブジェクト指向オペレーティングシステム上で実行できるオブジェクト指向ユーザーインターフェースやプログラミングフレームワークとは対照的です。
Unixのようなより一般的なオペレーティングシステムの設計には、既にオブジェクト指向言語の概念が取り入れられています。Cのようなより伝統的な言語は、より新しい言語ほど柔軟にオブジェクト指向をサポートしていませんが、例えばファイル、ストリーム、デバイスドライバ(Unixではそれぞれファイルディスクリプタとして表現される)といった概念は、オブジェクトの良い例と言えるでしょう。これらは結局のところ抽象データ型であり、システムコールという形で様々なメソッドを持ち、その動作はオブジェクトの型によって異なり、実装の詳細は呼び出し元からは隠蔽されています。
オブジェクト指向はオブジェクト+継承として定義されており、継承はすべてのオペレーティングシステムで発生する委譲というより一般的な問題に対するアプローチの 1 つにすぎません。 [ 2 ]オブジェクト指向は、オペレーティングシステムのカーネルよりもユーザー インターフェイスで広く使用されています。
オブジェクトはクラスのインスタンスであり、特定の機能セットを提供します。2 つのオブジェクトは、サポートする機能 (またはメソッド) に基づいて区別できます。オペレーティングシステムのコンテキストでは、オブジェクトはリソースに関連付けられます。歴史的に、オブジェクト指向設計原則は、オペレーティングシステムでいくつかの保護メカニズムを提供するために使用されました。[ 1 ]
オペレーティングシステムの保護メカニズムは、異なるユーザープログラム間の明確な分離を提供するのに役立ちます。また、悪意のあるユーザープログラムの動作からオペレーティングシステムを保護します。たとえば、オペレーティングシステムのユーザープロファイルの場合を考えてみましょう。ユーザーは他のユーザーのリソースにアクセスしてはなりません。オブジェクトモデルは、各リソースがオブジェクトとして動作することで、これらの保護の問題に対処します。各オブジェクトは、一連の操作のみを実行できます。ユーザープロファイルのコンテキストでは、操作のセットはユーザーの権限レベルによって制限されます。 [ 1 ]
現代のオペレーティングシステムは、保護機能を含むシステムの多くの構成要素において、オブジェクト指向設計の原則を採用している。
プロジェクトは、無料のオープンなJava™ベースのオペレーティングシステム(JOS)の作成を目指す、国際的なJava™プログラマーと愛好家のグループによる共同プロジェクトです。共同作業として、Javaベースのオペレーティングシステムがどのように動作するべきかを研究しています。また、Javaベースのオペレーティングシステムのコンポーネントを構築するために協力しています。
これまで文書化されていなかったこれらのサービスについて、初めて包括的に解説したものです。ソフトウェア開発者にとって他に類を見ないこのリファレンスには、ネイティブ API に含まれる 200 を超えるルーチンのドキュメント、Win32 API から直接アクセスできないルーチン、または大幅な追加機能を提供するルーチンの詳細な説明が含まれています。
Objは、セキュリティに関心のあるシステム管理者、オブジェクト関連の問題を追跡している開発者、または単にオブジェクトマネージャの名前空間に興味がある人にとって必須のツールです。
ビル・ゲイツは1990年11月12日に「指先ひとつで情報にアクセス」と題した有名な基調講演を行った。
ビル・ゲイツの Comdex 1995 での基調講演「指先ひとつで情報へ」は、彼の著書『未来への道』の基礎となり、テクノロジーの次の 10 年を予測しました (正誤はともかく)。これらの予測は、ゲイツの講演と Comdex 用に作られた未来犯罪番組とのやり取りによって活気づけられています。
Windows NT ファイルシステムの担当者は、Windows 95 のショートカット解決アルゴリズムを見て嘲笑した。「我々はもっとうまくできる。我々はオブジェクト指向だ!」各 NTFS オブジェクトにはオブジェクト識別子があり、ターゲットが NTFS ボリューム上にあるショートカットは、ショートカット ターゲットのオブジェクト識別子とドライブ自体のオブジェクト識別子も記録する。
ReactOS は、システムのアーキテクチャ全体に浸透しているオブジェクトメタファーを使用しています。ReactOS では、UNIX ファイルメタファーのすべてのものがオブジェクトとして扱われるだけでなく、プロセスやスレッド、共有メモリセグメント、グローバルレジストリデータベース、さらにはアクセス権限などもオブジェクトとして扱われます。