Linux有一个文件系统缓存,它将尽可能多的数据作为缓冲区保存在RAM中。
线程试图读取文件系统中的页面块。如果页面在缓存中,它将从缓存(缓存命中)获取数据。否则,它会发出页面的磁盘i/o请求并等待(缓存丢失)。
但是,当多个线程(或处理器)读取同一个页面块时,我认为还有一种情况;该页不在缓存中,但页的i/o请求已经发出。在这种情况下,不会再次发出磁盘i/o,但是线程应该等待从磁盘读取页面。
Linux的文件缓存是否具有此属性?你这是什么意思?
发布于 2016-07-29 23:58:36
在Linux中,我认为在任何操作系统中,从缓存加载是异步的,就是:当请求一个页面但尚未加载时,就会有一个缓存条目被标记为未加载。当第二个请求传入时,它会将该请求转到现有的缓存条目上,并等待加载完成。在Linux内核中,等待机制称为等待队列。关于等待队列有很多文档:Linux设备驱动程序,完满 (在等待队列之上的一个稍高层次的数据结构),内核API文档,…
我不知道这个机制是否有正式名称。
https://unix.stackexchange.com/questions/299132
复制相似问题