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
-
製品資料
[o9ソリューションズ・ジャパン株式会社] 「改正物流効率化法対策」徹底解説 総物流費を抑制するサプライチェーン戦略 -
製品資料
[o9ソリューションズ・ジャパン株式会社] 「サプライチェーン最適化」実践ガイド:効果的な意思決定を実現する秘訣とは? -
製品資料
[株式会社リンプレス] 非デジタル/IT人材を「自走するDX推進者」に変えるための育成ロードマップ -
市場調査・トレンド
[ワンアイルコンサルティング株式会社] AI時代の組織設計:「判断と責任」を人に残すための2つの原則とは? -
技術文書・技術解説
[ワンアイルコンサルティング株式会社] システムの保守がモダン化を阻む? 「変えない判断」から脱却する方法とは
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
1200万円のSaaS導入を回避 スギ薬局「運用費10万円」のAIエージェント構築術
-
2
「完璧な設計」なのに3000万円溶けた AWSの失敗事例から学ぶ3つの教訓
-
3
クラウド資格コレクターは評価されない? 年収1000万を分ける“OSの理解度”
-
4
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
5
「AIバブル」は崩壊するのか? 熱狂の後に来る“尻拭い”と4つの防衛策
-
6
高額な「AI PC」を一般従業員も使えたら? 費用のハードルを一気に下げる方法
-
7
LLMの「過学習」、正しく説明している文章はどれ?
-
8
「コピペ運用の限界」に直面するAI活用 7割超が“別画面”のまま使う理由は?
-
9
IT調達担当者が知るべき「IT機器 大インフレ時代の前向きな選択肢」
-
10
「RAGの利用」に関するアンケート
ホワイトペーパーランキング PR
-
1
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
2
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
3
Windows PCとMacの選択制で生産性向上 LINEヤフーが実践する運用管理方法とは
-
4
DX/AI投資の壁を突破、現代の最高財務責任者が直面する課題と克服のヒント
-
5
「Google Workspace」活用事例34選、先進の生成AIによる組織変革の全貌
-
6
生成AIで文書活用を進めるには? 効率化と安全性をどう両立する
-
7
「人員を増やす」という選択肢はない 情シスが負の連鎖から抜け出すには?
-
8
「問題が深刻化しやすいプロジェクト管理」から脱却する方法とは?
-
9
Linuxのスキルを証明する“激推し”の認定資格はこれだ
-
10
NTTドコモが実践したクラウド統合監視 業務量2倍でも残業削減を実現できた理由
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー