【发布时间】:2011-02-13 12:27:56
【问题描述】:
操作系统从磁盘读取的数据比程序实际请求的要多,因为程序将来可能需要附近的信息。在我的应用程序中,当我从磁盘获取项目时,我想显示元素周围的信息间隔。在我请求和显示的信息量与速度之间需要权衡取舍。但是,由于操作系统已经读取了比我请求的更多的内容,因此访问内存中已经存在的这些字节是免费的。我可以使用什么 API 来找出操作系统缓存中的内容?
或者,我可以使用内存映射文件。在这种情况下,问题就归结为找出页面是否交换到磁盘。这可以在任何常见的操作系统中完成吗?
编辑:相关论文http://www.azulsystems.com/events/mspc_2008/2008_MSPC.pdf
【问题讨论】:
-
您从磁盘获取的项目有多大?独立于预读,文件系统将以块大小(通常为 4KB)为单位从磁盘读取数据。因此,如果您的项目是 100 字节,也许您可以将问题简化为在同一块中显示项目——您无需借助花哨的界面即可计算出来。
-
我想知道的不是操作系统读取的静态最小值,而是它为特定操作实际读取的字节数。
标签: windows linux operating-system virtual-memory pagefile