linux page cache和buffer cache

主要区别是,buffer cache缓存元信息,page cache缓存文件数据

buffer 与 cache 是作为磁盘文件缓存(磁盘高速缓存disk cache)来使用,主要目的提高文件系统系性能。具体工作过程参见上一篇blog Linux 内核read工作过程.
不同点是buffer以块为大小操作,所以称块缓存,cache是以页为大小操作,所以称为页缓存(page cache)。
什么情况块为单位操作磁盘呢?
1.读写inode节点和超级块等操作

2.读写裸块设备。所谓裸块设备就是没有格式化的设备,磁盘上没有划分信息,只能按块读写。

实际可以这样认为,直接读写块设备(/dev/sda),就是以buffer缓冲。读写普通文件,就是页缓存。

除了上述情况,一般读写文件以页来缓冲文件。

什么又是Swap Cache呢?请注意不要同Swap混淆,

当内存回收时(或者内存不够用时),需要时交换到交换分区中内存页,称为Swap Cache。例如

#cat /proc/meminfo 
SwapCached:            0 kB

http://blog.chinaunix.net/uid-1829236-id-3152172.html

http://blog.csdn.net/column/details/linux--mm.html?page=1 linux内存管理专栏,其他专栏也很不错csdn

另外附带一个内存模型的博客 http://www.cnblogs.com/sunyubo/archive/2010/12/22/2282080.html

裸设备 http://www.cnblogs.com/rootq/articles/1487267.html

cache实现细节百度文库

http://wenku.baidu.com/link?url=K49cyCFFT8_59kCigSw79QCBlCEIcrx6-KIMU1Vy6JujR4dLxWYCTOisRegyikn-pYYTTq7y9KNlud22UcXYgIK4Ja7BgG31xhg_9beHEpK

百度百科关于page cache和buffer cache的实现

free命令 http://blog.csdn.net/turkeyzhou/article/details/6426738

两个博客:http://hi.baidu.com/rwen2012和http://hi.baidu.com/_kouu 其中第二个博客非常值得读一下,文件系统和内存部分挺好

这个博客也是讲linux内核的,其中只看了网络编程部分,不错的样子 http://hi.baidu.com/linux_kernel

 又是一个kernel的博客:http://hi.baidu.com/wzt85/archive/tag/kernel

 龙泉居士:http://hi.baidu.com/zeyu203

不知道是什么的博客:

http://blog.csdn.net/qq575787460

关于linux进程调度系统的文章:http://www.ibm.com/developerworks/cn/linux/kernel/l-kn26sch/

原文地址:https://www.cnblogs.com/johnnyflute/p/3548441.html