Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

概要

デスクトップ・ヒープは、ウィンドウステーション内の
デスクトップ・オブジェクト(GDIオブジェクトを除く)を格納する。

構成

デスクトップ・ヒープの構成は以下の通り。

デスクトップ・ヒープのストレージ領域

カーネル・アドレス空間 - セッション・スペース┬->セッション・イメージ・スペース(Session Image Space)
                                       ├->セッション構造(Session Structure)
                                       ├->セッション・ビュー・スペース(Session View Space) ─-> デスクトップ・ヒープ
                                       └->セッション・ページ・プール(Session Page Pool)

デスクトップ・ツリーとデスクトップ・ヒープの構成

┬ Session 0
│ ├--- WinSta0(インターラクティブ・ウィンドウ・ステーション)
│ │    ├--- Default(インターラクティブ・デスクトップ)
│ │    ├--- Disconnect(インターラクティブ・デスクトップ)
│ │    └--- Winlogon(インターラクティブ・デスクトップ)
│ ├--- Service-0x0-3e7$(ノン・インターラクティブ・ウィンドウ・ステーション)
│ │    └--- Default(ノンインターラクティブ・デスクトップ)
│ ├--- Service-0x0-3e4$(ノン・インターラクティブ・ウィンドウ・ステーション)
│ │    └--- Default(ノンインターラクティブ・デスクトップ)
│ └--- SAWinSta(ノン・インターラクティブ・ウィンドウ・ステーション)
│      └--- SADesktop(ノンインターラクティブ・デスクトップ)
│    
└ Session 1
  └--- WinSta0(インターラクティブ・ウィンドウ・ステーション)
       ├--- Default(インターラクティブ・デスクトップ)
       ├--- Disconnect(インターラクティブ・デスクトップ)
       └--- Winlogon(インターラクティブ・デスクトップ)

デスクトップ・ヒープの構成

デスクトップ毎のデスクトップ・ヒープ領域は、
システムのデフォルト値および設定されているレジストリの値を元に、

の3つの領域により構成される。

デスクトップ・ヒープ領域のイメージ

標準ヒープインターラクティブ・ヒープ
(対話型ヒープ) - WinSta0
ノン・インターラクティブ・ヒープ
(非対話型ヒープ)
・・・ノン・インターラクティブ・ヒープ
(非対話型ヒープ)
各デスクトップ・ヒープ領域の値各デスクトップ・ヒープ領域の値各デスクトップ・ヒープ領域の値・・・各デスクトップ・ヒープ領域の値
全デスクトップ・ヒープの容量

デスクトップ毎にダイナミックに確保される「ノン・インターラクティブ・ヒープ」の数が、
「全デスクトップ・ヒープの容量」と「各デスクトップ・ヒープ領域の値」で自動的に決定される。

この制約はVista以降で改良されており、「ノン・インターラクティブ・ヒープ」(全容量)は
デスクトップ・ヒープが、Dynamic Kernel Spaceに実装され、ダイナミックに拡張される。
これにより、「全デスクトップ・ヒープの容量」は、チューニング不要となった。

ただし、「各種デスクトップ・ヒープ」のサイズの問題は発生する。

サーバでは、「標準デスクトップ・ヒープ」と「インターラクティブ・ヒープ」の容量は変更しないため、
「全デスクトップデスクトップ・ヒープの容量」と「ノン・インターラクティブ・ヒープの容量」により決定される。

各ヒープの説明

各ヒープの容量

OSによって異なる。

標準ヒープ

インターラクティブ・ヒープ(対話型ヒープ)

Sessionに唯一の対話型のウィンドウ・ステーションのデスクトップが使用する。
(WinSta0には、Winlogon、Default、Screen-saverの3つのデスクトップがある)

こちらには、USERオブジェクトが格納される。

通常、クライアントOSにてウィンドウの立ち上げすぎなどに起因して
インターラクティブ・ヒープが枯渇することがある(通常、サーバOSでは問題にならない)。

ノンインターラクティブ・ヒープ(非対話型ヒープ)

非対話型のウィンドウ・ステーションのデスクトップが使用する。

その他の用語説明

セッション ---> ウィンドウステーション ---> デスクトップ ---> プロセス

セッション

ウィンドウステーション

複数の仮想ディスプレイをサポートするために定義されたオブジェクト。

特定のセッションに関連付けられ、
1つのセッションは複数のウィンドウ・ステーションを持つことができる。

ただし、

対話型のウィンドステーション (インターラクティブ・ウィンドウ・ステーション)は、
1つのセッションに対して1つだけになる(これはWinsta0と呼ばれる)。

デスクトップ

プロセス

USERオブジェクトとGDIオブジェクト

Windows ウィンドウ マネージャーによって管理される、

表す 2 つのリソース (USER オブジェクトと GDI オブジェクト)

USERオブジェクト

などのユーザー インターフェイス要素を表す。

USERオブジェクトの使用するメモリはデスクトップ・ヒープから割り当てられる。

GDIオブジェクト

などのグラフィックス デバイス インターフェイス要素を表す。

GDIオブジェクトの使用するメモリは

から割り当てられる。

USERオブジェクトとGDIオブジェクトの最大値


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS