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メモリ管理の勘所
この記事の著者
新着ホワイトペーパー PR
-
製品資料
[株式会社インターネットイニシアティブ] 人材不足と属人化が深刻に 「攻められない情シス」を変革する一手とは? -
製品資料
[株式会社イトーキ] 会議室が「空いてるのに使えない」問題の解決策とは? -
事例
[株式会社イトーキ] 製造現場を取り巻く経営課題 「持続的な現場力」を強化する方法とは? -
製品資料
[株式会社イトーキ] 社員の力を引き出す、「ABW(Activity Based Working)」を実現する秘訣とは? -
製品資料
[株式会社BREXA Technology] 「インシデント初動対応」が遅れる3つの構造的要因とは?
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
企業が「Microsoft Azure」を選ばざるを得ない理由
-
2
「Active Directory」復旧で“詰む”企業が続出 ランサムウェアに備える4対策
-
3
なぜノートPCの更新が「4年→6年」に? AIインフラ急拡大の余波
-
4
Microsoft 365侵害企業の9割はMFA導入済み 1002人調査で見えた盲点
-
5
HDDではもう限界? AIのGPU待機時間を解消する「大容量SSD」の条件
-
6
「RAGは終わった」は本当か――ロングコンテキストが変えたこと、変えられないこと
-
7
複雑化するフォント管理に終止符を Monotypeが提唱する安全な運用方法
-
8
「Windows」の不要なファイルを安全に消して容量を空ける方法
-
9
NVIDIA、フアンCEO辞任で揺らぐ“AI帝国” IT調達計画への影響は?
-
10
なぜMicrosoftは「Rust」を標準言語に? AIで進むC/C++書き換えの課題
ホワイトペーパーランキング PR
-
1
「IT史に名を残すシステム障害」8選
-
2
AIが苦手な「汚いデータ」になっていない? AI投資を無駄にしないための注意点
-
3
急増する高度なフィッシング詐欺 先回りしてブロックするには何が必要?
-
4
法人向け光回線のプランはどう選ぶ? 機能面/保守体制/コストを一覧で比較
-
5
SNMPより詳細で、パケット解析より簡単な「トラフィック可視化・分析」の方法
-
6
サイバー脅威「トップ50」完全解説ガイド、新たな攻撃手法に対抗するには
-
7
三井ホームに学ぶ「無線LAN環境」構築 快適なオフィスと高度なIT運用の両立法
-
8
Microsoft 365のメールセキュリティ、3つの“死角”と追加で検討すべき対策とは
-
9
「RPA導入の成果が出ない」を防ぐ、成果につながる自動化対象業務の選び方
-
10
自社のメール環境は本当に安全? チェックシートですぐ分かる“今必要な対策”
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー