在前几篇中我们介绍了磁盘、文件系统、inode、硬链接、软链接、文件描述符,没看过的同学可以先看一下前几篇文章。
由于硬件的限制,如果cpu直接访问磁盘进行文件读写的话,传输速度会很慢,效率很低。所以linux在内存中对访问磁盘文件的内容进行了缓存,通过尽量减少对磁盘的I/O操作,从而提高性能。这种用来缓存磁盘文件内容的内存就是page cache。
page cache以页为单位,一个page cache页一般为4KB,也有16 ~ 64KB的情况。page cache只会缓存文件的部分内容,只需要把当前真正被访问到的文件数据部分缓存起来就可以了,不需要把整个文件都缓存到内存中。
PageCache读写
当用户进程调用read()系统调用读取某个文件时,内核先查看page cache里是否有读取的文件内容,如果有就直接从page cache中读取具体信息。如果page cache里没有,就启动磁盘的I/O从磁盘中读取要访问部分的文件内容放到page cache中,再从page cac