gpt4 book ai didi

c - 如何使基于磁盘的缓冲区像内存一样?

转载 作者:行者123 更新时间:2023-11-30 17:30:19 25 4
gpt4 key购买 nike

我在此网站上看到过类似的问题,但没有有用的答案。

Scenario:
Following is the data transmission process ,
embedded devices-------->buffer-------->AWS(Cloud Storage)

Conditions:
Owing to the limit of embedded device, there is not enough memory to store the data.

My idea:
Using mmap() to allocate "memory" on disk, and manage the data relay on another lib, which is a opensource lib on github.

Problem:
However, I discover it just now that the it will occupy memory in the real memory. This method seems cannot solve my condition.

你的想法是什么?伙计...

最佳答案

mmmap(2) 所做的一切都是为了避免用户空间应用程序的缓冲区和内核保存缓冲区之间的额外数据复制操作。真实文件的映射部分成为应用程序虚拟地址空间的一部分,并占用 block 缓存中的物理内存,即使您使用的是匿名映射(没有后备文件的映射,fd arg 设置为 -1 )。

因此,通过移动 mmap(2) 窗口,您可以直接访问保存文件数据的内核缓冲区高速缓存。使用4K映射窗口来对应虚拟内存映射硬件功能,并且您的文件可以是任意大小,但只能在文件中使用4K映射窗口。

mmap(2) 的好处是您可以打开文件,创建 mmap(2) 窗口,然后关闭文件。现在,您可以使用将映射窗口视为数据数组对象的加载/存储来访问文件数据。

关于c - 如何使基于磁盘的缓冲区像内存一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25182951/

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