装机吧 - 系统装机大师 最简单易用的系统重装工具,让我们一起装机吧!支持 Windows XP、7、8、 10 原版镜像安装。支持 U 盘 PE 制作、PE 联网等多种功能选择。
  • 立即下载
  • 已下载:1000000+
    版本:12.6.48.1900 | 大小:31MB
当前位置:首页 > 重装系统
您的位置:首页 > 重装系统
虚拟机和虚拟主机有什么区别(虚拟机与主机的区别)
装机吧 2023年02月11日 21:30:27

VPS、虚拟机器、云主机,这三个到底有什么区别?

VPS、虚拟机器、云主机,这三个到底有什么区别?

80分呢 那就好好跟你解释下吧

虚拟机器- 是指一台伺服器虚拟出很多使用者给人用 最早的由需求引发的一种

原始的解决方案 实际使用时问题很多

vps - 就是一种强化的虚拟机器 从使用者隔离 记忆体分配 频宽控制解决了很多

虚拟机器实际使用的问题 但还是受到很多底层技术的限制很多需求不能

实现 比如cpu使用的真正分配 使用者资源的扩充套件等等

云主机 - 其实是云这个概念 发展出很多运用的一种 如果说云主机是云 那

么虚拟机器 vps 就是蛋糕 2块云可以合成1块大云 2块蛋糕放在一起还是2块

蛋糕 这是概念上的问题

对于使用者来说 高资源利用率 从底层彻底的使用者隔离 可随时任意扩充套件

的资源 vps虚拟机器 每台机器都要有5%-10%的资源用来、执行底层系统和

资源分配软体 而云主机 一个云需要有一台机器的5%的资源来进行资源分配

就可以了 最高能达到99%的资源利用

区别方法 虚拟机器不说了 vps就是可以有独立ip的虚拟机器 云主机的最大特点

就是可以无限扩充套件 能任意选择配置 恩 能选16个以上cpu的 就肯定是云主

机了

国内市场还没有真正的云主机 目前只有西门子 腾讯部分游戏伺服器 都是

内部使用

主机 云主机 虚拟空间 虚拟主机 到底有什么区别?

虚拟主机就是“共享主机”,就是一台伺服器上有许多网站,大家共享这台伺服器的硬体和频宽。

"云主机"(Cloud hosting)可以看成是新一代的共享主机。 首先,主机公司将它的硬体和网路线路,做成一朵"云",然后提供一些通向这朵"云"的网路介面API,供客户使用。这时,每个客户共享的不再是某一台特定的伺服器,而是云里的所有伺服器。如果要购买云虚拟主机,国内这块做的好是时代互联。

新网的vps和云主机到底有什么区别呢?

哈哈,选我吧!现在即将进入一个云伺服器的时代!国内太平洋的臻云是做的不错的!给你比较一下云伺服器和传统伺服器的区别吧!

1、从技术方面来讲:云伺服器使用了云端计算技术,而云计算技术,整合了计算、网路、储存等各种软体和硬体技术。独立伺服器,就是独立的了,不会整合这些资源。

2、从安全性方面来讲:云伺服器具有天然防ARP攻击和MAC欺骗,快照备份,资料永久不丢失。而独立伺服器则不具有这方面的功能;

3、从可靠性来讲:云伺服器是基于伺服器丛集的,因此硬体冗余度较高,故障率低;而独立伺服器则相对来说硬体冗余较少,故障率较高;

4、从灵活性方面来讲:使用者可以线上实时增加自己的配置,可扩充套件空间较大;而独立伺服器则有这方面的局限性,如果有新的应用,只能再买一台了。

5、从效能的角度来看:云伺服器是同等配置独立伺服器计算能力的4倍,可满足高效能运算的要求;

6、从稳定性上看,云伺服器可以故障自动迁移,意思是如果一台云伺服器出现故障,其上面的应用就自动迁移到其他云伺服器上了。独立伺服器就不存在这功能了,宕了就宕了。

7、从节能上看,云伺服器基于云端计算的自动迁移技术,意即夜间,物理伺服器的利用率不高,自动迁移技术会把应用集中到几台物理伺服器上,其他的物理伺服器就可以休眠了,这样就节能了。

云主机,虚拟主机,vps之间有什么区别

虚拟主机是伺服器划分的一块储存空间,只能进行资源的储存和访问

云主机和其他普通主机基本概念相同,就是云主机是新一代的主机租用服务,它整合了高效能伺服器与优质网路频宽,有效解决了传统主机租用价格偏高、服务品质参差不齐等缺点

VPS是伺服器划分的一块 但是有独立的作业系统 可以理解为是一个小电脑

vps与虚拟机器主机有什么区别

vps是独立的主机吧,有一个独立的ip

虚拟机器是一台主机开几个web伺服器,共享一个ip

虚拟主机和vps主机和云主机有什么区别?

你好.我来解答下你的问题.

VPS和云主机是类似的两个东西.他们都是虚拟的伺服器.有独立的IP.记忆体.硬碟.频宽等.在功能与使用上与伺服器一模一样.使用者可以远端登入管理.也可以执行各种软体以及配置各种网站环境.不同的是云主机与VPS的实现技术不同.相比之下.云主机有资料自动同步备份功能.无论是在稳定性还是安全方面都比VPS更加强大.他们主要是针对中小规模的网站使用.

虚拟主机是利用虚拟化技术在伺服器硬碟上划分出来的一部分容量.共享的伺服器IP和频宽.没有远端桌面.也没有独立的作业系统.使用者只有一个FTP许可权.通过FTP来上传以及下载资料.与前两者相比.虚拟主机无论是功能还是安全方面都要差很多.主要是针对小型网站使用.当然.相比之下虚拟主机的费用也比云主机和VPS要便宜一些.

海腾资料杨闯为你解答.若有相关问题需要帮忙的可以来找我.

vps主机与虚拟机器有什么区别?

相对来说,容器技术比虚拟机器技术硬体使用效率更高,更易于超卖,所以一般来说容器VPS的价格都高于虚拟机器VPS的价格。

VPS(Virtual Private Server 虚拟专用伺服器)技术,将一部伺服器分割成多个虚拟专享伺服器的优质服务。实现VPS的技术分为容器技术,和虚拟化技术 。在容器或虚拟机器中,每个VPS都可分配独立公网IP地址、独立作业系统、实现不同VPS间磁碟空间、记忆体、CPU资源、程序和系统配置的隔离,为使用者和应用程式模拟出“独占”使用计算资源的体验。VPS可以像独立伺服器一样,重灌作业系统,安装程式,单独重启伺服器。VPS为使用者提供了管理配置的自由,可用于企业虚拟化,也可以用于IDC资源租用。

IDC资源租用,由VPS提供商提供。不同VPS提供商所使用的硬体VPS软体的差异,及销售策略的不同,VPS的使用体验也有较大差异。尤其是VPS提供商超卖,导致实体伺服器超负荷时,VPS效能将受到极大影响。

这些VPS主机以最大化的效率共享硬体、软体许可证以及管理资源.。每个VPS主机都可分配独立公网IP地址、独立作业系统、独立超大空间、独立记忆体、独立CPU资源、独立执行程式和独立系统配置等. VPS主机使用者除了可以分配多个虚拟主机及无限企业邮箱外, 更具有独立主机功能, 可自行安装程式, 单独重启主机。

虚拟主机和云主机的区别是什么

1、资源分配:虚拟主机的资源被限制,需要与其他虚拟主机分享,哪怕是独享型主机也仍旧需要与其他主机分享整个服务器资源;云主机的资源是独享,可以拥有整个服务器资源分配。

2、扩展性:虚拟主机不支持弹性扩展、按需付费,云服务商一般配置固定的虚拟主机型号来出售,用户可以通过升级不同型号来实现弹性配置;云主机支持全面的弹性扩展,按需付费,自主性高。

3、环境搭建:虚拟主机不需要搭建环境,云服务商已经配置好各种操作系统、建站程序以供选择,用户只需鼠标点击即可实现;云主机需要手动配置环境,搭建架构。

4、远程控制:虚拟主机由于技术原因,无法提供远程桌面功能,仅能通过控制面板系统、FTP软件等方式来管理虚拟主机的功能、文件等;云主机可远程桌面管理,方式灵活多样。

5、操作性:虚拟主机操作简单,不懂技术的站长都可以使用,大部分功能集成在控制面板内;云主机操作复杂,需要有一定的服务器运维技术、服务器搭建技术等,对不懂技术站长会非常吃力。

虚拟机和云主机的区别是什么?

虚拟主机就是利用网络空间技术,把一台服务器分成许多的"虚拟"的主机,每一台网络空间都具有独立的域名和IP地址,具有完整的Internet服务器功能。网络空间之间完全独立,在外界看来,每一台网络空间和一台独立的主机完全一样。效果一样,但费用却大不一样了。由于多台网络空间共享一台真实主机的资源,每个网络空间用户承受的硬件费用、网络维护费用、通信线路的费用均大幅度降低,Internet真正成为人人用得起的网络!。

许多企业建立网站都采用这种方法,这样不仅大大节省了购买机器和租用专线的费用,同时也不必为使用和维护服务器的技术问题担心,更不必聘用专门的管理人员。

云服务器又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品。云服务器是一种类似VPS服务器的虚拟化技术。也可以理解是VPS的升级版.他与VPS还有所不同是,它是在一组集群服务器上划分出来的多个类似独立主机的部分.集群中的每台服务器上面会有云主机的一个镜像.当其中一台机器出故障时.可以自动跳转到其他机器上面去访问.所以理论上来讲.只要不是所有的机器都出故障.就不会影响到云主机的访问.所以云主机在安全与稳定性方面比VPS更强大一些.

云服务器和虚拟主机都是通过云计算整合了高性能服务器与优质网络带宽,有效解决了传统主机租用价格偏高、服务品质参差不齐等缺点.

云服务器拥有服务器所有的权限和功能,可以和独立服务器相媲美的,而且在新麦互联购买价格还非常优惠,在购买优惠空间时候说不定还能淘到特价域名。

云虚拟主机,就是从云服务器又近一步划分,通过虚拟主机管理软件,把云服务器分割成100M 200M等等型号的小型空间,是中小型企业建站的最佳选择!

虚拟机和云主机的区别

[主机租用]业务是面向具备一定购买力,且比较关注短期投资回报率的用户推出的传统业务。用户无需在使用过程中一次性支付设备采购成本,因此具备一定的成本优势。但租用中需要确保是品牌机,并选择优质机房,否则容易故障频发。租机除了租金还需支付押金。租机一般不会提供备机,另外还需要站长懂得自主维护,如果代维会增加运维成本,故障恢复也较慢。传统租用主机一般不提供远程控制卡,无法远程安装系统。

[虚拟主机]采用操作系统虚拟化技术,虚拟化效率高,虚拟化License费用低,能共享操作系统,不提供真正的Root访问,也无法运行性能要求较高的应用无物理隔离,只适用于小规模并发访问。一个客户的ARP欺骗、病毒、应用程序损坏以及宿主操作系统升级不当等安全问题会影响到同一台物理主机上的所有客户。成本均较为低廉,但服务品质往往缺乏保障,仅限于浏览量较少的个人网站或以静态页面为主的小型企业网站。如用户网站或主机应用偏重于性能、可靠以及满足较大访问量需求时,虚拟主机方式通常难以很好的满足。

[云主机]的云计算节点部署的服务器全部采用高端的品牌服务器,每个用户都是独占主机资源;良好的物理隔离,确保主机不会因其他用户主机故障相互影响;覆盖全国的优质IDC机房,确保流畅的用户体验。实时提供OS、RAID等状态信息,内置监控报警等功能,内置防ARP欺骗,分布式部署可减缓DDOS攻击等,用户可灵活选择操作系统和软件,随时可更新打补丁。通过Web页面集中管理租用的分布在多个云计算节点的云主机。

【云主机、虚拟主机和独立服务器的比喻】

VPS

如果将VPS比作一个水龙头,服务器的计算和存储资源则是一根水管,水管上有很多水龙头。你需要付出租用这个水龙头的费用,而它的水流量是有限的。如果你想获得更大的水流,那么你需要租用更多的龙头,同时,如果所有的龙头都在流水,那么每个龙头的水流量都会降低。

云主机

而云计算下的主机,你所获得的是一个流量可大可小的龙头,服务器由一台变成一组,就像一个水管变成很多条水管组成的大水管。当你需要更大的水流时,可以直接控制你的龙头加大水流,同时即便所有的水管都在流水,也不会影响你的水流。更有甚者,你需要付出的费用,不再是租用水管产生的,而是为你所需要的水流量。

独立服务器

至于自己架设或者租用整个服务器,目前来看经济型就差很多了,因为你要连水龙头和水管都买下来,不够用的时候还要再买。我们都知道服务器资源通常使用率也就20%,除非业务非常稳定,不会明显增长,或者特别不差钱,可以考虑自建。

wayun.cn

如需了解更多,请访问蛙云官网wayuncn

专业领域十二载,倾情奉献

一次购买,终生陪伴

虚拟主机是什么?VPS又是什么?有区别吗?

1、什么是虚拟主机

所谓虚拟主机就是我们常说的共享主机,多数情况下站长都是从“共享主机”开始建站的。一台服务器链接很多网站,彼此共享这台服务器的硬件设置和宽带资源。因其价格便宜,比较适合建站初期使用。

2、什么是VPS主机

所谓VPS主机,可以将一台服务器划分为多个虚拟专享服务器,每个VPS主机都可以独立分配IP地址、操作系统、CPU资源等,同时,VPS拥有系统的root权限,能够任意切割磁盘空间大小、分配用户权限等。价格相比虚拟主机较贵,技术要求也比较高。

3、两者有什么区别?

1)在功能上

VPS主机相比较虚拟主机来说,更灵活一些,运营和管理也没有太多的局限性,性能也更高一些,如果你的网站流量数据比较大,那么可以选择VPS的主机。

2)在操作上

上面我们也提到了,虚拟主机因为是共享一个“服务器”,比较适合小白,vps能够自由分配ip地址等自身的独特性,对技术要求相当高。同时,vps主机可以作为虚拟服务器自建操作系统,虚拟主机不可以。

3)资源占用不同

vps独享硬盘资源,用户对服务器全权掌控,虚拟主机提供的则是硬件资源共享功能,用户只有部分掌控权。

4)软件硬件隔离

VPS能够隔离软件和硬件,虚拟主机则不行。相对来说,VSP主机安全性更高一些。

虚拟主机与虚拟机与空间的区别

平常说的虚拟主机和空间都值得是一个东西 用来做网站的 就是存储网页的 说法不一样而已

虚拟机是 下面说的

虚拟化分类

虚拟化浪潮

VMware虚拟化

微软虚拟化

IBM虚拟化

HP虚拟化

SWsoft虚拟化

SUN虚拟化

Intel虚拟化

AMD虚拟化

Java虚拟机

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

目前流行的虚拟机软件有VMware(VMWare ACE)和Virtual PC,它们都能在Windows系统上虚拟出多个计算机,用于安装Linux、OS/2、FreeBSD等其他操作系统。微软在2003年2月份收购Connectix后,很快发布了Microsoft Virtual PC 2004。但出于种种考虑,新发布的Virtual PC 2004已不再明确支持Linux、FreeBSD、NetWare、Solaris等操作系统,只保留了OS/2,如果要虚拟一台Linux计算机,只能自己手工设置。相比而言,VMware不论是在多操作系统的支持上,还是在执行效率上,都比Virtual PC 2004明显高出一筹,这也是本文选择它的理由之一。

电脑一台变两台,学用Linux不再有后顾之忧

VMware 4.5有Workstation、GSX server等多种版本,其中Windows版的Workstation应用最广,本文即以它为基础进行各种实战演习。

虚拟机的概念比较宽泛,通常人们接触到的虚拟机概念有VMware那样的硬件模拟软件,也有JVM这样的介于硬件和编译程序之间的软件。这里所指的是后者。

虚拟机是一个抽象的计算机,和实际的计算机一样,具有一个指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。

Sun xVM VirtualBox又发新版本:2.1.0。

2.1.0不像此前2.0.X一样主要是修正Bug和完善原有功能,这个版本增加了许多新特性。强烈建议VBox的用户们更新!

在官方网站的ChangeLog上,我们可以看到这个版本的主要更新信息:

* 支持Max OS X客户机的硬件虚拟化技术(VT-x和AMD-V);

* 支持在32位操作系统上模拟64位客户机!(实验性质,具体看用户手册);

* 支持Intel Nehalem虚拟化增强技术(EPT和VPID,具体看用户手册);

* 通过OpenGL支持3D加速!(看用户手册4.8章);

还有很多更新,但是光是以上四样就有足够地理由让用户去升级了!

VirtualBox终于支持了通过OpenGL实验的的3D加速,并且率先支持了在32位的操作系统上模拟64位的客户机(需要64位CPU支持)。这意味着虚拟机平台的限制更少了,你可以在你的x86平台上模拟AMD64!

针对“OpenGL 3D加速”这一项,我了解到,这项特性目前只在Windows系统上可用,并且只能实现OpenGL加速,而没有Direct3D加速。这意味着,你已经可以在Windows虚拟机运行一些OpenGL的3D应用,而Direct3D就要稍微等等了。

还等什么呢,这是一个进步相当大的版本。赶紧下载试用吧:

个人为什么使用虚拟机

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

2. 保证主机的快速运行,减少不必要的垃圾安装程序,偶尔使用的程序,或者测试用的程序在虚拟机上运行;

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

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

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

[编辑本段]Java虚拟机

一、什么是Java虚拟机

Java虚拟机(JVM)是Java Virtual Machine的缩写,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。

1.为什么要使用Java虚拟机

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

2.谁需要了解Java虚拟机

Java虚拟机是Java语言底层实现的基础,对Java语言感兴趣的人都应对Java虚拟机有个大概的了解。这有助于理解Java语言的一些性质,也有助于使用Java语言。对于要在特定平台上实现Java虚拟机的软件人员,Java语言的编译器作者以及要用硬件芯片实现Java虚拟机的人来说,则必须深刻理解Java虚拟机的规范。另外,如果你想扩展Java语言,或是把其它语言编译成Java语言的字节码,你也需要深入地了解Java虚拟机。

3.Java虚拟机支持的数据类型

Java虚拟机支持Java语言的基本数据类型如下:

byte://1字节有符号整数的补码

short://2字节有符号整数的补码

int://4字节有符号整数的补码

long://8字节有符号整数的补码

float://4字节IEEE754单精度浮点数

double://8字节IEEE754双精度浮点数

char://2字节无符号Unicode字符

几乎所有的Java类型检查都是在编译时完成的。上面列出的原始数据类型的数据在Java执行时不需要用硬件标记。操作这些原始数据类型数据的字节码(指令)本身就已经指出了操作数的数据类型,例如iadd、ladd、fadd和dadd指令都是把两个数相加,其操作数类型别是int、long、float和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虚拟机体系结构

Java虚拟机由五个部分组成:一组指令集、一组寄存器、一个栈、一个无用单元收集堆(Garbage-collected-heap)、一个方法区域。这五部分是Java虚拟机的逻辑成份,不依赖任何实现技术或组织方式,但它们的功能必须在真实机器上以某种方式实现。

1.Java指令集

Java虚拟机支持大约248个字节码。每个字节码执行一种基本的CPU运算,例如,把一个整数加到寄存器,子程序转移等。Java指令集相当于Java程序的汇编语言。

Java指令集中的指令包含一个单字节的操作符,用于指定要执行的操作,还有0个或多个操作数,提供操作所需的参数或数据。许多指令没有操作数,仅由一个单字节的操作符构成。

虚拟机的内层循环的执行过程如下:

do{

取一个操作符字节;

根据操作符的值执行一个动作;

}while(程序未结束)

由于指令系统的简单性,使得虚拟机执行的过程十分简单,从而有利于提高执行的效率。指令中操作数的数量和大小是由操作符决定的。如果操作数比一个字节大,那么它存储的顺序是高位字节优先。例如,一个16位的参数存放时占用两个字节,其值为:

第一个字节*256+第二个字节字节码指令流一般只是字节对齐的。指令tabltch和lookup是例外,在这两条指令内部要求强制的4字节边界对齐。

2.寄存器

Java虚拟机的寄存器用于保存机器的运行状态,与微处理器中的某些专用寄存器类似。

Java虚拟机的寄存器有四种:

pc:Java程序计数器。

optop:指向操作数栈顶端的指针。

frame:指向当前执行方法的执行环境的指针。

vars:指向当前执行方法的局部变量区第一个变量的指针。

Java虚拟机

Java虚拟机是栈式的,它不定义或使用寄存器来传递或接受参数,其目的是为了保证指令集的简洁性和实现时的高效性(特别是对于寄存器数目不多的处理器)。

所有寄存器都是32位的。

3.栈

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),用于对运行时数据区进行操作时是不考虑类型的。

4.无用单元收集堆

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

5.方法区

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

喜欢22
热门搜索
相关视频
装机吧在线重装 Window 11 教程
装机吧在线重装 Window 10 教程
猜你喜欢
小米之家可以装电脑系统吗(小米之家可..
2023/02/07
win10进入自动修复模式怎么退出(win10..
2023/02/06
家用电脑玩游戏装什么系统好(家用电脑..
2023/02/11
2021杀毒软件排行榜电脑(2021年最好的..
2023/02/08
重装系统怎么装在d盘(如何给d盘装系统..
2023/02/09
苹果电脑怎么看显卡型号(苹果电脑怎么..
2023/02/09

虚拟机和虚拟主机有什么区别(虚拟机与主机的区别)

分类:重装系统    发布时间: 2023年02月11日 21:30:27
播放 2023年02月11日 21:30:27
虚拟机与主机的区别

VPS、虚拟机器、云主机,这三个到底有什么区别?

VPS、虚拟机器、云主机,这三个到底有什么区别?

80分呢 那就好好跟你解释下吧

虚拟机器- 是指一台伺服器虚拟出很多使用者给人用 最早的由需求引发的一种

原始的解决方案 实际使用时问题很多

vps - 就是一种强化的虚拟机器 从使用者隔离 记忆体分配 频宽控制解决了很多

虚拟机器实际使用的问题 但还是受到很多底层技术的限制很多需求不能

实现 比如cpu使用的真正分配 使用者资源的扩充套件等等

云主机 - 其实是云这个概念 发展出很多运用的一种 如果说云主机是云 那

么虚拟机器 vps 就是蛋糕 2块云可以合成1块大云 2块蛋糕放在一起还是2块

蛋糕 这是概念上的问题

对于使用者来说 高资源利用率 从底层彻底的使用者隔离 可随时任意扩充套件

的资源 vps虚拟机器 每台机器都要有5%-10%的资源用来、执行底层系统和

资源分配软体 而云主机 一个云需要有一台机器的5%的资源来进行资源分配

就可以了 最高能达到99%的资源利用

区别方法 虚拟机器不说了 vps就是可以有独立ip的虚拟机器 云主机的最大特点

就是可以无限扩充套件 能任意选择配置 恩 能选16个以上cpu的 就肯定是云主

机了

国内市场还没有真正的云主机 目前只有西门子 腾讯部分游戏伺服器 都是

内部使用

主机 云主机 虚拟空间 虚拟主机 到底有什么区别?

虚拟主机就是“共享主机”,就是一台伺服器上有许多网站,大家共享这台伺服器的硬体和频宽。

"云主机"(Cloud hosting)可以看成是新一代的共享主机。 首先,主机公司将它的硬体和网路线路,做成一朵"云",然后提供一些通向这朵"云"的网路介面API,供客户使用。这时,每个客户共享的不再是某一台特定的伺服器,而是云里的所有伺服器。如果要购买云虚拟主机,国内这块做的好是时代互联。

新网的vps和云主机到底有什么区别呢?

哈哈,选我吧!现在即将进入一个云伺服器的时代!国内太平洋的臻云是做的不错的!给你比较一下云伺服器和传统伺服器的区别吧!

1、从技术方面来讲:云伺服器使用了云端计算技术,而云计算技术,整合了计算、网路、储存等各种软体和硬体技术。独立伺服器,就是独立的了,不会整合这些资源。

2、从安全性方面来讲:云伺服器具有天然防ARP攻击和MAC欺骗,快照备份,资料永久不丢失。而独立伺服器则不具有这方面的功能;

3、从可靠性来讲:云伺服器是基于伺服器丛集的,因此硬体冗余度较高,故障率低;而独立伺服器则相对来说硬体冗余较少,故障率较高;

4、从灵活性方面来讲:使用者可以线上实时增加自己的配置,可扩充套件空间较大;而独立伺服器则有这方面的局限性,如果有新的应用,只能再买一台了。

5、从效能的角度来看:云伺服器是同等配置独立伺服器计算能力的4倍,可满足高效能运算的要求;

6、从稳定性上看,云伺服器可以故障自动迁移,意思是如果一台云伺服器出现故障,其上面的应用就自动迁移到其他云伺服器上了。独立伺服器就不存在这功能了,宕了就宕了。

7、从节能上看,云伺服器基于云端计算的自动迁移技术,意即夜间,物理伺服器的利用率不高,自动迁移技术会把应用集中到几台物理伺服器上,其他的物理伺服器就可以休眠了,这样就节能了。

云主机,虚拟主机,vps之间有什么区别

虚拟主机是伺服器划分的一块储存空间,只能进行资源的储存和访问

云主机和其他普通主机基本概念相同,就是云主机是新一代的主机租用服务,它整合了高效能伺服器与优质网路频宽,有效解决了传统主机租用价格偏高、服务品质参差不齐等缺点

VPS是伺服器划分的一块 但是有独立的作业系统 可以理解为是一个小电脑

vps与虚拟机器主机有什么区别

vps是独立的主机吧,有一个独立的ip

虚拟机器是一台主机开几个web伺服器,共享一个ip

虚拟主机和vps主机和云主机有什么区别?

你好.我来解答下你的问题.

VPS和云主机是类似的两个东西.他们都是虚拟的伺服器.有独立的IP.记忆体.硬碟.频宽等.在功能与使用上与伺服器一模一样.使用者可以远端登入管理.也可以执行各种软体以及配置各种网站环境.不同的是云主机与VPS的实现技术不同.相比之下.云主机有资料自动同步备份功能.无论是在稳定性还是安全方面都比VPS更加强大.他们主要是针对中小规模的网站使用.

虚拟主机是利用虚拟化技术在伺服器硬碟上划分出来的一部分容量.共享的伺服器IP和频宽.没有远端桌面.也没有独立的作业系统.使用者只有一个FTP许可权.通过FTP来上传以及下载资料.与前两者相比.虚拟主机无论是功能还是安全方面都要差很多.主要是针对小型网站使用.当然.相比之下虚拟主机的费用也比云主机和VPS要便宜一些.

海腾资料杨闯为你解答.若有相关问题需要帮忙的可以来找我.

vps主机与虚拟机器有什么区别?

相对来说,容器技术比虚拟机器技术硬体使用效率更高,更易于超卖,所以一般来说容器VPS的价格都高于虚拟机器VPS的价格。

VPS(Virtual Private Server 虚拟专用伺服器)技术,将一部伺服器分割成多个虚拟专享伺服器的优质服务。实现VPS的技术分为容器技术,和虚拟化技术 。在容器或虚拟机器中,每个VPS都可分配独立公网IP地址、独立作业系统、实现不同VPS间磁碟空间、记忆体、CPU资源、程序和系统配置的隔离,为使用者和应用程式模拟出“独占”使用计算资源的体验。VPS可以像独立伺服器一样,重灌作业系统,安装程式,单独重启伺服器。VPS为使用者提供了管理配置的自由,可用于企业虚拟化,也可以用于IDC资源租用。

IDC资源租用,由VPS提供商提供。不同VPS提供商所使用的硬体VPS软体的差异,及销售策略的不同,VPS的使用体验也有较大差异。尤其是VPS提供商超卖,导致实体伺服器超负荷时,VPS效能将受到极大影响。

这些VPS主机以最大化的效率共享硬体、软体许可证以及管理资源.。每个VPS主机都可分配独立公网IP地址、独立作业系统、独立超大空间、独立记忆体、独立CPU资源、独立执行程式和独立系统配置等. VPS主机使用者除了可以分配多个虚拟主机及无限企业邮箱外, 更具有独立主机功能, 可自行安装程式, 单独重启主机。

虚拟主机和云主机的区别是什么

1、资源分配:虚拟主机的资源被限制,需要与其他虚拟主机分享,哪怕是独享型主机也仍旧需要与其他主机分享整个服务器资源;云主机的资源是独享,可以拥有整个服务器资源分配。

2、扩展性:虚拟主机不支持弹性扩展、按需付费,云服务商一般配置固定的虚拟主机型号来出售,用户可以通过升级不同型号来实现弹性配置;云主机支持全面的弹性扩展,按需付费,自主性高。

3、环境搭建:虚拟主机不需要搭建环境,云服务商已经配置好各种操作系统、建站程序以供选择,用户只需鼠标点击即可实现;云主机需要手动配置环境,搭建架构。

4、远程控制:虚拟主机由于技术原因,无法提供远程桌面功能,仅能通过控制面板系统、FTP软件等方式来管理虚拟主机的功能、文件等;云主机可远程桌面管理,方式灵活多样。

5、操作性:虚拟主机操作简单,不懂技术的站长都可以使用,大部分功能集成在控制面板内;云主机操作复杂,需要有一定的服务器运维技术、服务器搭建技术等,对不懂技术站长会非常吃力。

虚拟机和云主机的区别是什么?

虚拟主机就是利用网络空间技术,把一台服务器分成许多的"虚拟"的主机,每一台网络空间都具有独立的域名和IP地址,具有完整的Internet服务器功能。网络空间之间完全独立,在外界看来,每一台网络空间和一台独立的主机完全一样。效果一样,但费用却大不一样了。由于多台网络空间共享一台真实主机的资源,每个网络空间用户承受的硬件费用、网络维护费用、通信线路的费用均大幅度降低,Internet真正成为人人用得起的网络!。

许多企业建立网站都采用这种方法,这样不仅大大节省了购买机器和租用专线的费用,同时也不必为使用和维护服务器的技术问题担心,更不必聘用专门的管理人员。

云服务器又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品。云服务器是一种类似VPS服务器的虚拟化技术。也可以理解是VPS的升级版.他与VPS还有所不同是,它是在一组集群服务器上划分出来的多个类似独立主机的部分.集群中的每台服务器上面会有云主机的一个镜像.当其中一台机器出故障时.可以自动跳转到其他机器上面去访问.所以理论上来讲.只要不是所有的机器都出故障.就不会影响到云主机的访问.所以云主机在安全与稳定性方面比VPS更强大一些.

云服务器和虚拟主机都是通过云计算整合了高性能服务器与优质网络带宽,有效解决了传统主机租用价格偏高、服务品质参差不齐等缺点.

云服务器拥有服务器所有的权限和功能,可以和独立服务器相媲美的,而且在新麦互联购买价格还非常优惠,在购买优惠空间时候说不定还能淘到特价域名。

云虚拟主机,就是从云服务器又近一步划分,通过虚拟主机管理软件,把云服务器分割成100M 200M等等型号的小型空间,是中小型企业建站的最佳选择!

虚拟机和云主机的区别

[主机租用]业务是面向具备一定购买力,且比较关注短期投资回报率的用户推出的传统业务。用户无需在使用过程中一次性支付设备采购成本,因此具备一定的成本优势。但租用中需要确保是品牌机,并选择优质机房,否则容易故障频发。租机除了租金还需支付押金。租机一般不会提供备机,另外还需要站长懂得自主维护,如果代维会增加运维成本,故障恢复也较慢。传统租用主机一般不提供远程控制卡,无法远程安装系统。

[虚拟主机]采用操作系统虚拟化技术,虚拟化效率高,虚拟化License费用低,能共享操作系统,不提供真正的Root访问,也无法运行性能要求较高的应用无物理隔离,只适用于小规模并发访问。一个客户的ARP欺骗、病毒、应用程序损坏以及宿主操作系统升级不当等安全问题会影响到同一台物理主机上的所有客户。成本均较为低廉,但服务品质往往缺乏保障,仅限于浏览量较少的个人网站或以静态页面为主的小型企业网站。如用户网站或主机应用偏重于性能、可靠以及满足较大访问量需求时,虚拟主机方式通常难以很好的满足。

[云主机]的云计算节点部署的服务器全部采用高端的品牌服务器,每个用户都是独占主机资源;良好的物理隔离,确保主机不会因其他用户主机故障相互影响;覆盖全国的优质IDC机房,确保流畅的用户体验。实时提供OS、RAID等状态信息,内置监控报警等功能,内置防ARP欺骗,分布式部署可减缓DDOS攻击等,用户可灵活选择操作系统和软件,随时可更新打补丁。通过Web页面集中管理租用的分布在多个云计算节点的云主机。

【云主机、虚拟主机和独立服务器的比喻】

VPS

如果将VPS比作一个水龙头,服务器的计算和存储资源则是一根水管,水管上有很多水龙头。你需要付出租用这个水龙头的费用,而它的水流量是有限的。如果你想获得更大的水流,那么你需要租用更多的龙头,同时,如果所有的龙头都在流水,那么每个龙头的水流量都会降低。

云主机

而云计算下的主机,你所获得的是一个流量可大可小的龙头,服务器由一台变成一组,就像一个水管变成很多条水管组成的大水管。当你需要更大的水流时,可以直接控制你的龙头加大水流,同时即便所有的水管都在流水,也不会影响你的水流。更有甚者,你需要付出的费用,不再是租用水管产生的,而是为你所需要的水流量。

独立服务器

至于自己架设或者租用整个服务器,目前来看经济型就差很多了,因为你要连水龙头和水管都买下来,不够用的时候还要再买。我们都知道服务器资源通常使用率也就20%,除非业务非常稳定,不会明显增长,或者特别不差钱,可以考虑自建。

wayun.cn

如需了解更多,请访问蛙云官网wayuncn

专业领域十二载,倾情奉献

一次购买,终生陪伴

虚拟主机是什么?VPS又是什么?有区别吗?

1、什么是虚拟主机

所谓虚拟主机就是我们常说的共享主机,多数情况下站长都是从“共享主机”开始建站的。一台服务器链接很多网站,彼此共享这台服务器的硬件设置和宽带资源。因其价格便宜,比较适合建站初期使用。

2、什么是VPS主机

所谓VPS主机,可以将一台服务器划分为多个虚拟专享服务器,每个VPS主机都可以独立分配IP地址、操作系统、CPU资源等,同时,VPS拥有系统的root权限,能够任意切割磁盘空间大小、分配用户权限等。价格相比虚拟主机较贵,技术要求也比较高。

3、两者有什么区别?

1)在功能上

VPS主机相比较虚拟主机来说,更灵活一些,运营和管理也没有太多的局限性,性能也更高一些,如果你的网站流量数据比较大,那么可以选择VPS的主机。

2)在操作上

上面我们也提到了,虚拟主机因为是共享一个“服务器”,比较适合小白,vps能够自由分配ip地址等自身的独特性,对技术要求相当高。同时,vps主机可以作为虚拟服务器自建操作系统,虚拟主机不可以。

3)资源占用不同

vps独享硬盘资源,用户对服务器全权掌控,虚拟主机提供的则是硬件资源共享功能,用户只有部分掌控权。

4)软件硬件隔离

VPS能够隔离软件和硬件,虚拟主机则不行。相对来说,VSP主机安全性更高一些。

虚拟主机与虚拟机与空间的区别

平常说的虚拟主机和空间都值得是一个东西 用来做网站的 就是存储网页的 说法不一样而已

虚拟机是 下面说的

虚拟化分类

虚拟化浪潮

VMware虚拟化

微软虚拟化

IBM虚拟化

HP虚拟化

SWsoft虚拟化

SUN虚拟化

Intel虚拟化

AMD虚拟化

Java虚拟机

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

目前流行的虚拟机软件有VMware(VMWare ACE)和Virtual PC,它们都能在Windows系统上虚拟出多个计算机,用于安装Linux、OS/2、FreeBSD等其他操作系统。微软在2003年2月份收购Connectix后,很快发布了Microsoft Virtual PC 2004。但出于种种考虑,新发布的Virtual PC 2004已不再明确支持Linux、FreeBSD、NetWare、Solaris等操作系统,只保留了OS/2,如果要虚拟一台Linux计算机,只能自己手工设置。相比而言,VMware不论是在多操作系统的支持上,还是在执行效率上,都比Virtual PC 2004明显高出一筹,这也是本文选择它的理由之一。

电脑一台变两台,学用Linux不再有后顾之忧

VMware 4.5有Workstation、GSX server等多种版本,其中Windows版的Workstation应用最广,本文即以它为基础进行各种实战演习。

虚拟机的概念比较宽泛,通常人们接触到的虚拟机概念有VMware那样的硬件模拟软件,也有JVM这样的介于硬件和编译程序之间的软件。这里所指的是后者。

虚拟机是一个抽象的计算机,和实际的计算机一样,具有一个指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。

Sun xVM VirtualBox又发新版本:2.1.0。

2.1.0不像此前2.0.X一样主要是修正Bug和完善原有功能,这个版本增加了许多新特性。强烈建议VBox的用户们更新!

在官方网站的ChangeLog上,我们可以看到这个版本的主要更新信息:

* 支持Max OS X客户机的硬件虚拟化技术(VT-x和AMD-V);

* 支持在32位操作系统上模拟64位客户机!(实验性质,具体看用户手册);

* 支持Intel Nehalem虚拟化增强技术(EPT和VPID,具体看用户手册);

* 通过OpenGL支持3D加速!(看用户手册4.8章);

还有很多更新,但是光是以上四样就有足够地理由让用户去升级了!

VirtualBox终于支持了通过OpenGL实验的的3D加速,并且率先支持了在32位的操作系统上模拟64位的客户机(需要64位CPU支持)。这意味着虚拟机平台的限制更少了,你可以在你的x86平台上模拟AMD64!

针对“OpenGL 3D加速”这一项,我了解到,这项特性目前只在Windows系统上可用,并且只能实现OpenGL加速,而没有Direct3D加速。这意味着,你已经可以在Windows虚拟机运行一些OpenGL的3D应用,而Direct3D就要稍微等等了。

还等什么呢,这是一个进步相当大的版本。赶紧下载试用吧:

个人为什么使用虚拟机

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

2. 保证主机的快速运行,减少不必要的垃圾安装程序,偶尔使用的程序,或者测试用的程序在虚拟机上运行;

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

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

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

[编辑本段]Java虚拟机

一、什么是Java虚拟机

Java虚拟机(JVM)是Java Virtual Machine的缩写,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。

1.为什么要使用Java虚拟机

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

2.谁需要了解Java虚拟机

Java虚拟机是Java语言底层实现的基础,对Java语言感兴趣的人都应对Java虚拟机有个大概的了解。这有助于理解Java语言的一些性质,也有助于使用Java语言。对于要在特定平台上实现Java虚拟机的软件人员,Java语言的编译器作者以及要用硬件芯片实现Java虚拟机的人来说,则必须深刻理解Java虚拟机的规范。另外,如果你想扩展Java语言,或是把其它语言编译成Java语言的字节码,你也需要深入地了解Java虚拟机。

3.Java虚拟机支持的数据类型

Java虚拟机支持Java语言的基本数据类型如下:

byte://1字节有符号整数的补码

short://2字节有符号整数的补码

int://4字节有符号整数的补码

long://8字节有符号整数的补码

float://4字节IEEE754单精度浮点数

double://8字节IEEE754双精度浮点数

char://2字节无符号Unicode字符

几乎所有的Java类型检查都是在编译时完成的。上面列出的原始数据类型的数据在Java执行时不需要用硬件标记。操作这些原始数据类型数据的字节码(指令)本身就已经指出了操作数的数据类型,例如iadd、ladd、fadd和dadd指令都是把两个数相加,其操作数类型别是int、long、float和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虚拟机体系结构

Java虚拟机由五个部分组成:一组指令集、一组寄存器、一个栈、一个无用单元收集堆(Garbage-collected-heap)、一个方法区域。这五部分是Java虚拟机的逻辑成份,不依赖任何实现技术或组织方式,但它们的功能必须在真实机器上以某种方式实现。

1.Java指令集

Java虚拟机支持大约248个字节码。每个字节码执行一种基本的CPU运算,例如,把一个整数加到寄存器,子程序转移等。Java指令集相当于Java程序的汇编语言。

Java指令集中的指令包含一个单字节的操作符,用于指定要执行的操作,还有0个或多个操作数,提供操作所需的参数或数据。许多指令没有操作数,仅由一个单字节的操作符构成。

虚拟机的内层循环的执行过程如下:

do{

取一个操作符字节;

根据操作符的值执行一个动作;

}while(程序未结束)

由于指令系统的简单性,使得虚拟机执行的过程十分简单,从而有利于提高执行的效率。指令中操作数的数量和大小是由操作符决定的。如果操作数比一个字节大,那么它存储的顺序是高位字节优先。例如,一个16位的参数存放时占用两个字节,其值为:

第一个字节*256+第二个字节字节码指令流一般只是字节对齐的。指令tabltch和lookup是例外,在这两条指令内部要求强制的4字节边界对齐。

2.寄存器

Java虚拟机的寄存器用于保存机器的运行状态,与微处理器中的某些专用寄存器类似。

Java虚拟机的寄存器有四种:

pc:Java程序计数器。

optop:指向操作数栈顶端的指针。

frame:指向当前执行方法的执行环境的指针。

vars:指向当前执行方法的局部变量区第一个变量的指针。

Java虚拟机

Java虚拟机是栈式的,它不定义或使用寄存器来传递或接受参数,其目的是为了保证指令集的简洁性和实现时的高效性(特别是对于寄存器数目不多的处理器)。

所有寄存器都是32位的。

3.栈

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),用于对运行时数据区进行操作时是不考虑类型的。

4.无用单元收集堆

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

5.方法区

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

栏目:重装系统 阅读: 2019/03/19
栏目:重装系统 阅读: 2016/10/11
视频教程 更多>>
重装系统 更多>>
win10 更多>>
win7 更多>>
win8 更多>>
装机吧一键重装系统

版权所有 © 2012-2020 保留所有权利