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
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
2
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
3
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
4
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
5
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
6
情シスの約8割が転職や退職を意識 調査で分かった“辞めたくなる最大の理由”
-
7
「結局使わなくなる」Microsoft 365 Copilotを半年で定着 キリンの3施策
-
8
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
9
「中堅・中小企業のネットワーク・セキュリティ運用実態」に関するアンケート
-
10
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
5
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
6
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
9
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー