操作系统导论 | 第 15 章笔记

159 阅读2分钟

第15章 机制:地址转换

问题:如何高效、灵活地虚拟化内存?

答:我们利用了一种通用技术:地址转换。

15.1 假设

先假设用户的地址空间必须连续地放在物理内存中,且地址空间不是很大。

15.2 一个例子

image.png

15.3 动态(基于硬件)重定位

每个CPU需要两个硬件寄存器:基址(base)寄存器和界限(bound)寄存器,有时称为限制(limit)寄存器。 这组基址和界限寄存器,让我们能够将地址空间放在物理内存的任何位置,同时又能确保进程只能访问自己的地址空间。

进程产生的所有内存引用,都会被处理器通过以下方式转换为物理地址:

physical address = virtual address + base

地址转换技术:将虚拟地址转换为物理地址。

15.4 硬件支持:总结

image.png

15.5 操作系统的问题

image.png

image.png

image.png

15.6 小结

本章通过虚拟内存使用的一种特殊机制,即地址转换,扩展了受限直接访问的概念。

利用地址转换,操作系统可以控制进程的所有内存访问,确保访问在地址空间的界限内。

这个技术高效的关键是硬件支持,硬件快速地将所有内存访问操作中的虚拟地址(进程自己看到的内存位置)转换为物理地址(实际位置)。

我们还看到了一种特殊的虚拟化方式,称为基址加界限的动态重定位。

这种虚拟化方式非常高效,只需很少的硬件逻辑,就可以将虚拟地址和基址寄存器加起来,并检查进程产生的地址没有越界。

同时也提供了保护,确保没有进程访问地址空间之外的内容。

遗憾的是,这个简单的动态重定位有效率低下的问题——容易产生内部碎片。

所以我们需要更复杂的机制,以便更好地利用物理内存,避免内部碎片。

第一次尝试是将基址加界限的概念稍稍泛化,得到分段的概念。

“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 20 天,点击查看活动详情