前回では、Windows 7の中核と言える「MinWin」に関して解説した。MinWinはVistaのカーネルをベースとしているが、「リファクタリング」というコンセプトで整理統合されている。
Vistaでは互換性のために、同じような機能を持ちながら異なるAPIが実装されていた。しかし、Windows 7ではこれらを整理統合して、同じ機能はひとつのモジュールに統合されている。
![]() | Windows 7で採用されたMinWinは、最小のOSカーネルセットだ(Tech・Ed 2009資料より引用、以下同) |
|---|
またVistaカーネルでは、ひとつのDLLに複数のAPIセットが実装されていたため、複数のDLL間で依存関係があった。つまり、あるDLLに実装されたAPIを、さらに別のDLLが呼び出すといったこんがらがった状況になっていたわけだ。そこで、MinWin開発の際に行なわれたリファクタリングでは、システムDLLとAPIを整理統合して、依存関係を絶った。これにより、MinWinのコード自体が肥大化することを防いでいる。
MinWinは、「OSカーネル」「HAL」「TCP/IP」「ファイルシステム」「ドライバー」「コアシステムサービス」など、OSとしての最低限の機能セットと言える。しかし、MinWinが最低限の機能セットであると言っても、Windows Server 2008/R2に搭載されている「Server Core」とは異なる。MinWinはOSの中核部分で、Server CoreはMinWinにWindows Serverのさまざまな機能を付け足したOSと言える。
- フルWindows > Server Core > MinWin
リファクタリングされたMinWinでは、DLLとAPIセットを分離している(Vistaでは、DLLとAPIセットが一体化していた)。つまりMinWinでは、DLL内部にあるAPIセットを直接呼び出すのではなく、「Virtual DLL」というインタフェースを経由して、DLL内部の機能を呼び出すことになる。
![]() | DLL Refactoring(リファクタリング)では、機能は変えずにDLLの構造をいちから作り直した |
|---|
MinWin内部ではVistaが持っていたAPIセットを整理統合したので、APIセットのネーミングやパラメータなどが異なっている。そこでVirtual DLLが、Vista APIとMinWinのAPIのインタフェースとして動作するわけだ。
この連載の記事
- 第23回 なぜWindows 7のカーネルはVistaより軽量化できたのか?
- 第22回 周辺機器を使いやすくするDevice Stageの利点と問題点
- 第21回 Windowsの画面表示を変えるDirect2DとDirectWrite
- 第20回 GPGPUをWindowsでサポートする「DirectCompute」
- 第19回 SSDサポートにさらなる一歩を踏み出したWindows 7
- 第18回 32bitアプリを64bit Windows 7で動かす「WOW64」
- 第17回 パブリックベータが開始された「Office 2010」
- 第16回 Internet Explorer 9のデモが公開 PDC09レポート1
- 第15回 Windows 7の目立たぬ新機能 センサー機能とは何か?
- 第14回 XPユーザーへの最後の手段「XP Mode」の導入と実際
- この連載の一覧へ
















