我正在为一个研究项目进行一些非常专业的实验。这些实验要求控制内存访问:在任何情况下,我的应用程序都不应与磁盘交换信息。也就是说,应用程序所需的所有信息必须在执行期间保留在RAM中,但它应尽可能多地使用RAM。
我的问题是:我有什么方法可以通过我的应用程序控制磁盘访问,或者至少计算磁盘访问量以供以后分析?
这是使用C和Linux。
如果我能澄清这个问题,请告诉我......长期以来一直在研究这个问题我认为每个人都知道完全我正在谈论的事情。
答案 0 :(得分:4)
您可以做的一件事实际上是创建一个ramfs或RAM文件系统。你在unix平台上工作吗?如果是这样,你可以检查mount和umount如何创建它们。
http://linux.die.net/man/8/mount
http://linux.die.net/man/8/umount
基本上,您所做的就是创建存储在RAM中的文件系统。您不必再处理所有磁盘读/写时间。如果我正确地阅读了您的问题,您可以尝试避免磁盘访问。这样做非常简单,因为您可以在硬盘和内存上同时安装多个文件系统。
http://www.cyberciti.biz/faq/howto-create-linux-ram-disk-filesystem/
http://www.alper.net/linuxunix/linux-ram-based-filesystem/
希望这一切都有所帮助。
答案 1 :(得分:1)
mlock
系统调用允许您将部分或全部进程的虚拟内存锁定到RAM,从而防止将其写入交换空间。请注意,具有root权限的另一个进程仍然可以使用该内存区域。