ページング

ページング

ページング

英語表記: Paging

概要

ページングは、OSが物理メモリの非連続性を隠蔽し、アプリケーションに対して広大で連続したメモリ空間(仮想記憶)を提供するメモリ抽象化の根幹をなす技術です。この技術により、プログラムは物理メモリの配置を一切意識することなく実行可能となり、プログラマは開発に集中できるようになります。ページングは、プログラムが要求する仮想アドレス空間を固定長の「ページ」に分割し、物理メモリの「フレーム」に対応づけることで、効率的なメモリ管理と断片化の解消を実現しているのです。

詳細解説

ページングは、ハードウェアとソフトウェアの関係において、OSが物理リソースを効率的に制御し、安全性を高めるためのOSによる抽象化レイヤの代表例です。この仕組みがなければ、現代のマルチタスク環境は成立しないと言っても過言ではありません。

目的:メモリの効率化と安全性

ページングが導入された主な目的は二つあります。一つは、外部断片化の解消です。ページングでは、メモリを固定長の小さなブロックに分割するため、空き領域がバラバラに散らばっていても、それらを組み合わせて大きなプログラムを実行できます。もう一つは、各プロセスに独立した仮想アドレス空間を提供することによるメモリ保護です。これにより、あるプログラムが暴走しても、他のプログラムやOSの領域を破壊することを防いでいます。

動作の仕組みと主要コンポーネント

ページングの仕組みは、主に以下のコンポーネントによって成り立っています。

  1. ページ (Page): プログラムが利用する仮想アドレス空間を分割した固定長のブロックです。通常、4KBや8KBといったサイズが使われます。
  2. フレーム (Frame): 物理メモリ(RAM)をページと同じサイズに分割した固定長のブロックです。
  3. ページテーブル (Page Table): OSが管理する非常に重要なデータ構造です。仮想アドレス空間のどのページが、物理メモリのどのフレームに対応しているかというマッピング情報が一覧で記録されています。

プログラムがCPUに対してメモリへのアクセスを要求すると、それは仮想アドレスとして発行されます。この仮想アドレスを物理アドレスに変換するプロセスが、ページングの核心です。

この変換作業は、CPUに組み込まれたMMU(Memory Management Unit:メモリ管理ユニット)と呼ばれるハードウェアと、OSが管理するページテーブルが連携して行われます。OSは、アプリケーションが「仮想的な場所」を尋ねてきたときに、ページテーブルを参照して「実際の物理的な場所」を教えるという役割を担っています。これにより、物理メモリ上でデータが非連続に配置されていても、アプリケーション側には連続したメモリ空間として「抽象化」されて提供されるのです。

仮想記憶の実現

ページングは、メモリ抽象化をさらに一歩進め、仮想記憶を実現します。これは、物理メモリ(RAM)の容量を超えた大きなプログラムを実行可能にする画期的な仕組みです。

物理メモリが不足した場合、OSは使用頻度の低いページを選び出し、一時的に補助記憶装置(ディスク)に退避させます。これを「ページアウト」と呼びます。退避させたページに後からアクセスが必要になったとき、OSはディスクからそのページを読み込み直します。この物理メモリへの再読み込みが必要な状況を「ページフォールト」と呼びます。

ページフォールトは一見するとエラーのように聞こえますが、そうではありません。これはOSが物理メモリの容量の制約を巧妙に隠蔽し、仮想記憶が正しく機能している証拠なのです。ただし、あまりにも頻繁にページフォールトが発生し、ディスクアクセスばかりが増えてしまうと、システム全体の性能が著しく低下します。この状態を「スラッシング」と呼び、仮想記憶の導入によって私たちが直面する可能性がある性能問題の一つです。

このように、ページングは単なるメモリ管理手法ではなく、OSがハードウェアとソフトウェアの関係において、システムの安定性、効率性、そして拡張性を担保するために欠かせない、強力な抽象化レイヤなのです。

具体例・活用シーン

ページングの仕組みは、現実世界における「住所不定の荷物を管理する倉庫」の運営に例えると非常に分かりやすいです。

アナロジー:巨大な物流倉庫の管理システム

ある巨大な物流倉庫(物理メモリ)があると想像してください。この倉庫では、効率を最大化するために、届いた荷物(ページ)を空いている棚(フレーム)に無作為に配置しています。

  • 顧客(プログラム)の視点: 顧客は、自分の荷物が「1番の箱」「2番の箱」「3番の箱」と連続して保管されていると思っています(仮想アドレス空間)。
  • 倉庫管理者(OS)の役割: 倉庫管理者は「棚割表」(ページテーブル)を持っています。この表には、「顧客の1番の箱は、倉庫の実際には50番の棚にある」「2番の箱は、7番の棚にある」という対応関係が記載されています。

顧客が「3番の箱を取り出して」と要求すると、倉庫管理者は棚割表を見て、その箱が実際には20番の棚にあることを確認し、正確に取り出します。顧客は、自分の荷物が倉庫の中でバラバラに置かれている事実を全く知る必要がありません。これがメモリ抽象化の力です。

もし倉庫が満杯になったら、管理者は使用頻度の

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

両親の影響を受け、幼少期からロボットやエンジニアリングに親しみ、国公立大学で電気系の修士号を取得。現在はITエンジニアとして、開発から設計まで幅広く活躍している。

目次