什么是虚拟机?

论坛 期权论坛 金融     
ksus   2022-6-23 11:06   3004   0
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

比较通俗的回答(适合没有电脑基础的朋友)
虚拟机,顾名思义就是虚拟出来的电脑,这个虚拟出来的电脑和真实的电脑几乎完全一样,所不同的是他的硬盘是在一个文件中虚拟出来的,所以你可以随意修改虚拟机的设置,而不用担心对自己的电脑造成损失,因此可以用来做试验什么的,呵呵,差不多就是这样了,不知道我说的能明白不^_^,简单说就是一句话,虚拟出来的电脑,你干什么都行。

比较专业的回答(适合有一点电脑基础的朋友)

虚拟机是指运行在Windows或Linux计算机上的一个应用程序,这个应用程序“模拟”了一个基于x86的标准PC的环境。这个环境和普通的计算机一样,都有芯片组、CPU、内存、显卡、声卡、网卡、软驱、硬盘、光驱、串口、并口、USB控制器、SCSI控制器等设备,提供这个应用程序的“窗口”就是虚拟机的显示器。在一台电脑上将硬盘和内存的一部分拿出来虚拟出若干台机器,每台机器可以运行单独的操作系统而互不干扰,这些“新”机器各自拥有自己独立的CMOS、硬盘和操作系统,你可以像使用普通机器一样对它们进行分区、格式化、安装系统和应用软件等操作,还可以将这几个操作系统联成一个网络。在虚拟系统崩溃之后可直接删除不影响本机系统,同样本机系统崩溃后也不影响虚拟系统,可以下次重装后再加入以前做的虚拟系统。同时它也是唯一的能在 Windows和Linux主机平台上运行的虚拟计算机软件。虚拟机软件不需要重开机,就能在同一台电脑使用好几个OS,不但方便,而且安全。虚拟机在学习技术方面能够发挥很大的作用。

基本概念
  一般意义的虚拟机:   通过虚拟机软件,你可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机完全就像真正的计算机那样进行工作,例如你可以安装操作系统、安装应用程序、访问网络资源等等。对于你而言,它只是运行在你物理计算机上的一个应用程序,但是对于在虚拟机中运行的应用程序而言,它就像是在真正的计算机中进行工作。因此,当我在虚拟机中进行软件评测时,可能系统一样会崩溃,但是,崩溃的只是虚拟机上的操作系统,而不是物理计算机上的操作系统,并且,使用虚拟机的“Undo”(恢复)功能,我可以马上恢复虚拟机到安装软件之前的状态。

为什么使用虚拟机

1. 演示环境,可以安装各种演示环境,便于做各种例子;

2. 保证主机的快速运行,减少不必要的垃圾安装程

序,偶尔使用的程序,或者测试用的程序在虚拟机上运行;

3. 避免每次重新安装,银行等常用工具,不经常使用,而且要求保密比较好的,单独在一个环境下面运行;

4. 想测试一下不熟悉的应用,在虚拟机中随便安装和彻底删除;

5. 体验不同版本的操作系统,如Linux、Mac等。

终端虚拟化由于其带来的维护费用的大幅降低而受到追捧——如能降低占用空间,降低购买软硬件设备的成本,节省能源和更低的维护成本。它比实际存在的终端设备更加具备性价比优势。但这些并非是教育行业和厂商对虚拟化技术情有独钟的惟一原因。另一方面,我们一般较少提及,那就是:虚拟化技术能大幅提升系统的安全性。

现在流行虚拟机

VMware 可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare 采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就象标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。

Oracle VM VirtualBox 是由Sun Microsystems公司出品的软件(sun 于 2010年被Oracle收购),原由德国innotek公司开发。2008年2月12日,Sun Microsystems宣布将以购买股票的方式收购德国Innotek软件公司,新版不再叫做Innotek VirtualBox,而改叫Sun xVM VirtualBox。2010年1月21日,欧盟终于同意Oracle收购Sun,VirtualBox再次该名变成Oracle VM VirtualBox。VirtualBox是开源软件。目前VirtualBox 3.2.0支持的操作系统包括:Debian, Fedora,Linux, Mac OS X(Intel), Mandriva, OpenSolaris, PCLiunxOS, Red Hat, SUSE Linux,Solaris 10, Ubuntu, Windows, Xandros, openSUSE等。OracleVM VirtualBox 支持的客户端操作系统包括:从 3.1到Vista的所有版本的Windows、Linux2.2、2.4和 2.6内核、Solaris x86、OS/2、、OpenBSD、 Netware 、FreeBSD 和 DOS。在 2007 年 1 月,InnoTek 以 GNU General Public License (GPL) 释出 VirtualBox,并提供二进位版本及开放源码版本的代码。

Virtual PC 在使用PowerPC处理器的MacOS X版本上,其模拟机“使用”Intel Pentium 4处理器及440BX 系列的主板;而在Windows版本上,会使用电脑本身的处理器。模拟电脑上使用一块标准的SVGA VESA图卡,并与S3 Trio 64 PCI 8 MByte VideoRAM版本的兼容。主板使用American Megatrends (AMI)的BIOS。并有“内置”的 Creative Labs Sound Blaster 16PnP声卡 (Vista上或运行模拟Vista环境时,则使用Vista本身的音效系统,因为Vista并不支援Creative Labs Sound Blaster)及DEC 21041 或 DEC 21140的Ethernet网卡。

Windows XP Mode

使用适用于 Windows 7 的 Windows XP Mode,可以在 Windows 7 上轻松运行多个在 Windows XP 上运行的生产应用程序。它使用虚拟化技术(如 Windows Virtual PC)为 Windows 7 提供虚拟 Windows XP 环境。 Windows XP Mode 可以提供 32 位的虚拟化 Windows XP Professional ServicePack 3 (SP3) 环境。此下载包包含一个预安装了 Windows XP SP3 的虚拟硬盘 (.vhd file)。必须具备客户端虚拟化软件(如 Windows Virtual PC)才能使用

支持的操作系统: Windows 7(Windows 7 专业版、Windows 7 旗舰版或 Windows 7 企业版)

注意:不支持从 Windows XP Mode Beta/ReleaseCandidate 的升级。

硬盘要求:2GB,用于安装 Windows XP Mode。建议为虚拟 Windows 环境准备额外 15GB 的硬盘空间。

注意:可以在计算机上使用 Windows Virtual PC 运行 Windows XP Mode。

2010年3月 19日,微软发布更新,Windows XP Mode不再要求硬件虚拟化技术。只要是正版用户都可以从微软官网上免费下载。

什么虚拟机适合你

VMware Workstation的功能是最强大的,它的强大是不容置疑的,所以也是最多人使用的。但是需要注册并且是英文,过于庞大,很多功能我们是用不到,而且还会开机加载程序(这个很多人不喜欢的)。所以出现了精简版,汉化版,破解版,但是往往出问题就是因为这些改版(不是说某些版本不好,但这个是事实,使用这些版本会出现莫名其妙的问题,而且很难解决,同时希望能支持正版)

Oracle xVM VirtualBox是开源,免费,相比下,VirtualBoxj比较轻巧,也能实现很多功能。最重要的是有中文,上手比较容易,而已它的快照功能也靠近VM了,应该说竞争力更强了。

Virtual PC,感觉就是没有什么希望,给微软收购了后只支持自家的系统(不是其他系统不能用它虚拟,只是需要很强的动手能力)XP mode虽然不错,但是限制也是很多的。

是只需要简单的功能的,virtualbox和VPC可以满足你了,如果需要虚拟Linux这类的系统就用 Vritualbox。如果需要强大功能的虚拟机,VMware Workstation就是你的选择了。

1.VMware Workstation 虽然强大,但是还是要注册的,网上有key,自己搜就行了,还是那句话:中国人用软件不花钱滴。
2.想用XP mode的同学,可以试试VMlite
3.什么是硬件虚拟化技术(Intel VT和AMD-V技术)
其实他们都是同一类技术,就是提供特殊的CPU指令,使虚拟化时效率提高。如果想在32位系统虚拟64位系统,拥有 CPU虚拟化技术是必须的,就算是64位系统虚拟64位系统也需要这种技术的。

安装注意:  在虚拟机

中安装操作系统,和在真实的计算机中安装没有什么区别,但在虚拟机中安装操作系统,可以直接使用保存在主机上的安装光盘镜像(或者软盘镜像)作为虚拟机的光驱(或者软驱)。   可以用打开前文创建的Windows 2000虚拟机配置文件,在Virtual Machine Settings页中的Hardware选项卡中,选择CD-ROM项,在Connection选项区域内选中Use ISO image单选按钮,然后浏览选择Windows 2000安装光盘镜像文件(ISO格式)。如果使用安装光盘,则选择Use physical drive并选择安装光盘所在光驱。   选择光驱完成后,然后单击工具栏上的播放按钮,打开虚拟机的电源,用鼠标在虚拟机工作窗口中单击一下,进入虚拟机。   如果想从虚拟机窗口中切换回主机,需要按下Ctrl+Alt热键。   安装VMware Tools   在虚拟机中安装完操作系统之后,接下来需要安装VMware Tools。VMware Tools相当于VMware虚拟机的主板芯片组驱动和显卡驱动、鼠标驱动,在安装VMware Tools后,可以极大提高虚拟机的性能,并且可以让虚拟机分辨率以任意大小进行设置,还可以使用鼠标直接从虚拟机窗口中切换到主机中来。   1.从VM菜单下选择安装VMware Tools。   2.按照提示安装,最后重新启动虚拟机即可。

虚拟机杀毒技术
  虚拟机并不是新技术,目前微软、JAVA等虚拟机都已经十分成熟,在一台电脑上安装一个虚拟机和多个操作系统,已经成为许多评测人员和计算机病毒分析人员必需工作条件。而将虚拟机技术应用到杀毒方面,却是一个杀毒业界一直在追求和探索的课题。 “虚拟机杀毒技术”即是在电脑中创造一个虚拟CPU环境,将病毒在虚拟环境中激活,根据其行为特征,从而判断是否是病毒。有专家认为,所谓虚拟机技术,就是用软件先虚拟一套运行环境,让病毒先在该虚拟环境下运行,从而观察病毒的执行过程。这个技术主要用来应对加壳和加密的病毒,因为这两类病毒在执行时最终还是要自身脱壳和解密的,这样,杀毒软件就可以在其“现出原形”之后通过特征码查毒法对其进行查杀。
虚拟机源码分析
1)虚拟机是什么?“虚拟机”的概念其实很广,最常见的有以下两种虚拟机,第一种是模拟“裸机”运行的虚拟机,这样的虚拟机有VMWAREVirturePC,Bochs等,另一种是模拟操作系统运行情况的虚拟机,这样的虚拟机有Wine,JVM(java虚拟机)。其实,虚拟机就是一个中间层,可以理解为是两种环境的桥梁,如果把虚拟机的概念抽象一点描述,可以认为虚拟机是在某一个环境上模拟另一种环境运行情况的软件,这样的环境可以是不同的cpu,不同的os....等等。
这里选择的是两个非常简单的虚拟机,一个是<<编译原理与实践>;>;一书中自带的TM虚拟机,另一个是<<程序员>;>;杂志2003年第六期里的一篇文章<<一个小型虚拟机的实现>;>;中实现的虚拟机,两者都有一个共同点,就是两者都是在汇编语言级别虚拟cpu运行情况的虚拟机,正因为这两个虚拟机的如此定位,所以在实现或者阅读这两个虚拟机的时候,你不得不从cpu的角度去思考问题,你必须对cpu的运行情况有了解,反过来说,阅读这两个虚拟机的源码也可以加深对cpu工作原理以及汇编语言的理解。这两个虚拟机的源码都可以在网上找到,前者在http://www.mathcs.sjsu.edu/faculty/louden/cmptext/,而后者可以在CSDN的网站上查找2003年第六期的源码。值得一提的是,CS:APP(<<深入理解计算机系统>;>;)一书中也有一章专门讲述CPU的运行原理,所以这个虚拟机功能更酷也更加强大,

3)设计一个汇编语言级别的虚拟机的要求
学习过计算机原理的人都知道,一个cpu至少需要有以下几个部件:a)内存,装载所要执行的指令之用;b)寄存器;3)指令集,没有指令集执行指令就无从谈起。前两者非常简单,无非就是在内存中分配一个空间来模拟就可以了,而后者这 里要专门说明一下。我们知道任何高级语言,经过这个高级语言的编译器编译之后都是翻译成汇编语言的,然后由汇编器汇编成二进制文件最后再进行库的链接等等才形成了可执行文件,而可执行文件最终也是二进制格式的,在执行可执行文件的时候由加载器加载到内存中去,那么这里就有一个问题了:cpu是如何识别已经加载到内存中二进制文件并且正确执行的?这需要下 面的一个概念:OpCode。
OpCode是什么?简而言之,OpCode就是与汇编指令相对应的二进制格式的代码,OpCode的英文名是OperationCode(中文可以翻译成“操作码”),每一个汇编指令都有一个相对应的OpCode格式,反之不然,不过这个问题这里不再深究,只需要知道汇编器把汇编指令翻译成相应的由opcode组成的二进制文件,这样在可执行文件加载到内存的时候,cpu就可以根据在可执行文件中的opcode来执行程序了。理论上来说,不同厂家的cpu所支持的opcode是不同的,那么这里就有一个问题了,比如说在Intel机子上编译成功的可执行文件到了AMD的机子上如何正确执行呢?如果没有猜错的是,每个cpu在实现的时候需要在cpu的上层加一个翻译指令的东东....具体的我不清楚,只是猜测而已,也许不对。扯了这么多,回到这里要实现的cpu上,因为只是简易的cpu,所以在opcode上也尽量的精简,在这两个虚拟机的实现中,都是采用了汇编指令和opcode一一对应的关系进行实现(记住我前面说过汇编指令和opcode在真正的cpu中并不是一一对应的!),这样简化了cpu的实现。

116: 89 e5 mov %esp,%ebp

其中的116是指令地址,而89 e5就是指令mov %esp,%ebp 所对应的opcode。
总结一下,设计一个汇编语言级别的虚拟机至少需要以下的部件:1)内存空间,用于存放机器指令之用。2)寄存器:用于保存程序运行的状态,暂存数据等等之用。3)汇编器,汇编器的功能就是把汇编指令翻译成cpu指定的机器指令,然后将指令装入虚拟机的内存之中。4)指令集,指令集包括了指令的助记符,也就是汇编语言中的指令,还需要有每个指令所对 应的机器指令也就是OpCode,助记符由汇编器处理翻译成为机器指令,最后在cpu执行的时候根据不同的机器指令来执行相关的操作。
虽然这两个虚拟机的设计略有不同,但是由于都是模拟的汇编语言级别的cpu,所以工作过程大体都是一致的,把握这个运行的过程是正确掌握这两个源代码的关键所在!虚拟机运行的大体过程如下:首先由汇编起扫描汇编源文件,将汇编指令也就是机器指令的助记符翻译为机器指令,如果没有错误就把机器指令加载到内存之中,这时汇编器的任务就结束了;然后由虚拟机读取已经装载到内存中的机器指令,根据机器指令对应的操作来执行指令。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP