范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

虚拟机主要是什么原理?

  其实这个东西不是一两句话能说清楚的,
  要回答这个问题,首先看为什么一个OS无法直接与另外的OS共存。答案很简单,OS作为硬件上第一层软件,认为自己拥有全部的硬件的访问和控制权,且自己是唯一的控制者。在这种情况下,如果两个OS共存,必然产生问题。
  OS主要负责管理的是CPU和内存,以及众多的IO设备。于是我们可以分别讨论。hypervisor是实现虚拟化的关键,它会以一个内核态的驱动存在。
  CPU的虚拟化:
  背景知识:x86 CPU有一项权限机制,把CPU的状态置于RING 0到RING 3分别使CPU具有最高的权限到最低的权限。以Linux为例,内核运行于RING 0上,而其余全部用户进程运行于RING 3上(Xen比较奇葩,Linux在Xen下面会运行于RING 1)。在用户权限下,所有的IO设备是不可操作的,另外,有些控制寄存寄是无法访问的,一些privilege的指令是不能运行的。因此一个用户进程要想读写文件,进行一些操作,就要依赖于内核。系统调用能够使CPU运行于RING 0,并执行内核代码(具体方法见一些操作系统教程)。
  背景说完。一个CPU的全部状态其实就是所有寄存器的值,只要保证任何操作之后寄存寄的值在OS看来是正确的,guest OS就可以正常执行。hypervisor会为每个虚拟的CPU创建一个数据结构,模拟CPU的全部寄存器的值,在适当的时候跟踪并修改这些值。
  那么考虑虚拟化一个CPU,在虚拟化的guest OS里面,CPU无论如何也不可能运行于RING 0,因为这样的话,host OS必然会crash掉。因此,当一个guest OS想要进入到RING 0执行内核代码时,hypervisor会向guest OS说谎,并告诉它,你已经在RING 0上了,而实际上,所有的指令还是在RING 3上。当guest OS访问到任何privilege的东西时,hypervisor会接到fault,此时hypervisor会判断这个指令是什么,并修改相应的虚拟寄存器的状态,然后返回。这样guest OS就可以正常的运行。需要指出的是,在大多数的指令下代码是直接跑在硬件上的,而不需要软件介入。只有在一些权限高的请求下,软件会介入,并维护虚拟的CPU状态。
  内存的虚拟化:
  背景知识:虚拟内存,页表结构等。OS的基础内容,不表。
  hypervisor虚拟化内存的方法是创建一个shadow page table。正常的情况下,一个page table可以用来实现从虚拟内存到物理内存的翻译。在虚拟化的情况下,由于所谓的物理内存仍然是虚拟的,因此shadow page table就要做到:虚拟内存->虚拟的物理内存->真正的物理内存。
  以下是细节,如果看着闹心,请忽略。hypervisor会维护一个从虚拟内存到物理内存的映射,当guest OS更换自己的page table,也就是改变CR3寄存器的值,hypervisor会因为用户态的权限不足而接到一个general exception,hypervisor会记录用户想要更换的新的页表,并放上一个空的shadow page table,然后返回。这个空的shadow page table会在接下来的执行中造成CPU无法进行地址翻译,而产生page fault。在fault发生后,hypervisor会得到一个虚拟地址,然后根据之前记录的用户的页表结构,翻译出一个虚拟机器地址,然后再把这个虚拟的机器地址,由hypervisor维护的映射翻译为实际的机器地址,然后装入shadow page table,并返回执行。如此,就实现了:虚拟内存->虚拟的物理内存->真正的物理内存。
  I/O虚拟化:
  背景知识:memory mapped I/O device。大多数的PCI设备都是直接将自己的某些控制寄存器映射到物理内存空间上,CPU访问这些控制寄存器的方法和访问内存相同。CPU通过修改和读取这些寄存器来操作I/O设备。
  虚拟化的方法很简单,没当hypervisor接到page fault,并发现实际上虚拟的物理内存地址对应的是一个I/O设备,hypervisor就用软件模拟这个设备的工作情况,并返回。比如当CPU想要写磁盘时,hypervisor就把相应的东西写到一个host OS的文件上,这个文件实际上就模拟了虚拟的磁盘。
  要了解虚拟机的原理,要从多个角度去思考。
  虚拟机运行:
  是指在完全隔离的环境中运行、具有完整硬件系统功能的软件模拟的完整计算机系统。
  原理:
  最初创建的Java源文件(.Java文件)中。Java文件首先通过前端编译器(javac或ECJ)编译为Java字节代码文件。
  JRE接着加载Java字节代码文件,加载系统分配给JVM的内存区域,运行引擎解释或编译类文件,然后实时编译器将字节代码转换为机器代码。
  虚拟机资源包括CPU、内存、网络和磁盘等多个方面。规划虚拟机时,应考虑这些资源之间的关系。否则,分配的资源可能不适当,这会降低虚拟机内应用程序的性能。
  CPU:
  虚拟机只在一个物理核心上运行每个vCPU,因此CPU频率越高,虚拟机运行速度越快,vCPU数量越多,有助于提高应用程序的性能。
  更复杂的因素之一是,在ESXi服务器中,所有虚拟机共享物理CPU。ESXi服务器中的内核数越多,每个vCPU的内核份额就越大,因此多核的性能比内核频率高,但数量比较少时更好。
  如果虚拟机使用大量CPU时间,建议为虚拟机分配第二个vCPU,但由于只有多线程应用程序才能有效使用多个vCPU,因此为虚拟机分配多个vCPU并不意味着应用程序运行得更快。
  RAM:
  在ESXi服务器中,RAM资源通常是有限的,在将RAM分配给虚拟机时需要特别小心。VMkernel在处理RAM时非常聪明。允许虚拟机使用ESXi服务器上的所有物理内存,并且不使用物理内存。
  完全使用物理内存后,VMkernel必须确定哪些虚拟机可以保留物理内存,哪些虚拟机可以保留物理内存。这称为"内存回收"。回收虚拟机使用的物理内存存在影响虚拟机性能的风险。虚拟机回收的内存越多,产生的风险就越大。
  最明智的做法是仅向虚拟机分配完成操作所需的内存。额外分配内存会增加回收风险。另一方面,在虚拟机操作系统中使用未使用的内存作为磁盘缓存时,这是一个折衷点,因为对磁盘系统的性能要求会大大降低。
  对于数据库服务器和VDI台式机,向虚拟机分配更多内存通常比不购买高性能磁盘阵列而在一台ESXi服务器上运行更少的虚拟机更经济高效。关键是在虚拟机的负载中分配足够的内存,没有浪费。
  虚拟机的概念比较宽泛,通常人们接触到的虚拟机概念有VMware那样的硬件模拟软件,也有JVM这样的介于硬件和编译程序之间的软件。一般情况下,指的是前者。
  虚拟化是一种资源管理技术, 是将计算机的各种物理资源, 如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破物理设备结构间的不可切割的障碍,使用户可以比原本的架构更好的方式来应用这些资源。这些资源的虚拟部分是不受现有资源的架构方式、地域或物理设备所限制。
  虚拟化创建了一层隔离层,把硬件和上层应用分离开来,允许在一个硬件资源上运行多个逻辑应用。
  虚拟化有:服务器虚拟化、应用程序虚拟化、展现层虚拟化、桌面虚拟化。
  首先看一下整个虚拟机在物理机上的结构。
  每台虚拟机的组成要素:虚拟机的os,应用程序需要的各种包,应用程序。而每一台虚拟机都是在Hypervisor的基础上建立起来的。
  Hypervisor
  Hypervisor(虚拟机管理器)是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的"元"操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor)。
  针对上图的可以理解为:Hypervisor是运行在物理机之上,为多台虚拟机提供能够宿主在物理主机之上的基础环境。
  其实Hypervisor可以分为两种:
  I型--裸机型,直接运行在物理设备之上,是一种基于内核的虚拟机(其中包括 Oracle 虚拟机、VMware ESX Server、Microsoft Hyper-V 和 Citrix XenServer【2】)。这种类型的Hypervisor所扮演的角色是一种抽象概念的OS。
  II型--宿主机型,运行在宿主机器的操作系统上(如上图)(VMware Workstation、Microsoft Virtual PC 和 Parallels Workstation【2】 ) 创建硬件全仿真实例。Hypervisor构建出一整套虚拟硬件平台(CPU/Memory/Storage/Adapter),上面需要你再去安装新的操作系统和需要的应用软件,这样底层和上层的OS就可以完全无关化。
  题主问的虚拟机概念很泛,不过一般说的是vnware那种模拟电脑硬件的软件。
  首先,先来讲讲虚拟机的大致原理,即CPU的虚拟化技术;举个例子,比如一台电脑,在没有装win系统的时候,本质上就是由一系列硬件组成的机器,我们称其为裸机。
  而vnware虚拟机就是在原有的电脑系统上开辟出一台新的裸机,用户可以在新的裸机上装新的系统,可以是win,也可以是linux等其他系统,相当于内嵌了一台新的电脑。
  其次,vnware虚拟机本质上是软件,模拟电脑硬件的软件,所以一旦开始运行,主机是可以检测到的(但是虚拟机检测不到主机),而且只要能让主机和虚拟机ping通的话,还可以保持两者的网络联系,当然,这个需要看网卡质量。
  在实际使用上就是主机界面开一个终端窗口来操作虚拟机。此外,磁盘空间足够大的话可以装多台虚拟机,相当于有多台电脑的体验,甚至每台虚拟机的内存和磁盘容量都可以自己定义。而且一旦将虚拟机文件备份好,未来虚拟机发生损坏,用此文件就可以轻易覆盖恢复。
  最后,之所以越来越多开发者青睐于虚拟机,是因为虚拟机软件本身就包含了各种硬件驱动,也不用担心接口不够,内存不足等问题,内存硬盘网卡USB统统在软件中可设置,完全不必要去购置多台电脑和额外内存磁盘就可以玩转各种操作系统和测试软件,甚至还可以自主搭载一些小型的服务器。
  如果到了这里还是不懂的话,那就这么理解吧:
  火影忍者里的长门(主机),通过轮回眼的六道之术分化出(虚拟化)6个跟自己同样有轮回眼的佩恩们(6台虚拟机),佩恩们虽然看起来都具有本体(主机)一模一样的能力,但是他们的查克拉(计算机资源)实际上是由长门(主机)分配出去的。
  要回答这个问题,首先看为什么一个OS无法直接与另外的OS共存。答案很简单,OS作为硬件上第一层软件,认为自己拥有全部的硬件的访问和控制权,且自己是唯一的控制者。在这种情况下,如果两个OS共存,必然产生问题。
  OS主要负责管理的是CPU和内存,以及众多的IO设备。于是我们可以分别讨论。hypervisor是实现虚拟化的关键,它会以一个内核态的驱动存在。
  CPU的虚拟化:
  背景知识:x86 CPU有一项权限机制,把CPU的状态置于RING 0到RING 3分别使CPU具有最高的权限到最低的权限。以Linux为例,内核运行于RING 0上,而其余全部用户进程运行于RING 3上(Xen比较奇葩,Linux在Xen下面会运行于RING 1)。在用户权限下,所有的IO设备是不可操作的,另外,有些控制寄存寄是无法访问的,一些privilege的指令是不能运行的。因此一个用户进程要想读写文件,进行一些操作,就要依赖于内核。系统调用能够使CPU运行于RING 0,并执行内核代码(具体方法见一些操作系统教程)。
  背景说完。一个CPU的全部状态其实就是所有寄存器的值,只要保证任何操作之后寄存寄的值在OS看来是正确的,guest OS就可以正常执行。hypervisor会为每个虚拟的CPU创建一个数据结构,模拟CPU的全部寄存器的值,在适当的时候跟踪并修改这些值。
  那么考虑虚拟化一个CPU,在虚拟化的guest OS里面,CPU无论如何也不可能运行于RING 0,因为这样的话,host OS必然会crash掉。因此,当一个guest OS想要进入到RING 0执行内核代码时,hypervisor会向guest OS说谎,并告诉它,你已经在RING 0上了,而实际上,所有的指令还是在RING 3上。当guest OS访问到任何privilege的东西时,hypervisor会接到fault,此时hypervisor会判断这个指令是什么,并修改相应的虚拟寄存器的状态,然后返回。这样guest OS就可以正常的运行。需要指出的是,在大多数的指令下代码是直接跑在硬件上的,而不需要软件介入。只有在一些权限高的请求下,软件会介入,并维护虚拟的CPU状态。

realme真我GTNeo体验新一代性价比屠夫真我GT推出后不久,真我GTNeo也快速跟进。realme,这家以敢越级为宗旨的新星正在以野火燎原之势席卷性价比阵地。真我GTNeo与真我GT同属GT系列,大体上的差别在SoC,那太阳能充电的佳明智能手表,是真实用还是噱头?运动可以提高人体免疫力,但是盲目运动,就会引起相反的结果,所以科学运动,对于一个人来说是那么的重要。智能手表进入我们的视线,已经有一些年头了,它的主要用途是测心率和各种运动参数。早罗技VOICEM380无线鼠标测评厉害到差点扔掉键盘不同于MX系列的高端定位,罗技M系列的鼠标一直都相当亲民。在4月13日罗技终于给旗下M300系列新添了一名全新的成员罗技VOICEM380(下文简称M380)。M380是罗技与百度在拼多多买电脑,务必第一时间开发票其实问题不是什么大问题,就是浪费了时间有点不爽,当时为了图300元便宜,如今后悔莫及。现在跟大家分享一个经验如果你时间不是很多,千万别图便宜。类似于网络诈骗吧,都是利用人性中的贪便投影行业屠榜者更新!首发极米NEWZ6体验在任何一个大型的电商平台搜投影关键字,你的视野里绝对避不开极米的Z系列,理由很简单,在投影仪行业的单品中,从2013年到2021年,Z系列超过100万的销量,让所有竞品只能望其项背评价极米RS系列细节狂魔也会爱不释手的投影机极米RS系列的第一代产品在2019年推出,主打方向比较明显市面上太多太多的投影机都是傻大黑粗,很难找到有设计感的产品。但人的精神需求是会随着物质生活的提高而提高的,当温饱问题(基本AqaraG3体验更智能的摄像头长这样聊一聊AqaraG3这货现在已经卖断,补货可能要等到下个月,近期打算购入摄像头的小伙伴建议等等。本文主要分享一下个人体验,绿米AqaraG3下文简称G3。这个摄像机依旧是监控和联动realmeGTNeo2T体验不偏科,更主流随着第一款realmeGT系列诞生至今已经过了半年多,但realme以迅雷不及掩耳之势迅速发布了realmeGTrealmeGTNeorealmeGTNeo闪速版realmeGT大TCLXESS旋转智屏亮相太虚之境,焕发视觉美学新突破7月31日至11月7日,TCLXESS携手阿根廷艺术家雷安德罗埃利希在太虚之境深圳站举行联合展览活动。本次展览中,雷安德罗埃利希共展出12件作品,与此同时,TCLXESS向现场媒体石头H7体验报告说是无线吸尘器领域老大哥不过分吧?经过几年的发展,无线吸尘器在国内已经进入成熟阶段,在毕业不久后就入手了人生中的第一款无线吸尘器,随后米家入场家居领域也用了一段时间的睿米吸尘器,时隔几年终于又更新了一款在吸尘器行业华为在软件领域的新动作花瓣邮箱APP上新了(PetalMail)东去长安万里余,故人何惜一行书快速闪过的花瓣邮箱启动界面,引用了唐代诗人岑参的诗句。什么是花瓣邮箱首先说明,华为花瓣邮箱作为一款电子邮箱产品,后缀地址为petalmail。com。
发力无人配送,这家公司年内计划交付超两千台无人车记者于浩伴随着劳动力短缺成为热门议题,机器代人相关的诸多赛道正在展现出更多商业价值,无人配送就是其中之一。成立于2018年的新石器无人车是该赛道内的玩家之一。身为物流行业的老兵,余电动车发展方向经过十余年的行业发展,现阶段市场上的电动车越来越多,可选范围越来越广泛。作为行业内人员,因为每天接触汽车,每天想的也是汽车,从各种表相新闻到深入的技术分析,都有涉猎,所以对车的理解新的红米NOTE10PRO充电行,电量不耐用,你们怎么看?感谢您的阅读!首先看一下这一款手机,它的电池容量。红米note10Pro这款手机的电池容量为5000毫安时,并且拥有67W的快充。所以这款手机本身所拥有的电池容量还是相对比较充足的耳鸣怎么治疗为什么配助听器以后更严重了?您好,如果单纯的耳鸣没有听力下降的话,一般不建议佩戴助听器,助听器没有治疗耳鸣的效果,根据不同的情况个体差异的不同患者的耳鸣情况也是不一样的,对于出现耳鸣的患者一般都没有太好的治疗哪类用户会坚持购买使用华为手机?你会选择华为手机吗?我坚持买华为手机。我认为,对于手机,坚持使用一个品牌,对学习熟悉掌握运用这个手机极有好处。我換了几代手机,也使用的N年手机,始终是华为手机不变。加之华为手机是国产的,一旦遇到什么问13年诉讼终获胜,法院驳回欧盟对英特尔12亿美元反垄断罚款IT之家1月26日消息,据华尔街日报报道,当地时间周三,英特尔公司赢得了欧盟反垄断监管机构对其12亿美元罚款的诉讼,十多年前,英特尔被指控利用商业实力排挤竞争对手AMD。2009年麒麟990相当于高通的哪款处理器,还能够用几年?麒麟990采用台积电7nm工艺制作,8核心CPU设计,具体由2个2。86GHz的A76核心2个2。09GHz的A76核心4个1。86GHz的A55核心组成,GPU为MaliG76M国行AppleWatch支持心电图功能,它对我们的日常生活真的有用吗?手机作为互联网生活的入口,也已经有更多设备呈现智能化发展趋势,其中智能穿戴设备已经成为消费电子领域中占比很高的一环。我们最常见的智能手环手表,经过多年技术发展,已经不只满足于为用户诺基亚新1100渲染图1亿相机腰线直面屏,苹果劲敌爆款价格屠夫外界对诺基亚手机的印象主要还是停留在功能机时代,因为当时诺基亚发布了型号很多的功能机,而且销量也非常高,深受消费者的欢迎。比如诺基亚1100等机型,可以说售价便宜质量可靠,所以才会LED电视和OLED电视,别盲目购买,5点差异要弄清楚大家好,我是专注家居和装修知识分享的家居杂坛。喜欢的就点击一下关注吧!现在市场上的电视的种类非常的多。像很多朋友可能所熟知的就是传统的LED电视。但是大概从2013年开始,OLED让实体店人气重新旺起来新技术新模式加快应用,新服务新业态加速涌现让实体店人气重新旺起来近日,小朋友在银泰百货杭州西湖文化广场店参与非遗文化互动体验展。核心阅读实体店是商品流通的重要载体。很多实体店适应消