Home / ... / 各種コンピュータシステム / Windows系システム / Windows サブシステム

Windows サブシステム



サブシステムの概要

 Windows NT を開発する際に、マイクロカーネルの手法を採用したが、この時、Windows OS の機能を内部的にサブシステムの形に整理・分割した。

 Windows OS をサブシステムに分けた事には、以下の様な利点が考えられる。
  •  複雑なシステムをより単純な要素に分割する事で、システムの動作や構造が把握し易くなる。
     従って、設計・製作の面でも管理の面でも効率が上がる事が見込まれる。

  •  各サブシステムは、独立したユーザモードのメモリ空間で動作する事になっている。
     このため、1つのサブシステムで問題が起こっても、他のサブシステムに問題が波及しにくい。

  •  各サブシステムはユーザモードで動作しており、System プロセスの下でカーネルモードで動作するスレッド(デバイスドライバなど)に、直接にはアクセス出来ない。
     この事により、セキュリティ面での信頼性が向上する。
 マイクロカーネルの手法を用いると、システムがシンプルになり管理が容易になるが反面オーバヘッドが大きい。
 このため、Windows 2000 以降ではマイクロカーネルとモノリシックカーネルの折衷案である、ハイブリッドカーネルが採用されている。



Windows コアサブシステム

 Windowsの動作に必須のサブシステムプロセスは、コアサブシステムと呼ばれている。

 Windows
Server 2008 には、OSを最小構成でインストールするインストールオプションが容易されており、その場合でもこれらのサブシステムは必ずインストールされる。

 以下で、Windows の主なコアサブシステムについて概説する。

System プロセス.
 カーネルモードで動作するプロセスで、Winowsカーネルおよびデバイスドライバなどを含む。

 詳細は、
「Windowsのプロセスツリー」の「System プロセス」を参照のこと。

セッションマネージャ サブシステム.
 最初のユーザーモードのプロセスで、Windows起動段階で多くの重要な作業(ページファイルの追加、起動時のファイル名の変更と削除処理、システム 環境変数の作成など)を行うサブシステム。

 詳細は、「Windowsのプロセスツリー」の「セッションマネージャ サブシステム」.を参照のこと。

Windows サブシステム・・・追加調査中.
 Windows のAPIを提供する環境サブシステム(Win32サブシステム または Win64サブシステム)


 詳細は、「Windowsのプロセスツリー」の「Windows サブシステム」を参照のこと。

Windows ログオン・プロセス.
 ユーザーからのログオンとログオフ要求を処理するプロセス。
 ローカル認証サブシステム・プロセスの親プロセスでもある。

 詳細は、「Windowsのプロセスツリー」の「Windows ログオン・プロセス」.を参照のこと

ローカル認証サブシステム
 セキュリティ認証サブシステムプロセス。

 詳細は、「Windowsのプロセスツリー」の「ローカル認証サブシステム」.を参照のこと。

GDIサブシステム
 Windows アプリケーションがディスプレイやプリンタのような出力デバイスへ出力処理を行う際に、直線や曲線の描画、フォントのレンダリング、パレットの制御などの機能を提供するサブシステム。

 詳細は、
リンク先※↓ を参照のこと。

I/O サブシステム・・・追加調査中.
 入出力を制御するサブシステム。

 ファイルシステムドライバは、I/Oサブシステムの下で動作する。
 ファイルシステムは、主に以下の要素で構成される。
  • ファイルシステム
    • NT File System Driver (Ntfs.sys)
    • Fast FAT File System Driver : Fastfat.SYS
    • CD-ROM File System Driver : cdfs.sys
    • NPFS Driver (NPFS : 名前付パイプファイルシステム): npfs.sys
  • ボリュームスナップショット
    • 今後 調査予定.

  • ボリュームマネージャ
    • volume manager for dynamic disks : Dmio.sys
    • volume manager for basic disks : ftdisk.sys
  • パーティションマネージャ
    • Partition Manager : PartMgr.sys
  • クラスドライバ
    • PnP Disk Driver (ディスク操作に共通する機能を提供するクラスドライバ): Disk.sys
    • SCSI Class System Dll (SCSIディスク操作機能を提供するクラスドライバ) : classpnp.sys
  • ポートドライバ
    • IDE/ATAPI Port Driver (IDEディスクのポートドライバ): atapi.sys
    • SCSI Port Driver (SCSIディスクのポートドライバ): Scsiport.sys
 以上はファイルシステムのドライバだが、他にアクセス管理を行うモジュールなどもある。
  • File Sharing (ファイル共有): Srv.sys
     ・srv.sys - tdi.sys - ndis.sys
     ・srv.sys - ksecdd.sys
    Server driver : srv.sys
    TDI Wrapper (TDI=
    Transport Driver Interface): tdi.sys
    NDIS 3.0 wrapper driver : ndis.sys (NDIS : Network Driver Interface Specification)
    Kernel Security Support Provider Interface : ksecdd.sys
    MS KS Server : mskssrv.sys


ネットワークサブシステム・・・追加調査中.
 Windows システムの要素としてネットワークサブシステムと呼ぶ時は、「Network Connections Manager(netman.dll)」サービスの事を言っていると思われる。

 netman.dll はユーザモードで動作するサービスで、ネットワークのクライアント側のネットワーク構成を行い、タスクバーの通知領域に接続ステータスを表示する。
ネットワークサブシステムという用語は場合によって、
  • ハードウェア、
  • デバイス・ドライバ、
  • 上位のネットワーク・プロトコル・スタック
などを含めた、ネットワーク・システム全体をいう事も多い。

NDIS 3.0 wrapper driver : ndis.sys
NDIS 3.0 connection wrapper driver : ndistapi.sys
 NDIS(Network Driver Interface Specification)は、ハードウェア(ネットワークアダプタ)によらない共通のインタフェースを提供する仕組み。
 NDIS
wrapper driver はNDISの仕組みを実装してOSのハードウェアへの依存を少なくするためのラッパーソフト。
(OSI参照モデルでいうところの、物理層とデータリンク層のインタフェース)。

TCP/IP driver : tcpip.sys

SNMP・・・追加調査中.
RPC DCOMサブシステム
 「Distributed COM Services サービス (rpcss.dll)」。
 「COM Services (clbcatq.dll)」を含んでおり、RPCとDCOMに関する処理を行う。



Windows のその他のサブシステム

  • スプーラ サブシステム
    参考:Windowsプリントスプーラ操作ルーチン.

  • MS-DOS サブシステム
     MS-DOSサブシステムの中心は、
    "NTVDM.EXE" 。
     
    "NTVDM.EXE" は、仮想8086モードを利用してMS-DOSのマシン環境をエミュレートする「仮想DOSマシン(NT Virtual DOS Machine)」を実現する。
     
     「仮想DOSマシン」が最初に読み込むのは、"NTDOS.SYS" と "NTIO.SYS" というファイル。
     これらのファイルはMS-DOSが起動するときに必要な入出力制御ファイル
    "IO.SYS" と、MS-DOSのOSカーネル "MSDOS.SYS" の役割をする。
     
     "NTVDM.EXE" 自身は32ビットのWindowsアプリケーションで、ウィンドウの表示などはWin32サブシステムを介して行う。
     
    参考ページ:

  • POSIX サブシステム

  • Windows Messaging subsystem (Mapisp32.exe)



一般的なサブシステム

 Windowsシステムのサブシステムではない、一般的なサブシステム。

  • グラフィックス サブシステム graphics subsystem
     ディスプレイ表示を行うためにコンピュータが搭載しているデバイスのことで、Windowsシステムのサブシステムではない。

  • ストレージ サブシステム
     RAID の様なストレージシステムの構成要素の事で、Windowsシステムのサブシステムではない。


Windows環境サブシステム

 ユーザモード部分とカーネルモード部分に分かれている。
 
ユーザモード部分は、Client Server Runtime Process(CSRSS : csrss.exe, CSRSRV.dll)で、アプリケーションにAPIを提供する。
 カーネルモード部分 は、 カーネルモードデバイスドライバ (Multi-User Win32 Driver : Win32k.sys)で、システムプロセスの下で動作し、CSRSS が受け付けたAPIを処理できるように、CSRSS の内部にカーネルモードで動作するシステムスレッドを作成する。

BOOK Preview
インサイドMicrosoft Windows 第4版 上
第2章 システムアーキテクチャ .
2.4.1 環境サブシステムとサブシステムDLL.
 
未整理で、丸写し状態。
 再調査中。
 後日まとめる予定。

Windowsサブシステムは、以下のような主要コンポーネントで構成されている。
  1. 環境サブシステムプロセス (Csrss.exe)
     このコンポーネントは次のような機能をサポートしている。

    1. コンソール(テキスト)ウィンドウ

    2. プロセスとスレッドの生成消滅

    3. 16ビット仮想DOSマシン(VDM)プロセス

    4. その他の関数(GetTempFile、DefineDosDevice、ExitWindowsEx、いくつかの自然言語サポート関数)

  2. カーネルモードデバイスドライバ (Win32k.sys)
     このコンポーネントは次のような機能を実装している。

    1. ウィンドウマネージャ
      (ウィンドウ表示制御、画面出力の管理、キーボード/マウス/各デバイスからの入力収集、ユーザーメッセージのアプリケーションへの配送)

    2. グラフィックデバイスインターフェイス(winsrv.dll)
      (GDIと略称され、グラフィック出力デバイス操作用の関数ライブラリ。直線、テキスト、図形などの描画関数とグラフィック操作関数の提供)

  3. サブシステムDLL (Kernel32.dll、Advapi32.dll、User32.dll、Gdi32.dll)
     公開されているWindows API関数を、非公開のカーネルモードシステムサービス( Ntoskrnl.exe と Win32k.sys に実装されている)呼び出しに適切に変換する。

  4. グラフィックデバイスドライバ
     固有のハードウェアを制御するグラフィックディスプレイドライバ、プリンタドライバ、およびビデオミニポートドライバ。



GDIサブシステム

 Windows アプリケーションがディスプレイやプリンタのような出力デバイスへ出力処理を行う際に、直線や曲線の描画、フォントのレンダリング、パレットの制御などの機能を提供するサブシステム。

 GDIサブシステムは、クライアント/サーバ型のシステムとなっている。

 アプリケーション(クライアント)は gdi32.dll の GDI API をコールし、その要求を Windows サブシステム の下で動作する winsrv.dll
のスレッドが処理する。

 winsrv.dll は、DDI(デバイス ドライバ インターフェイス)層を介してビデオ ディスプレイ ドライバに要求を送る。

参考1:Windows NT 3.5 での OpenGL インターフェイス < [マイクロソフトサポートオンライン]

Architectural Overviewアーキテクチャの概要
In Windows NT, GDI functions initiated from a graphics application are processed by the dynamic link library (DLL) GDI32.DLL on the client side.Windows NTでは、グラフィックスアプリケーションから開始されたGDI関数はクライアント側の上のダイナミックリンクライブラリ(DLL)GDI32.DLLに よって処理されます。
The GDI request is then transmitted to WINSRV.DLL on the server side.そして、GDI要求はサーバ側でWINSRV.DLLに伝えられます。
This in turn dispatches the requests to the video display driver through the device driver interface (DDI) layer called Win32 DDI. これはWin32 DDIと呼ばれるデバイスドライバインタフェース(DDI)層を介して順番に要求をビデオディスプレイドライバに送信します。


OpenGL functions are processed the same way as GDI functions with a few additions.ずっと GDIがいくつかの追加で機能するようにOpenGL機能は同じように処理されます。
The functions are sent to OPENGL32.DLL on the client side for graphics processing.グラフィックス処理のためにクライアント側で機能をOPENGL32.DLLに送ります。
OpenGL requests are packaged and transmitted to WINSRV.DLL on the server side. OpenGL要求は、サーバ側でWINSRV.DLLにパッケージされて、伝えられます。
The OpenGL requests are then dispatched to the video display driver through the hardware- specific DDI layer. そして、OpenGL要求はハードウェアの特定のDDI層を通してビデオディスプレイドライバに派遣されます。
The hardware-specific DDI resides alongside the Win32 DDI and can be obtained through a vendor that manufactures an OpenGL accelerator. ハードウェア特有のDDIはWin32 DDIと並んで住んでいて、OpenGLアクセラレータを製造しているベンダーを通して入手することができます。
If the accelerator is obtained, an additional software module known as the OpenGL Installable Client Driver is provided, which resides between OPENGL32.DLL and WINSRV.DLL. アクセラレータを入手するなら、OpenGL Installable Client Driverとして知られている付加ソフトウェアモジュール(OPENGL32.DLLとWINSRV.DLLの間にある)を提供します。


参考2:Graphics Device Interface. < [ja.Wikipedia]






     RSS of this page

     
     

    他のサイト: