我正在尝试了解vmsplice(2)
syscall的功能(手册页here)。关于SPLICE_F_GIFT
标志的作用,我有两个问题:
SPLICE_F_GIFT
,vmsplice(2)
与像writev(2)
这样的矢量化写入系统调用有什么不同吗? 最佳答案
您保证不会修改页面。不是页面的虚拟地址。对于大多数用例,建议操作类似于:
mmap
read
vmsplice
munmap
通常,您要使用
mmap
而不是malloc
,因为要确保您拥有一个页面,而不仅仅是4096bytes的RAM。如果分配器确定效率更高,则该位置可能位于2MB或1GB的HUGE_PAGE
中间。是的
内核中的大多数缓冲区是管道。或实际上,管道是由与缓冲区相同的数据结构表示的。