-3

在 Linux 上。

你好。我敢肯定有很多因素涉及操作系统只是垃圾转储分配给 memset() 的内存而不调用 free(),但我想知道是否有人对此有很好的估计?这就是我想知道的。

linux 中有一个叫做 KSM 的功能,它通过组合匹配的数据来节省内存空间。我的问题围绕着通过检查数据的写入时间来检测 KSM 是否正常工作。我已经在一台机器上成功地测试了这个,同时在一个程序中运行所有东西。现在我想上传到内存,关闭程序,然后打开另一个程序并测试内存重复。

谢谢!

-泰勒

4

2 回答 2

1

让我们谈谈抽象:

  • AC 程序员为“C 抽象机”编写软件。这与任何真正的硬件无关。

  • “C 抽象机”被转换成在某种“进程”抽象中运行的东西(例如可执行文件)。这种“进程”抽象与任何真正的硬件无关(它使用“线程”而不是真正的 CPU、“虚​​拟内存”而不是真正的 RAM、“文件”而不是真正的磁盘空间……)。

  • 操作系统在机器之上创建“进程”抽象。对于 KSM(操作系统在虚拟机中运行),这种“虚拟机”抽象与任何真实硬件无关。

现在; 让我们将“抽象”定义为旨在保护人们免受现实影响的故意谎言(我们也将“安全漏洞”定义为谎言中的缺陷)。

在任何时间点确定“C 抽象机中的内存”与实际物理资源(RAM 芯片、磁盘空间等)之间的关系;您需要突破至少 3 个故意设计的障碍,以防止您了解这段关系。

于 2019-08-03T05:13:28.813 回答
1
  • memset 不分配内存,malloc 会
  • 在空闲调用或进程终止之前,内存不会被释放
  • C中没有抽象机,语言的设计原则
于 2019-08-03T05:31:27.713 回答