• 平板式内存管理。屏蔽掉段式管理,完全采用页式管理。做法是定义一个代码段,定义一个数据段。代码段和数据段的大小都是4GB。如此一来逻辑地址就是线性地址。
  • 保护平板式内存管理。做法是定义内核代码段,内核数据段,用户代码段,用户数据段。四个段的基地址都是0大小为4GB进程执行内核代码时使用内核段,执行用户代码时使用用户段。段的地址转化作用被屏蔽,但基于特权级的保护特征被保留。对于同一个进程来说,由于它对四个段的使用绝不会重叠,因此可以将四个段叠加起来,看成是进程平板地址空间,同时也可以将四套页目录/页表合并成一套。合并后,页表项可能代表不同段中的页。页表项的U/S标志用于区分用户页和内核页。如果操作系统内核可以保证页目录/页表中没有重叠的表项,就可以保证进程之间相的互隔离。
  • 多段式内存管理。即完全采用段式管理,屏蔽掉页式管理。
  • 基于物理地址拓展的页式内存管理。后来的IA-32体系引入了物理地址拓展(PAE)机制以支持36位物理地址。该管理模式中,物理地址空间被扩充到了64GB,但线性地址空间仍然为4GB。页目录和页表项被扩充到了64位,因而一个页目录或者页表中的项数变成了512,一个页目录仅能描述1GB线性地址空间。所以引入了一个只有四个表项的页目录指针表(PDP)。CR3指向PDP。地址转换机制被修改。当页目录项中的PS位被设置为1时,它描述的页变成了2MB页。
  • 64位平板内存管理。在64位模式中,段通常被关闭,不再做段界限检查。CS,DS,ES,SS的基地址处理器统统看作0。但FS和GS可以不是0,将逻辑地址转换为先行地址的时候要加上FS或者GS的基地址。FS和GS的基地址位64位地址,兼容模式中只使用它的低32位,记录在MSR中。
在64位模式中,对于内存的管理完全依靠分页机制。Intel64体系结构扩展了PAE机制,使之能够支持64位线性地址和52位物理地址。拓展包括:
  1. 页目录指针表被扩充到了512项。
  2. 引入了一个第四级页映射表PML4,它的每一个表项可以指向一个PDP。
  3. 所有的四级页表表项被扩充到了64位。
  4. 页目录项中的PS标志用于控制4KB和2MB页。
  5. 所有页表项在第63位上新增了一个执行禁止标志EXB。
Scroll to Top