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

网站开发 项目介绍企业建设营销型网站步骤

网站开发 项目介绍,企业建设营销型网站步骤,一站式网站,如何链接自己做的网站这篇文章将深入分析Linux中虚拟化技术的实现----KVM技术,从KVM技术的简介、技术架构、以及虚拟机和宿主机交互的重要处理逻辑出发,深入探究KVM技术的实现。 一、KVM简介: 首先,我们先查看一下KVM架构,看看它的整体工…

这篇文章将深入分析Linux中虚拟化技术的实现----KVM技术,从KVM技术的简介、技术架构、以及虚拟机和宿主机交互的重要处理逻辑出发,深入探究KVM技术的实现。

一、KVM简介:

首先,我们先查看一下KVM架构,看看它的整体工作流程:

上图展示了KVM(Kernel-based Virtual Machine)的架构及其与QEMU的交互。以下是对该架构的说明:

  1. KVM Guest(虚拟机客户机)‌:

    • Applications(应用程序)‌:这是运行在虚拟机内的上层应用程序。
    • File system and block devices(文件系统和块设备)‌ 和 ‌Drivers(驱动程序)‌:这些组件为应用程序提供对存储设备的访问。
    • VCPU(虚拟CPU)‌:虚拟机内的虚拟处理器,图中展示了vcpu0vcpuN,代表多个虚拟CPU。
  2. Hardware Emulation (QEMU)‌:

    • QEMU(硬件模拟)‌:QEMU负责模拟硬件,使得虚拟机可以运行在不同于宿主机硬件的环境中。
    • ‌ioTHREAD‌:这是QEMU中的一个线程,负责生成I/O请求并处理这些请求,ioTHREAD代表虚拟机处理输入/输出操作,如读写磁盘数据。
  3. KVM (kvm.ko)‌:

    • KVM模块(kvm.ko)‌:这是Linux内核中的一个模块,用于直接在内核中实现虚拟化功能。KVM本身不实现硬件模拟,而是与QEMU结合使用,通过QEMU进行硬件模拟。
    • File system and block devices(文件系统和块设备)‌ 和 ‌Physical drivers(物理驱动程序)‌:这些组件用于连接KVM模块与实际的硬件,如磁盘。
  4. Hardware(硬件)‌:

    • CPU(中央处理器)‌:物理CPU,被虚拟化为多个虚拟CPU(如cpu0cpuN)供虚拟机使用。
    • Disk(磁盘)‌:物理存储设备,被虚拟机通过文件系统和块设备访问。

KVM与QEMU的交互‌:

  • QEMU通过IOTHREAD生成I/O请求并处理这些请求,这些请求代表虚拟机与硬件的交互。
  • KVM模块(kvm.ko)在Linux内核中运行,管理虚拟机的VCPU,并与QEMU协作,确保虚拟机能够运行并访问硬件资源。
  • 整个系统通过qemu_mutex机制确保在任何时刻只有一个线程可以运行QEMU代码,从而避免竞态条件和数据不一致。
  • 在创建虚拟机时,QEMU会调用KVM提供的接口来创建虚拟机、分配vCPU等。同时,QEMU还负责模拟虚拟机的其他硬件设备,如网卡、串口等‌。
  • 在虚拟机运行过程中,QEMU会发起对vCPU的运行请求,KVM则负责实际运行vCPU,并在需要时与QEMU进行交互,如处理I/O请求等‌。

总结来说,KVM和QEMU的结合提供了一种高效的虚拟化解决方案,KVM负责虚拟CPU的管理和调度,而QEMU则负责硬件模拟和I/O处理,两者紧密协作,使得虚拟机能够在宿主机上高效运行。

综上所述,QEMU和KVM通过特定的接口和机制进行交互,共同实现了虚拟机的创建、运行和I/O虚拟化处理等功能。

二、深入KVM工作流程:

通过下图来解析KVM的工作流程:

通过上图所示QEMU与KVM整体架构图,可以详细了解KVM(Kernel-based Virtual Machine)的工作流程。下面通过举例来说明KVM的工作流程:

  1. 硬件平台与系统总线‌:

    • 图左侧显示了一个模拟平台,包含系统总线、VGA、PCI总线、内存及vCPU等硬件资源。这些资源通过QEMU进行模拟,并在宿主机上实现虚拟化。
  2. KVM API与主循环‌:

    • 宿主机内核中包含了KVM API(/dev/kvm),通过该接口用户空间的QEMU进程可以与内核中的虚拟化模块进行交互。
    • QEMU通过KVM API将虚拟机的指令和操作传递给KVM模块。
  3. 虚拟机入口(VM Entry)‌:

    • 当虚拟机需要执行时,通过VM Entry进入虚拟机环境。此时,虚拟机的vCPU与宿主机上的物理CPU进行交互。
    • 网卡驱动、磁盘驱动和显卡驱动等虚拟机设备驱动通过gCR3表(影子页表)与宿主机资源进行映射和交互。
  4. 虚拟机状态与挂起/恢复‌:

    • VMCS(Virtual Machine Control Structure)保存了虚拟机的状态,包括物理机状态和虚拟机状态。
    • 当虚拟机需要挂起时(例如,保存当前运行状态),其状态信息会被保存到VMCS中。
    • 恢复时,通过检查挂起的信号,如果满足进入Guest模式的条件,则通过handle exit处理退出事件,并重新进入虚拟机执行。
  5. 应用程序与虚拟机‌:

    • 虚拟机中的应用程序1和应用程序2通过vCPU执行,vCPU通过影子页表(gCR3)访问宿主机资源。
    • 虚拟机中的操作通过VCPU与QEMU进行交互,QEMU再通过KVM API将操作传递给KVM模块处理。

示例说明‌:
假设有一个宿主机运行Linux操作系统,并在其上通过KVM和QEMU创建了一个Ubuntu虚拟机。

  1. 启动虚拟机‌:

    • 用户启动QEMU进程,通过KVM API创建和初始化虚拟机的vCPU、内存和I/O设备等资源。
    • QEMU将虚拟机的指令和操作通过KVM API传递给KVM模块,KVM模块将这些操作映射到宿主机的物理CPU和内存上。
  2. 虚拟机运行‌:

    • 虚拟机启动后,其vCPU通过VM Entry进入虚拟机环境,开始执行Ubuntu操作系统。
    • 虚拟机中的应用程序在vCPU上运行,并通过影子页表(也可使用EPT方式)访问宿主机的硬件资源,例如通过网络驱动访问网络,通过磁盘驱动访问存储设备等。
  3. 挂起与恢复‌:

    • 假设虚拟机正在进行一个长时间的计算任务,用户决定暂时挂起虚拟机去处理其他事情。
    • QEMU通过KVM API将虚拟机的当前状态(包括CPU寄存器、内存状态等)保存到VMCS中。
    • 用户事情处理完后,决定恢复虚拟机,QEMU通过KVM API从VMCS中恢复虚拟机状态,并通过handle exit处理恢复逻辑,使虚拟机继续执行之前的任务。

本篇博客主要分析了KVM模块和QEMU的整体架构、以及它们是如何协同工作的,后面会深入内核源码去探究KVM模块的具体实现。

本博客的内容参考了书籍:《QEMU_KVM源码解析与应用》

欢迎大家一起来探讨虚拟化技术,后期我会针对KVM技术进行更深入的分析,并且会结合eBPF技术,分享如何去观测KVM模块,大家可以持续关注专栏《虚拟化技术》。


文章转载自:

http://hiLDtuAj.jsrnf.cn
http://24hwE4YZ.jsrnf.cn
http://dGFDsjFc.jsrnf.cn
http://tkR8tIan.jsrnf.cn
http://cuylTVDT.jsrnf.cn
http://NajgAofV.jsrnf.cn
http://TS9KglbY.jsrnf.cn
http://QIGIG58x.jsrnf.cn
http://Lj9T7Vvl.jsrnf.cn
http://cprApuJX.jsrnf.cn
http://wFetHrQ5.jsrnf.cn
http://aWYwYKXa.jsrnf.cn
http://PhPaVSbv.jsrnf.cn
http://4fmTMJDm.jsrnf.cn
http://iuqZq1DI.jsrnf.cn
http://Lm04GnMF.jsrnf.cn
http://R9m1hBqD.jsrnf.cn
http://OHSEoji5.jsrnf.cn
http://idUgj6oK.jsrnf.cn
http://hOD1o9Qr.jsrnf.cn
http://VbBSHj4R.jsrnf.cn
http://Q2f3qRSj.jsrnf.cn
http://2vQxlA48.jsrnf.cn
http://BYqNHBAD.jsrnf.cn
http://F08Vp2UP.jsrnf.cn
http://Bj0P9zJ0.jsrnf.cn
http://HkaAaO0J.jsrnf.cn
http://tRc5MZxP.jsrnf.cn
http://DTxTXsXw.jsrnf.cn
http://DUZn7iDs.jsrnf.cn
http://www.dtcms.com/wzjs/724154.html

相关文章:

  • 建网站需求长春网站制作顾问
  • 电子商务网站的建设目标网站建设调研问卷
  • 网站开发 界面计算机专业网页设计
  • 手机号码网站建设阿里域名
  • 会网站建设怎样赚钱年度关键词有哪些
  • 如何做网站电话在线教育
  • 深圳做模板网站的公司怎样电脑登录网站
  • 做淘宝客网站哪个好用深圳建站模板购买
  • 张家港企业网站网站seo关键词优化技巧
  • 做足球推荐网站能赚钱吗宣传方式
  • 网站建设亿码酷适合5wordpress验证码国内
  • 广西建设科技协会网站首页国外做ic的网站
  • 怎么给自己的网站做排名德吉机械东莞网站建设
  • 淮南做网站的公司有哪些海南第四建设工程有限公司网站
  • 科技资讯 哪个网站好基于php技术的个人网站设计
  • 自助建站软件下载天津网站建设方案
  • 做电商需要知道的几个网站吗wordpress二维码
  • 郴州网站建设公司哪家好建湖网站优化公司
  • 不同类型网站优势备案时的网站建设方案书
  • 怎么做自己网站里的资讯网站开发组件拖拽
  • 网站建设策划内容网站下载app连接怎么做
  • 佛山教育平台网站建设做家装施工的网站
  • 摄影工作室网站设计绿色网站风格
  • 个人做电商网站网站开发未按合同约定开发时间完工
  • 网站建设设计制作 熊掌号网站设计建设有限公司
  • 温州手机网站制作哪家便宜wordpress英文站源码
  • 手机网站模板建站梦幻西游网页版官方网站
  • app与网站的区别如何制作私人网站
  • 淘宝买cdk自己做网站ui做网站流程
  • 宁波本地模板网站建设平台网站一直被攻击怎么办