计算机体系结构基础知识介绍之虚拟内存与虚拟机(一)

一、虚拟内存

虚拟内存是一种技术,它可以让物理内存(即计算机中的实际内存)像一个缓存一样,存储一部分来自辅助存储器(比如硬盘或固态硬盘)的数据。虚拟内存可以在物理内存和辅助存储器之间传送数据的页面(一个固定大小的数据块),就像缓存可以在不同层次的内存之间传送数据的块一样。同样,TLB(转换后备缓冲器)是一种对页表(用来记录虚拟地址和物理地址之间的对应关系的表格)的缓存,它可以避免每次地址转换时都要访问内存。虚拟内存还可以实现进程之间的隔离,让多个进程共享一个物理内存,但是有各自的虚拟地址空间。

二、虚拟内存保护进程

多道程序设计,即让多个程序同时运行并共享计算机资源,导致了对程序之间的保护和共享的需求。一个正在运行的程序加上它继续运行所需要的状态。在任何时刻,都必须能够从一个进程切换到另一个进程。这种切换叫做进程切换或上下文切换。操作系统和体系结构要合作,让进程能够共享硬件资源而不相互干扰。为了做到这一点,体系结构至少要做到以下几点:
1. 提供至少两种模式,表明正在运行的进程是用户进程还是操作系统进程。
2. 提供一部分处理器状态,用户进程可以使用但不能修改。
3. 提供一些机制,让处理器可以从用户模式切换到监督模式,反之亦然。前者通常是通过系统调用来实现的。
4. 提供一些机制,限制内存访问,保护进程的内存状态,在上下文切换时不需要将进程交换到磁盘上。最流行的是给每个虚拟内存页面添加保护限制。固定大小的页面,通常是4 KiB、16 KiB或更大,通过页表从虚拟地址空间映射到物理地址空间。保护限制包含在每个页表项中。保护限制可能决定用户进程是否可以读取这个页面、是否可以写入这个页面、以及是否可以从这个页面执行代码。

TLB的条目就像一个缓存的条目一样,其中标记部分保存了虚拟地址的一部分,数据部分保存了物理页面地址、保护字段、有效位,通常还有使用位和脏位。操作系统通过改变页表中的值,然后使相应的TLB条目无效来改变这些位。

当条目从页表中重新加载时,TLB就得到了这些位的准确副本。假设计算机能够遵守页面上的限制,并且能够将虚拟地址映射到物理地址,那么看起来我们已经完成了任务。但是我们能否完成任务不仅依赖于硬件的准确性,还依赖于操作系统的准确性。今天的操作系统由数千万行代码组成。因为错误是按照每千行代码的数量来衡量的,所以在生产环境中的操作系统中有成千上万个错误。操作系统中的缺陷导致了一些漏洞被经常利用。这个问题以及不执行保护可能比过去更加昂贵的可能性,促使一些人寻找一个比完整的操作系统更小的代码基础的保护模型,比如虚拟机。

三、虚拟机保护进程

虚拟机 (VM)最初开发于 20 世纪 60 年代末,一直是大型机计算的重要组成部分。 尽管在 20 世纪 80 年代和 90 年代的单用户计算机领域中很大程度上被忽视,但它们最近变得流行起来,因为:
■现代系统中隔离和安全性的重要性日益增加;
■ 标准操作系统的安全性和可靠性方面的缺陷;
■ 在许多不相关的用户之间共享一台计算机,例如在数据中心或云中;
■ 处理器原始速度的显着提高,使得虚拟机的开销更容易被接受。

 我们这里的重点是 VM 提供的 ISA 与底层硬件匹配的 VM。 他们给人一种错觉,虚拟机的用户拥有整台计算机,包括操作系统的副本。 一台计算机运行多个虚拟机,并且可以支持多种不同的操作系统 (OS)。 在传统平台上,单个操作系统“拥有”所有硬件资源,但在虚拟机中,多个操作系统都共享硬件资源。

支持VM的软件称为虚拟机监视器(VMM)或管理程序; VMM 是虚拟机技术的核心。 底层硬件平台称为主机,其资源在虚拟机之间共享。 VMM 确定如何将虚拟资源映射到物理资源:物理资源可以是分时的、分区的,甚至是在软件中模拟的。 VMM比传统操作系统小得多; VMM 的隔离部分可能只有 10,000 行代码。

一般来说,处理器虚拟化的成本取决于工作负载。 用户级处理器绑定程序(例如 SPECCPU2006)具有零虚拟化开销,因为操作系统很少被调用,因此一切都以本机速度运行。 相反,I/O 密集型工作负载通常也是操作系统密集型,并执行许多系统调用(执行 I/O 需要)和特权指令,这可能会导致较高的虚拟化开销。 开销由 VMM 必须仿真的指令数量以及仿真速度决定。 因此,当VM运行与主机相同的ISA时,架构和VMM的目标是直接在本机硬件上运行几乎所有指令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D了一天bug忘了编译

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值