gpt4 book ai didi

linux - Linux 上环形缓冲区的内存镜像

转载 作者:行者123 更新时间:2023-12-02 09:37:49 24 4
gpt4 key购买 nike

我使用匿名 mmap 来分配一大块内存。我想使用虚拟内存镜像将其中的几个连续页面变成环形缓冲区。

This example on Wikipedia通过虚拟内存镜像显示了我的意思。

假设下面的前 14 个块是我的大块中的页面。我想将第 6 页和第 7 页虚拟映射到另外两个连续的位置。

[0][1][2][3][4][5][6][7][8][9][10][11][12][13].......[6][7][6][7]

Mike Ash 给 a rundown我想做的事情,但使用特定于 mach 的 API。

如何在 Linux 上做到这一点?

最佳答案

这是不可能通过匿名映射实现的。但是,您可以使用 memfd_create(2)或者在 tmpfs 上创建一个临时文件(这样它就不会被存储到磁盘,除非通过“交换”)并在该文件描述符上进行共享映射,彼此相邻。

remap_file_pages(2)只是一个性能技巧,并不比经典的 mmap/mremap 调用更强大,而且它也不能对匿名映射进行操作。

相关:Linux mremap without freeing the old mapping?

关于linux - Linux 上环形缓冲区的内存镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21112673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com