段页式内存管理中,段的线性地址被分割成大小相等的线性页(4KB,4MB或者2MB等)。物理内存空间同样也被分成相同大小的物理页。操作系统维护一个页表,用于管理线性页到物理页的映射。页表在IA-32体系结构中分为两级,即页目录和页表
页目录是一个数组,其元素叫做页目录项(PDE),每个页目录项描述一个页表。页目录的大小为一页(4KB),一个页目录中有1024个页目录项。页目录项的大小为4字节。页表大小为一页(4KB)。页表项的大小为4字节,所以一个页表最多可以描述1024个线性页。
物理页是预先划分好的,其开始位置一定在4KB(2^12)的边界上。所以低12位全部是零。然后低12位就可以储存而外的信息。
P是存在位。R/W是读写标志位。U/S是用户标志位,0表示超级用户。A是存取标志位。D是脏标志位。
在页目录项中PAT标志换成了PS标志,表示物理页尺寸。
CR3寄存器专门存放当前使用的页目录的物理地址,因此CR3又叫做页目录基地址寄存器。只要进程在活动,它的页目录就应该一直驻留在内存。
页目录项也可以直接指向物理页,加快地址转换速度,通常将操作系统内核所占用的页设置为4MB页。该页目录项的PS地址为1事,它所描述的是一个4MB的页而不再是一个页表。
页式管理机制是操作系统内核启动的,启动方法是将CR0中的PG标志设置为1。
启动分页机制后,每个线性地址都需要经过页目录和页表的转换。IA-32体系结构加入了一个高速缓存TIB,其中储存最近使用的页目录和页表项。TIB的经常的刷新工作由操作系统内核负责。当页目录和页表项改变时,内核必须使得TIB相应的项失效。当CR3改变时,TIB中的所有内容(Global页除外)会自动失效。INVLPG指令可以将TLB中的指定项设置为无效。
Scroll to Top