[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]

* 目次 [#q0ad531a]
#contents

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

*構成 [#fafafd39]
デスクトップ・ヒープの構成は以下の通り。

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

**デスクトップ・ツリーとデスクトップ・ヒープの構成 [#jfa81a6c]
 ┬ Session 0
 │ ├--- WinSta0(インターラクティブ・ウィンドウ・ステーション)
 │ │    ├--- Default(インターラクティブ・デスクトップ)
 │ │    ├--- Disconnect(インターラクティブ・デスクトップ)
 │ │    └--- Winlogon(インターラクティブ・デスクトップ)
 │ ├--- Service-0x0-3e7$(ノン・インターラクティブ・ウィンドウ・ステーション)
 │ │    └--- Default(ノンインターラクティブ・デスクトップ)
 │ ├--- Service-0x0-3e4$(ノン・インターラクティブ・ウィンドウ・ステーション)
 │ │    └--- Default(ノンインターラクティブ・デスクトップ)
 │ └--- SAWinSta(ノン・インターラクティブ・ウィンドウ・ステーション)
 │      └--- SADesktop(ノンインターラクティブ・デスクトップ)
 │    
 └ Session 1
   └--- WinSta0(インターラクティブ・ウィンドウ・ステーション)
        ├--- Default(インターラクティブ・デスクトップ)
        ├--- Disconnect(インターラクティブ・デスクトップ)
        └--- Winlogon(インターラクティブ・デスクトップ)

-セッション 0 の分離 - Windows 7 対応アプリケーションの互換性~
http://msdn.microsoft.com/ja-jp/windows/dd871151.aspx
--Vista以降では、サービスのセッションは常にSession0になる。
--Session0はサービスのみを実行するようになったため、~
初回ログインしたユーザのセッションは、Session1となる。以降Session2、3、4…	

**デスクトップ・ヒープの構成 [#f515079b]

デスクトップ毎のデスクトップ・ヒープ領域は、~
システムのデフォルト値および設定されているレジストリの値を元に、
-「標準デスクトップ・ヒープ」
-「インターラクティブ・ヒープ(対話型ヒープ)」、
-および「ノン・インターラクティブ・ヒープ(非対話型ヒープ)」

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

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

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

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

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

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

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

*各ヒープの説明 [#j645e0ec]
**各ヒープの容量 [#u6300e9d]
OSによって異なる。

**標準ヒープ [#c8565b4c]
-全デスクトップに共有される。
-[[USERオブジェクト>#g2a44623]]を保持する。
-クローバル・ハンドルテーブルや、共有システムの設定が含まれる。
-通常、この領域サイズの変更の必要はない。
 
**インターラクティブ・ヒープ(対話型ヒープ) [#h9fffbb0]
Sessionに唯一の対話型のウィンドウ・ステーションのデスクトップが使用する。~
(WinSta0には、Winlogon、Default、Screen-saverの3つのデスクトップがある)~

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

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

**ノンインターラクティブ・ヒープ(非対話型ヒープ) [#u1390431]
非対話型のウィンドウ・ステーションのデスクトップが使用する。

*その他の用語説明 [#mc6a748c]
**セッション ---> ウィンドウステーション ---> デスクトップ ---> プロセス [#qc59c5b6]
***セッション [#mcbf85b7]
-独自のキーボード、マウスおよびディスプレイを持つ~
対話型のユーザログオンを表し、セキュリティ境界とリソース境界の両方を表す。

-ターミナルサーバやユーザの切り替えにもセッションが利用される。~
全てのプロセスは、このセッションに一意に関連付けられており、~
プロセスの仮想アドレス空間にセッションデータのビューが定義される。~
(Windows Server 2003、Windows XPまで)

***ウィンドウステーション [#p9501102]
複数の仮想ディスプレイをサポートするために定義されたオブジェクト。

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

ただし、

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

***デスクトップ [#s9bc57b9]
***プロセス [#bf8c22a8]

**USERオブジェクトとGDIオブジェクト [#e9e7bdef]
**USERオブジェクトと[[GDI]]オブジェクト [#e9e7bdef]

Windows ウィンドウ マネージャーによって管理される、
-ウィンドウ要素 (ウィンドウやメニューなど) と
-グラフィック要素 (ペン、ブラシ、描画領域など) を

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

-Windows の限界に挑む: USER オブジェクトと GDI オブジェクト
-Windows の限界に挑む: USER オブジェクトと [[GDI]] オブジェクト
--http://technet.microsoft.com/ja-jp/windows/ff606443
--http://technet.microsoft.com/ja-jp/windows/ff621348

***USERオブジェクト [#g2a44623]
-ウィンドウ
-ウィンドウ位置
-メニュー、アイコン
-カーソル(マウスの絵)
-キャレット(TextBox の I)
-フック、DDE、アクセラレータ テーブル(メニューのキーボード ショートカット)

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

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

-User Objects (Windows)~
http://msdn.microsoft.com/en-us/library/ms725486.aspx

***GDIオブジェクト [#h5d7df9e]
***[[GDI]]オブジェクト [#h5d7df9e]
-フォント
-ビットマップ
-ブラシ
-ペン
-デバイス コンテキスト (描画領域) 

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

GDIオブジェクトの使用するメモリは
[[GDI]]オブジェクトの使用するメモリは
-ページ プール、
-セッション プール※

から割り当てられる。

-GDI Objects (Windows)~
-[[GDI]] Objects (Windows)~
http://msdn.microsoft.com/en-us/library/ms724291.aspx

***USERオブジェクトとGDIオブジェクトの最大値 [#z2d92b5f]
***USERオブジェクトと[[GDI]]オブジェクトの最大値 [#z2d92b5f]
-1つのセッション当たり、其々65,536のユーザ・ハンドルだが、~
1つのセッション当たり開くことができるユーザ・ハンドルの最大数は通常より低い(10,000程度)。

-さらにユーザ・ハンドルのプロセスごとのデフォルト限界がある。~
どのプロセスも 其々10,000 個以上のUSERオブジェクトとGDIオブジェクトを作成することはできない。
どのプロセスも 其々10,000 個以上のUSERオブジェクトと[[GDI]]オブジェクトを作成することはできない。


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