intel 64 体系常见内存管理方式

内存管理是操作系统中非常重要的一个部分。随着计算机技术的不断发展,内存管理的方式也在不断演变。本文将介绍 intel 64 体系几种常见的内存管理方式。

平板式内存管理是一种比较简单的内存管理方式。它采用页式管理,屏蔽掉段式管理。具体来说,它将逻辑地址直接映射为线性地址,定义一个代码段和一个数据段,两个段的大小都是4GB。这种方式的好处是简单易懂,但是它的缺点是不能进行多进程的内存隔离。

为了解决多进程内存隔离的问题,可以采用保护平板式内存管理的方式。具体来说,它定义了内核代码段、内核数据段、用户代码段和用户数据段,每个段的基地址都是0,大小为4GB。进程执行内核代码时使用内核段,执行用户代码时使用用户段。这种方式的好处是可以进行多进程的内存隔离,但是它的缺点是需要进行地址转化,影响效率。

多段式内存管理是一种完全采用段式管理的方式,屏蔽掉页式管理。它可以进行多进程的内存隔离,但是需要进行地址转化,也会影响效率。

基于物理地址拓展的页式内存管理是一种支持更大物理地址空间的方式。它引入了物理地址拓展(PAE)机制以支持36位物理地址。该管理模式中,物理地址空间被扩充到了64GB,但线性地址空间仍然为4GB。页目录和页表项被扩充到了64位,因而一个页目录或者页表中的项数变成了512,一个页目录仅能描述1GB线性地址空间。所以引入了一个只有四个表项的页目录指针表(PDP)。CR3指向PDP。地址转换机制被修改。当页目录项中的PS位被设置为1时,它描述的页变成了2MB页。

在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。