什么是需要一个算法时,与映射一次映射整个文件大块的优势/劣势?
直觉上,我会说这最有意义只是映射整个文件,然后让需要的,而不是把大量的系统调用,因为OS没有实际读取映射文件之前访问时,操作系统需要的读护理/写入磁盘。至少64位系统上,其中的地址空间是不是一个问题。
一些背景:
这是用于在I / O算法过程期间开发的外部优先级堆。我们的测量表明,稍微好需要的时候正好映射了整个底层的文件,而不是块映射(节点树)。然而,我们的教授不相信我们的测量,并说,他没想到的是行为。有什么我们缺少?
我们使用mmap
与PROT_READ | PROT_WRITE
和MAP_SHARED
。
谢谢,拉塞
如果您在VM空间,只是映射整个文件。正如其他人已经说过,这使得OS最大的灵活性以不预读,甚至如果它不将数据带通过页面错误它们是效率远高于系统调用他们被要求由当系统已经在正确的内核上下文。
不知道为什么你的教授不希望这种行为,但将是很好的了解他的理由?