ページングについて
ページングについて
ページングとは
- ページングとは固定長にメモリを分割して管理する方法
- 以下をページと呼ばれる単位に対して行う
- メモリの割り当て
- アドレス変換
- 以下をページと呼ばれる単位に対して行う
- セグメントとの違い
- セグメントは可変長
- ページングは固定長
アドレス参照方法
- 32bitのアドレスを分割する
- 上位20bitを論理ページとする
- 下位12bitをページオフセットとする
- 論理ページと物理ページを対応付けるページテーブルで物理ページのベースアドレスを得る
- オフセットを加算して物理アドレスが完成する
- 486ではページテーブルが2段になっている。
PTE(Page Table Entory)
主要なものだけをピックアップ。ライトスルー、ライトバックのオプションに関するものや権限に関するものは省略している。
位置 | 役割 | 意味 |
---|---|---|
12~31bit | 物理ページ番号 | 物理ページ番号を表す。 |
6bit目 | Dビット | Dirty bit。write時に1。ページアウト時にディスク書き込みの必要有無の判断に利用 |
5bit目 | Aビット | Access bit。アクセス時に1。アクセス頻度からページアウトの判断に利用 |
0bit目 | Pビット | 1ならばページが存在している。0ならばアクセス時にページフォルトを発生させる |
- PTEはもちろんキャッシュされる。このキャッシュメモリをTLB(Translation Lookaside Buffer)という
仮想記憶
- ページング=仮想記憶ではない。
- ページング方式は仮想記憶に利用される方法の1つに過ぎない。*2
- デマンドページング
他
- ページングはデフォルトでOFFになっている。
- ONにするにはCR0のPGビットを1に設定するが、その前に初期設定として以下の作業が必要
ページングが扱う論理アドレスは(リニアアドレス)という
ページフォルトの例外発生時に、リニアアドレスはCR2に格納される
- CR2にはメモリからアクセスできない。
- 普通にスタックに積んでくれればC言語から参照できるのでは?何かセキュリティ上の理由が?
- 作者: 蒲地輝尚
- 出版社/メーカー: アスキー
- 発売日: 1994/09
- メディア: 単行本
- 購入: 20人 クリック: 165回
- この商品を含むブログ (83件) を見る