第15章 机制:地址转换
问题:如何高效、灵活地虚拟化内存?
答:我们利用了一种通用技术:地址转换。
15.1 假设
先假设用户的地址空间必须连续地放在物理内存中,且地址空间不是很大。
15.2 一个例子
15.3 动态(基于硬件)重定位
每个CPU需要两个硬件寄存器:基址(base)寄存器和界限(bound)寄存器,有时称为限制(limit)寄存器。 这组基址和界限寄存器,让我们能够将地址空间放在物理内存的任何位置,同时又能确保进程只能访问自己的地址空间。
进程产生的所有内存引用,都会被处理器通过以下方式转换为物理地址:
physical address = virtual address + base
地址转换技术:将虚拟地址转换为物理地址。
15.4 硬件支持:总结
15.5 操作系统的问题
15.6 小结
本章通过虚拟内存使用的一种特殊机制,即地址转换,扩展了受限直接访问的概念。
利用地址转换,操作系统可以控制进程的所有内存访问,确保访问在地址空间的界限内。
这个技术高效的关键是硬件支持,硬件快速地将所有内存访问操作中的虚拟地址(进程自己看到的内存位置)转换为物理地址(实际位置)。
我们还看到了一种特殊的虚拟化方式,称为基址加界限的动态重定位。
这种虚拟化方式非常高效,只需很少的硬件逻辑,就可以将虚拟地址和基址寄存器加起来,并检查进程产生的地址没有越界。
同时也提供了保护,确保没有进程访问地址空间之外的内容。
遗憾的是,这个简单的动态重定位有效率低下的问题——容易产生内部碎片。
所以我们需要更复杂的机制,以便更好地利用物理内存,避免内部碎片。
第一次尝试是将基址加界限的概念稍稍泛化,得到分段的概念。
“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 20 天,点击查看活动详情”