Windows system >> Windowsの知識 >  >> Windows Serverシステムのチュートリアル >> Windows Serverチュートリアル >> ワーキングセットのWindows 2000 /XPのプロセスを解決します

ワーキングセットのWindows 2000 /XPのプロセスを解決します

  

「分析のWindows 2000 /XP物理メモリー管理」で、私は、ページフレームデータベース(ページフレームデータベース)の概念は、システム内の各ページの物理メモリページフレームのすべての側面の組織と管理に記載されている詳細に記述しました構造は、ページの状態を追跡するためのデータベースに格納されています。しかし、ページフレームデータベースとは、実際の物理メモリの使用をコーディネートすることはできません。私たちは、ワーキングセット(のworkingSet)という概念を導入し、プロセス(またはシステム)を避けるために、Windowsはマルチタスクですが、物理メモリは比較的希少資源である、このリソースの枯渇を知っています。物理的な各プロセスのメモリ使用量および追跡システムのために、それぞれのworkingSetのメモリ管理は、Windows 2000 /XP上で非常に重要な用語は、通常は、二つのタイプに分けられ、すなわちプロセスがワーキングセットとシステムワーキングセット。端末とサービス、及びセッション(セッション)ワーキングセットのワーキングセットのうちの別の1つの導入以来、物理メモリはここで、それぞれのセッションを追跡するために使用されます。作業セットプロセスの内部組織から始めて、簡単に中のWindows 2000 /XPでの組織と管理の作業セットを記述する。

EPROCESS確かプロセスワーキングセットの表現を見つけることができ、EPROCESSから出発して、プロセスの構造の説明です。実際にMMSUPPORTにある部分構造EPROCESSは、メモリ・サブシステムに関連するプロセスの重要な要素のいくつかについてである、自然のプロセスワーキングセットがここにもあります。カーネル以前のバージョンのコンテンツMMSUPPORT構造に統合されておらず、各バージョンのMMSUPPORTの間で定義されたのと同じではありません、Windows XPの定義MMSUPPORT 2600 SP0の下に表示されている。この構造内のすべての値のみに適用される場合があります(ビルドしますバージョン):

のtypedef構造体_MMSUPPORT {
LARGE_INTEGER LastTrimTime;
MMSUPPORT_FLAGSフラグ;
ULONG PageFaultCount;
ULONG PeakWorkingSetSize;
ULONG WorkingSetSize;
ULONG MinimumWorkingSetSize。
ULONG MaximumWorkingSetSize;
PMMWSL VmWorkingSetList;
LIST_ENTRY WorkingSetExpansionLinks;
ULONG項;
ULONG NextEstimationSlot;
ULONG NextAgingSlot;
ULONG EstimatedAvailable;
ULONG GrowthSinceLastEstimate;
} MMSUPPORT、* PMMSUPPORT; PeakWorkingSetSize、働きで

MMSUPPORT etSizeは、このプロセスの動作を示すMaximumWorkingSetSizeピークを有するMinimumWorkingSetSizeは、もちろん、設定された最大値と最小ワーキングセットを可能にするために、サイズをワーキングセット。パフォーマンスモニタ(perfmon.mscと)とタスクマネージャ(Taskmgr.exeのは)データ追跡プロセスに表示することができます。 Win32 APIのGetProcessWorkingSetSize(例)とSetProcessWorkingSetSize(例)などMinimumWorkingSetSize MaximumWorkingSetSizeを取得または設定することができ、および許可後の各PROCESS_QUERY_INFORMATION PROCESS_SET_QUOTAを持ちます。

プロセスワーキングセットを確立する過程で、常にのCreateProcess空で、構築プロセスの過程でワーキングセットの初期化処理の責任です。これは、物理ページを割り当て、その後、一連の作業MiInitializeWorkingSetList初期化プロセスを呼び出します。ちょうど私たちは、上記のMMSUPPORT構造の初期化パラメータとして作成され、後者EPROCESS。ここで言及される以下のように定義され、VmWorkingSetList(構造MMWSL)非常に重要なメンバーである:

+ $ 000クォータ:Uint4B
+ 0x004 FirstFree:Uint4B
+ 0x008とFirstDynamic:Uint4B
+ 0x00c lastEntry:Uint4B
+ 0x010 NextSlot:Uint4B
+ 0x014 WSLE:Ptr32 _MMWSLE
+ 0x018 LastInitializedWsle:Uint4B
+ 0x01c NonDirectCount:Uint4B
+ 0x020のHashTable:Ptr32 _MMWSLE_HASH
+ 0x024 HashTableSize:Uint4B
+ 0x028 NumberOfCommittedPageTables:Uint4B
+の0x02cのHashTableStart:Ptr32ボイド
+ 0x030 HighestPermittedHashAddress:Ptr32ボイド
+ 0x034 NumberOfImageWaiters:Uint4B
+ 0x038 VadBitMapHint:Uint4B
+の0x03c UsedPageTableEntries:[768] Uint2B
+の0x63cのCommittedPageTables:[24] Uint4B

効率の考慮はWindows 2000 /XPは、固定された仮想メモリアドレスに構造をマッピングします。カーネル変数MmWorkingSetListによって指定され、実際にMiInitializeWorkingSetListはMMSUPPORT構造が動作変数VmWorkingSetListメンバーへの直接参照です。 (0xc0503000ための2600 Professionalを構築するWindows XPの)コアエリアに位置MmWorkingSetListは、通常、コア領域は、すべてのプロセスで共有されているが、どうやらMmWorkingSetListのworkingSetは、各プロセスの状況を指定している異なるマッピング、すなわち、異なる内容で、このプロセスのページディレクトリやページテーブル。後者は、私がで「議論のWindows NT /2000のページングメカニズム」で詳細なテストを行っています。

のworkingSetプロセスは言い換えれば、物理メモリの使用を記述するために使用されるプロセスは(培地を交換しPAGEFILE.SYSではない)物理メモリ内のworkingSetページに配置されているため、ページがアクセスされませんこれは、ページフォールトにつながります。私たちは、プロセスワーキングセットにVirtualLockページを使用することができます。ラウンド、システムは、このプロセスのために(仮想ページアドレスを使用して)ページがそれに焦点を当てた作品に存在する方法を知っていますか?あなたがそれらのページを整理するために、ハッシュテーブル(ハッシュテーブル)を使用して、Windows 2000 /XPを知る上で与えられたMMWSL定義でチラッと見、。ちょうど頻繁にアクセスされる機能のためのworkingSetハッシュテーブル高速検索機能。別の例は、グローバル・ネーミングシステムのカーネルの組織である、参照の「Windows NT /2000のカーネルオブジェクト組織の分析を。」そして、Windbgのは、グローバルなダンプを提供!コマンドカーネルオブジェクトをオブジェクト、ダンプ・プロセスワーキングセットのためのような、Windbgのプラン!WSLE。例えば:

KD> WSLE 7

ワーキングセット@ c0503000
FirstFree :! 469 FirstDynamic:7
LastEntry 46C NextSlot:c06f4000:4 658
非直接145ハッシュテーブルをLastInitialized HashTableSize:400

WSLEデータを読み込み...
..
仮想アドレスエイジロックReferenceCount
c0300203 0 1 1
c0301203 0 1 1
c0502203 0 1 1
c0503203 0 1 1
c0504203 0 1 1
c06f4203 0 1 1
c06f5203 0 1 1
c0505203 0 1 1
c0506203 0 1 1
77c47029 0 0 1 < BR>。


Copyright © Windowsの知識 All Rights Reserved