Paging
の編集
Top
> Paging
[
ホーム
] [
一覧
|
検索
|
ヘルプ
]
-- 雛形とするページ --
!Template
A20
API
ATA/ATAPI
ATA/ATAPI/Command
ATA/ATAPI/I/O Port, Register
ATA/ATAPI/Transfer
ATA/ATAPI/Transfer/UltraDMA
Address space
Assembly language
BBS
Barn
Books
Boot process
Build
Comments/El Torito
Comments/Memo
Comments/OS glossary
Comments/Privilege levels
Comments/Projects/TestOS_CD
Computer language
Computer language/C
Computer language/C++
Computer language/C++/Class
Computer language/C++/Class/Inheritance
Computer language/C++/Operator
Computer language/C++/関数名forアセンブリ
Computer language/C/Complex sentence
Computer language/GNU Assembler
DMA
DMAC
DMAC/Intel 8237A
Development environment for Linux
Device
Device/82093AA
Device/8259
Device/PCI
Device/PCI to ISA Bridge
Device/PCI/Class Code
El Torito
Exception
FDC
FDC/82077AA
FDD boot
FDDブート
FileSystem
FileSystem/ISO 9660
FileSystem/Joliet
Format/FileFormat
Format/FileFormat/ELF
Format/FileFormat/PNG
FormattingRules
GCC
GHex
Help
Info
Info/Copyright Policy
Info/Introduction
Inline assembly
InterWikiName
I/O port address
I/O port address/0x0000~0x03ff
I/O port address/0x0c00~0x0fff
I/Oポートアドレス
KBC
KBC/Intel 8042
Kernel
Linker script
Links
MBR
Makefile
Memo
Memo/Flags
Memo/Linux
Memo/if文が遅い理由
Memo/アドレスの種類
Memo/クラス設計パターン
Memo/コメントアウト手法
Memo/ブートセクタ
Memo/メモリの連続領域(一次元)を多次元で扱う
Memo/リンカスクリプト
Memo/二重ループをアセンブリで書く
Memo/勉強会でのプレゼン
Memory management
Memory map
Menu
NDP
OS
OS glossary
OS用語集
PIC
PIT
PIT/Intel 8254
PORTA
PORTB
Page fault
Paging
Popular
Privilege levels
Projects
Projects/ML_Check
Projects/TestOS_CD
Projects/TestOS_FDD
QEMU
RTC
RTC/MC146818A
Recent
SandBox
Section
Stack
Stack switching
System port A
System port B
Top
Trouble Information
UEFI
VESA
arch/arm
x64
x64/Descriptor/Base
x64/Descriptor/Segment descriptor
x64/Descriptor/System descriptor
x64/Descriptor/System descriptor/System segment descriptor/LDT segment descriptor
x64/Descriptor/System descriptor/System segment descriptor/TSS descriptor
x64/Descriptor/System descriptor/Type
x86
x86/Descriptor
x86/Descriptor/AVL
x86/Descriptor/Base
x86/Descriptor/DPL
x86/Descriptor/D/B
x86/Descriptor/G
x86/Descriptor/Limit
x86/Descriptor/P
x86/Descriptor/S
x86/Descriptor/Segment descriptor
x86/Descriptor/Segment descriptor/A
x86/Descriptor/Segment descriptor/Type
x86/Descriptor/System descriptor
x86/Descriptor/System descriptor/Gate descriptor
x86/Descriptor/System descriptor/Gate descriptor/Call gate descriptor
x86/Descriptor/System descriptor/Gate descriptor/Interrupt gate descriptor
x86/Descriptor/System descriptor/Gate descriptor/Task gate descriptor
x86/Descriptor/System descriptor/Gate descriptor/Trap gate descriptor
x86/Descriptor/System descriptor/System segment descriptor
x86/Descriptor/System descriptor/System segment descriptor/LDT segment descriptor
x86/Descriptor/System descriptor/System segment descriptor/TSS descriptor
x86/Descriptor/System descriptor/Type
x86/GDT
x86/IDT
x86/Interrupt management
x86/LDT
x86/Register
x86/Segment selector
x86/Task management
x86/Task management/TSS
システム・ポートA
システム・ポートB
セクション
ヒデ
特権レベル
TITLE:ページング * ページング [#m1f018f9] ** 目次 [#z2df7d00] #contents ** ページングとは [#vb41b82a] メモリをページと呼ばれる小さな単位に分割して割り当てを行うアルゴリズム。 [[VESA]]のVBEを使うと、なぜかうまくいかないので、現在停止中。。 ** ページ・ディレクトリ・エントリ(PDE)とページ・テーブル・エントリ(PTE) [#g4969a1a] ページングに使用されるメモリ上のデータ構造。~ リニアアドレスを物理アドレスに変換するためのデータを格納する部分。 ページ・ディレクトリ・テーブルに、最大1024個のページ・ディレクトリ・エントリ(PDE)が、~ ページ・ディレクトリ・エントリ(PDE)には、ページ・テーブルのベースアドレスや各種フラグが、~ ページ・テーブルには、最大1024個のページ・テーブル・エントリ(PTE)が、~ ページ・テーブル・エントリ(PTE)には、ページのベースアドレスや各種フラグがそれぞれ格納されている。 :イメージ| ページ・ディレクトリ・テーブル ├ページ・ディレクトリ・エントリ → ページ・テーブル │ ├ページ・テーブル・エントリ → ページ │ ├ページ・テーブル・エントリ → ページ │ ├ページ・テーブル・エントリ → │ ├ページ・ディレクトリ・エントリ → ページ・テーブル │ ├ページ・テーブル・エントリ → ページ │ ├ページ・テーブル・エントリ → ページ │ ├ページ・テーブル・エントリ → │ ├ページ・ディレクトリ・エントリ → │ *** 4KB PDE、4KB PTE [#g55ab5ee] |~bit|~Flag|~説明| |0|P|存在| |1|R/W|リード/ライト| |2|U/S|ユーザ/スーパーバイザ| |3|PWT|ページ・レベル・ライトスルー| |4|PCD|ページ・レベル・キャッシュ・ディスエーブル| |5|A|アクセス| |6|BGCOLOR(#ddd):0|BGCOLOR(#ddd):PDE:予約済み| |~|D|PTE:ダーティ| |7|PS|PDE:ページサイズ| |~|PAT|PTE:ページテーブル属性インデックス| |8|G|グローバル・ページ| |9|AVL|システムが使用可能| |10|~|~| |11|~|~| |12||20bit&br;PDE:ページテーブルのベースアドレス&br;PTE:ページのベースアドレス| |13|~|~| |14|~|~| |15|~|~| |16|~|~| |17|~|~| |18|~|~| |19|~|~| |20|~|~| |21|~|~| |22|~|~| |23|~|~| |24|~|~| |25|~|~| |26|~|~| |27|~|~| |28|~|~| |29|~|~| |30|~|~| |31|~|~| ** ページング方式の実装 [#f6a8137a] *** ページ・ディレクトリ・テーブルの設定 [#a10b2c21] *** ページ・テーブルの設定 [#p873df4e] *** [[CR3>Register#j68fe188]]にページディレクトリテーブルのアドレスを設定 [#i31a2fde] *** 割り込み記述子表(IDT)にページフォルトハンドラを登録 [#pc76f443] *** CR0のPGフラグをONにし、ページングを有効にする。 [#i4011d3b] //PGフラグ(CR0レジスタ31bit)を1にする。 //-PG = 0:ページングがDisable。すべてのリニア・アドレスは物理アドレスとして扱われる。 //-PG = 1:ページングがEnable。 //ただ、PGフラグは、PEフラグ(CR0レジスタ0bit)が1でないと、効力がない。 ** 参考 [#e23323d0] #attach(,noform)
タイムスタンプを変更しない
TITLE:ページング * ページング [#m1f018f9] ** 目次 [#z2df7d00] #contents ** ページングとは [#vb41b82a] メモリをページと呼ばれる小さな単位に分割して割り当てを行うアルゴリズム。 [[VESA]]のVBEを使うと、なぜかうまくいかないので、現在停止中。。 ** ページ・ディレクトリ・エントリ(PDE)とページ・テーブル・エントリ(PTE) [#g4969a1a] ページングに使用されるメモリ上のデータ構造。~ リニアアドレスを物理アドレスに変換するためのデータを格納する部分。 ページ・ディレクトリ・テーブルに、最大1024個のページ・ディレクトリ・エントリ(PDE)が、~ ページ・ディレクトリ・エントリ(PDE)には、ページ・テーブルのベースアドレスや各種フラグが、~ ページ・テーブルには、最大1024個のページ・テーブル・エントリ(PTE)が、~ ページ・テーブル・エントリ(PTE)には、ページのベースアドレスや各種フラグがそれぞれ格納されている。 :イメージ| ページ・ディレクトリ・テーブル ├ページ・ディレクトリ・エントリ → ページ・テーブル │ ├ページ・テーブル・エントリ → ページ │ ├ページ・テーブル・エントリ → ページ │ ├ページ・テーブル・エントリ → │ ├ページ・ディレクトリ・エントリ → ページ・テーブル │ ├ページ・テーブル・エントリ → ページ │ ├ページ・テーブル・エントリ → ページ │ ├ページ・テーブル・エントリ → │ ├ページ・ディレクトリ・エントリ → │ *** 4KB PDE、4KB PTE [#g55ab5ee] |~bit|~Flag|~説明| |0|P|存在| |1|R/W|リード/ライト| |2|U/S|ユーザ/スーパーバイザ| |3|PWT|ページ・レベル・ライトスルー| |4|PCD|ページ・レベル・キャッシュ・ディスエーブル| |5|A|アクセス| |6|BGCOLOR(#ddd):0|BGCOLOR(#ddd):PDE:予約済み| |~|D|PTE:ダーティ| |7|PS|PDE:ページサイズ| |~|PAT|PTE:ページテーブル属性インデックス| |8|G|グローバル・ページ| |9|AVL|システムが使用可能| |10|~|~| |11|~|~| |12||20bit&br;PDE:ページテーブルのベースアドレス&br;PTE:ページのベースアドレス| |13|~|~| |14|~|~| |15|~|~| |16|~|~| |17|~|~| |18|~|~| |19|~|~| |20|~|~| |21|~|~| |22|~|~| |23|~|~| |24|~|~| |25|~|~| |26|~|~| |27|~|~| |28|~|~| |29|~|~| |30|~|~| |31|~|~| ** ページング方式の実装 [#f6a8137a] *** ページ・ディレクトリ・テーブルの設定 [#a10b2c21] *** ページ・テーブルの設定 [#p873df4e] *** [[CR3>Register#j68fe188]]にページディレクトリテーブルのアドレスを設定 [#i31a2fde] *** 割り込み記述子表(IDT)にページフォルトハンドラを登録 [#pc76f443] *** CR0のPGフラグをONにし、ページングを有効にする。 [#i4011d3b] //PGフラグ(CR0レジスタ31bit)を1にする。 //-PG = 0:ページングがDisable。すべてのリニア・アドレスは物理アドレスとして扱われる。 //-PG = 1:ページングがEnable。 //ただ、PGフラグは、PEフラグ(CR0レジスタ0bit)が1でないと、効力がない。 ** 参考 [#e23323d0] #attach(,noform)
Since 2008 July. OS Project Wiki