ページテーブルの役割
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/24 20:24 UTC 版)
「ページテーブル」の記事における「ページテーブルの役割」の解説
実行中プログラムが仮想アドレス 0xD09FBABE のメモリにアクセスしようとしているとする。この仮想アドレスはふたつの部分に分けられる。「ページ番号」0xD09FBとそのページ内「オフセット」0xABEである(ページサイズが4Kバイトの場合)。 仮想記憶をサポートするハードウェアでは、このアドレスをTLB内で検索する。TLBはこのような検索を並列に実行できるよう特別に設計されており、この処理は非常に高速である。ページ番号0xD09FBと適合するエントリがTLBにある場合(TLBヒット)、物理フレーム番号をそこから取り出し、オフセットを加えてメモリアクセスが継続される。しかし、適合するエントリがなかった場合(TLBミス)、第二段階の処理としてページテーブルが使用される。 ハードウェアが仮想ページに対応する物理フレームを見つけられない場合、ページフォールトと呼ばれるプロセッサ割り込みを発生させる。オペレーティングシステムがページフォールトを扱う割り込みハンドラを実装する機会が提供されている。そのハンドラはページテーブルを参照してアドレスのマッピングを探す。もしマッピングが存在すれば、それをTLBに書き込み、問題の命令を再度実行することでメモリアクセス処理が再開される。 ページテーブル参照が失敗する場合として以下の2つが考えられる: そのアドレスにマッピングが存在しない。つまり、そのメモリ参照が不正である場合。 そのページが物理メモリ(一次記憶)に存在しない。つまり、一次記憶に空きがない場合。 前者の場合、メモリアクセスが不正であるため、オペレーティングシステムはその問題に何らかの対処を必要とする。例えば、問題のプログラムにセグメンテーション違反のシグナルを送ったりする。後者の場合、ページの内容は別の場所、例えばディスク内に格納されている。これに対処するにはページの内容をディスクから物理メモリに持ってくる必要がある。物理メモリに空きがあれば問題はなく、単にページの内容を空き物理メモリ領域に書き込んで、ページテーブルのエントリを書き換えて、TLBに同じマッピングを書き込んで命令を再実行すればよい。 しかし、物理メモリに空きがなく、使用可能なフレームがない場合、必要なページの内容を物理メモリ上に持ってくるために、別のページの内容をディスクに追い出す必要が生じる。そのフレームが使われていたページに対応するページテーブルのエントリを書き換えて「スワップアウト」されたことを示すようにし、逆に新たに持ってきたページに対応するページテーブルエントリに対応するフレーム番号を書き込む(当然ながら、TLBの処理と命令の再実行も必要)。このような処理を「スワッピング」と呼ぶ(プロセス全体のスワッピングのみをスワッピングと呼ぶこともある)。この処理はTLBだけ(あるいはメモリ上のページテーブル参照の場合も)のときに比べて非常に時間がかかる。どのページをスワップするかはページ置換アルゴリズムで決定される。 設計上意図されたわけではないが、ページテーブルをルートキットで操作してソフトウェアのコードを隠すことができる。このような操作は検出が困難であり、不正なソフトウェアを隠しておく効果がある。
※この「ページテーブルの役割」の解説は、「ページテーブル」の解説の一部です。
「ページテーブルの役割」を含む「ページテーブル」の記事については、「ページテーブル」の概要を参照ください。
ページテーブルの役割
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/24 20:24 UTC 版)
「ページテーブル」の記事における「ページテーブルの役割」の解説
仮想記憶を使うオペレーティングシステムでは、すべてのプロセスは大きくて一続きのメモリ領域で動いていると錯覚させられている。物理的には、それぞれのプロセスのメモリは物理メモリの色々な領域に散らばっているか、ハードディスク等の他のストレージに移されている(ページアウト)。 プロセスが自身のメモリにアクセスを要求したとき、オペレーティングシステムには、プロセスが要求してきた仮想アドレスをデータが保持されている実際のメモリの物理アドレスに対応付ける責任がある。ページテーブルはオペレーティングシステムがこの対応付けを保存しておくところで、それぞれの対応付けはページテーブルエントリー(page table entry(PTE))と呼ばれる。
※この「ページテーブルの役割」の解説は、「ページテーブル」の解説の一部です。
「ページテーブルの役割」を含む「ページテーブル」の記事については、「ページテーブル」の概要を参照ください。
- ページテーブルの役割のページへのリンク