如何划分 RAM:一半用于 Linux,另一半用于应用程序

如何划分 RAM:一半用于 Linux,另一半用于应用程序

我们的系统有 1 GB 内存。我想将其中的 512MB 限制为 Linux,并直接从 Linux 上运行的应用程序访问其余的 512MB。

在 2.6.x 上实现这一点的建议方法是什么?

问候,Prab

答案1

您正在运行 Linux - 您机器中的所有内存均可供 Linux 使用,以便 Linux 可以将它们提供给您的程序。

如果系统有 512Mb 可用空间,它会将其提供给您的程序,如果没有,则不能。

您可以使用其他方法来确保 512Mb 被锁定到 RAM 中(不能交换到磁盘),但我怀疑这超出了您需要做的事情。

答案2

我唯一能想到的办法就是让您的应用程序在首次启动时 malloc() 分配 512 MB 内存,然后在程序内手动细分内存。天啊,这太丑了。

答案3

我不太明白这个问题;你必须更清楚地解释你的目的。

Linux 将其内存分配给应用程序,因此如果 Linux 有内存,它会将其提供给您的应用程序。

如果你想确实拥有记忆,现在,你应该

  • 分配它(例如使用 malloc 或 mmap)
  • 触摸所有页面(例如在每页上写些内容)
  • mlock() 它 - 以确保它不会被交换出去。或者干脆不配置交换(注意:如果禁用交换,干净的文件支持页面仍可能被丢弃)。

如果您确实需要将程序使用的所有页面都放在核心中,请使用 mlockall。

答案4

您的应用程序无法与“DIMM 2,芯片 3,第 42 个字节”通信。它需要系统的其他部分(包括 Linux)为每个内存字节分配一个简单的数字(地址)。如果您从 Linux 中排除 512 MB,它甚至不会有地址。这意味着您的应用程序甚至无法谈论内存,更不用说使用它了。

还会有更多问题;例如,休眠功能在唤醒时不会恢复内存。但那都是理论上的,因为内存中不包含任何内容 - 没有地址,就无法写入内存。

相关内容