我用read
在for
循环中读取一个2G文件。在读取了80%的文件后,由于没有更多的RAM用于缓存,程序在系统调用“read”中被阻止。
当没有足够的RAM可用于缓存时,内核是否不够聪明,不能为已经读取的同一文件块删除一些缓存,或者只是停止缓存以读取文件的其余部分?
最佳答案
Linux内核如何知道read
系统调用的用例是什么?它只知道系统调用,比如read
和write
。Read实现与用来复制2G文件的天气相同,或者在切换到选项卡时被firefox使用。
如果你需要这个功能,你可以禁用缓存(我想是这样的:echo 3 > /proc/sys/vm/drop_caches
),或者创建一个新的系统调用来“强制”某些应用程序的读写调用不处理内存缓存(我在本科时就有过这样的项目)。