はじめに
第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)へと受け継がれています。
次回はいよいよ最終回となる 「セキュリティ」 を解説します。

コメント