深入浅出计算机组成原理
徐文浩
bothub 创始人
70432 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 62 讲
深入浅出计算机组成原理
15
15
1.0x
00:00/00:00
登录|注册

34 | 理解虚拟机:你在云上拿到的计算机是什么样的?

用于微服务架构底层的基础设施
被称为“操作系统级”的虚拟机技术
不再需要在操作系统上再跑一个操作系统
资源隔离的技术
JVM中也可以通用
为了解决进程级虚拟机问题
Docker技术
Type-2:指令需要经历客户机操作系统、虚拟机监视器、宿主机操作系统
Type-1:直接由虚拟机监视器调用硬件
缺陷:性能差
优势:跨硬件平台
应用程序识别并解释执行指令
兼容计算机系统的指令集
模拟一个计算机系统的技术
2019年估计超过千万台
超过150万台
计算机自动给程序或任务分配计算时间
通过电话线连接到大公司机房里的计算机
买一个输入输出的终端
个人用户、小公司、小机构
系统级虚拟机发展历程中的优化手段
JVM的进程级虚拟机
虚拟机技术的出现使得整个云服务生态得以出现
Docker:新时代的最佳选择?
Type-1和Type-2:虚拟机的性能提升
解释型虚拟机
虚拟机技术
虚拟机技术解决了这些问题
出租物理服务器不太容易自动化、面向中小客户
亚马逊将闲置服务器租出去
亚马逊的云服务器AWS
亚马逊大量富余的计算能力
现代公有云上的系统级虚拟机快速发展
比尔·盖茨中学时候用的学校的计算机是GE的分时系统
分时系统应运而生
计算机特别昂贵
总结延伸
虚拟机的技术变迁
从“黑色星期五”到公有云
缘起分时系统
Docker,新时代的最佳选择?

该思维导图由 AI 生成,仅供参考

上世纪 60 年代,计算机还是异常昂贵的设备,实际的计算机使用需求要面临两个挑战。第一,计算机特别昂贵,我们要尽可能地让计算机忙起来,一直不断地去处理一些计算任务。第二,很多工程师想要用上计算机,但是没有能力自己花钱买一台,所以呢,我们要让很多人可以共用一台计算机。

缘起分时系统

为了应对这两个问题,分时系统的计算机就应运而生了。
无论是个人用户,还是一个小公司或者小机构,你都不需要花大价钱自己去买一台电脑。你只需要买一个输入输出的终端,就好像一套鼠标、键盘、显示器这样的设备,然后通过电话线,连到放在大公司机房里面的计算机就好了。这台计算机,会自动给程序或任务分配计算时间。你只需要为你花费的“计算时间”和使用的电话线路付费就可以了。比方说,比尔·盖茨中学时候用的学校的计算机,就是 GE 的分时系统。
图片里面的“计算机”其实只是一个终端而已,并没有计算能力,要通过电话线连接到实际的计算机上,才能完成运算

从“黑色星期五”到公有云

现代公有云上的系统级虚拟机能够快速发展,其实和分时系统的设计思路是一脉相承的,这其实就是来自于电商巨头亚马逊大量富余的计算能力。
和国内有“双十一”一样,美国会有感恩节的“黑色星期五(Black Friday)”和“网络星期一(Cyber Monday)”,这样一年一度的大型电商促销活动。几天的活动期间,会有大量的用户进入亚马逊这样的网站,看商品、下订单、买东西。这个时候,整个亚马逊需要的服务器计算资源可能是平时的数十倍。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

虚拟化技术的发展历程和Docker的推崇,展现了虚拟化技术在计算资源利用和效率提升方面的重要作用。文章介绍了虚拟机技术的优势和不足,以及Docker作为新时代的最佳选择。从Type-1和Type-2虚拟机的性能提升到Docker的优势,全面阐述了虚拟化技术的发展和应用。虚拟机技术的历史、优势和不足,以及Docker作为新一代技术的优势和应用,为读者提供了全面的技术概览。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出计算机组成原理》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(25)

  • 最新
  • 精选
  • DriveMan_邱佳源
    JVM的优化手段主要就是为了减少指令数,从而减少cpu计算时间

    作者回复: 邱佳源同学, 你好,我是这样来看的。JVM的两个核心优化,第一个是通过编译成中间语言,在实际解释器执行的时候简化了中间语言到机器指令的难度。第二个是JIT技术,也就是通过收集程序运行中反复执行的中间代码,直接编译成机器指令来执行,加速执行速度。

    2019-09-23
    2
    34
  • anginiit
    之前困惑我许久的问题 学到这里 基本都解开了 很开心

    作者回复: 谢谢,能对大家有一点点帮助,这些文章就没有白写。

    2019-09-13
    2
    16
  • 程序员花卷
    JVM是为了解决Java跨平台操作的问题,减少指令操作的次数!最终减少cpu的计算时间!

    作者回复: Hash同学, 这个理解不太对哦,JVM并不能解决减少指令操作,和计算CPU的计算时间问题。 本质上,JVM是操作系统上的一个应用程序,为了实现跨平台,甚至有可能会在特定的硬件上增加一些指令操作,增加CPU的计算时间。

    2019-12-22
    3
  • 明翼
    老师我有个疑问?像亚马逊公司平日机器没多忙的所以可以租出去,但是像黑色星期五这种情况,其他租机器的公司也要用资源,亚马逊也要算资源那不是资源要爆了吗?
    2019-07-15
    2
    46
  • 张立昊Leon
    JVM主要应该是解决跨平台问题,即一次编码,处处运行。同样的Java代码编译成字节码后通过各个平台jvm的翻译就可以运行。从优化的角度来说,就像课程中讲到的,解释执行会损耗效率,可以通过jit编译成本地机器码运行
    2019-07-16
    20
  • A君
    虚拟化技术满足了人们在不同场景下的不同算力需求,对算力进行了量化,让租用服务器的生意不仅停留在toB,还能toC。对企业来说,要想减少维护成本,就需要把虚拟机做成一个应用程序,甚至一个函数,随删随建。 一个完整的计算机系统包括硬件、操作系统、程序库、应用程序这四个模块,其中后三个模块可以封装成一个虚拟机程序,然后在宿主机操作系统中增加对虚拟机程序的支持,让它可以直接使用硬件接收硬件信号。这种设计模式就是type1。 同一台服务器上跑的虚拟机往往都是同一种操作系统,比如都是linux,只是发行套件不同,那么每个虚拟机程序都运行一个操作系统就太浪费了,它们可以共用同一个kernel,每个虚拟机程序只要不同维护发行套件的程序库、配置文件即可。这种虚拟机就是docker。
    2020-07-10
    12
  • 西门吹牛
    先确定一个问题,JVM的解释器把class文件,解释成机器码,这个机器码是作用在jvm上,与底层硬件不相关,还是这个经过解释器最终解释成的机器码是直接作用在底层硬件上。 如果是直接作用在jvm上,经过jvm转换后在作用到底层硬件,那就可以理解为,这个机器码本身是平台无关的,那还要class文件干啥,就没必要保留class文件了。而关于Java的介绍,这个class文件才是实现跨平台的关键。所以,这种理解是不正确的,解释器解释的机器码,直接是作用在底层硬件上的;这个机器码不是平台无关的,和操作系统和硬件有关; 如果说是直接作用在操作系统和硬件上,那直接丢给操作系统就行,为什么在jvm内存中还有程序计数器这个区域,这个完全可以有底层操作系统和硬件代替,完全没jvm的事;主要原因还是和java 边解释边执行有关,就像老师说的,jvm简化了class文件和机器码转换的难度,class是个中间代码,是跨平台的,直接把这个class文件,在jvm解释器的作用下,转换为对应的操作系统指令相对其他语言来说,难度不大。所以java最主要的目的,也就是和别的语言最大的不同,就是这个class文件的存在,这个文件的存在就是为了跨平台; 可以把class文件,当做其他语言经过编译器编译后的混编代码。而jvm当做是其他语言运行的物理运行环境。c这种语言,编译后的混编代码是不能跨平台的,跨平台必须重新编译,而class文件没必要,因为它作用在jvm上。 而jvm内存中的程序计数器,可以说是在解释执行的时候,指的是class文件对应的行号,这里类似混编代码对应的cpu指令地址,根据程序计数器记录的行号,将class文件,进行边解释,边执行,这种解释执行,其实就是为了,启动时不会慢,不是一次加载,有点内存分页的意思,而如果碰到百分之二十的代码,执行时间在百分八十左右,那就认为这段代码是重复执行的,因为不同行的代码,运行差距不会太大,这里占了百分八十,说明这段代码是重复执行了,就是热点代码,这时候就采用JIT,直接将这段代码编译成合操作系统和硬件相关的机器码。提升性能。 所以,jvm存在的意义,我感觉,更主要的就是为了跨平台,这是它存在的最大特性,也可以理解为,面对对象的思想,用在了编译执行阶段,把不同平台上的指令集,都封装到jvm规范上,开发人员,只需要关系你写的程序,完全不用关系,编译,解释执行等步骤,换句话说,就是关系你的class文件,不需要管不同平台是怎么解释执行的,这个解释执行的步骤封装在了jvm中。 如果不是这样,jvm的存在与否,相对别的编程语言,除了以上分析的优势,他还能有什么优势呢?
    2020-07-07
    4
  • 张三
    在2019年12月的第一天,看到这篇文章,让我对之前一知半解对虚拟机和Docker知识有了更全面对了解,太好了!
    2019-12-01
    3
  • 王坤祥
    JVM主要应该是解决跨平台问题,即一次编码,处处运行。 从优化的角度,解释执行会损耗效率,可以通过jit编译成本地机器码运行提高执行效率。 Java程序最初是通过解释器(Interpreter)进行解释执行的,这样java程序启动时不会感觉太慢;启动并运行后,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time Compiler,JIT编译器)。
    2020-04-11
    2
  • 焰火
    浩哥~~,同一台机器上的docker如何解决不同客户对不同linux版本的需求呢?
    2019-08-08
    4
    2
收起评论
显示
设置
留言
25
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部