トップページ  Index  Search  Changes  Login

ホワイトペーパー

Whitepaperの訳。

2009.08.29現在のものを翻訳しました。

ホワイトペーパー

導入

ReactOSアーキテクチャはMicrosoft Windows 2003 Serverのアーキテクチャに基づいています。 NTの様に、ReactOSアーキテクチャはモノリシックですがモジュールのロードが可能です。 最下層にあるものはエグゼクティブです。エグゼクティブはカーネルモードで動作するすべてのものを含みます。エグゼクティブの上に保護された複数のサブシステムがあります。これらのサブシステムは異なるオペレーティングシステムパーソナリティの実装を提供します。

エクゼクティブ

エグゼクティブはカーネルモードで動作する全てのコードです。エグゼクティブは次のコンポーネントに大別できます: ハードウェア抽象化層(HAL)、複数のデバイスドライバ、カーネル、複数のシステムサービス(Win32kサブシステムを含む) 。これらのコンポーネントは全てカーネルモードで動作します。 HAL、カーネル、システムサービス、デバイスドライバは、ひとまとめにしてエグゼクティブと呼ばれます。

ハードウェア抽象化層

HALは、x86 ReactOSカーネルとHALが異なるx86マザーボード上で動作することを可能にします。 HALはマザーボード固有のコードをカーネルから分離するため、異なるマザーボードでもカーネルの変更を必要としません。異なるハードウェア設計の例として、標準PC、日本のNEC PC98、x86 SGI ワークステーションがあります。

デバイスドライバ

デバイスドライバは、ReactOSエグゼクティブへのハードウェア固有の拡張です。それらによりオペレーティングシステムが特定のデバイスと相互に対話することができ、逆もまた同様です。 Windows Driver Model (WDM) のサブセットであるNTドライバモードを実装することがReactOSの現在の目標です。 WDMは、ポータブルなWindowsドライバを記述するための各種の規則です。 Windows Vistaに導入されるWindows Driver Foundation (WDF)はまた、今後の開発にとって重要な点です。

通信

デバイスドライバは、カーネルや他のドライバと通信するためにパケットを使用します。パケットは、I/Oマネージャ(システムサービス)を通して送られ、 IRPs(I/Oリクエストパケット)を使用します。

カーネル

カーネル設計は、Microsoft Windows 2003 Serverの設計に基づきます。それはカーネルモード非同期プロシージャコール(APC)、遅延プロシージャコール、プロセス、スレッディング、ミューテックス、セマフォ、スピンロック、タイミングコード、その他を実装します。

システムサービス

システムサービスは次のものを含みます:IOマネージャ、設定マネージャ、プラグアンドプレイ、電源マネージャ、メモリマネージャ、エグゼクティブサポート、オブジェクトマネージャ、セキュリティ参照モニター、プロセス構造、ローカルプロシージャコール、Win32サブシステム。

保護されたサブシステム

保護されたサブシステムによって、異なるオペレーティングシステムパーソナリティを ReactOSエグゼクティブ上で実行できます。 ReactOSの最初の目標はWin32kサブシステムでしたが、 Win32kサブシステムはエグゼクティブの一部としてカーネルモードで実行するため、ここの機能ではありません。 他のグラフィックサブシステムのために、 Win32kサブシステムを介してサブシステムのためのインタフェースが存在します。 Windows NTグラフィックスデバイスドライバは、 Win32kサブシステムと強固に統合された設計です。これに起因して、ユーザーモードサブシステムがグラフィックスドライバーと相互に直接対話することは非現実的です。この理由のために、サブシステムはグラフィックスインタフェースのためにカーネルモードWin32kサブシステムを利用しなければなりません。そのようなサブシステムはWin32kウインドウマネージャーに依存する必要はなく、代わりにWin32kサブシステムによって提供されるグラフィックスプリミティブを使うことができます。

ネイティブAPIアーキテクチャ

ユーザーモードコードのためのネイティブAPIアーキテクチャ呼び出しは、カーネルモードサービスを呼び出すための標準的な方法です。それは、ほとんどのUNIXesによって使用されるシステムコールインタフェースに相当します。 Microsoft Windows NT/2000/XPはプログラマのためにネイティブAPIアーキテクチャを文書化せず、プログラマは代わりにWin32 APIを使わなければなりません。 ReactOSはオープンソースなので、私たちのネイティブAPIアーキテクチャはアプリケーションプログラマに公開されています。

ネイティブAPIアーキテクチャは、NTDLL.dllで実装されます。ネイティブAPIユーザーモードエントリポイントを含むことを別にすれば、 NTDLL.dllもまたプロセススタートアップコードとモジュールローディングコードを含みます。これらのエントリポイントは、カーネルモードでKiSystemServiceを呼び出してシステムテーブルKiSystemServiceTableからカーネルモードサービスを探します。

互換性対象

ドライバとアプリケーションの互換性に関して、 ReactOSの当初の目標はMicrosoft Windows NT 4.0でした。その後、Microsoft Windows 2000、XP、2003Server、Vistaがリリースされました。これら全てはWindows NTの子孫です。そのため、私たちはアーキテクチャの大きな変更について心配することなく、徐々に我々の互換性対象を移すことができます。実際、内部では、 Windows 2000はWindows 5.0として、 XPはWindows 5.1として、 2003 ServerはWindows 5.2として、 VistaはWindows 6.0としてバージョン情報を報告します。 ReactOSチームは、公式の互換性対象として、 Windows 2003 Serverを現在の目標とします。現在のリリースにおいて 2003 Serverは最も強固なものの一つと証明されています。これは、 Windows NTベースのオペレーティングシステムの今後のバージョンにおいて提供される機能を ReactOSに実装しないことを意味せず、新しいAPIsは絶えず実装されます。

Last modified:2010/03/01 02:25:42
Keyword(s):
References:[SideMenu]