当前位置: 首页 > news >正文

云计算服务的底层,虚拟化技术的实现原理

虚拟化技术:

一、

从cpu说起,

intel和amd等cpu制造商

为了提高其cpu对

虚拟化程序的运算速度,

给cpu硬件里面

增加了指令集

 VMLAUNCH, VMRESUME, VMEXIT, VMXOFF

这些指令集称为硬件辅助虚拟化技术的指令集。

---------------------------------------------------------------------------------------------------


什么是指令集?

是指令的集合。

什么是指令?

是cpu提供给程序的一个个功能。程序编译成机器码,可以调用这些功能。

这些功能包括,加减乘除、与或非、移动、输入输出,和虚拟机的各项操作。

指令集通常包括多种类型的指令,如:
数据移动指令(如 MOV
算术运算指令(如 ADD, SUB, MUL, DIV
逻辑运算指令(如 AND, OR, NOT, XOR
条件分支指令(如 JMP, JE, JNE
输入输出指令(如 IN, OUT
特殊功能指令(如虚拟化支持指令 VMLAUNCH, VMRESUME

 以intel的cpu举例

Intel VT-x (Virtualization Technology for x86)介绍:
Intel VT-x 是 Intel 处理器提供的硬件辅助虚拟化技术。
它通过提供一组新的指令和扩展现有指令集来支持虚拟化。
关键指令:
VMXON: 启用虚拟化模式。
VMXOFF: 关闭虚拟化模式。
VMREAD: 读取 VMCS(Virtual Machine Control Structure)中的字段。
VMWRITE: 写入 VMCS 中的字段。
VMPTRLD: 加载 VMCS。
VMPTRST: 存储 VMCS。
VMRESUME: 恢复虚拟机执行。
VMLAUNCH: 启动虚拟机执行。
VMEXIT: 退出虚拟机执行。
VMRUN: 运行虚拟机直到下一个事件发生。

程序编译成机器码,发送给cpu

cpu接收到机器码后,通过指令解码器将其解码成一系列微操作(micro-operations)

解码后的微操作被发送到cpu的执行单元进行实际执行。

各种计算之后,把结果返回给程序

程序拿着结果又去干别的事情。

比如把虚拟机启动起来。

---------------------------------------------------------------------------------------------------

二、kvm

什么是kvm?

是内核的一个模块

加载这个模块,就可以调用cpu中的虚拟化指令集。

怎么加载?

modprobe  kvm,敲回车,就好了。

linux内核是高度模块化的,跟ansible一样,需要用哪个模块,加载哪个就可以使用。

如何使用kvm模块?

用qemu来使用。

------------------------------------------------------------------------------------------------------

三、qemu

 什么是qemu?

是一个程序

可以虚拟出来硬件,比如cpu,内存,硬盘,网卡

怎么虚拟出来的?

找kvm,让kvm调用cpu的虚拟化指令集。

cpu一顿操作

就整出来了

---------------------------------------------------------------------------------------------------------

四、libvert

用户怎么管理虚拟机

用libvert提供的工具箱

libvert是一个程序

提供了API给用户

用户可以使用命令行工具来调用这些API,来管理虚拟机

比如virsh命令,virt-manager命令


 

http://www.lryc.cn/news/438791.html

相关文章:

  • 大数据Flink(一百一十六):Flink SQL的时间属性
  • Ansible自动化部署kubernetes集群
  • 网络通信流程
  • 数据结构一:绪论
  • 使用OpenFeign在不同微服务之间传递用户信息时失败
  • js中【Worker】相关知识点详细解读
  • 使用Apify加载Twitter消息以进行微调的完整指南
  • 【C++算法】滑动窗口
  • (c++)猜数字(含根据当前时间生成伪随机数代码)
  • 优化批处理流程:自定义BatchProcessorUtils的设计与应用
  • Framebuffer应用编程
  • MongoDB根据字段内容长度查询语句
  • Android中的单例模式
  • python做游戏好用吗
  • 常用游戏运行库下载
  • (1)CLIP
  • MongoDB高可用和分片集群知识
  • 【Python日志功能】一.日志基础与基本配置
  • 深圳铨顺宏科技展邀您体验前沿人工智能技术
  • Lombok:Java开发者的代码简化神器【后端 17】
  • [linux]GCC G++官方源码国内下载地址汇总
  • 部署opengauss5.0.3,细节满满
  • 面试题总结(四) -- STL与算法篇
  • HashSet及其实现原理
  • 反序列化漏洞练习1
  • 树莓派Pico2(RP2350)开发环境搭建
  • vue 路由中使用keepAlive在这个组件中使用onActivated
  • 医学数据分析实训 项目一 医学数据采集
  • 《Oracle(一)- 基础》
  • Unity Resource System 优化笔记