Windowsメモリ管理の勘所(後編)
メモリ割り当てから解放までのメモリライフサイクル
Windows上でプログラム(プロセス)が起動されると、メモリの中では何が起こるのか。プロセスの起動から終了までに行われるメモリ操作を見てみよう。
前編「32/64ビットWindowsのメモリ割り当てと仮想アドレス空間」では、32ビットおよび64ビットのWindowsにおけるメモリ割り当ての概要を解説した。後編では、あるプロセスに着目してメモリ管理機構の動きを追ってみる。
メモリの予約
プロセスは起動時に、開発元がコードに指定している量のメモリを予約するが、これには物理リソースはほとんど必要ない。これはホテルの予約と似ている。予約をするには、システムに予約内容を入力し、客と話をする時間が少し必要なだけだ。客が到着するまで、部屋が専有されることはない。
メモリのコミットは、プロセスがメモリマネージャに予約したメモリ(RAMおよびページファイル)を要求した時点でなされる。ホテルの例で言えば、ホテルのチェックインに当たる。
これで部屋を専有することになるが、リソース(電力や水など)はまだ使用していない。同様に、この時点では、メモリには何のデータも書き込まれていない。メモリに書き込みがあった時点で、仮想メモリページがRAMにマップされ、メモリが使われる。ホテルで言えば、部屋に入り、水、電力、ハウスキーピングサービスなどを利用した状態だ。どのプロセスでも、実行時にこの一連の処理が行われる。
メモリのコミット
システムでアクティブなプロセスが使用しているメモリを総括して(システムの)“コミットチャージ”と呼ぶ。この値はシステムの“コミット制限”と併せてタスクマネージャに表示される。図5は、Windows 7のタスクマネージャの画面だ。この画面の「コミット(MB)」部分に、コミット済みのメモリの値が表示されている。
1つ目の数値(図中の「3,528」)は、コミットチャージ、すなわち現在使用されているメモリを表し、2つ目の数値(同「7,990」)は、システムのコミット制限(RAM+ページファイル)を表す。「物理メモリ」のセクションを見ると合計(RAM)は「3,996」(4Gバイト)なので、約4Gバイトのページファイルがあることが分かる。Windows XPでは、コミットされたピーク値(最大値)も表示される。これは、一定の期間に使用されたメモリのピーク値を表し、プランニングを行うときに参考にできる。
図6は、これまでに説明したメモリ管理プロセスを図示している。この図では、プロセスに仮想アドレス空間が8Gバイト(RAMとページファイルに4Gバイトずつ)割り当てられている。そのうち、2Gバイトが予約済みで、500Mバイトがコミットされているが、メモリに書き込まれているのはわずか50Mバイトだ。この仮想アドレス空間の物理アドレス空間へのマップは、PTEによって処理される。マップされたページは、“ワーキングセット(Working Set)”として扱われるが、物理RAM内で連続したアドレスにマップされているとは限らない。
図7は、Windowsのページ処理の仕組みが分かるように図示したものだ。システムの起動時には、全てのメモリが未使用ページリスト(Free Page List)に入れられている。ゼロページスレッドは、ページをゼロページリスト(Zero Page List)に入れる。
プロセスは開始時に、ゼロページリストから必要なページのみを取得し、ワーキングセットを作る。プロセスごとに専用のワーキングセットがあり、必要に応じてページが追加される。DLLや実行可能ファイルなどのプログラムは、メモリには完全に“読み込まれ”ないことに注意してほしい。プログラムで使用中の部分のみがメモリに読み込まれ、それ以外はディスクに残される。従って、500Kバイトの.EXEのうち50Kバイトしか必要ない場合、メモリに読み込まれるのは50Kバイトのみだ。
必要なメモリが増えてきたら、追加のページがワーキングセットに加えられる。ある時点で、Windowsのメモリ管理(WMM)によって、プロセスのワーキングセットのサイズが過剰だと判断されると、アイドル状態の時間が最も長いページから削除が開始される。一度削除されたページは、必要に応じてあらためて書き込まれるのではなく、スタンバイリストまたは変更済みページリストに移動される。
変更されたページ(例:Word文書に入力されたテキスト)は、変更済みページリストに移動される。変更済みページリストのページは、変更済みページライターが定期的にまとめて取得し、データをディスクに書き込み、スタンバイリストに送る。スタンバイリスト内のページは、WMMがデータの保存先(ディスク上のページファイル)を把握しているため、再利用できる。
変更されていないページは、既にディスク上にあるため、直接スタンバイリストに送られる。スタンバイリストのメリットは、ページが再び必要になった場合、例えば、長時間アイドル状態だった文書の編集を再開した場合に、簡単に変更済みページリストまたはスタンバイリストから取得して、ワーキングセットにすぐに書き戻せる点だ。ただし、変更済みページは、ディスクに書き込まれて、スタンバイリストに格納されないと、ワーキングセットに戻すことはできない。
Windowsは、プログラムやDLLなど共有可能なデータを一度しかメモリに読み込まない。例えば、3つの文書を編集するために3回Wordを開くとする。図8は、タスクマネージャの画面だが、画面の一覧の中にWinword.exeは1つしかない。ワーキングセットがある一定の大きさになるか、編集中のWord文書を一定時間放置すると、Winword.exeを保持しているページはスタンバイリストに移動され、再利用可能な状態になる。
この例では、文書を保持しているページは変更されているため、変更済みリストに移動され、最終的には(ディスク上の)ページファイルに書き込まれた上で、スタンバイリストに移動される(ただし、文書がディスク上に保存されていない場合)。従って、スタンバイリストは既にディスク上にあるデータのコピーになるため、実質的にはファイルキャッシュだ。
ページフォルト
プロセスのワーキングセットと編集済みリストおよびスタンバイリスト間のページング処理は、「ソフトページフォルト」と呼ばれる。これは物理メモリ内で処理されるため、処理コストはかなり低い。データをディスクに書き込むページングは「ハードページフォルト」で、ディスクに書き込まれるため、処理コストは高くなる。
プログラムを終了するか、意識的にプロセスのプライベートメモリを解放する場合、そのワーキングセットページは解放されて未使用メモリリストに戻され、さらにゼロ化(ゼロ値を書き込んで初期化)されて、ゼロページリストに移動される。ページをゼロ化するのはセキュリティのためだ。他のプロセスがページを再利用して、パスワードなどの機密情報が漏えいしないようにする。
本稿と図6の内容について技術的な助言を提供してくれたMicrosoftのクリント・ハフマン氏に感謝する。図7は、同氏および『Windows Internals 5th Edition』(デイビッド・A・ソロモン、マーク・ルシノビッチ共著、Microsoft Press刊)の概念を基に作成した。
Copyright © ITmedia, Inc. All Rights Reserved.
Windowsメモリ管理の勘所
この記事の著者
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
2
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
3
「データストレージの活用方法」に関するアンケート
-
4
自宅のWi-Fiが「遅い」「途切れる」本当の原因は? Dellが推奨する鉄則
-
5
本当に安いPCで十分か? “すぐ重くなる”を防ぐノートPC選びの絶対条件
-
6
Claudeの不可視透かしに批判殺到 著作権消失や誤判定に潜む企業リスク
-
7
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
8
221人調査で分かった「情シス最大のストレス」は?
-
9
LLMの「過学習」、正しく説明している文章はどれ?
-
10
レガシー基幹システムをSAPに統合 山善が突き止めた「標準化と個別最適」の境界線
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー