linux内核研究-9-页高速缓存(cache)

时间:2021-11-28 21:39:28

linux内核研究-9-页高速缓存

1,说在前面
1》页高速缓存是内存的一部分,只是用途是用来缓存磁盘块的。
2》页高速缓存存在基于两方面因素,访问内存的速度要远远高于访问磁盘,临时局部原理(tmporal locality)
3》核心结构体:struct address_space。在<linux/fs.h>,可见跟文件系统关系紧密。


2,页高速缓存的原理和过程
1》应用程序调用文件I/O函数,C库封装,系统调用,VFS,文件系统操作方法产生I/O请求,块设备I/O层给请求队列排序
2》再加上页高速缓存,减少实际的磁盘访问量,提高I/O操作效率。来完成整个文件I/O过程。
3》如果I/O请求的块(文件系统的最小操作单位),在页高速缓存中,则直接操作页高速缓存。
4》如果高速缓存中没有,则访问磁盘。

3,如何检查I/O请求的块是否在页高速缓存中
1》基于“基树”的搜索方法
2》老的内核基于“页散列表”

4,页回写(pdflush线程组)
1》页回写,就是将页高速缓存的内容(脏页)写回磁盘(同步)
2》由于不能一直直接操作页高速缓存,所以在一定条件下要页回写。
3》有一个内核线程(pdflush)专门负责在适当时候执行页回写操作。
4》适当时候就是,空闲内存小于阈值,脏页到一定时间。
5》如果页回写任务过重(阻塞1秒),则再起一个pdflush。否则就减少一个pdflush。