虚拟机 百科内容来自于: 百度百科

虚拟机Virtual Machine指通过软件模拟的具有完整硬件系统功能的运行在一个完全隔离环境中的完整计算机系统

概述

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

系统

虚拟系统通过生成现有操作系统的全新虚拟镜像它具有真实windows系统完全一样的功能进入虚拟系统后所有操作都是在这个全新的独立的虚拟系统里面进行可以独立安装运行软件保存数据拥有自己的独立桌面不会对真正的系统产生任何影响 而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统虚拟系统和传统的虚拟机VmwareVirtualBoxVirtual pc不同在于虚拟系统不会降低电脑的性能启动虚拟系统不需要像启动windows系统那样耗费时间运行程序更加方便快捷虚拟系统只能模拟和现有操作系统相同的环境而虚拟机则可以模拟出其他种类的操作系统而且虚拟机需要模拟底层的硬件指令所以在应用程序运行速度上比虚拟系统慢得多

主流

流行的虚拟机软件VMware(VMWare ACEVirtual Box和Virtual PC它们都能在Windows系统上虚拟出多个计算机

分类

微软虚拟机
SWsoft虚拟机
Intel虚拟机
Linux虚拟机

常用

VMware Workstation

在详细介绍之前有几个概念要说明
1. VMVirtual Machine虚拟机指由Vmware模拟出来的一台虚拟的计算机也即逻辑上的一台计算机
2.HOST指物理存在的计算机Host′s OS指HOST上运行的操作系统
3. Guest OS指运行在VM上的操作系统例如在一台安装了Windows NT的计算机上安装了Vmware那么HOST指的是安装Windows NT的这台计算机其Host′s OS为Windows NTVM上运行的是Linux那么Linux即为Guest OS
特点
1.可同时在同一台PC上运行多个操作系统每个OS都有自己独立的一个虚拟机就如同网络上一个独立的PC
2.在Windows NT/2000上同时运行两个VM相互之间可以进行对话也可以在全屏方式下进行虚拟机之间对话不过此时另一个虚拟机在后台运行
3.在VM上安装同一种操作系统的另一发行版不需要重新对硬盘进行分区
4.虚拟机之间共享文件应用网络资源等
5.可以运行C/S方式的应用也可以在同一台计算机上使用另一台虚拟机的所有资源
使用Vmware你可以同时运行Linux各种发行版DosWindows各种版本Unix等你甚至可以在同一台计算机上安装多个Linux发行版 多个Windows版本笔者安装了Windows NT下的Vmware后在VM上安装Red Hat Linux成功 运行了Xwindow同时也在虚拟机下安装了Windows 98这简直令人难以置信但是这一切发生了是Vmware帮助的结果
Vmware对虚拟硬盘大小有限制创建后以后就不允许用户再更改了虚拟硬盘实际上是Windows NT下的一个文件而对于 Guest OS它则永远被看作是一个IDE硬盘在虚拟机中尚没有SCSIRAID的概念
不过你不必担心尽管在虚拟机中不支持SCSI盘但是虚拟磁盘却可以建立在任何种类的硬盘上包括IDESCSI甚至RAID阵列上这些盘上的文件系统可以是FAT16FAT32NTFS等此外虚拟盘也可建立在一个可移动的磁盘上还可以建立在一个网络文件服务器上如果用户愿意也可以放置在一个已划分好的分区上
在Vmware的窗口上模拟了多个按键分别代表打开虚拟机电源关闭虚拟机电源Reset键等等 这些按键的功能就如同真正的按键一样如果你的Guest OS是Linux 而你不是通过halt命令或 reboot命令关闭Linux 系统的那么下次启动Linux的时Linux就会自动进行文件系统的检查与修复因为它认为上次关机是一次真实的断电事故
VMware 可以使你在一台机器上同时运行二个或更多WindowsDOSLINUX系统与多启动系统相比VMWare采用了完全不同的概念多启动系统在一个时刻只能运行一个系统在系统切换时需要重新启动机器VMWare是真正同时运行多个操作系统在主系统的平台上就像标准Windows应用程序那样切换而且每个操作系统你都可以进行虚拟的分区配置而不影响真实硬盘的数据你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网极其方便安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少因此比较适合学习和测试 使我们可以在同一台PC机上同时运行Windows NTLinuxWindows 9xFreeBSD……可以在使用Linux的同时即时转到Win 9x中运行Word如果要使用Linux只要轻轻一点又回到Linux之中就如同你有两台计算机在同时工作实现的工具就是虚拟计算平台Vmware

Virtual PC

Virtual PC是微软公司Microsoft 收购过来的最早不是微软开发的Virtual PC可以允许你在一个工作站上同时运行多个PC操作系统当你转向一个新OS时可以为你运行传统应用提供一个安全的环境以保持兼容性它可以保存重新配置的时间使得你的支持开发培训工作可以更加有效
Virtual PC 在使用PowerPC处理器的Mac OS X版本上其模拟机使用Intel Pentium 4处理器及440BX 系列的主板而在Windows版本上会使用电脑本身的处理器模拟电脑上使用一块标准的SVGA VESA图卡并与S3 Trio 64 PCI 8 MByte Video RAM版本的兼容主板使用American Megatrends (AMI)的BIOS并有内置的 Creative Labs Sound Blaster 16 PnP声卡 (Vista上或运行模拟Vista环境时则使用Vista本身的音效系统因为Vista并不支援Creative Labs Sound Blaster)及DEC 21041 或 DEC 21140的Ethernet网卡
目录
  • 模拟环境
  • 基于Intel的苹果机支持
  • USB支援
  • 其他
  • 英文释义
  • Windows7中加载Virtual PC映像技巧

模拟环境

即使Virtual PC的兼容性很高但不是所有软件都能在Virtual PC中正常地运行因为那些软件可能使用一些
未公开的硬件或使用一些不支援的指令一些人或组织借此贬低他比如在VirtualPC 2004 SP1中如果有打印机使用LPT1端口则虚拟机不能识别这个漏洞在Virtual PC 2007中得到改善
苹果麦金塔电脑版本的Virtual PC用动态重新编译转换x86的机械码至相等的PowerPC机械码使Mac可以执行标准pc的程序
微软Windows版本的Virtual PC也是用动态重新编译因为原本就能执行使用者模式和virtual 8086 mode的x86机械码所以就只是转换核心模式和真实模式到使用者模式的x86机械码
通常还提供一些客户端的呼叫函式库(特别是使用某些客户端的延伸功能)来加速模拟或提供更多的功能像整合原执行主机环境变量
Virtual PC 可以在你的电脑上能同时模拟多台电脑虚拟的电脑使用起来与一台真实的电脑一样可以进行bios设定可以给它的硬盘进行分区格式化操作系统你可以安装 DOSWindows 95 Windows 98Windows MEWindows 2000Windows XPWindows Server 2003UNIXLINUX等等你可以在你的 Windows XP 里运行 Linux
基于Intel的苹果机支持
微软宣布在2006 年8月7 日 真正个人计算机认为Mac不会被端起对英特尔Mac 平台微软陈述了 可选择的解决方案由苹果计算机公司和其它贩卖者提供 与窗口的一个充分地被包装的零售拷贝被结合 将满足这需要
苹果计算机公司宣布了和早先运输了新兵训练所预览发行根据苹果计算机公司 新兵训练所的一个完成的版本将运输以Mac OS x 10.5 "Leopard." 新兵训练所将允许Windows XP 被安装在新基于英特尔的橡皮防水布硬盘的另外分开这允许用户解雇入或Mac OS x 或窗口 虽然不同时一的包括对连续窗口根据应用的解决办法在Macintosh 硬件减少需要对于真正个人计算机的英特尔版本
有并且只能选其中之一的产品从Parallels Inc. 告诉的Parallels Desktop 为Mac 这种应用被设计利用Intel's 新技术叫做是新英特尔核心处理器的一部分多数Apple's 最新的计算机使用的英特尔Virtualization 技术由使用I-VT 它增加客人操作系统的表现 使它更加实用至于规则使用平行桌面并且看齐更新的硬件比微软真正个人计算机VMware 和VirtualBox 并且宣布 他们发布他们的软件的Mac OS x 版本

USB支援

在Virtual PC 2007推出之前大众都期待新的版本可以支援USB设备因为Mac版本的Virtual PC是可以使用USB设备的可是结果这功能依然没有被加入不过在Windows 7的XP模式下Virtual PC是支持USB设备的使用户在需要USB的支援时仍然需要使用其他支持USB设备的产品

其他

Microsoft Virtual PC 2007并不支援Windows的家用版若在家用版Windows上安装Virtual PC 2007系统会有弹出信息提示指系统并不支援现时的架构不过具体来说Virtual PC 2007在家用版Windows上依然可以正常运行

英文释义

Virtual: ['v?:tju?l -t?u?l]
a. 虚拟的实质的
词形变化:
名词:virtuality
例句与用法:
1. A virtual state of war exists between the two countries.
这两国间实际上处于战争状态
2. Our deputy manager is the virtual head of the business.
我们的副经理是公司的实际负责人
3. For example in a Virtual space Students can"dissect" a human body "visit" ancient battlefields or"talk" with Shakespeare…
如在虚拟的空间中学生们可以解剖人体参观古战场与莎士比亚对话等等
4. In a virtual storage system a fixed-length block that has a virtual address and that is transferred as a unit between real storage and auxiliary storage.
虚拟存储器系统中具有一个虚拟地址并且可以在实存储器和辅助存储器之间作为一个单位来传送的一种长度固定的数据块
PC: abbr.personal computer
个人电脑
Windows7中加载Virtual PC映像技巧
首先我们点击开始-所有程序-管理工具-计算机管理命令打开计算机管理窗口接着在左侧选择存储-磁盘管理功能这时就显示所有的磁盘分区的使用状况需要注意的是加载VPC映像的前提是不运行该映像的虚拟机系统然后我们可以点击右侧的磁盘管理下的更多操作旁边的箭头选择附加VHD命令在出现的附加虚拟硬盘的窗口点击浏览按钮找到VPC映像文件可以勾选Read-only来只读方式加载确定后即可加载成功了这时我们可以在磁盘管理窗口发现VPC映像是以普通磁盘分区的方式加载的分区的盘符是和原来的接续的 打开计算机我们发现VPC映像的分区可以被随意访问文件操作也和其他分区是完全一样的这样一来就大大便利了主机和虚拟机之间的文件共享操作不过加载了VPC映像后会出现启动虚拟机的错误多次启动无法成功进入Windows这是由于虚拟机无法写入映像导致的我们只需卸载VPC映像即可那么怎么做呢?首先关闭VPC然后进入刚才的磁盘管理窗口右键单击加载的VPC虚拟磁盘选择分离VHD命令即可

Oracle VM VirtualBox

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

VMLite

VMLite是全球首款中国人自己设计的高速虚拟机VMLite发布的短短几周内已经吸引了全球上万名虚拟机玩家注册下载并使用VMLite软件
VMLite是一个虚拟机软件其附带的VMLite XP模式与微软推出的Windows XP模式几乎一模一样但是却不要求你的CPU非得支持虚拟化才能运行VMLite允许你直接使用从微软网站上下载下来的Windows XP模式安装文件来建立Windows XP虚拟机VMLite XP模式配置完成后在Windows 7的开始菜单中也会出现虚拟机中安装的软件的快捷方式虚拟机中运行的程序可以无缝的在Windows 7桌面上显示看起来就跟在本机 中运行一样
VMLite 系列产品
目前为止VMLite已经包括VMLite XP ModeVMLite WorkstationMyOldPCsVMLite VirtualApps StudioVMLite VirtualApps PlayerVBoot 六大产品非常全面
VMLite XP Mode
VMLite XP Mode的作用是在host真实系统中像直接使用普通软件一样使用其他系统中才能使用的软件其原理是只虚拟一个软件虚拟机在后台运行该功能常常用于Vista和Win7 使用只能在Xp下使用的软件即虚拟出Xp来使用部分软件所以该功能约定俗成成为XP Mode
XP Mode最早由微软虚拟机软件Virtual PC在配合Win7系统时推出之后Vmware Virtual box也跟进该项功能
VMLite的最大特点是不需要硬件级别的虚拟化支持! 即CPU不需要支持intel的VT-x或者AMD的AMD-V这意味着较早的CPU以及部分性能高却不支持硬件虚拟的CPU也能够使用XP Mode注意这里有误区Win7 的XP mode必须要CPU支持虚拟化技术才可以使用但是XP mode的真身Virtual PC以及其他所有的虚拟机软件都不一定要支持硬件虚拟的CPU只不过慢一点罢了虚拟机技术早于硬件发展的早期用虚拟机大家都不支持硬件虚拟化
根据VMLite官方说法即使你的机器的CPU支持硬件虚拟化也推荐使用VMLite因为它运行更加快速并且支持3D/2D加速目前支持Directx加速的只有体积庞大的VMWare而已Virtual PC一直就没有这个打算微软为Virtual PC的定位是网络测试和用户体验而且VMLite同样支持多虚拟CPUVMWare支持而Virtual PC不支持
VMLite的优点
1)VMLite是世界上运行速度最快的虚拟机
2)VMLite对硬件安装没有任何要求就是对你的计算机配置没有任何要求比如不需要兼容VT-x或者AMD-V
3)Vmlite不运行远程程序所以速度非常快
4)VMLite文件共享快
5)VMLite拥有超大磁盘容量2TB
6)VMLite支持 32位和64位系统
7)VMLite支持多个虚拟CPU同时运行
8)VMLite支持3D动画效果拥有32位高清晰显卡可以高清晰度的欣赏google earth以及让玩家玩遍对画质要求高的最时尚的网游

linux

一种安装在Windows上的虚拟linux操作环境就被称为linux虚拟机它实际上只是个文件而已是虚拟的linux环境而非真正意义上的操作系统但是它们的实际效果是一样的所以安装在虚拟机上使用好
windowsXP虚拟机vmware下安装Linux 我们在实际的Windows XP中(宿主计算机)再虚拟出一台电脑(虚拟机)并在上面安装Linux系统这样你就可以放心大胆地进行各种Linux练习而无须担心操作不当导致宿主机系统崩溃了并且你可以举一反三将一台电脑变成三台四台再分别安装上其他的系统(运行虚拟机软件的操作系统叫Host OS在虚拟机里运行的操作系统叫Guest OS)
windowsXP虚拟机vmware下安装Linux过程
第一步:
启动VMware在其主界面主页标签页中点击新建虚拟机按钮打开新建向导;
第二步
单击下一步按钮进入虚拟机配置界面这里有两个选择:一是典型方式它根据虚拟机的用途自动调整配置;二是自定义方式它允许用户自行设置虚拟机的主要参数典型方式要比自定义方式简单但缺少一定的灵活性方便起见这里我们选择典型方式
第三步
单击下一步按钮进入虚拟机操作系统选择界面可以看到WindowsLinuxNovell等多种不同的系统这里我们点选LinuxLinux又分为多种版本笔者手头有一套红帽子Linux 8.0自然要选择Red Hat Linux项了

用处

1.演示环境可以安装各种演示环境便于做各种例子
2.保证主机的快速运行减少不必要的垃圾安装程序偶尔使用的程序或者测试用的程序在虚拟机上运行
3.避免每次重新安装银行等常用工具不经常使用而且要求保密比较好的单独在一个环境下面运行
4.想测试一下不熟悉的应用在虚拟机中随便安装和彻底删除
5.体验不同版本的操作系统如LinuxMac等
终端虚拟化由于其带来的维护费用的大幅降低而受到追捧如能降低占用空间降低购买软硬件设备的成本节省能源和更低的维护成本它比实际存在的终端设备更加具备性价比优势但这些并非是教育行业和厂商对虚拟化技术情有独钟的惟一原因另一方面我们一般较少提及那就是虚拟化技术能大幅提升系统的安全性

安装

VMware Workstation虚拟机是一个在Windows或Linux计算机上运行的应用程序它可以模拟一个基于x86的标准PC环境这个环境和真实的计算机一样都有芯片组CPU内存显卡声卡网卡软驱硬盘光驱串口并口USB控制器SCSI控制器等设备提供这个应用程序的窗口就是虚拟机的显示器
在使用上这台虚拟机和真正的物理主机没有太大的区别都需要分区格式化安装操作系统安装应用程序和软件总之一切操作都跟一台真正的计算机一样虚拟机可以为电脑爱好者进行的一系列系统攻击行为做一个示范或演练可以让我们熟悉各种的系统攻击行为从而保护电脑

过程

下面通过例子介绍使用VMware Workstation创建虚拟机的方法与步骤
1.运行VMware Workstation 6单击File→New→Virtual Machine命令进入创建虚拟机向导或者直接按Crtl+N快捷键同样进入创建虚拟机向导
2.在弹出的欢迎页中单击下一步按钮
3.在Virtual machine configuration选项区域内选择Custom单选按钮
4.在Choose the Virtual Machine Hardware Compatibility页中选择虚拟机的硬件格式可以在Hardware compatibility下拉列表框中在VMware Workstation 6VMware Workstation 5或VMware Workstation 4三者之间进行选择通常情况下选择Workstation 6的格式因为新的虚拟机硬件格式支持更多的功能选择好后单击下一步按钮
5.在Select a Guest Operating System对话框中选择要创建虚拟机类型及要运行的操作系统这里选择Windows 2000 Professional操作系统单击下一步按钮
6.在Name the Virtual Machine对话框中为新建的虚拟机命名并且选择它的保存路径
7.在Processors选项区域中选择虚拟机中CPU的数量如果选择Two主机需要有两个CPU或者是超线程的CPU
8.在Memory for the Virtual Machine页中设置虚拟机使用的内存通常情况下对于Windows 98及其以下的系统可以设置64MB对于Windows 2000/XP最少可以设置96MB对于Windows 2003最低为128MB对于Windows Vista虚拟机最低512MB
9.在Network Type页中选择虚拟机网卡的联网类型
选择第一项使用桥接网卡VMnet0虚拟网卡表示当前虚拟机主机指运行VMware Workstation软件的计算机在同一个网络
选择第二项使用NAT网卡VMnet8虚拟网卡表示虚拟机通过主机单向访问主机及主机之外的网络主机之外的网络中的计算机不能访问该虚拟机
选择第三项只使用本地网络VMnet1虚拟网卡表示虚拟机只能访问主机及所有使用VMnet1虚拟网卡的虚拟机主机之外的网络中的计算机不能访问该虚拟机也不能被该虚拟机所访问
选择第四项没有网络连接表明该虚拟机与主机没有网络连接
10.在Select I/O Adapter Type页中选择虚拟机的SCSI卡的型号通常选择默认值即可
11.在Select a Disk页中选择Create a new virtual disk创建一个新的虚拟硬盘
12.在Select a Disk Type页中选择创建的虚拟硬盘接口方式通常选择默认值即可
13.在Specify Disk Capacity页中设置虚拟磁盘大小对于一般的使用来说选择默认值即可
14.在Specify Disk File页的Disk file选项区域内设置虚拟磁盘文件名称通常选择默认值即可然后单击完成按钮
安装操作系统

注意事项

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

VMware新功能

VMware在最新的Workstation 7中添加了对Aero Glass等功能的支持
除了支持Aero效果VMWare Workstation 7还新增了很多功能下面列出部分新增功能
*完善了对3D的支持
*支持最新Windows 7 WDDM驱动
*支持vSphere 4.0和ESX
*可直接使用虚拟机进行打印
*AutoProtect
*支持对虚拟机进行加密
*支持IPv6ALSA
*虚拟磁盘可扩展无需使用额外软件Java虚拟机

Java

Java虚拟机JVM是Java Virtual Machine的缩写它是一个虚构出来的计算机是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的Java虚拟机有自己完善的硬件架构如处理器堆栈寄存器等还具有相应的指令系统
为什么要使用Java虚拟机 
Java语言的一个非常重要的特点就是与平台的无关性而使用Java虚拟机是实现这一特点的关键一般的高级语言如果要在不同的平台上运行至少需要编译成不同的目标代码而引入Java语言虚拟机后Java语言在不同平台上运行时不需要重新编译Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码)就可以在多种平台上不加修改地运行Java虚拟机在执行字节码时把字节码解释成具体平台上的机器指令执行
谁需要了解Java虚拟机
Java虚拟机是Java语言底层实现的基础对Java语言感兴趣的人都应对Java虚拟机有个大概的了解这有助于理解Java语言的一些性质也有助于使用Java语言对于要在特定平台上实现Java虚拟机的软件人员Java语言的编译器作者以及要用硬件芯片实现Java虚拟机的人来说则必须深刻理解Java虚拟机的规范另外如果你想扩展Java语言或是把其它语言编译成Java语言的字节码你也需要深入地了解Java虚拟机
Java虚拟机支持的数据类型
Java虚拟机支持Java语言的基本数据类型如下:
byte://1字节有符号整数的补码
short://2字节有符号整数的补码
int://4字节有符号整数的补码
long://8字节有符号整数的补码
float://4字节IEEE754单精度浮点数
double://8字节IEEE754双精度浮点数
char://2字节无符号Unicode字符
几乎所有的Java类型检查都是在编译时完成的上面列出的原始数据类型的数据在Java执行时不需要用硬件标记操作这些原始数据类型数据的字节码(指令)本身就已经指出了操作数的数据类型例如iaddladdfadd和dadd指令都是把两个数相加其操作数类型别是intlongfloat和double虚拟机没有给boolean(布尔)类型设置单独的指令boolean型的数据是由integer指令包括integer返回来处理的boolean型的数组则是用byte数组来处理的虚拟机使用IEEE754格式的浮点数不支持IEEE格式的较旧的计算机在运行Java数值计算程序时可能会非常慢
虚拟机支持的其它数据类型包括
object//对一个Javaobject(对象)的4字节引用
returnAddress//4字节用于jsr/ret/jsr-w/ret-w指令
注:Java数组被当做object处理
虚拟机的规范对于object内部的结构没有任何特殊的要求在Sun公司的实现中对object的引用是一个句柄其中包含一对指针一个指针指向该object的方法表另一个指向该object的数据用Java虚拟机字节码表示的程序应该遵守类型规定Java虚拟机的实现应拒绝执行违反了类型规定的字节码程序Java虚拟机由于字节码定义的限制似乎只能运行于32位地址空间的机器上但是可以创建一个Java虚拟机它自动地把字节码转换成64位的形式从Java虚拟机支持的数据类型可以看出Java对数据类型的内部格式进行了严格规定这样使得各种Java虚拟机的实现对数据的解释是相同的从而保证了Java的与平台无关性和可
移植性

体系结构

Java虚拟机由五个部分组成:一组指令集一组寄存器一个栈一个无用单元收集堆(Garbage-collected-heap)一个方法区域这五部分是Java虚拟机的逻辑成份不依赖任何实现技术或组织方式但它们的功能必须在真实机器上以某种方式实现
Java虚拟机支持大约248个字节码每个字节码执行一种基本的CPU运算例如把一个整数加到寄存器子程序转移等Java指令集相当于Java程序的汇编语言
Java指令集中的指令包含一个单字节的操作符用于指定要执行的操作还有0个或多个操作数提供操作所需的参数或数据许多指令没有操作数仅由一个单字节的操作符构成
虚拟机的内层循环的执行过程如下
do{
取一个操作符字节;
根据操作符的值执行一个动作;
}while(程序未结束)
由于指令系统的简单性使得虚拟机执行的过程十分简单从而有利于提高执行的效率指令中操作数的数量和大小是由操作符决定的如果操作数比一个字节大那么它存储的顺序是高位字节优先例如一个16位的参数存放时占用两个字节其值为:
第一个字节*256+第二个字节字节码指令流一般只是字节对齐的指令tabltch和lookup是例外在这两条指令内部要求强制的4字节边界对齐

寄存器

Java虚拟机的寄存器用于保存机器的运行状态与微处理器中的某些专用寄存器类似
Java虚拟机的寄存器有四种
optop:指向操作数栈顶端的指针
frame:指向当前执行方法的执行环境的指针
vars:指向当前执行方法的局部变量区第一个变量的指针
Java虚拟机
Java虚拟机是栈式的它不定义或使用寄存器来传递或接受参数其目的是为了保证指令集的简洁性和实现时的高效性(特别是对于寄存器数目不多的处理器)
所有寄存器都是32位的

Java虚拟机的栈有三个区域局部变量区运行环境区操作数
(1)局部变量
每个Java方法使用一个固定大小的局部变量集它们按照与vars寄存器的字偏移量来寻址局部变量都是32位的长整数和双精度浮点数占据了两个局部变量的空间却按照第一个局部变量的索引来寻址(例如一个具有索引n的局部变量如果是一个双精度浮点数那么它实际占据了索引n和n+1所代表的存储空间)虚拟机规范并不要求在局部变量中的64位的值是64位对齐的虚拟机提供了把局部变量中的值装载到操作数栈的指令也提供了把操作数栈中的值写入局部变量的指令
(2)运行环境区
在运行环境中包含的信息用于动态链接正常的方法返回以及异常传播
运行环境包括对指向当前类和当前方法的解释器符号表的指针用于支持方法代码的动态链接方法的class文件代码在引用要调用的方法和要访问的变量时使用符号动态链接把符号形式的方法调用翻译成实际方法调用装载必要的类以解释还没有定义的符号并把变量访问翻译成与这些变量运行时的存储结构相应的偏移地址动态链接方法和变量使得方法中使用的其它类的变化不会影响到本程序的代码
·正常的方法返回
如果当前方法正常地结束了在执行了一条具有正确类型的返回指令时调用的方法会得到一个返回值执行环境在正常返回的情况下用于恢复调用者的寄存器并把调用者的程序计数器增加一个恰当的数值以跳过已执行过的方法调用指令然后在调用者的执行环境中继续执行下去
·异常和错误传播
异常情况在Java中被称作Error(错误)或Exception(异常)是Throwable类的子类在程序中的原因是:①动态链接错如无法找到所需的class文件②运行时错如对一个空指针的引用
·程序使用了throw语句
当异常发生时Java虚拟机采取如下措施
·检查与当前方法相联系的catch子句表每个catch子句包含其有效指令范围能够处理的异常类型以及处理异常的代码块地址
·与异常相匹配的catch子句应该符合下面的条件:造成异常的指令在其指令范围之内发生的异常类型是其能处理的异常类型的子类型如果找到了匹配的catch子句那么系统转移到指定的异常处理块处执行;如果没有找到异常处理块重复寻找匹配的catch子句的过程直到当前方法的所有嵌套的catch子句都被检查过
·由于虚拟机从第一个匹配的catch子句处继续执行所以catch子句表中的顺序是很重要的因为Java代码是结构化的因此总可以把某个方法的所有的异常处理器都按序排列到一个表中对任意可能的程序计数器的值都可以用线性的顺序找到合适的异常处理块以处理在该程序计数器值下发生的异常情况
·如果找不到匹配的catch子句那么当前方法得到一个"未截获异常"的结果并返回到当前方法的调用者好像异常刚刚在其调用者中发生一样如果在调用者中仍然没有找到相应的异常处理块那么这种错误传播将被继续下去如果错误被传播到最顶层那么系统将调用一个缺省的异常处理
(3)操作数栈区机器指令只从操作数栈中取操作数对它们进行操作并把结果返回到栈中选择栈结构的原因是在只有少量寄存器或非通用寄存器的机器(如Intel486)上也能够高效地模拟虚拟机的行为操作数栈是32位的它用于给方法传递参数并从方法接收结果也用于支持操作的参数并保存操作的结果例如iadd指令将两个整数相加相加的两个整数应该是操作数栈顶的两个字这两个字是由先前的指令压进堆栈的这两个整数将从堆栈弹出相加并把结果压回到操作数栈中
每个原始数据类型都有专门的指令对它们进行必须的操作每个操作数在栈中需要一个存储位置除了long和double型它们需要两个位置操作数只能被适用于其类型的操作符所操作例如压入两个int类型的数如果把它们当作是一个long类型的数则是非法的在Sun的虚拟机实现中这个限制由字节码验证器强制实行但是有少数操作(操作符dupe和swap)用于对运行时数据区进行操作时是不考虑类型的

无用单元收集堆

Java的堆是一个运行时数据区类的实例(对象)从中分配空间Java语言具有无用单元收集能力:它不给程序员显式释放对象的能力Java不规定具体使用的无用单元收集算法可以根据系统的需求使用各种各样的算法

方法区

方法区与传统语言中的编译后代码或是Unix进程中的正文段类似它保存方法代码(编译后的java代码)和符号表在当前的Java实现中方法代码不包括在无用单元收集堆中但计划在将来的版本中实现每个类文件包含了一个Java类或一个Java界面的编译后的代码可以说类文件是Java语言的执行代码文件为了保证类文件的平台无关性Java虚拟机规范中对类文件的格式也作了详细的说明其具体细节请参考Sun公司的Java虚拟机规范

云中配置

部署法则

启动和停止虚拟机是使用云计算资源的例行公事在云中部署虚拟机有两个基本的选项客户可以拷贝一个预先配置好的虚拟机镜像也被称为最终版或者他们可以按照需求装配一个自定义的虚拟机镜像
要启用一个虚拟机首先要从云目录中选择一个机器镜像当部署一个跟Apache Web或者是Jboss应用服务器有关的应用时最好选择一个预先装好这些组件的Linux镜像如果你是一个.NET程序员最好选择一个预先安装并配置好开发工具的Windows操作系统除了选择一个安装好必备软件的虚拟机镜像之外还必须确认这些软件是最新的并且打过补丁一旦你选择好了镜像下一步就是在云中部署这个镜像

完成版镜像

使用最终版镜像有几大优势最主要的是它可以保证虚拟机的一致性此外以一个已有的镜像开始可以节省很多精力和时间终端客户不必去关心怎么安装程序库或者附加的包他们可以依靠云管理员来维护最终版镜像
终端用户拥有的选项受限是这个方法的缺陷镜像目录通常会包含常用的镜像而不是一些不常用的组件集合对于一个专业的虚拟机镜像你可以选择一个最终版并且安装所需的组件如果一个终端用户经常部署自定义的镜像那么他必须保留一个镜像的副本但是这就意味着用户必须自己打补丁从而失去了使用最终版的优势
考虑专业的云中实例并不是很重要的情况你的网页应用已经在你配置负载均衡后的环境中运行了几周如果你的应用突然发生了中断你可能会考虑为负载均衡集群增加几台服务器在这种情况下你需要在集群中运行完全相同的镜像以保持一致性如果你以前重做过这个镜像那么系统中就可能出现不同版本的组件这种情况也会发生在一个组件在两次部署期间发布了新版本

按需装配

每次部署新镜像时创建自定义镜像使终端用户可以自己安装所需的组件云用户喜欢以一个基础系统镜像开始然后安装应用程序组件数据库应用服务器和web服务器然而如果没有工具的帮助创建所需的云对于经常性的部署是不切实际的在这种情况下应考虑使用配置管理工具例如Chef或者Puppet它们允许你指定你想包含在镜像中的组件如果最新版本的应用和补丁对于镜像至关重要按需装配它们是最好的选择举例来说如果你有一份数据库服务器的标准配置创建一个Chef或者Puppet脚本来创建镜像可以保证你拥有最新版本的组件
按需装配还有助于在多服务器中保持一致性因为数据库管理员不太喜欢点对点的为一个过时的最终版镜像打补丁
这两种部署云中虚拟机方法创建最终版镜像和创建按需迭代镜像并不是相互独立的当举例来说当你需要创建一个服务器集群时你应该建立脚本来装配一个自定义的镜像并使它成为最终版首先通过配置管理工具创建多个虚拟机镜像然后使用这个镜像创建多个虚拟机实例在这个场景中只要你需要为集群添加新的虚拟服务器就要保留最终版镜像
这里并没有单一的途径来在云环境中装配和部署镜像最终版镜像在以一致性为主的案例中运作良好而装配按需版本则可以保证你的环境中运行着最新的组件

私有配置

行业对话已经超越了解什么是云计算企业IT环境中要决定如何能更好的部署它这种演变与过去的虚拟化候选人的辩论相似懂得如何确定物理服务器能否成为一个好的虚拟机
1.云负荷需要什么样的网络呢如虚拟服务器的线程内存的需求网络资源的总负荷私有云中的应用程序的消耗这些都是极为重要的
繁忙的网络资源负荷的需求在局域网中链接到其他服务器这样是不会制造出最好的云候选者把这些负荷放入到私有云中可能会造成带宽或延迟等问题会影响云的整体性能衡量云服务器和位于本地数据中心的其他服务器的网络利用率
2还有什么其他服务与私有云互连吗考虑到云负荷与其他网络中的云工作量负荷之间的交流例如几乎所有基于Windows的IT服务都倾向于Active Directory认证因为桌面操作系统都是这样做的域控制者必须处理大量的通信所以把它们完全转移到云中可能是一个坏主意
另外服务与本地数据中心的其他服务有一些交互不太可能因为位置的迁移而受影响延迟影响不大查看虚拟机中的互操作是一个好的办法可以找到云中就绪的资源
3私有云中的工作负荷和其他工作负荷之间是否存在明显的分隔例如硬线隔离云服务可以作为良好的云候选人和坏的之间的分隔线孤立服务可以制造出杰出的云候选人例如那些服务是否位于你的DMZ中按照设计DMZ有硬线环绕着它的服务尤其是防火墙中可以把它在网络和局域网中分隔出来分隔意味着你可以非常容易的把所有内容从DMZ移到云中DMZ可以很明确的划分什么可以制造出优秀的私有云候选者结合不同云服务DMZ服务之间的虚拟防火墙的隔离很有可能在云中获得成功
4云服务可以友好的复制吗一些IT服务已经在心里开始设计复制了设计通信是为了支持延迟带宽的类型你会在局域网与云通信中体验这些服务可能包括异地备份服务器故障转移或者其他服务的协议为不能满足局域网速度的网络做准备
5如果私有云中的数据妥协你会多痛苦呢最后的检查确实是早期围绕云安全和数据所有权的关注的一个直接结果选择把虚拟机放到云中的时候围绕数据的安全所有权和管理问题必须是要考虑的因素一些虚拟机和某些IT资源与数据一起工作如果丢失或者妥协会为企业带来明显的痛苦
注意一个潜在的启用云虚拟机数据类型可以处理如果丢失或者暴露数据的价值大于迁移到云中那么最好把虚拟机放在数据中心
为私有云选择正确的虚拟机你要分析每一个虚拟机和服务所用的资源你也需要检查把这些资源移向云中的风险有了正确的调查就可以找到最好的资源和服务并且可以相对容易的部署到私有云中

杀毒技术

虚拟机并不是新技术操作系统已经成为许多评测人员和计算机病毒分析人员必需工作条件而将虚拟机技术应用到杀毒方面却是一个杀毒业界一直在追求和探索的课题虚拟机杀毒技术即是在电脑中创造一个虚拟CPU环境将病毒在虚拟环境中激活根据其行为特征从而判断是否是病毒有专家认为所谓虚拟机技术就是用软件先虚拟一套运行环境让病毒先在该虚拟环境下运行从而观察病毒的执行过程这个技术主要用来应对加壳和加密的病毒因为这两类病毒在执行时最终还是要自身脱壳和解密的这样杀毒软件就可以在其现出原形之后通过特征码查毒法对其进行查杀

卸载

相信很多的朋友在虚拟机VMware的使用过程中都会遇到安装的VMware无法卸载或者想升级VMware时出现错误信息如果你还保留了虚拟机VMware的安装程序那么再次重新安装时就会出现Modify/Change更改Repair修复和Remove移除这里选择Remove移除即可
$firstVoiceSent
- 来自原声例句
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定