この質問に答えるために、いくつかの前提条件を理解します。純粋なデマンドページングは、ハードウェアサポートなしでは実現できません。すべての最新のコンピューターアーキテクチャはページングをサポートしていますが、実装の詳細はさまざまです。
x86プロセッサは、ページアドレステーブルと呼ばれるものを使用して、仮想アドレススペースとページマッピング、およびアクセス権に関するビットを追跡します。さらに、そのページが物理メモリに存在するかどうかに関係します。違反は、OSによってトラップされるページ違反をトリガーします。
詳しくは、こちらの記事をご覧ください。
ページスワッピングの質問に答えるには、最初にオペレーティングシステムがどのプロセスでどのページが使用され、どのように割り当てられているかを追跡する方法の質問にアクセスする必要があります。そのために使用できるさまざまなデータ構造があります。フレームが割り当てられているかどうかを示すフラットビット配列は一方向です。リンクされたリストまたはスタックは別です。純粋なデマンドページングでは、割り当てられたページは、割り当てられたときに実際には存在するものとしてマークされません。これには、プロセスが実際に書き込むまで、物理RAMが確保されないという効果があります。それが行われると、ハードウェアはOSがトラップする障害をスローし、すでに割り当てられている仮想ページに割り当てる物理ページがない場合、OSはスワッピングアルゴリズムを使用します。
ページフレームの割り当ての詳細については、ここを参照してください。そこでは、いくつかの適切なデータ構造の一般的な概要が表示されます。
ページ割り当てに適したアルゴリズムを実装したら、スワッピング用にディスク領域を割り当てる別のアルゴリズムを選択する必要があります。一例として、ウィンドウズは歴史的にページスワッピングのためにファイルシステムのフラットファイルを使用してきました。割り当てられたページを追跡しているデータ構造の各ノードには、ファイル内のオフセットへの関連付けられたポインタがあり、ディスク内のページの位置を示していると思います。Unixライクなオペレーティングシステムでは、ファイルシステムレイヤーがないため、ページスワッピングに個別のパーティションを使用しており、これはおそらく高速です。
スワッピングアルゴリズムのデータ構造と割り当てアルゴリズムのデータ構造を分離することも可能ですが、この2つは関連しているため、これはおそらく行われません。
私がそれを扱った相対的な簡潔さにもかかわらず、それがあなたの質問に答えることを願っています。オペレーティングシステムについて学ぶ最良の方法は、趣味のOSの作成を特に扱い、優れたチュートリアルを提供するwiki.osdev.orgやwww.osdever.netなどのサイトで見つかる、時々厄介なアーキテクチャ固有の詳細に飛び込むことです。そのような詳細について。