トップページ  Index  Search  Changes  Login

ReactOSまとめWiki - ホワイトペーパー Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

[[Whitepaper|http://www.reactos.org/ja/dev_whitepaper.html]][[Whitepaper|http://www.reactos.org/en/dev_whitepaper.html]]の訳。
古い翻訳です。


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


!ホワイトペーパー

!!導入
ReactOSアーキテクチャはMicrosoft Windows NT 4.0に2003 Serverのアーキテクチャに基づいています。
Microsoftはマイクロカーネルを修正したもの(マイクロカーネルと階層化オペレー
ティングシステムの両方の側面を結合したもの)だと主張していますが
NTの様に、ReactOSでは
このアーキテクチャに関して異なる定義をします
アーキテクチャはモノリシックですがモジュールのロードが可能ですNT、つまりReactOSのアーキテクチャ
は、モジュラー化され階層化されたものとします最下層にあるものはエグゼクティブですマイクロカーネルアーキテクチャの
わずかな痕跡は、このアーキテクチャがマイクロカーネルを修正したものであると
表現し得るほど十分ではありません
エグゼクティブはカーネルモードで動作するすべてのものを含みます。エグゼクティブの上に保護された複数のサブシステムがあります。これらのサブシステムは異なるオペレーティングシステムパーソナリティの実装を提供します

このOSの最下層はエグゼクティブです。エグゼクティブはカーネルモードで動作する
すべてのものを含みます。エグゼクティブの上に保護されたサブシステムがあります。
これらのサブシステムは異なるオペレーティングシステムの機能の実装を提供
します。

!!エクゼクティブ
エグゼクティブはカーネルモードで動作する全てのコードです。エグゼクティブ
は大雑把には
エグゼクティブは次のコンポーネントに分割できます:
//-
大別できます: ハードウェア抽象層(HAL)
ハードウェア
抽象化層(HAL)、複数のデバイスドライバ、カーネル、複数のシステムサービス(Win32(Win32kサブシステムを含む)
//These components all run in kernel mode. The HAL, Kernel, System Services and Device Drivers are collectively referred to as the Executive.
) 。これらのコンポーネントは全てカーネルモードで動作します。 HAL、カーネル、システムサービス、デバイスドライバは、ひとまとめにしてエグゼクティブと呼ばれます。

//** ハードウェア抽象層 [#c757f122]
//HALによってx86 ReactOS kernelとHALは異なるx86マザーボードで動作できるように
//なります。HALがマザーボード固有のコードをカーネルから抽象化することで、
//異なるマザーボードでもカーネルを変更しなくて済みます。異なるハードウェア
//デザインの例としては、普通のPCや日本のNEC PC-9800シリーズ、x86 SGIワークステーションなどが
//あります。

!! !!ハードウェア抽象化層
HALによってx86 ReactOS kernel各種の、x86 ReactOSカーネルとHALが異なるx86システムで動作できるように
なります
マザーボード上で動作することを可能にします HALがシステムにはマザーボード固有のコードをカーネルから抽象化することで分離するため
どのようなシステムでもカーネルを変更しなくて済みます
異なるマザーボードでもカーネルの変更を必要としませんx86システムの
例としては
異なるハードウェア設計の例として、標準PCPC/AT互換機や日本のNEC PC-9800シリーズPC98、x86 SGIワークステーションなどが
あります
SGI ワークステーションがあります


!! デバイスドライバ
//デバイスドライバはReactOSエグゼクティブのハードウェア固有の拡張部位です。
//デバイスドライバにより、オペレーティングシステムと特定のデバイスが互いに
//対話できるようになります。ReactOSは現在、Windows NT 4.0デバイスドライバ
//モデルの実装を目指しています。Windows Driver Model(WDM)はすぐ未来の
//関心対象です。WDMは移植性のあるWindowsドライバを記述するためのルール集です。
デバイスドライバはReactOSエグゼクティブの内部で固有のハードウエアの制御を行います。
デバイスドライバにより、オペレーティングシステム上で特定のデバイスが利用できるようになります。
ReactOSは現在、Windows NT 4.0デバイスドライバモデルの実装を目指しています。
今後はWindows Driver Model(WDM)を利用するようになるはずです。
これは移植性のあるWindowsドライバを記述するためのモデルです。

通信:!!デバイスドライバ
//デバイスドライバはカーネルや他のドライバと通信するためにパケットを使用します、ReactOSエグゼクティブへのハードウェア固有の拡張です
//パケットはIOマネージャ(システムサービス)を経由して送られ
それらによりオペレーティングシステムが特定のデバイスと相互に対話することができIRP(IOリクエスト
//パケット)を使用します
逆もまた同様です
デバイスドライバはカーネルや他のドライバと通信するためにIRP(IOリクエスト
パケット)を使用します

Windows Driver Model (WDM) のサブセットであるNTドライバモードを実装することがReactOSの現在の目標です

このパケットはIOマネージャ(システムサービス)によってカーネルや
WDMは、ポータブルなWindowsドライバを記述するための各種のデバイスドライバに送られます規則です。 Windows Vistaに導入されるWindows Driver Foundation (WDF)はまた、今後の開発にとって重要な点です


!! カーネル
カーネルの設計はMicrosoft Windows NT 4.0に基づきます。カーネルモード
非同期プロシージャコール(APC)や遅延プロシージャコール(DPC)、プロセス、
スレッド、ミューテックス、セマフォ、スピンロック、タイミングコードなどを
実装しています。

!! システムサービス!!通信
システムサービスは次のものを含みます:IOマネージャデバイスドライバは設定マネージャカーネルや他のドライバと通信するためにパケットを使用します。パケットはプラグアンドプレイ、電源I/Oマネージャ(システムサービス)を通して送られメモリマネージャ、エグゼクティブサポート、オブジェクトマネージャ、セキュリティ参照モニター、プロセス構造、ローカルプロシージャコール、Win32サブシステム IRPs(I/Oリクエストパケット)を使用します


!!保護されたサブシステム
保護されたサブシステムによりReactOSエグゼクティブ上で異なるオペレーティング
システムを実行できます。ReactOSの最初の対象はWin32サブシステムでした。しかし、
Win32サブシステムはエグゼクティブの一部としてカーネルモードで実行され、
ここでは扱われません。

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

* POSIX
* OS/2

将来に向けて実装する可能性のある保護された!!システムサービス
システムサービスは次のものを含みます:IOマネージャ、設定マネージャ、プラグアンドプレイ、電源マネージャ、メモリマネージャ、エグゼクティブサポート、オブジェクトマネージャ、セキュリティ参照モニター、プロセス構造、ローカルプロシージャコール、Win32
サブシステム。


!!保護されたサブシステム

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


Win32サブシステム経由のサブシステム用グラフィカルインターフェース。
Windows NTのグラフィックデバイスドライバは設計上Win32サブシステムと強固に
結合されています。このため、ユーザモードのサブシステムがグラフィックドライバ
と直接対話するのは実用的ではありません。したがって、サブシステムはカーネル
モードWin32サブシステムをグラフィックインターフェイスとして使用します。
このようなサブシステムはWin32ウィンドウマネージャに依存する必要はありません
が、Win32サブシステムが提供するグラフィックプリミティブを代わりに使用できます。

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


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


!!互換対象
ドライバとアプリケーションの互換性に関して、ReactOSの元々の対象は、Microsoft
Windows NT 4.0でした。その後、Microsoft Windwos 2000とWindows XPがリリース
されました。Microsfot Windows 2000とWindows XPはどちらもWindows NTの子孫です。
それで、アーキテクチャの大きな変更を心配せずに、徐々に互換対象を移行して
います。事実、内部的には、Windows 2000はバージョン情報をWindows 5.0と報告し、
Windows XPはWindows 5.1と報告します。

!!互換性対象
ドライバとアプリケーションの互換性に関して、
ReactOSチームはの当初の目標はMicrosoft Windows NT 4.0を公式な互換対象として決定しましたでしたこれはその後
WIndows NT/2000/XPテクノロジーに関する資料や記事や書籍が
Microsoft Windows NT 4.0向けに
書かれているからです
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は絶えず実装されます