xiaoguang 发表于 2009-7-3 20:15:59

存储器页式管理机制

             储存器的分页式管理是80386以及后续的CPU提供的存储器管理机制的第二个部分,80386以前的CPU没有配置分页管理机制,分页管理与分段管理的主要区别是,一个段的长短可变,页的大小是固定的.
             分页管理机制的实质是把线性地址空间和物理地址空间都看成是长度固定的页组成,且线性地址空间的任何一页都可以映射到物理地址空间的任何一页.80386以及后续的CPU规定每页的大小为4KB,且它的起始地址的低12位都为0,分页管理将4GB的线性地址空间划分为2^20个页面,并通过将线性地址的页重新定位到物理地址空间来管理.
            CPU是否启用分页管理机制,由控制寄存器CR0的PG位进行控制,PG=0.则禁止分页,则线性地址就是物理地址;PG=1,允许分页,则分页机制完成线性地址到特理地址的转换.
         分页机制是通过查询驻留于内的页目录表和页表来实现线性地址到物理地址的转换,由于页面大小为4KB,且每个页面的起始地址的低12位均为0,因此,线性地址的低12位将直接作为物理地址的低122位使用,机页管理机制实际上是把线性地址的高20位转换成对应的物理地址的高20位,这个转换是通过查询常驻内存的页表实现的.
          对页表的查询分两步进行,首先查询页目表,它的长度为一页(4KB),且起始地址的低12位为0,共存放了1024个页目录项,每项4个字节,页目录表的高20位指向了一个称为页表的第二级表,它也是4KB长,且起始地址的低12位为0.页中又存放了1024个页表项,每项同样四个字节,其高20位为物理存储器中页的高20地址,页表项的格式与页目录项相同.
          31~12                        11   109   8   7   6    5   4   3      2      1    0
页或表的基地址(20位)      A      V   L 0    0   D   A    0   0   U/S   R/W P
          P位为存在位:P=1,表示所指的页已在主存储器中;反之则不在主存储器中,使用时会出现,页故障,CR2寄存器用于保存页故障时的32位线性地址.
          R/W为读/写位;为0,为只读;为1,可读写.
         U/S位为用户监控程序位:为0,则用户程序不能访问该页;为1,用户程序才能访问该页。
         A位访问位,用来表示该页所指页是否被访问过,同段描述符。
         D位为页重写标志位,只在页表项中设置,而不在页目录中设置。D=1时,表明该项所指的指的储存器中的页被重写过。
         AVR保留位(3位):供操作系统记录页的使用情况(使用次数),用于页面替换。

线性地址到物理地址的转换
         分页管理机构查询页目录表和页表完成线性地址向物理地址的转换,其具体的转换过程如下。
         分页管理机制将32位线性地址分为3个域:目录索引域(10位)、表索引域(10位)和偏移地址域(12位)。页目录项的32位物理地址是通过将控制寄存器CR3中提供的页目录表中的高20位地址,与32位线性地址的高10位乘以4得到的12位地址拼接得到的,由此可得到所查找的页所在页表的有关信息,其中包括页表在存储器的高20位地址;将该地址与线性地址中的索引域的10位地址乘以4后拼接得到要查找的页在页表中的32位地址,又由此可得到当前要查找的页在储存器的高20位地址,将该地址,与线性地址中的低12位提供的偏移地址拼接,即可得到操作数的物理地址

页: [1]
查看完整版本: 存储器页式管理机制