加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – vmsplice(2)的语义是什么,有没有送礼?

发布时间:2020-12-14 01:40:40 所属栏目:Linux 来源:网络整理
导读:我正在尝试理解vmsplice(2)系统调用的功能(手册页 here).我有两个关于SPLICE_F_GIFT标志效果的问题: 手册页说,一旦您将页面提供给内核,就不能再次修改内存.这是否意味着内存永远固定,或者它可能是指可以通过赠送过程而不是物理内存取消映射的虚拟内存?换句
我正在尝试理解vmsplice(2)系统调用的功能(手册页 here).我有两个关于SPLICE_F_GIFT标志效果的问题:

>手册页说,一旦您将页面提供给内核,就不能再次修改内存.这是否意味着内存永远固定,或者它可能是指可以通过赠送过程而不是物理内存取消映射的虚拟内存?换句话说,这个的典型用途是什么样的?
>如果我没有设置SPLICE_F_GIFT,那么vmsplice(2)是不是像writev(2)这样的矢量化写系统调用?

解决方法

Does that mean the memory is pinned forever,or does it perhaps refer to virtual memory that can be unmapped by the gifting process,rather than physical memory? In other words,what does a typical use of this look like?

您承诺不修改页面.不是页面的虚拟寻址.对于大多数用例,建议操作类似于:

mmap
read
vmsplice
munmap

通常,您希望在malloc上使用mmap,因为您希望确保拥有一个页面,而不仅仅是4096字节的RAM.如果您的分配器确定更有效,那么它可以位于2MB或1GB HUGE_PAGE的中间.

If I don’t set SPLICE_F_GIFT,is vmsplice(2) any different than a vectorized write syscall like writev(2)?

内核中的大多数缓冲区都是管道.或者真正的管道由与缓冲区相同的数据结构表示.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读