虚拟化、容器和JVM简单概述

要理解虚拟化的不同内涵,需要从首先回顾计算机的层次结构。几乎所有的计算机遵守着相同的层级结构。分别是:

应用程序层
函数库层
API抽象层
操作系统层
硬件抽象层
硬件层

自底向上,形成依赖关系,这种分层的做法带来如下好处:
1)每一层都向上提供了接口,降低系统的复杂性和软件的可移植性。
2)每一层只需要知道下一层的抽象接口即可,不需要知道其内部运作机制
3)降低系统设计的复杂性
4)提高软件可移植性

虚拟化就是在上下两层之间,通过向上层的提供与下层一致的接口方法,抽象出一个新的软件或硬件接口,使得上层软件可以直接运行在新的虚拟环境上。
虚拟机:存在于硬件层和操作系统层间的虚拟化技术。

虚拟机通过“伪造”一个硬件抽象接口,将一个操作系统以及操作系统层以上的层嫁接到硬件上,实现和真实物理机几乎一样的功能。

容器:存在于操作系统层和函数库层之间的虚拟化技术。

容器通过“伪造”操作系统的接口,将API抽象层,函数库层以上的功能置于操作系统上,以Docker为例,就是基于Linux操作系统的Namespace和CGroup功能实现的隔离容器,模拟操作系统的功能,因为它比虚拟机高了一层,也就需要少一层东西,所以容器占用资源少。

JVM:存在于函数库层和应用程序之间的虚拟化技术。

Java虚拟机具有跨平台特性,所谓跨平台特性实际上就是虚拟化的功劳,我们Java语言是调用操作系统函数库的,然而不同操作系统的函数库互不相同,JVM就是建立一个虚拟化层,对下通过不同的版本适应不同的操作系统,对上提供统一的运行环境交给程序和开发者。通过虚拟化实现了如今蔚为壮观的Java生态圈以及建立在JVM基础上的其他语言,如Scala,Clojure,Kotlin等。
所谓虚拟机,就是一台虚拟的计算机,他是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。大名鼎鼎的visual box、vmware就属于系统虚拟机,他们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。程序虚拟机的代表就是java虚拟机,他专门为执行单个计算机程序而设计,在java虚拟机中执行的指令我们称为java字节码指令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值