Computer Architectrure: Quantitative Approch 第二章Memory Hierarchy Design第四节

Virtual Memory and Virtual Machines

虚拟机被视为真实机器的高效、隔离的副本。 我们通过虚拟机监视器 (VMM) 的概念来解释这些概念……VMM 具有三个基本特征。 首先VMM为程序提供与原始机器基本相同的环境; 其次,在这种环境中运行的程序在最坏的情况下只会表现出轻微的速度下降; 最后,VMM 完全控制系统资源。

附录 B 中的 B.4 节描述了虚拟内存中的关键概念。 回想一下,虚拟内存允许将物理内存视为二级存储(可以是磁盘或固态)的缓存。 虚拟内存在内存层次结构的两个级别之间移动页面,就像缓存在级别之间移动块一样。 同样,TLB 充当页表上的缓存,无需每次转换地址时都进行内存访问。 虚拟内存还提供了共享一个物理内存但具有独立虚拟地址空间的进程之间的分离。 读者在继续之前应确保他们了解虚拟内存的两个功能。

在本节中,我们关注共享同一处理器的进程之间的保护和隐私方面的其他问题。 安全和隐私是 2017 年信息技术面临的两个最令人头疼的挑战。 电子盗窃案,通常涉及信用卡号码列表,定期公布,人们普遍认为还有更多未被举报。 当然,此类问题是由允许网络攻击访问本应无法访问的数据的编程错误引起的。 编程错误是生活中的事实,在现代复杂的软件系统中,它们经常发生。 因此,研究人员和从业人员都在寻找改进的方法来使计算系统更安全。 尽管保护信息不仅限于硬件,但在我们看来,真正的安全和隐私可能涉及计算机架构和系统软件的创新。

本节首先回顾通过虚拟内存保护进程之间的体系结构支持。 然后描述了虚拟机提供的附加保护、虚拟机的体系结构要求以及虚拟机的性能。 正如我们将在第 6 章中看到的,虚拟机是云计算的基础技术。

Protection via Virtual Memory

基于页面的虚拟内存,包括一个缓存页表条目的 TLB,是保护进程之间的主要机制。 附录 B 中的 B.4 和 B.5 节回顾了虚拟内存,包括对通过 80x86 中的分段和分页进行保护的详细说明。 本节作为快速回顾; 如果速度太快,请参阅附录 B 部分。

并发运行的多个程序共享一台计算机的多道程序设计导致了对程序之间的保护和共享以及进程概念的需求。 比喻地,进程是程序的呼吸空气和生存空间——也就是说,一个正在运行的程序加上继续运行它所需的任何状态。 在任何时候,都必须可以从一个进程切换到另一个进程。 这种交换称为进程切换或上下文切换。

操作系统和体系结构联合起来,允许进程共享硬件而不相互干扰。 为此,架构必须限制在运行用户进程时进程可以访问的内容,但允许操作系统进程访问更多内容。 至少,架构必须做到以下几点:
1、至少提供两种模式,表示运行的进程是用户进程还是操作系统进程。后一个过程有时称为
内核进程或主管进程。
2. 提供用户进程可以使用但不能写入的处理器状态的一部分。该状态包括用户/管理模式位、异常启用/禁用位和内存保护信息。禁止用户写入此状态,因为如果用户可以给自己管理员权限、禁用异常或更改内存保护,操作系统将无法控制用户进程。
3. 提供处理器可以从用户模式到管理员模式,反之亦然的机制。第一个方向通常由系统调用完成,作为特殊指令实现,将控制权转移到管理程序代码空间中的专用位置。从系统调用开始,PC 就被保存下来,并且处理器被置于管理模式。返回到用户模式就像一个恢复以前的用户/主管模式的子程序返回。
4. 提供限制内存访问的机制,以保护进程的内存状态,而不必在上下文切换时将进程交换到磁盘。

附录 A 描述了几种内存保护方案,但迄今为止最流行的是对虚拟内存的每一页添加保护限制。 固定大小的页面,通常为 4 KiB、16 KiB 或更大,通过页表从虚拟地址空间映射到物理地址空间。 保护限制包含在每个页表条目中。 保护限制可能决定用户进程是否可以读取此页面、用户进程是否可以写入此页面以及是否可以从此页面执行代码。 此外,如果一个页面不在页表中,则进程既不能读取也不能写入页面。 因为只有操作系统可以更新页表,所以分页机制提供了全面的访问保护。

分页虚拟内存意味着每次内存访问在逻辑上至少需要两倍的时间,一次内存访问获取物理地址,第二次访问获取数据。 这个成本太高了。 解决方法是依靠局部性原则; 如果访问具有局部性,则访问的地址转换也必须具有局部性。 通过将这些地址转换保存在一个特殊的缓存中,内存访问很少需要第二次访问来转换地址。 这种特殊的地址转换缓存称为 TLB。

TLB 条目就像一个缓存条目,其中标签保存虚拟地址的一部分,数据部分保存物理页地址、保护字段、有效位,通常还有使用位和脏位。 操作系统通过更改页表中的值然后使相应的 TLB 条目无效来更改这些位。 当条目从页表重新加载时,TLB 会获得这些位的准确副本。

假设计算机忠实地遵守页面的限制并将虚拟地址映射到物理地址,我们似乎就完成了。 报纸的头条暗示并非如此。

我们没有完成的原因是我们依赖于操作系统和硬件的准确性。 今天的操作系统由数千万行代码组成。 因为错误是以每千行代码的数量来衡量的,所以生产操作系统中存在数千个错误。 操作系统中的缺陷导致了经常被利用的漏洞。

这个问题以及不实施保护的成本可能比过去高得多的可能性导致一些人寻找代码库比完整操作系统(例如虚拟机)小得多的保护模型。

Protection via Virtual Machines

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值