VIRTIO-BLK代码分析(3)数据流处理

news2025/1/18 8:56:52

        VIRTIO-BLK整个过程数据流如下所示:

IO请求发送过程

        虚拟机中通过FIO等下发IO请求,IO请求通过VFS/filesystem,然后到BLOCK层,传递给virtio-blk驱动,virtio-blk驱动通过virtio_queue_rq()下发IO请求,并通过vp_notify()通知QEMU中VIRTIO设备数据准备完毕。

        虚拟机中vp_notify()访问寄存器,它会陷入到hypervisor中,并分发到QEMU中,并最终由virtio_pci_notify_write()模拟操作,通过函数virtio_blk_handle_output()将数据下发,这里如果支持IO_URING时,可以通过luring_co_submit()提交IO请求;如果支持AIO时,可以通过laio_co_submit()提供IO请求。

        QEMU提交IO请求如同普通物理机上用户态提交IO请求一样,依次经过文件系统层,BLOCK层,最终下发给硬件处理。

IO请求完成过程

        硬件完成IO处理后,IO完成信息依次通过BLOCK层,文件系统层,最终返回到QEMU中由函数virtio_blk_rw_complete()处理。该函数通过virtio_notify()往虚拟机注入中断,虚拟机产生中断后由函数vring_interrupt()进行中断处理,并调用virtioblk_done()作VIRTIOBLK的IO完成,并将IO完成信息依次通过BLOCK层,文件系统层,并最终返回给虚拟机中应用。

        在上述过程中IO请求下发是通过vp_notify()访问虚拟机中寄存器,最终由QEMU模拟MMIO操作通知IO下发;IO完成是通过往虚拟机中注入中断通知虚拟机IO完成处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/980177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频过大如何压缩变小?想学的小伙伴不要错过机会

视频过大如何压缩变小?在当今社交媒体和直播平台的时代,视频内容的传播已经广泛而频繁,我们每天不仅刷视频打发无聊的时间,也会向一些自媒体平台分享自己拍摄的视频。如今人们对视频画质的要求不断提高,因此大多数下载…

武汉凯迪正大—断路器特性测试仪

一、凯迪正大高压开关测试仪产品概述 KDGK-F 断路器机械特性测试仪可用于各电压等级的真空、六氟化硫、少油、多油等电力系统高压开关的机械特性参数测试与测量。测量数据稳定,抗干扰性强,可在500KV等级及以下电站做实验,接线方便&#xff0…

知识图谱(2)词汇挖掘与实体识别

实体是指文本中的词汇或者短语(比如"中药"),但不是所有词汇都是实体(比如"新鲜的"),因此,从非结构化的文本构建知识图谱涉及两个基本步骤: 挖掘尽可能多的高质…

初次安装Pytorch过程

第一次安装Pytorch,刚开始安装的时候装错了CUDA的版本号 这里最高支持12.2.138, 但是我装了一个12.2.140的CUDA,导致不兼容我在测试时发现 import torch# if torch.cuda.is_available(): # print("GPU可用") # else: # p…

Xilinx FPGA 超温关机保护

在UG480文档,有关于FPGA芯片热管理的介绍。 首先需要理解XADC中的 Over Temperature(OT)和User Temperature的关系。片上温度测量用于关键温度警告,也支持自动关机,以防止设备被永久损坏。片上温度测量在预配置和自动关…

python flask框架 debug功能

从今天开始,准备整理一些基础知识,分享给需要的人吧 先整理个flask的debug功能,首先列举一下debug加与不加的区别,然后再上代码和图看看差异 区别: (1)加了debug后,修改js&#xf…

【电源专题】接地的类型

在工作和生活中我们往往都会碰到接地的概念,随着社会的发展不同的时期接地有着不同的意义。 其中包括从安全方面看,有物理接地和电气接地,物理接地是为了防雷连接到大地并提供浪涌电流路径,电气接地是为了保护人身安全而将电气设备外壳接接地的一种操作。从参考电位上看,…

异步编程 - 03 线程池ThreadPoolExecutor原理剖析源码详解

文章目录 线程池ThreadPoolExecutor原理剖析线程池类图结构成员变量ctl线程池的主要状态线程池的参数提交任务到线程池原理解析public void execute(Runnable command)public Future<?>submit(Runnable task)public Future submit(Runnable task&#xff0c;T result) 线…

【精品】商品规格 数据库表 设计

特点 同一类商品的规格项分组一样同一类商品的规格项一样不同商品的规格值是不同的 规格参数规格组规格项&#xff1a;规格值本博客对应的SQL文件下载地址&#xff1a;https://download.csdn.net/download/lianghecai52171314/88306884 方案一 数据库设计 查询17号商品的规…

PY32F003F18的中断线

PY32F003F18的中断线有30条&#xff0c;其中Line20~Line28保留不用&#xff0c;见下图&#xff1a; Line0~Line8需要配置&#xff0c;选择引脚和中断线连接&#xff0c;和GPIO引脚对应&#xff0c;Line9~Line15和PA9~PA15一一对应。见下图&#xff1a; 外部中断选择寄存器1(EXT…

国际慈善日 | 追寻大爱无疆,拓世科技集团的公益之路

每年的9月5日&#xff0c;是联合国大会正式选定的国际慈善日。这一天的设立&#xff0c;旨在通过提高公众对慈善活动的意识&#xff0c;鼓励慈善公益活动通过各种形式在全球范围内得到增强和发展。这是一个向慈善公益事业致敬的日子&#xff0c;同时也是呼吁全球团结一致共同发…

Swagger简介

一.导语&#xff1a; 相信无论是前端还是后端开发&#xff0c;都或多或少地被接口文档折磨过。前端经常抱怨后端给的接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力&#xff0c;经常来不及更新。其实无论是前端调用后端&#xff0c;还是后端调用后端&…

尼尔森IQ :2023年中国商业养老服务供需洞察白皮书

核心观点 随着我国人口年龄结构发生巨大转变&#xff0c;老龄化问题成为未来较长时间内持续面临的挑战&#xff0c;积极应对老龄化已上升为国家战略&#xff0c;有效的、高质量的养老服务体系亟待建设。本章通过人口数据揭示我国老龄化进程&#xff0c;总结围绕养老领域出台的…

“银河护卫队总部”放大招!Milvus 核心组件再升级,主打就是一个低延迟、高准确度

熟悉我们的朋友都知道&#xff0c;在 Milvus 和 Zilliz Cloud 中&#xff0c;有一个至关重要的组件——Knowhere。 Knowhere 是什么&#xff1f;如果把向量数据库整体看作漫威银河护卫队宇宙&#xff0c;那么 Knowhere 就是名副其实的总部&#xff0c;它的主要功能是对向量精确…

linux 进程管理命令

进程管理命令 查看进程命令 ps命令 显示系统上运行的进程列表 # 查看系统中所有正在运行的系统ps aux# 获取占用内存资源最多的10个进程&#xff0c;可以使用如下命令组合&#xff1a;ps aux|head -1;ps aux|grep -v PID|sort -rn -k 4|head# 获取占用CPU资源最多的10个进程&am…

成本控制与电子元器件采购:实现效益的关键因素

成本控制在电子元器件采购中至关重要&#xff0c;它直接影响了组织的盈利能力和竞争力。以下是实现成本效益的关键因素&#xff1a; 供应商谈判&#xff1a; 成本控制的第一步是与供应商进行有效的谈判。这包括谈判价格、交货条件、质量标准和其他合同条款。有时长期合同可以帮…

【数学建模竞赛】优化类赛题常用算法解析

优化类建模 问题理解和建模&#xff1a;首先&#xff0c;需要深入理解问题&#xff0c;并将问题抽象为数学模型。这包括确定问题的目标函数、约束条件和决策变量。 模型分析和求解方法选择&#xff1a;对建立的数学模型进行分析&#xff0c;可以使用数学工具和方法&#xff0c;…

绘制钻头芯厚变化图

import numpy as np import matplotlib.pyplot as plt posnp.array([0.05,0.5,0.97,3]) data_m1np.array([0.088,0.093,0.098,0.116]) data_m2data_m1-0.01 data_m3data_m1-0.02 fig plt.figure(figsize(5, 4)) plt.rcParams[xtick.direction] in # 将x周的刻度线方向设置向…

miners lamp

矿灯、头灯&#xff0c;夜间作业

嵌入式软件有限状态机的 C 语言实现

状态机模式是一种行为模式&#xff0c;通过多态实现不同状态的调转行为的确是一种很好的方法&#xff0c;只可惜在嵌入式环境下&#xff0c;有时只能写纯C代码&#xff0c;并且还需要考虑代码的重入和多任务请求跳转等情形&#xff0c;因此实现起来着实需要一番考虑。 近日在看…