将变量存储在任何位置(交换空间,磁盘)但不存储在物理内存中

时间:2017-10-24 15:13:15

标签: 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允许在用户空间中执行此操作。

1 个答案:

答案 0 :(得分:0)

当某些内容写入磁盘时,磁盘控制器会通过DMA读取文件的内容。 DMA是直接内存访问的缩写,术语"内存"关键在这里。它将访问内存。这甚至与操作系统无关,因为它是在硬件中实现的。

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

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