有一个已开发的内核子系统,需要为自己分配一块内存,只有它才能操作该块。该内存应该是物理上连续的,并且它需要像块设备一样的访问方式(我的意思是/dev/..)。
你有什么建议?
在 RAM 磁盘和启动时保留内存之间,您有何建议?
答案1
您可能不应该创建任何内存磁盘(即tmpfs
不使用ramfs
),请参阅这。 Linux 比你能更好地管理 RAM,而且它页面缓存非常好(所以你可能不需要创造任何“RAM”磁盘,只需使用tmpfs
已安装的/tmp
并将文件放在那里,甚至是任何文件系统中的任何文件:如果有大量 RAM,数据通常会保留在页面缓存中,并且不涉及实际的磁盘 IO,但请参阅同步(2)。看linuxatemyram和我的答案给你的上一个(令人困惑的)问题。
而“将 RAM 磁盘分配给特定进程”在 Linux 上是不可能的;您可能应该解释一下用例。 RAM 磁盘通常是 tmpfs 文件系统(或者可能是过时的 ramfs 文件系统),因此您将其分配给文件系统,而不是单个进程。
您可能可以使用 Linux 来限制大多数其他进程。例如,使用ulimit
shell 内置命令(基于设置限制(2)系统调用)
我如何确定该 RAM 磁盘仅由上述进程使用,其他进程不会更改其数据?
内核应该保证tmpfs
文件系统(就像保证其他文件系统一样)文件系统)。只有访问该文件系统中的文件的进程才能更改其中的数据。
如果您可以更改您想要支持的特定进程的程序代码,请使用时钟锁(2)。
我猜想,如果您没有创建任何 RAM 磁盘,您的 Linux 系统将比使用显式 RAM 磁盘执行(或可以配置为执行)更好。
除非您显示确切的命令以及一些处理您的问题的代码,否则您将不会获得任何帮助。