后端技术杂谈6:白话虚拟化技术

传统虚拟化的技术实现 1.传统虚拟化 资源分割(将大的资源池分割,不同的资源池有不同的管理员) (单台服务器资源用软件用不完,会产生资源浪费,安装虚拟化,进行资源分割) (多数虚拟机可能由多个小组或团队管理,采用资源分割,进行区域分割) 假设由两个小组(web,db) 在vsphere client上创建web 和 db 虚拟机 创建web 和 db 资源池 将对应的虚拟机拖进对应得资源池 RBAC(基于角色的访问) 添加角色------选定操作权限------创建用户--------在创建的资源池设置 阅读详情

本文转自互联网,侵删

本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看

https://github.com/h2pl/Java-Tutorial

喜欢的话麻烦点下Star哈

本系列文章将整理于我的个人博客:

www.how2playlife.com

该系列博文会介绍常见的后端技术,这对后端工程师来说是一种综合能力,我们会逐步了解搜索技术,云计算相关技术、大数据研发等常见的技术喜提,以便让你更完整地了解后端技术栈的全貌,为后续参与分布式应用的开发和学习做好准备。

如果对本系列文章有什么建议,或者是有什么疑问的话,也可以关注公众号【Java技术江湖】联系我,欢迎你参与本系列博文的创作和修订。

内核,是指的操作系统内核。

所有的操作系统都有内核,无论是Windows还是Linux,都管理着三个重要的资源:计算,网络,存储。

计算指CPU和内存,网络即网络设备,存储即硬盘之类的。

内核是个大管家,想象你的机器上跑着很多的程序,有word,有excel,看着视频,听着音乐,每个程序都要使用CPU和内存,都要上网,都要存硬盘,如果没有一个大管家管着,大家随便用,就乱了。所以需要管家来协调调度整个资源,谁先用,谁后用,谁用多少,谁放在这里,谁放在那里,都需要管家操心。

所以在这个计算机大家庭里面,管家有着比普通的程序更高的权限,运行在内核态,而其他的普通程序运行在用户态,用户态的程序一旦要申请公共的资源,就需要向管家申请,管家帮它分配好,它才能用。

为了区分内核态和用户态,CPU专门设置四个特权等级0,1,2,3 来做这个事情。

当时写Linux内核的时候,估计大牛们还不知道将来虚拟机会大放异彩,大牛们想,一共两级特权,一个内核态,一个用户态,却有四个等级,好奢侈,好富裕,就敞开了用,内核态运行在第0等级,用户态运行在第3等级,占了两头,太不会过日子了。

大牛们在写Linux内核的时候,如果用户态程序做事情,就将扳手掰到第3等级,一旦要申请使用更多的资源,就需要申请将扳手掰到第0等级,内核才能在高权限访问这些资源,申请完资源,返回到用户态,扳手再掰回去。

这个程序一直非常顺利的运行着,直到虚拟机的出现。

如果大家用过Vmware桌面版,或者Virtualbox桌面版,你可以用这个虚拟化软件创建虚拟机,在虚拟机里面安装一个Linux或者windows,外面的操作系统也可以是Linux或者Windows。

当你使用虚拟机软件的时候,和你的excel一样,都是在你的任务栏里面并排的放着,是一个普通的应用。

当你进入虚拟机的时候,虚拟机里面的excel也是一个普通的应用。

但是当你设身处地的站在虚拟机里面的内核的角度思考一下人生,你就困惑了,我到底个啥?

在硬件上的操作系统来看,我是一个普通的应用,只能运行在用户态。可是大牛们生我的时候,我的每一行代码,都告诉我,我是个内核啊,应该运行在内核态,当虚拟机里面的excel要访问网络的时候,向我请求,我的代码就要努力的去操作网络资源,我努力,但是我做不到,我没有权限!

我分裂了。

虚拟化层,也就是Vmware或者Virtualbox需要帮我解决这个问题。

第一种方式,完全虚拟化,其实就是骗我。虚拟化软件模拟假的CPU,内存,网络,硬盘给我,让我自我感觉良好,终于又像个内核了。

真正的工作模式是这样的。

虚拟机内核:我要在CPU上跑一个指令!

虚拟化软件:没问题,你是内核嘛,可以跑

虚拟化软件转过头去找物理机内核:报告管家,我管理的虚拟机里面的一个要执行一个CPU指令,帮忙来一小段时间空闲的CPU时间,让我代他跑个指令。

物理机内核:你等着,另一个跑着呢。好嘞,他终于跑完了,该你了。

虚拟化软件:我代他跑,终于跑完了,出来结果了

虚拟化软件转头给虚拟机内核:哥们,跑完了,结果是这个,我说你是内核吧,绝对有权限,没问题,下次跑指令找我啊。

虚拟机内核:看来我真的是内核呢。可是哥,好像这点指令跑的有点慢啊。

虚拟化软件:这就不错啦,好几个排着队跑呢。

内存的申请模式如下。

虚拟机内核:我启动需要4G内存,我好分给我上面的应用。

虚拟化软件:没问题,才4G,你是内核嘛,马上申请好。

虚拟化软件转头给物理机内核:报告,管家,我启动了一个虚拟机,需要4G内存,给我4个房间呗。

物理机内核:怎么又一个虚拟机啊,好吧,给你90,91,92,93四个房间。

虚拟化软件转头给虚拟机内核:哥们,内存有了,0,1,2,3这个四个房间都是你的,你看,你是内核嘛,独占资源,从0编号的就是你的。

虚拟机内核:看来我真的是内核啊,能从头开始用。那好,我就在房间2的第三个柜子里面放个东西吧。

虚拟化软件:要放东西啊,没问题。心里想:我查查看,这个虚拟机是90号房间开头的,他要在房间2放东西,那就相当于在房间92放东西。

虚拟化软件转头给物理机内核:报告,管家,我上面的虚拟机要在92号房间的第三个柜子里面放个东西。

好了,说完了CPU和内存的例子,不细说网络和硬盘了,也是类似,都是虚拟化软件模拟一个给虚拟机内核看的,其实啥事儿都需要虚拟化软件转一遍。

这种方式一个坏处,就是慢,往往慢到不能忍受。

于是虚拟化软件想,我能不能不当传话筒,还是要让虚拟机内核正视自己的身份,别说你是内核,你还真喘上了,你不是物理机,你是虚拟机。

但是怎么解决权限等级的问题呢?于是Intel的VT-x和AMD的AMD-V从硬件层面帮上了忙。当初谁让你们这些写内核的大牛用等级这么奢侈,用完了0,就是3,也不省着点用,没办法,只好另起炉灶弄一个新的标志位,表示当前是在虚拟机状态下,还是真正的物理机内核下。

对于虚拟机内核来讲,只要将标志位设为虚拟机状态,则可以直接在CPU上执行大部分的指令,不需要虚拟化软件在中间转述,除非遇到特别敏感的指令,才需要将标志位设为物理机内核态运行,这样大大提高了效率。

所以安装虚拟机的时候,务必要将物理CPU的这个标志位打开,是否打开对于Intel可以查看grep "vmx" /proc/cpuinfo,对于AMD可以查看grep "svm" /proc/cpuinfo

这叫做硬件辅助虚拟化。

另外就是访问网络或者硬盘的时候,为了取得更高的性能,也需要让虚拟机内核加载特殊的驱动,也是让虚拟机内核从代码层面就重新定位自己的身份,不能像访问物理机一样访问网络或者硬盘,而是用一种特殊的方式:我知道我不是物理机内核,我知道我是虚拟机,我没那么高的权限,我很可能和很多虚拟机共享物理资源,所以我要学会排队,我写硬盘其实写的是一个物理机上的文件,那我的写文件的缓存方式是不是可以变一下,我发送网络包,根本就不是发给真正的网络设备,而是给虚拟的设备,我可不可以直接在内存里面拷贝给他,等等等等。

一旦我知道我不是物理机内核,痛定思痛,只好重新认识自己,反而能找出很多方式来优化我的资源访问。

这叫做类虚拟化或者半虚拟化。

如果您想更技术的了解本文背后的原理,请看书《系统虚拟化——原理与实现》

4.1.1 比较几种虚拟化实现技术 最后更新2021/08/18 虚拟化技术是一个非常笼统的概念,本身包含了很多维度的规范、定义。在前面章节已经从概念上对几个重要视角做了说明,例如关于资源共享和隔离的范畴和颗粒度,虚拟化所在的层次和相互关系等。通常,虚拟化的核心是对物理CPU的虚拟化,与此配合的会有整机虚拟化(虚拟机)、整机各组件虚拟化(CPU、内存、设备),或者软件的运行环境虚拟化等等。所有这些之中,最为重要的则是与CPU或者说是指令执行有关的虚拟化。 今天,在IT业界,有许多虚拟化”品牌“或技术名词,它们实际上都是包含了特定虚拟化部分,实 阅读详情

相关推荐

Second-Order Cone Programming(SOCP) 二阶锥规划

个人博客Glooow,欢迎各位老师来踩踩 文章目录1. 二阶锥1.1 二阶锥定义1.2 二阶锥约束2. 优化问题建模3. 类似问题转化3.1 二次规划3.2 随机线性规划4. 问题求解 1. 二阶锥 1.1 二阶锥定义 在此之前,先给出二阶锥的定义。 在 kkk 维空间中二阶锥 (Second-order cone) 的定义为 Ck={[ut]∣u∈Rk−1,t∈R,∥u∥≤t} \mathc...

Glooow的博客 3万+

我是虚拟机内核我困惑?!

内核,是指的操作系统内核。   所有的操作系统都有内核,无论是Windows还是Linux,都管理着三个重要的资源:计算,网络,存储。   计算指CPU和内存,网络即网络设备,存储即硬盘之类的。   内核是个大管家,想象你的机器上跑着很多的程序,有word,有excel,看着视频,听着音乐,每个程序都要使用CPU和内存,都要上网,都要存硬盘,如果没有一个大管家管着,大家随便用,就乱了。所以需要管...

weixin_34080571的博客 942

Mediapipe手势识别实战——基于关节角度计算实现动态手势分类

本文详细介绍了如何利用Mediapipe进行手势识别,通过计算手指关节弯曲角度实现动态手势分类。文章从基础原理出发,讲解了关节角度计算的数学方法,并提供了Python实现代码。同时,还分享了数字手势和OK手势的识别实战经验,以及性能优化和工程实践中的关键技巧,帮助开发者快速掌握实时手势识别技术。

weixin_26891599的博客 403

操作系统的体系结构、内核、虚拟机

操作系统引导:开机的时候,怎么让操作系统运行起来磁盘包括:主引导记录(MBR)(包含:磁盘引导程序和分区表)C:盘D:盘E:盘等C:盘中又包含:引导记录PBR(负责找到“启动管理器”)根目录其他主存:由ROM(BIOS)包含:ROM引导程序,即自举程序和RAM组成。

宁可枝头抱香死,何曾吹落北风中。 3633

激光条纹中心提取——Steger

激光条纹中心提取-Steger 好久没有记录了,记录一下今天学习的内容,据说Steger在激光条纹中心提取上神一般的存在。文章和代码都分享给大家了哈,其中有四个文件,3个C++,一个python,python一个抠图文件,3个c++包含背景图+原图, 单张图提取, 多张图提取。 分享代码 #include <opencv2\core.hpp> #include <opencv2\highgui.hpp> #include <opencv2\imgproc.hpp> #i

CharmsLUO的博客 5383

手把手教你用运放搭建方波三角波发生器(附Multisim仿真文件)

本文详细解析了使用运算放大器搭建方波和三角波发生器的核心原理与设计步骤。通过剖析迟滞比较器与积分器的联动机制,指导读者进行电路设计、元件选型,并借助Multisim仿真进行参数调优与波形优化。文章提供了从理论分析、虚拟仿真到实物焊接调试的完整实践指南,并附有仿真文件,帮助硬件爱好者与初学者深入掌握这一经典模拟电路设计。

weixin_29165725的博客 642

虚拟化技术的实现(完全虚拟化、硬件辅助虚拟化)

文章转载至网易云架构师刘超的个人微信号 内核,是指的操作系统内核。 所有的操作系统都有内核,无论是Windows还是Linux,都管理着三个重要的资源:计算,网络,存储。 计算指CPU和内存,网络即网络设备,存储即硬盘之类的。 内核是个大管家,想象你的机器上跑着很多的程序,有word,有excel,看着视频,听着音乐,每个程序都要使用CPU和内存,都要上网,都要...

Pipcie的博客 1542

全志T113s3主线linux开发(0)--基础准备

嵌入式Linux设备的启动大概是三步:1)启动芯片+内存:常见的是Uboot,不过全志的Uboot主线对SPI NAND 不太友好,用TF卡就方便。对于T113S芯片,推荐使用Awboot,简陋但快速。开发阶段用这个就方便好多,对SPINAND支持也方便。2)启动linux内核:主线内核以下通篇都用6.13以上的内核。对比tina5.0还在用5.4 ,主要是性能、安全上有变化。6.0以上内核在devicetree的编写具体格式上有了变化,网上大量tina5.0和5.4内核的编写方式不适用。

2301_79234138的博客 2248

后端技术杂谈7:OpenStack的基石KVM

Qemu,KVM,Virsh傻傻的分不清 本文转载自Itweet的博客 本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 本系列文章将整理于我的个人博客: www.how2playlife.com 该系列博文会介绍常见的后端技术,这对...

AliCoder的博客 532

Python实现稳态传热传质的偏微分方程求解

通过这种方法,我们可以求解更复杂的传热传质问题,并对系统的温度和浓度分布进行分析和优化。稳态传热传质是一个重要的工程问题,涉及到物质在空间中的分布以及热量和质量的传递。每次迭代中,我们使用上一次迭代的温度值来计算下一次迭代的温度值。该图显示了平板内部各点的温度分布,其中中心温度为T1,边界温度为T2。接下来,我们创建一个N x N的温度矩阵,并将边界条件初始化为边界温度T2。假设我们有一个矩形平板,其中心温度为T1,四个边界温度为T2。假设平板的长度为L,宽度为W,中心温度为T1,边界温度为T2。

HackDashX的博客 308

Cadence virtuos安装教程

本文详细介绍了在Ubuntu 18.04系统上安装Cadence Virtuoso IC617及MMSIM的完整流程。主要内容包括:1)系统环境准备(安装JDK及相关依赖包);2)通过创建软链接和修改系统文件实现RedHat环境兼容;3)共享目录文件操作与分卷压缩包合并解压技巧;4)使用InstallScape工具的安装步骤详解,包括权限处理和配置选项。特别提醒需注意系统兼容性处理(如创建redhat-release文件)和分卷压缩包的特殊解压方法(cat合并)。整个安装过程涉及大量Linux命令操作,需特

wangjie36的博客 300

虚拟化内核概念

在Linux+X86中,操作系统需要直接访问内存和硬件所以需要运行在ring0上,而应用程序需要运行在ring3上,如果需要进行访问磁盘、读写文件的操作,需要执行系统调用函数,执行系统在调用的时候,CPU运行级别从ring3 到ring0 并跳转到系统调用对应的内核代码位置执行,完成后从ring0到ring3,这个过程叫做用户态和内核态的切换。与hyper-v类似的是hypervisor层非常的薄,不包含任何物理设备驱动,物理设备的驱动均在domain 0之中,可以重用现有的Linux设备驱动程序。

qq_43527659的博客 1459

uniapp [安卓苹果App端] - 实现获取手机日历读写权限+调用本机日历数据及操作功能+日历中插入事项事件提醒,检测权限手机日历权限是否开启并引导用户同意授权,uniApp app端开启日历授权

uni-app,权限,手机日历权限,安卓Android,苹果ios,uniapp安卓android获取本机日历读写权限使用,uni-app获取日历权限并实现插入事项事件功能 uniapp苹果IOS系统不支持怎么办,判断权限,权限被拒绝了怎么办,获取日历权限报错,读取日历数据农历阴历并操作插入移除,给用户手机日历中放入一条提示,UniApp调用日历进行读写,打包上架后如何获取,安卓ios权限检测,安卓和ios权限获取,uniapp的APP端日历读写权限与使用示例代码,如何开启日历权限,日历的新增事项和删除,判

🏆 前端领域优质创作者 1万+

虚拟化技术

全虚拟化、半虚拟化和容器虚拟化是三种主要的虚拟化技术,它们在实现方式、性能和应用场景上存在显著差异。以下是对这三种虚拟化技术的详细比较:

m0_56363537的博客 1172

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

在虚拟机中运行简单内核

以下是传递给 g++ 编译器的参数,主要用于确保生成 32 位代码并禁用一些 C++ 特性。-m32: 指定生成 32 位代码-fno-use-cxa-atexit: 禁用 C++ 的 atexit 功能。-nostdlib: 不链接标准库。-fno-builtin: 禁用内置函数。-fno-rtti: 禁用运行时类型识别。-fno-exceptions: 禁用异常处理。-fno-leading-underscore: 禁用在符号前添加下划线的行为。

weixin_72295673的博客 2016

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

虚拟内核文件系统概述

虚拟内核文件系统(VirtualKernel File Systems     是指那些是由内核产生但并不存在于硬盘上(存在于内存中)的文件系统,他们被用来与内核进行通信前面介绍的ext2,ext3,jffs2,yaffs2等目录和文件,都是真真正正、实实在在的存储在具体的外部存储设备上的,它们可能是在本机的硬盘、闪存、光盘中,可能保存在不只一个磁盘分区中,也可能保存在网络中其它主机的存储设备中

wugsh15的博客 883

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

虚拟机如何选择处理器和内核数量,实现最佳性能

处理器数量指的是:虚拟的CPU数量。每个处理器的内核数量指的是:虚拟CPU的内核数。此处虚拟机的处理器内核总数对应于真实物理机(或者叫宿主机)的CPU线程数(即逻辑处理器的数量)。所以在设置的时候,我们只要让。

weixin_45603370的博客 4万+

Vmware虚拟机上如何编译与安装linux内核

基于vmware的linux内核编译与安装

weixin_42581825的博客 4501

什么是虚拟化?

简要介绍什么是虚拟化,回答现有通用的虚拟化方案及对应的优劣、应用场景。——招聘问题引发的调研总结

tunmang5421的博客 1万+

虚拟化分类和实现原理

5)特点:效率快,是相对于VMware,虚拟机有自知之明,知道自己是个虚拟机,特权指令敏感指令要经过domain0这个特权虚拟机来执行,必须升级内核才能使用。特点:虚拟机不知道自己是个虚拟机,所有的敏感指令店铺需要借助VMare(VMM)进行翻译,翻译成宿主机OS能够捕捉到的指令,反应速度很慢。2)例如el5.1,el5.1xen,domain0是直接运行在操作系统的内核上,所以是本身的OS的一部分,其中特权虚拟机是管理基于XEN的虚拟机。2)其中0环跑的是OS,权限最高,可以执行特权指令。

weixin_46113061的博客 1535

VM虚拟机的安装和相关配置

这里处理器的内核数量,可以打开电脑的设备管理器,查看自己电脑处理器的数量,一般选择不要超过电脑的一半,我这里就设置为八个,点击下一步。这里右键点击新建终端,输入ifconfig 查看虚拟机的IP地址,方便以后的远程控制连接。这里选择虚拟机的内存,我选择的8G,这里的内存自行选择哈。这里选择第一个 ,然后按下回车键。然后这里选择Linux系统,版本为CentOS 7 64位,点击下一步。这里选择好下载的映像文件之后,点击确定。这里选择 稍后安装操作系统,然后点击下一步!这里选择使用网络地址转换,点击下一步。

m0_74411236的博客 5784

【HCIA】虚拟化技术介绍

虚拟化(Virtualization)的含义很广泛。将任何一种形式的资源抽象成另一种形式的技术都是虚拟化,是资源的一种逻辑表示。解除了物理硬件和操作系统之间的紧耦合关系。•虚拟化是云计算的基础。简单地说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的CPU、内存、IO硬件资源,但逻辑上虚拟机之间是相互隔离的。•在计算机方面,虚拟化一般指通过对计算机物理资源的抽象,提供一个或多个操作环境,实现资源的模拟、隔离或共享等。•本质上,虚拟化就是对硬件资源的一种抽象与模拟。

武师叔的博客 7437
上一篇: 后端技术杂谈5:云计算的前世今生
下一篇: 后端技术杂谈7:OpenStack的基石KVM
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值