OS Project Wiki の保存版 ヒデさん・アリスさんほか、OS部のみなさんが書いたものです。
2019年にサイトが消滅しました。当時あった211ページのうち、本文が残っていたのは86ページです。すべては復旧できていません。Common Crawl と Internet Archive に 残っていたものを組み直しています(最終取得 2019-05-24)。
編集・検索・添付などの機能は動きません。表示のみです。

検索

まずは、検索!

Index

人気の20件
最新の20件
2018-12-022018-01-092017-05-072017-04-25
  • Paging
2016-05-012015-02-242014-01-032013-06-252012-12-302012-12-292012-07-272012-07-162012-02-052012-01-292011-10-012011-09-18

ページング

目次

ページングとは

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

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

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

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

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

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

4KB PDE、4KB PTE

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

ページング方式の実装

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

ページ・テーブルの設定

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

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

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

参考

filePagingSample.tar.gz 516件 [詳細]

Since 2008 July. OS Project Wiki
保存 2019-04-21 ・ ページ一覧