linux - 将变量存储在任何地方(交换空间、磁盘)但不在物理内存中

标签 linux memory memory-management

我知道可以使用 mlock() 函数强制将变量存储在物理内存中。

void *buffer = malloc(buf_size);
mlock(buffer, buf_size);
// If there is no error when executing these instructions,
// On First Write to buffer, the buffer will be stored in physical memory

但是,如果我们想确保变量永远不会驻留在物理内存中怎么办。有可能这样做吗?如果是,Linux 如何允许在用户空间中执行此操作。

最佳答案

当有东西被写入磁盘时,磁盘 Controller 通过DMA读取文件的内容。 . DMA 是直接内存访问 的缩写,术语“内存”在这里很关键。它将访问内存。这甚至是独立于操作系统的,因为它是在硬件中实现的。

system("wget http://example.com/?x=2+2");

这会将变量 x 的值为 4 存储在我的网络服务器上,而不是在您 PC 的 RAM 中。除了像这样的极端例子,我想不出任何解决方案。

关于linux - 将变量存储在任何地方(交换空间、磁盘)但不在物理内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46914120/

相关文章:

ios - 如何查找并修复崩溃原因

c++ - 释放包含 malloc 字符串的 malloc 结构

linux - 无法使用 expect 通过远程服务器中的 sftp 输入所有文件

python - 如何将required.txt中提到的所有python包下载到linux的文件夹中?

linux - 如何允许从VSTS到Linux的SSH连接

debugging - 反调试-防止内存转储

c++ - 在设计内存池时,关于对齐需要考虑什么?

linux - 类型错误 : __init__() got an unexpected keyword argument 'timeout' pymongo

ios - 解决迁移大量数据的内存问题

c - 这是从函数返回结构数组的正确方法吗?