知識ベース

オブジェクト指向オペレーティングシステム

オペレーティング・システム

オブジェクト指向オペレーティングシステムは、オブジェクト指向設計の原則を使用するオペレーティングシステムです。

オブジェクト指向オペレーティングシステムは、DOSやUnixなどの非オブジェクト指向オペレーティングシステム上で実行できるオブジェクト指向ユーザーインターフェイスまたはプログラミングフレームワークとは対照的です。

Unixなどのより一般的なオペレーティングシステムの設計には、オブジェクトベースの言語の概念がすでに含まれています。 Cなどのより伝統的な言語は、最新の言語ほど流動的にオブジェクト指向をサポートしていませんが、たとえば、ファイル、ストリーム、またはデバイスドライバー(Unixでは、それぞれファイル記述子として表される)の概念は、オブジェクトの良い例。結局、これらは抽象データ型であり、オブジェクトの型に基づいて動作が異なり、実装の詳細が呼び出し元から隠されているシステムコールの形式のさまざまなメソッドを備えています。

オブジェクト指向はオブジェクト+継承として定義されており、継承はすべてのオペレーティングシステムで発生する委任のより一般的な問題への1つのアプローチにすぎません。オブジェクト指向は、カーネルよりもオペレーティングシステムのユーザーインターフェイスで広く使用されています。

バックグラウンド

オブジェクトは、特定の機能セットを提供するクラスのインスタンスです。 2つのオブジェクトは、サポートする機能(またはメソッド)に基づいて区別できます。オペレーティングシステムのコンテキストでは、オブジェクトはリソースに関連付けられます。歴史的に、オブジェクト指向設計の原則は、オペレーティングシステムでいくつかの保護メカニズムを提供するために使用されていました。

オペレーティングシステムの保護メカニズムは、異なるユーザープログラムを明確に分離するのに役立ちます。また、悪意のあるユーザープログラムの動作からオペレーティングシステムを保護します。たとえば、オペレーティングシステムのユーザープロファイルの場合を考えます。ユーザーは、別のユーザーのリソースにアクセスできません。オブジェクトモデルは、各リソースがオブジェクトとして機能する場合のこれらの保護の問題を処理します。すべてのオブジェクトは、一連の操作のみを実行できます。ユーザープロファイルのコンテキストでは、一連の操作はユーザーの特権レベルによって制限されます。

現在のオペレーティングシステムは、保護を含むシステムの多くのコンポーネントにオブジェクト指向の設計原理を使用しています。

Athene Atheneは、2000年にRocklyte Systemsによって最初にリリースされたオブジェクトベースのオペレーティングシステムです。ユーザー環境は、実行時に一緒にリンクされるオブジェクトから完全に構築されました。 Atheneのアプリケーションもこの方法を使用して作成でき、一般にオブジェクトスクリプト言語Dynamic Markup Language(DML)を使用してスクリプト化されました。オブジェクトは、共有メモリにオブジェクトを作成し、アクセスの必要に応じてロックすることにより、プロセス間で共有できます。 Atheneのオブジェクトフレームワークはマルチプラットフォームであったため、WindowsおよびLinux環境でオブジェクト指向プログラムの開発に使用できました。会社は消滅し、2009年にプロジェクトは放棄されました。BeOS真のオブジェクト指向オペレーティングシステムを作成する試みの1つは、アプリケーションプログラミングインターフェイス(API)にオブジェクトとC ++言語を使用した1990年代半ばのBeOSでした。しかし、カーネル自体はユーザー空間にC ++ラッパーを使用してCで作成されました。このシステムは主流にならず、商業的に実行不可能であることが証明されました。現在は、少数の愛好家グループによって使用および開発されています。 Choices Choicesは、イリノイ大学アーバナシャンペーン校で開発されたオブジェクト指向のオペレーティングシステムです。 C ++で記述され、オブジェクトを使用して、中央処理装置(CPU)、プロセスなどのコアカーネルコンポーネントを表します。継承は、カーネルをポータブルなマシンに依存しないクラスと小さな非ポータブルな依存クラスに分離するために使用されます。選択肢は、SPARC、x86、およびARMに移植され、実行されています。 GEOS PC / GEOSは、スケーラブルなフォントを特徴とする洗練されたウィンドウおよびデスクトップ管理を備えた、軽量のオブジェクト指向マルチタスクグラフィカルオペレーティングシステムです。ほとんどはオブジェクト指向のx86アセンブリ言語の方言といくつかのC / C ++で書かれており、DOS上で実行するように設計されています(Microsoft WindowsからWindows Meまで)。 GEOSは、1990年にバークレーソフトワークスによって最初に開発され、後にGeoWorks Corporationになり、BreadBox Computer Companyによって維持され続けています。関連するソフトウェアスイートは、 EnsembleおよびNew Deal Officeと名付けられました。さまざまなパームトップ、および非x86-CPUを搭載した32ビットシステムに適応しています。 Haiku BeOSの廃止後、オープンソースの代替品を作成する努力が始まりました。 Haiku(当初の名前はOpenBeOS )は、Haiku R1 / Alpha 1のリリースで2009年9月に最初のマイルストーンに達しました。x86ディストリビューションは、ソースレベルとバイナリレベルの両方でBeOSと互換性があります。 BeOSと同様、主にC ++で記述され、オブジェクト指向のAPIを提供します。積極的に開発されています。 IBM i(OS / 400、i5 / OS)IBMは1988年にOS / 400を導入しました。このOSはAS / 400プラットフォームでのみ実行されました。このオペレーティングシステムは2008年にIBM iに改名され、AIXおよびLinuxも実行できるPower Systemsでのみ実行されます。 IBM iは、オブジェクト指向の方法論を使用し、データベース(DB2 for i)を統合します。 IBM i OSには、オブジェクトごとに128ビットの一意の識別子があります。 IBM OS / 2 2.0 IBMの優先度ベースのプリエンプティブマルチタスク、グラフィカルなWindowsベースのオペレーティングシステムには、オブジェクト指向のユーザーシェルが含まれていました。仮想8086モードを完全な32ビットサポートで使用するIntel 80386用に設計され、1992年にリリースされました。BlueLionと呼ばれる新しいOS / 2ベースのオペレーティングシステムがArca Noaeによって開発されています。 IBM TopView TopViewは、DOS上でPCにロードされ、DOSから制御を取得したオブジェクト指向のオペレーティング環境でした。その時点で、オブジェクト指向API(TopView API)を備えたオブジェクト指向オペレーティングシステムになりました。 IBMの最初のマルチタスク、ウィンドウベース、PC用のオブジェクト指向オペレーティングシステムであり、David C. Morrillが率い、1985年2月にリリースされました。JavaベースOracle(以前のSun Microsystems)のJavaは今日最も主要なオブジェクト指向言語では、Javaベースのオペレーティングシステムが試みられたことは驚くことではありません。この領域では、理想的には、カーネルはJava仮想マシン(JVM)をサポートするために最低限必要なもので構成されます。これは、Java以外の言語で作成する必要があるオペレーティングシステムの唯一のコンポーネントです。 JVMと基本的なハードウェアサポートに基づいて構築されているため、オペレーティングシステムの残りの部分をJavaで記述できます。 Cなどの低レベル言語でより伝統的に記述されているシステムの一部(デバイスドライバーなど)でさえJavaで記述できます。このようなオペレーティングシステムでの試行の例には、JavaOS、JOS、JNode、およびJXが含まれます。 LispベースLisp方言Lisp Machine Lisp(および後のCommon Lisp)で記述されたオブジェクト指向オペレーティングシステムは、MITで開発されました。 Symbolics、Lisp Machines Inc.およびTexas InstrumentsのLisp Machinesで商品化されました。 Symbolicsは、オペレーティングシステムをGeneraと呼びました。 LispのFlavorsオブジェクト指向拡張を使用して開発されました。その後、New Flavorsで、Common Lisp Object Systemを使用します。 Xeroxは、Interlisp-Dで記述されたオペレーティングシステムを備えたいくつかのワークステーションを開発しました。 Interlisp-Dは、LOOPSやCommon Lisp Object Systemなどのオブジェクト指向の拡張機能を提供しました。 MovitzとMezzanoは、Common Lispで書かれたオペレーティングシステムでの最近の試みです。 Microsoft Singularity Singularityは、Microsoftの.NET Frameworkに基づいた実験的なオペレーティングシステムです。 Javaベースのオペレーティングシステムに匹敵します。 Microsoft Windows NT Windows NTは、Microsoftが開発したオペレーティングシステム(Windows、7、8、Phone 8、8.1、Windows 10、Xboxを含む)のファミリです。最初のバージョンは1993年7月にリリースされました。プログラミング言語ベースの、プロセッサに依存しない、マルチプロセッシング、マルチユーザーオペレーティングシステム。オブジェクト指向言語の完全な継承プロパティが含まれていないため、オブジェクト指向ではなくオブジェクトベースとして説明するのが最適です。オブジェクトマネージャは、NTオブジェクトの管理を担当します。この責任の一部として、さまざまなオペレーティングシステムコンポーネント、デバイスドライバー、Win32プログラムがオブジェクトを保存および検索できる内部名前空間を維持します。 NTネイティブAPIは、ユーザー空間(モード)プログラムが名前空間を参照し、そこにあるオブジェクトの状態を照会できるようにするルーチンを提供しますが、インターフェースは文書化されていません。 NTは、オブジェクトごと(ファイル、関数、およびロール)のアクセス制御リストをサポートし、豊富なセキュリティ許可セットをシステムおよびサービスに適用できます。 WinObjは、NT Native API(NTDLL.DLLにより提供)を使用して、NT Object Managerの名前空間の情報にアクセスして表示するWindows NTプログラムです。ComponentObject Model Windowsのユーザーモード側では、Component Object Model(COM) 1993年にMicrosoftによって導入されたソフトウェアコンポーネントのアプリケーションバイナリインターフェイス標準です。これは、さまざまなプログラミング言語でプロセス間通信と動的オブジェクト作成を可能にするために使用されます。 COMは、オブジェクトリンクと埋め込み(OLE)、OLEオートメーション、ActiveX、COM +、分散コンポーネントオブジェクトモデル(DCOM)、Windowsシェル、DirectX、Windowsランタイムなど、他のいくつかのMicrosoftテクノロジーとフレームワークの基盤です。 OLEは、Microsoftが開発した独自技術であり、ドキュメントやその他のオブジェクトの埋め込みとリンクを可能にします。技術レベルでは、OLEオブジェクトはIOleObjectインターフェイスを実装する任意のオブジェクトであり、オブジェクトのニーズに応じて、おそらく他のさまざまなインターフェイスとともに実装されます。主な用途は複合ドキュメントの管理ですが、ドラッグアンドドロップおよびクリップボード操作を使用して異なるアプリケーション間でデータを転送するためにも使用されます。複合ファイルバイナリ形式複合ファイルバイナリ形式(CFBF)は、ディスク上の1つのファイル内に多くのファイルとストリームを格納するためのファイル形式です。 CFBFはMicrosoftによって開発され、Microsoft COM構造化ストレージの実装です。構造化ストレージは、Microsoft Word、Microsoft Excel、Microsoft Powerpoint、Microsoft AccessなどのMicrosoft Officeアプリケーションのメインファイル形式として広く使用されており、Advanced Authoring Formatの基礎となっています。 Object Linking and Embedding Object Linking and Embedding(OLE)は、1991年から1996年までのMicrosoftのプロジェクトのコード名であるCairoという大規模な計画の一部でした。その憲章は、Bill Gatesを実現する次世代オペレーティングシステムのテクノロジ「 あなたの指先での情報 」のビジョン。カイロは決して出荷されませんでしたが、その技術の一部はその後他の製品に登場しています。 Windows 95ユーザーインターフェイスは、Cairoユーザーインターフェイスで行われた初期設計作業に基づいていました。残りのコンポーネントは、オブジェクトベースのファイルシステムです。かつてWindows Vistaの一部としてWinFSの形で実装される予定でした。 WinFS(Windows Future Storageの略)は、NTFS上で実行されるリレーショナルデータベースに基づくデータストレージおよび管理システムプロジェクトのコード名です。 Windows NTファイルシステムNTFSは、NTオブジェクト識別子を含むNTオブジェクトを格納できるという意味でオブジェクト指向です。各NTFSオブジェクトにはオブジェクト識別子があります。 NTFSボリューム上にあるターゲットを持つショートカットは、ドライブ自体のオブジェクト識別子だけでなく、ショートカットターゲットのオブジェクト識別子も記録します。 WinFSは、構造化データ、半構造化データ、非構造化データの永続性と管理のために設計されたMicrosoft Windowsオペレーティングシステム用の高度なストレージサブシステムとして2003年に初めて実証されました。 WinFSの開発は2006年6月にキャンセルされ、その技術の一部はMicrosoft SQL Server 2008やMicrosoft SharePointなどの他のMicrosoft製品に統合されました。その後、Bill Gatesとのインタビューで、MicrosoftはWindows Media Player、Windows Photo Gallery、Microsoft Office Outlookなどのアプリケーションを移行して、データストレージバックエンドとしてWinFSを使用することを計画していることが確認されました。NeXTSTEP1980年代後半、Steve Jobsコンピューター会社NeXTを設立。 NeXTの最初のタスクの1つは、オブジェクト指向オペレーティングシステムNeXTSTEPを設計することでした。彼らは、Objective-C言語をベースとして使用して、MachとBSDの上にオブジェクト指向フレームワークを追加することでこれを行いました。コンピューティング市場でニッチな地位を獲得しました。特に、World Wide Webの最初の実装を開発しているTim Berners-Leeが使用しています。 NeXTStepは、後にMac OS XとiOSでOpenStepとCocoa APIに進化しました。 OpenStepは、多くのオペレーティングシステム(HP-UX、NextStep、Solaris、Windows)のAPIレイヤーとして提供されました。 OOSMOS Cで記述されたオブジェクト指向ステートマシンオペレーティングシステム(OOSMOS)は、オブジェクト指向のカプセル化を促進し、完全なテーブル駆動の階層的ステートマシンアーキテクチャを実装します。オープンソースツールUMLetで描かれた状態図から直接Cコードを生成します。 OOSMOSは、状態ごとに実行のスレッドを許可する「状態スレッド」と呼ばれる独自の機能もサポートしています。 OOSMOSは、ベアボード上で動作するか、既存のオペレーティングシステムと連携して動作します。 ReactOS ReactOSは、Microsoft Windows NTバージョン用に作成されたアプリケーションソフトウェアおよびデバイスドライバーとのバイナリ互換性を目的としたオープンソースのコンピューターオペレーティングシステムです。ゼロから書かれており、ハードウェアレベルからアプリケーションレベルまで、Microsoftが設計したWindows NTのアーキテクチャに従うことを目指しています。これはLinuxベースのシステムではなく 、unixアーキテクチャを共有しません 。 Self Self(プログラミング言語)は、ゼロックスPARCで発明されました。その後、スタンフォード大学とサンマイクロシステムズで開発されました。 Smalltalk Smalltalkは、1970年代にゼロックスで発明されました。 Smalltalkシステムは完全にオブジェクト指向であり、BIOSおよびランタイムシステムによるサポートはほとんど必要ありません。音節音節はC ++を多用するため、多くの場合BeOSと比較されます。 Symbolics Genera SymbolicsのGeneraは、ZetaLispおよびSymbolics Common Lispで記述されたLispマシンのオペレーティングシステムです。 Flavors(初期のオブジェクト指向のLisp拡張)とCommon Lisp Object System(CLOS)を多用しています。開発はMITで70年代半ばに始まりました。 Taligent Taligentは、Apple Inc.によって開始され、1990年代にIBMと共同開発されたオブジェクト指向のオペレーティングシステムプロジェクトでした。その後、IBM子会社に分離され、オペレーティングシステムからプログラミング環境に変換されました。