基本情報 平成26年度 秋期 問16:テクノロジ系に関する問題
ページング方式の仮想記憶を用いることによる効果はどれか。
- aシステムダウンから復旧するときに, 補助記憶のページを用いることによって, 主記憶の内容が再現できる。
- b処理に必要なページを動的に主記憶に割り当てることによって, 主記憶を効率的 に使用できる。正答
- c頻繁に使用されるページを仮想記憶に置くことによって, アクセス速度を主記億 へのアクセスよりやも速めることができる。
- dプログラムの大きさに応じて大小のページを使い分けることによって, 主記憶を 無駄なく使用できる。
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは b です。
「ページング方式の仮想記憶」とは、プログラムをページ(小さなブロック)に分けて、必要な分だけ主記憶(メモリ)に読み込む仕組み。
例えば「100ページの本を全部広げず、今読んでいる1ページだけ机に置く」イメージ。これで小さな机(メモリ)でも大きな本(プログラム)が扱える=メモリを効率的に使える。
👉 覚え方:「ページング=必要な分だけ読込み、メモリ節約」。
ほかの選択肢:a 復旧の話/c 仮想記憶は主記憶より遅い/d ページサイズは固定が一般的。
なぜこれが正解か
正解は b。ページング方式の仮想記憶は、論理アドレス空間(仮想空間)をページ(通常4KB等の固定サイズ)に分割し、必要なページのみを物理的な主記憶に動的に割り当てる仕組み。これにより、主記憶容量を超えるプログラムも実行可能(補助記憶を仮想的なメモリとして利用)であり、また実行に必要なページのみメモリに置くため主記憶を効率的に使用できる。
各選択肢の解説
- a「システムダウン復旧時に補助記憶のページで主記憶内容を再現」:チェックポイント/復旧の話で仮想記憶の主目的ではない。
- b 必要なページを動的に主記憶に割当て効率的使用:ページング方式の主目的(正解)。
- c「仮想記憶を頻繁ページ用にして主記憶より速く」:仮想記憶(補助記憶)は主記憶より遅いため誤り。
- d「ページサイズを大小使い分け」:通常はページサイズ固定(4KB等)。
覚え方・ひっかけ注意
「仮想記憶=必要部分だけ主記憶に展開、不要部分は補助記憶に退避」。「ページイン/ページアウト」がこの入替え動作。頻繁なページ入替えで性能が劣化する現象がスラッシング(Thrashing)。CPUが実アドレスを生成する際はMMU(Memory Management Unit)がページテーブルを参照して論理→物理変換、高速化のためTLB(Translation Lookaside Buffer)でキャッシュする。
理論的背景
仮想記憶(Virtual Memory)はFotheringham(1961、Atlas計算機)が考案、現代OSの中核機能。論理アドレス空間と物理アドレス空間を分離し、MMU(Memory Management Unit)がアドレス変換を担当。
ページング方式(Paging)は固定サイズページ(典型的に4KB、最近は2MB/1GBのHugePages/SuperPagesも)に分割。セグメント方式(Segmentation)は論理的単位(コード/データ/スタック等)で可変サイズ分割。現代OSはページング主体+セグメント補助(x86_64ではセグメンテーション機能はほぼ無視)。
アドレス変換: 論理アドレス = ページ番号 + ページ内オフセット → ページテーブル参照 → 物理アドレス = フレーム番号 + オフセット。多段ページテーブル(x86_64は4-5段)で巨大アドレス空間を効率的に管理。TLBがアドレス変換キャッシュ。
ページ置換アルゴリズム:
- FIFO(First In First Out): 最古ページ追い出し、ベラディ異常(メモリ増加で性能低下)あり
- LRU(Least Recently Used): 最近使われていないページ追い出し、近似実装(Clockアルゴリズム)
- LFU(Least Frequently Used): 使用頻度最少を追い出し
- 最適ページ置換(OPT): 将来最も遅く使われるページ追い出し、理論最適だが実装不可
実務での使われ方
Linuxメモリ管理:
- Page Cache: ファイルI/Oをページ単位でキャッシュ、利用可能メモリの大部分を使用
- Buddy System: 物理メモリ割当ての主要アルゴリズム
- Slab Allocator: カーネルオブジェクト用の細粒度割当
- Swap領域: ページアウト先の永続記憶領域
- OOM Killer: メモリ枯渇時に犠牲プロセスを選択して終了
性能チューニング:
- HugePages: 2MB/1GBの大ページでTLB効率向上(データベース・JVM等で有効)
- NUMA awareness: マルチソケット環境でローカルノードメモリ優先割当
- メモリオーバコミット: vm.overcommit_memory設定で過大割当許容
- スワップ抑制: vm.swappiness=10程度に下げてスワップ最小化
スラッシング(Thrashing): ワーキングセット(活発に使用される頁集合)が主記憶容量を超えるとページ置換が頻発し、CPU利用率の大半がメモリ管理に費やされる。負荷管理(プロセス数制限、メモリ追加、メモリ最適化)で回避。
試験での位置づけ
FE/AP/ES/SAのテクノロジ系(OS、メモリ管理)で頻出。①仮想記憶の仕組み、②ページング/セグメンテーション、③ページ置換アルゴリズム、④TLB、⑤スラッシング、⑥仮想化技術(VMM、ハイパーバイザ、コンテナ)、が主要論点。
選択肢の発展補足
仮想化技術: 仮想記憶の概念を拡張し、OS全体を仮想化(VM)。Type 1(Bare-metal: VMware ESXi、Microsoft Hyper-V、KVM)/Type 2(Host OS上: VMware Workstation、VirtualBox)に分類。物理メモリの仮想化はシャドウページテーブルまたはEPT/NPT(ハードウェア支援)で効率的に実現。
コンテナ: VMより軽量で、OSカーネルを共有しnamespaceでリソース分離。Docker/containerd/Kubernetes等で標準化。メモリはcgroupsで制限・分離。
メモリ階層拡張:
- CXL(Compute Express Link)メモリ: 分散メモリプール、ホットプラグ対応
- 永続メモリ(PMEM、Intel Optane DC PMEM): DRAMライクアクセス+不揮発、データベースの新メモリ階層
- GPU仮想記憶(CUDA Unified Memory): CPUとGPUのアドレス空間統合
生成AI時代の巨大モデル(GPT-4、Claude、Gemini等)は数百GB-TB規模パラメータを持ち、モデル並列・パイプライン並列・ZeRO・FlashAttention等の高度メモリ管理技法でGPUクラスタにフィット。これは古典的仮想記憶概念のAI/HPC領域への拡張で、メモリ管理理論の最前線。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成26年度 秋期 問16/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。