Windowsの内部構造を詳細に解き明かす定番書籍「インサイドWindows」。1992年の初版発行以来(初版の訳書は1993年発行)、Windowsに接するすべてのITエンジニアのバイブルとして永く読み継がれてきました。最新刊の第7版は、2017年5月に上の原書が発行され(訳書の発行は2018年5月、山内和朗訳)、約4年の歳月を経て2021年10月に下の原書が発行されました(訳書の発行は2022年9月、山内訳)。
第7版完結を機に、「インサイドWindows」の読みどころを、上(第1章~第7章)と下(第8章~第12章)から抜粋してお届けします。今回は第2章(上)からの抜粋で、Windowsの設計目標と、OSとしての特徴を見ていきます。(日経BOOKSユニット第2編集部)
第2章 システムアーキテクチャ
本書を読み進める上で知っておくべき用語、概念、およびツールについて学んだ今、Windowsオペレーティングシステム(OS)の内部の設計上の目標と構造について、探検する準備が整いました。
この章では、主要なコンポーネントと、コンポーネント間で相互にやり取りする仕組み、および実行中のコンポーネントのコンテキストといった、システムの全体的なアーキテクチャについて説明します。Windowsの内部を理解するための枠組みを提供するために、まず初めにWindowsシステムのオリジナルの設計と仕様を形作ってきた、要件と目標について確認しておきましょう。
2.1 システム要件と設計上の目標
次に示す要件は、さかのぼること1989年における、Windows NTの仕様です。
- 真の32ビットの、プリエンプティブ(先取り)で、リエントラント(再入可能)な、仮想メモリOSであること。
- 複数のハードウェアアーキテクチャとプラットフォームで稼働すること。
- 対称型マルチプロセッシング(Symmetric Multiprocessing:SMP)システム上での稼働とスケールを備えること。
- ネットワーククライアントおよびサーバーとしての、優れた分散コンピューティングプラットフォームになること。
- MS-DOSおよびWindows 3.1向け16ビットアプリケーションの大部分を実行できること。
- (米国)政府調達要件であるPOSIX 1003.1準拠であること。
- (米国)政府調達要件および業界要件のOSセキュリティを備えること。
- Unicodeのサポートにより、グローバル市場に容易に適応できること。
これらの要件を満たすシステムを開発するのに必要な数千の決定を導くため、Windows NTの設計チームは次に示す設計目標をプロジェクトの開始時に採用しました。
- 拡張性(Extensibility)
- コードは、市場の要求の変化にあわせて、柔軟に追加でき、変更できるように書かれる必要がある。
- ポータビリティ(Portability、移植可能性)
- システムは、複数のハードウェアアーキテクチャで稼働できなければならず、市場の要求に応じて、新しいハードウェアアーキテクチャに比較的容易に移行できる必要がある。
- 信頼性(Reliability)と堅牢性(Robustness)
- システムは、内部的な誤動作と外部からの変更(改ざん)の両方から、自律的に保護される必要がある。アプリケーションは、OSや他のアプリケーションに害を与えることができてはならない。
- 互換性(Compatibility)
- Windows NTは既存のテクノロジを拡張する必要があるが、そのユーザーインターフェイスとAPIは古いバージョンのWindowsやMS-DOSと互換性を持たなければならない。また、UNIXやIBM OS/2、Novell NetWareなど、他のシステムとの相互運用性を持つ必要もある。
- パフォーマンス(Performance)
- 他の設計目標の制約がある中で、システムは各ハードウェアプラットフォーム上で、可能な限り高速であり、応答性が良くなければならない。
Windowsの内部構造と動作の詳細を探るにつれ、これらのオリジナルの設計目標と市場の要求がシステムの構築にどのようにうまく取り入れられてきたのかがわかるでしょう。しかし、探検を開始する前に、Windowsの全体の設計モデルを調べ、他の最新のオペレーティングシステムと比較してみましょう。