[操作系统] 虚拟化

本文深入探讨虚拟化技术,包括I型和II型管理程序的区别,内存及I/O虚拟化的实现方式,以及虚拟化所需的硬件条件。通过本文,读者可以了解虚拟化如何使单一物理机支持多台运行不同操作系统的虚拟机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虚拟化



虚拟化技术允许一台机器存在多台虚拟机,每一台虚拟机可能运行不同的操作系统。

1. 虚拟化的条件

虚拟化存在两种方法:

  1. I型管理程序(虚拟机监控器)

    实质上就是一个操作系统,因为它是惟一一个运行在内核态的程序。它的工作时支持真实硬件的多个副本,也称作虚拟机,与普通操作系统所支持的进程类似。

  2. II型管理程序

    只是一个运行在操作系统平台上,能够解释机器指令集的用户程序。
    管理程序

两种情况下,运行在管理程序上的操作系统称为客户操作系统。在II型管理程序下,运行在硬件上的操作系统称为宿主操作系统。

每个有内核态和用户的处理器都有一组只能在内核态执行的指令集合,被称为敏感指令。还有一些指令如果在用户态下执行会引起陷入,被称为特权指令。

当且仅当敏感指令是特权指令的子集时,机器才是可虚拟化的。简单说,如果想做一些在用户态下不能做的工作,硬件必须陷入。

2. I型管理程序

I型管理程序在裸机上运行,虚拟机在用户态以用户进程的身份运行,因此不允许执行敏感指令。虚拟机内运行着一个客户操作系统,该系统认为自己处于内核态,但实际运行在用户态。这样状态称为虚拟内核态。

当操作系统执行一条敏感指令时,在可支持虚拟化的机器下,会发生到内核的陷入,从而完成要执行的指令。
I型管理程序

3. II型管理程序

VMware就是该类程序,这种软件在宿主操作系统上作为普通用户程序运行。当第一次运行时,就像一个新启动的计算机,在它的虚拟磁盘上(即宿主系统文件)上安装操作系统,就可以运行了。

在这种方法中,VMware首先会浏览代码段以寻找基本块,并把每条敏感指令被替换完相应的VMware过程调用。由此,在执行过程中就不会存在敏感指令,就可以在不可虚拟化的硬件上使用了。

4. 内存虚拟化

假如一个虚拟机A希望将它的虚拟页面1,2,3分别映射到物理页面,7,8,9,且7,8,9可用,那么就直接把物理页面7,8,9分配给这台虚拟机并建立页表。这时第二胎虚拟机B启动,希望将它自己的虚拟页面4,5,6也映射到物理页面7,8,9。管理程序发现物理页面7,8,9不可用。于是找到空闲页面10,11,12分配给B并建立页表。

所以,管理程序为每一台虚拟机创建一个影子页表,用以实现该虚拟机使用的虚拟页面到管理程序分配给它的物理页面的映射。造成的问题是,每次客户操作系统改变页表,管理程序也必须改变其影子页表。

5. I/O虚拟化

管理程序在物理磁盘上为每一个虚拟机创建一个文件区域作为它的物理磁盘,管理程序把需要访问的磁盘块数转换成相对于真正物理磁盘上文件或区域的偏移量。




参考书目:现代操作系统第三版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值