参照ビットとは
参照ビットは、仮想記憶方式を採用しているオペレーティングシステム(OS)において、主記憶装置(RAM)上の特定のページが、直近の期間にCPUによって参照されたかどうかを示すフラグ(ビット)のことであり、ページ置換アルゴリズム、特にLRU(Least Recently Used)の近似的な実現のために利用され、どのページを二次記憶装置(ディスク)に書き出すか(ページアウトするか)を効率的に決定するためのメモリ管理における重要な情報のことです。
参照ビットの概要と役割
仮想記憶システムでは、主記憶装置(RAM)の容量を超える大きなプログラムを実行するために、メモリをページという単位に分割し、RAMと二次記憶装置(スワップ領域)間でデータを入れ替えます(ページング)。RAMが満杯になったとき、OSは現在RAM上にあるページの中から、次にアクセスされる可能性が最も低いページをディスクに書き出す必要があります。
1. ページ置換アルゴリズム
どのページを置換するかを決定するための戦略をページ置換アルゴリズムと呼びます。理想的なアルゴリズムは、次に最も長い時間使われないページを選択する最適アルゴリズム(Optimal Algorithm)ですが、これは未来を予測する必要があるため、現実世界では実装不可能です。
そのため、OSは過去の履歴に基づいて未来を予測しようとします。その中でも重要なのが、LRU(Least Recently Used、最も長い間使われていない)アルゴリズムです。LRUは、最後に参照されてから最も時間が経過したページが、今後も参照されない可能性が高いと仮定します。
2. 参照ビットの機能
LRUを厳密に実装するには、すべてのページに対して、最後にアクセスされた正確な時刻を記録する必要があり、これは非常に大きな処理オーバーヘッドを伴います。
参照ビット(Reference Bit)は、このLRUアルゴリズムをハードウェアと連携して効率的に近似するために導入されました。
- 動作: 各ページテーブルエントリ(PTE)には、通常、1ビットの参照ビットが割り当てられています。
- CPUがページ内のデータにアクセス(読み書き)すると、MMU(メモリ管理ユニット)またはOSが、そのページの参照ビットを自動的に1に設定します。
- 定期的にOS(ページ置換ハンドラ)が、すべての参照ビットを0にリセットします。
- 役割: OSが置換対象のページを探す際、参照ビットが「0」のページは、前回のリセット以降、一度も参照されていないページであると判断できます。
参照ビットを活用したページ置換戦略
参照ビットを活用した代表的なページ置換アルゴリズムは、第二次チャンス(Second Chance)アルゴリズムや、その一般化であるクロック(Clock)アルゴリズムです。
1. 第二次チャンスアルゴリズム(Second Chance)
このアルゴリズムは、FIFO(先入れ先出し)の原則に基づきながら、参照ビットを用いて性能を改善します。
- OSは、キューの先頭にあるページ(最も古くRAMに入ったページ)を検査します。
- 参照ビットが0の場合: そのページは長い間使われていないと判断し、ディスクにページアウト(置換)します。
- 参照ビットが1の場合: そのページは最近使われていると判断し、その参照ビットを0にリセットし、そのページをキューの末尾へ移動させます(あたかも新しくRAMに入ったかのように扱う)。これにより、そのページに「二度目のチャンス」が与えられます。
2. クロックアルゴリズム(Clock Algorithm)
第二次チャンスアルゴリズムをより効率的に実装したもので、キューの代わりにページテーブルを円形リスト(時計の文字盤に似ている)として扱い、ポインタ(時計の針)が順次ページを検査します。
- ポインタはページを順番に検査し、参照ビットが0のページを見つけるとそれを置換します。
- 参照ビットが1のページを見つけると、それを0にリセットし、ポインタを次のページに進めます。
この方式により、すべてのページを検査して参照ビットをリセットする処理が効率化され、純粋なLRUに近い性能を持ちながら、非常に低いオーバーヘッドで動作します。
参照ビットは、仮想記憶システムの性能を左右するページ置換の判断において、過去の利用頻度という重要なヒントを提供する、不可欠なハードウェア支援機能です。
関連用語
お問い合わせ
システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。
APPSWINGBYの
ソリューション
APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。
システム開発
既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。
iOS/Androidアプリ開発
既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。
リファクタリング
他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。

ご相談・お問い合わせはこちら
APPSWINGBYのミッションは、アプリでビジネスを加速し、
お客様とともにビジネスの成功と未来を形作ること。
私達は、ITテクノロジーを活用し、様々なサービスを提供することで、
より良い社会創りに貢献していきます。
T関する疑問等、小さなことでも遠慮なくお問合せください。3営業日以内にご返答致します。

ご相談・お問合せはこちら
APPSWINGBYのミッションは、アプリでビジネスを加速し、お客様とともにビジネスの成功と未来を形作ること。
私達は、ITテクノロジーを活用し、様々なサービスを提供することで、より良い社会創りに貢献していきます。
IT関する疑問等、小さなことでも遠慮なくお問合せください。3営業日以内にご返答させて頂きます。