ページング Edit

目次 Edit

ページングとは Edit

メモリをページと呼ばれる小さな単位に分割して割り当てを行うアルゴリズム。

VESAのVBEを使うと、なぜかうまくいかないので、現在停止中。。

ページ・ディレクトリ・エントリ(PDE)とページ・テーブル・エントリ(PTE) Edit

ページングに使用されるメモリ上のデータ構造。
リニアアドレスを物理アドレスに変換するためのデータを格納する部分。

ページ・ディレクトリ・テーブルに、最大1024個のページ・ディレクトリ・エントリ(PDE)が、
ページ・ディレクトリ・エントリ(PDE)には、ページ・テーブルのベースアドレスや各種フラグが、
ページ・テーブルには、最大1024個のページ・テーブル・エントリ(PTE)が、
ページ・テーブル・エントリ(PTE)には、ページのベースアドレスや各種フラグがそれぞれ格納されている。

イメージ
ページ・ディレクトリ・テーブル
 ├ページ・ディレクトリ・エントリ → ページ・テーブル
 │                  ├ページ・テーブル・エントリ → ページ
 │                  ├ページ・テーブル・エントリ → ページ
 │                  ├ページ・テーブル・エントリ →
 │
 ├ページ・ディレクトリ・エントリ → ページ・テーブル
 │                  ├ページ・テーブル・エントリ → ページ
 │                  ├ページ・テーブル・エントリ → ページ
 │                  ├ページ・テーブル・エントリ →
 │
 ├ページ・ディレクトリ・エントリ →
 │

4KB PDE、4KB PTE Edit

bitFlag説明
0P存在
1R/Wリード/ライト
2U/Sユーザ/スーパーバイザ
3PWTページ・レベル・ライトスルー
4PCDページ・レベル・キャッシュ・ディスエーブル
5Aアクセス
60PDE:予約済み
DPTE:ダーティ
7PSPDE:ページサイズ
PATPTE:ページテーブル属性インデックス
8Gグローバル・ページ
9AVLシステムが使用可能
10
11
1220bit
PDE:ページテーブルのベースアドレス
PTE:ページのベースアドレス
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

ページング方式の実装 Edit

ページ・ディレクトリ・テーブルの設定 Edit

ページ・テーブルの設定 Edit

CR3?にページディレクトリテーブルのアドレスを設定 Edit

割り込み記述子表(IDT)にページフォルトハンドラを登録 Edit

CR0のPGフラグをONにし、ページングを有効にする。 Edit

参考 Edit

filePagingSample.tar.gz 499件 [詳細]

Since 2008 July. OS Project Wiki
リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS