4.1. 最简单的地址转译

有趣的部分是虚拟地址到实体地址的转译。MMU 能够逐个分页重新映射地址。就如同定址cache行的时候一样,虚拟地址会被切成多个部分。这些部分用来索引多个用以建构最终实体地址的表格。以最简单的模型而言,我们仅有一个层级的表格。

图 4.1:一层地址转译
图 4.1:一层地址转译

图 4.1 显示了到底是怎么使用虚拟地址的不同部分的。开头的部分用以选择一个分页目录(Page Directory)中的一个项目;在这个目录中的每个项目都能由操作系统个别设定。分页目录项目决定了一个实体memory分页的地址;在分页目录中,能够有多于一个指到相同实体地址的项目。记忆单元的完整实体地址是由分页目录的分页地址、结合虚拟地址的低位元所决定的。分页目录项目也包含一些像是存取权限这类关于分页的额外资讯。

分页目录的资料结构储存于主memory中。操作系统必须分配连续的实体memory、并将这个memory区域的基底地址(base address)储存在一个特殊的暂存器中。虚拟memory中适当的位元量接著会被用作一个分页目录的索引 –– 它实际上是一个目录项目的阵列。

作为一个实际的例子,以下是在 x86 机器上的 4MB 分页所使用的布局。虚拟memory的偏移量部分的大小为 22 位元,足以定址一个 4MB 分页中的每个位元组。虚拟memory剩馀的 10 位元选择了分页目录里 1024 个项目中的其中一个。每个项目包含一个 4MB 分页的一个 10 位元的基底地址,其会与偏移量结合以构成完整的 32 位元地址。

results matching ""

    No results matching ""