主要区别是,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/