Max*_*Max 5 linux circular-buffer virtual-memory
我使用匿名mmap来分配一大块内存.在这里有几个连续的页面,我想使用虚拟内存镜像变成一个环形缓冲区.
维基百科上的这个例子显示了虚拟内存镜像的含义.
假设下面的前14个区块是我巨大的块中的页面.我想将第6页和第7页虚拟地映射到另外两个连续的位置.
[0][1][2][3][4][5][6][7][8][9][10][11][12][13].......[6][7][6][7]
Run Code Online (Sandbox Code Playgroud)
迈克·阿什给出一个破败的什么我想要做的,但使用马赫特定的API.
怎么能在Linux上完成?
小智 0
使用匿名映射无法实现这一点。但是,您可以使用memfd_create(2)或在 tmpfs 上创建一个临时文件(以便它永远不会存储到磁盘,除非通过“交换”),并在该文件描述符上执行彼此相邻的共享映射。
remap_file_pages(2)只是一个性能黑客,并不比经典的 mmap/mremap 调用更强大,而且它也不能对匿名映射进行操作。
| 归档时间: |
|
| 查看次数: |
1496 次 |
| 最近记录: |