第6回: I/O システム

はじめに

第6回では、Windows NT 3.1 の I/O システム を解説します。NT の I/O 設計は「すべてを統一的に扱う」ことを重視しており、ドライバモデル・非同期処理・ファイルシステムの考え方に大きな影響を与えました。


1. 統一 I/O モデルという発想

Windows NT では、

  • ファイル
  • デバイス
  • ネットワーク

といった対象を、すべて 同一の I/O モデル で扱います。

この中心にあるのが IRP(I/O Request Packet) です。


2. I/O マネージャの役割

I/O マネージャは Executive の主要コンポーネントの一つで、

  • Win32 API からの I/O 要求受付
  • IRP の生成と管理
  • 適切なドライバへの配送

を担当します。

アプリケーションはデバイスの種類を意識せず、同一 API で操作できます。


3. IRP(I/O Request Packet)

3.1 IRP とは何か

IRP は、I/O 要求を表現するための内部データ構造です。

  • 要求種別(Read / Write / DeviceIoControl など)
  • バッファ情報
  • 完了ルーチン

が含まれます。

3.2 ドライバスタック

IRP は、

  • 上位ドライバ → 下位ドライバ

へと スタック構造 で渡されます。

この設計により、

  • フィルタドライバ
  • レイヤードドライバ

が可能になりました。


4. デバイスドライバ階層

4.1 ドライバの種類

  • ファイルシステムドライバ(FAT など)
  • ボリュームドライバ
  • クラスドライバ
  • バスドライバ

それぞれが役割分担し、I/O 要求を処理します。

4.2 デバイスオブジェクト

各ドライバは デバイスオブジェクト を生成し、

  • オブジェクトマネージャ
  • I/O マネージャ

と連携します。


5. 非同期 I/O

5.1 オーバーラップ I/O

Windows NT は初期から 非同期 I/O をサポートしていました。

  • I/O 要求を発行後、即座に制御を返す
  • 完了はイベントや APC で通知

5.2 スレッドと I/O の関係

  • スレッドは I/O 完了待ちで待機状態へ
  • CPU 資源の有効活用

これは高負荷サーバ用途を強く意識した設計です。


6. ファイルシステムと I/O

  • ファイルもデバイスとして扱われる
  • CreateFile で統一的にオープン

この抽象化により、

  • ローカルディスク
  • リモートリソース

を同じ API で操作可能になりました。


7. 第6回のまとめ

Windows NT 3.1 の I/O システムは、

  • IRP による統一モデル
  • レイヤードドライバ構造
  • 非同期 I/O 前提設計

という特徴を持っています。

この設計は、現在の Windows ドライバモデル(WDM / WDF)へと受け継がれています。

次回はいよいよ最終回となる 「セキュリティ」 を解説します。

コメント

タイトルとURLをコピーしました