zoukankan      html  css  js  c++  java
  • virtio再说清楚一下

    又要看virito的事情了

    想想,这部分应该也是比较好理解的,就是guest内核里的io的数据包都放在了一个叫virtio queue的一个环形缓冲区中,在这个缓冲区中,然后唤醒qemu或者是内核线程vhost-net去将缓冲区中的数据给读出来,染后转化成host上的IO,然后IO完成之后,再通知一下guest内核就可以了,这个应该不难理解才对。

    因为数据都是直接在内核里的,所以不涉及到那么多的memory copy,所以效率会更高一些。

    还有就是对于文件的loop设备,应该是非常简单的事情,比如在文件的offset=8k的地方写一个page,对于loop设备来说,IO请求的处理也是没有必要转到用户态的,直接在内核态完就可以了,因为到了block层之后,你就会知道,你就会知道这是个文件,然后通过文件的话,就能找到相应的page-cache,所以写的话就不成问题了,然后使用类似于slice copy这样的机制,在内核态里直接穿透两个文件系统,进行数据的传输。

    所以原理还是很好理解的

    至于之前不明白的什么vmExit这些都不是本期应该关注的问题,因为也可以在用户态里实现文件的访问,其实有很多的优化的方向,可以直接用vhost来访问,各种各样。

    分析陌生的内核问题要抓住主要矛盾,没必要一开始就陷入到细节的泥沼中;

    了解新的内核机制,要快速抓到核心问题,没必要一开始就陷入到细节的泥沼中去;

    了解新的内核机制,要快速抓到核心问题,没必要一开始就陷入到细节的泥沼中去;

  • 相关阅读:
    CodeSmith中SchemaExplorer属性的介绍
    Bugku-INSERT INTO 注入
    XCTF-PHP2
    网络安全实验室CTF-注入关
    XSS挑战
    SQL注入
    CTFHub-技能树-命令执行
    CTFHub-技能树-文件上传
    史上最难的一道Java面试题 (分析篇)
    高可用的一些思考和理解
  • 原文地址:https://www.cnblogs.com/honpey/p/13703317.html
Copyright © 2011-2022 走看看