分页机制
每个表项对应第二级的一个页表(Page Table),每个页表也有1024项(Page Table Entry),每个表项对应一个物理页。
页目录 顾名思义就是页目录项的组合(1024个页目录项PDE),一个页目录项PDE是4Bety。 整个页目录占据一个4k物理页。 项可以理解为Entry
页表 顾名思义就是页表项组合(1024个页表项PTE),一个页表项PTE是4字节,一个PTE对应一个真实物理页,一页是4K。 Entry可以理解为项
1M为1024*1024 4K为4*1024 4M为4*1024*1024=4K*1024 ,4M为一个页表的大小。
1023=03FFH,1024=0400H,4096=1000H
一页为4K,即1000H,所以页首地址都为XXXXX000H的格式,高20位XXXXXH为页码
(cr3) 得到页目录基址
运行转换时,先是有寄存器cr3指定的页目录中根据线性地址的高10位(图中的Dir)得到页表地址, (高10位) 得到页表基址
然后在页表中根据线性地址的第12到21位(图中的Table)得到物理页首地址, (中10位) 得到页基址
将这个首地址加上线性地址低12位(图中的Offset)便得到了物理地址。 (低12位) 得到物理地址
参考上图:
Page Directory是4k大小,Page Table是4k大小, 一个Page是4K大小,Physical Address Space为:1024*1024*4K=4G
Entry可以理解为项,一个Entry为4字节。 1024个Entry就是4k
参见图片:PDE,PTE都是4字节
P存在位:表示当前条目所指向的页或页表是否在物理内存中.P=0,表示页不在内存中,如果处理器试图访问此页会
产生页异常(page-fault exception,#PF);P=1表示页在内存中
R/W指定一个页或者一组页的读写权限.R/W=0表示只读,R/W=1表示可读写
此位与U/S位和cr0中的WP相互作用
U/S指定一个页或者一组页的特权级。此位与R/W和中cr0中的WP相互作用
U/S=0,表示系统级别,如果CPL=0,1,2就在此级别
U/S=1,表示系统级别,如果CPL=3就在此级别
如果cr0的WP=0,即便用户级页面的R/W=0,系统级程序仍然具备写权限.
WP=1,即便用户级页面的R/W=0,系统级程序也不能写入只读页.
PWT用于控制对单个页或者页表的缓冲策略。PWT=0使用Write-back缓冲策略
PWT=1使用Write-through缓冲策略
cr0的CD(Cache-Disable)位被设置时会被忽略
PCD控制对单个页或者页表的缓冲PCD=0时,页或页表可以被缓冲PCD=1,不能
cr0的CD(Cache-Disable)位被设置时会被忽略
A指示页或页表是否被访问。在页或页表刚被加载到物理内存中时被内存管理程序清0,处理器会在第一次
访问此页或页面时设置此位.而且处理器不会自动清除此位。只有软件能清除它
D指示页或页表是否被写入。在页或页表刚被加载到物理内存中时被内存管理程序清0,处理器会在第一次
访问此页或页面时设置此位.而且处理器不会自动清除此位。只有软件能清除它
A位和D位都是被内存管理程序用来管理页和页表从物理内存中换入换出的
PS位决定页大小PS=0页大小为4KB,PDE指向页表
PAT选择PAT(Page Attribute Table)条目。
G指示全局页。如果此位被设置.同时cr4中的PGE位被设置。那么此页的页表和页目录条目不会再TLB中变得无效
处理器会将最近常用的页目录和页表保存在一个叫做TLB(Translation Lookasied buffer)的缓冲区中.加速访问
posted on 2011-04-24 20:31 wanghj_dz 阅读(1747) 评论(0) 编辑 收藏 举报