linux buff cache区别,linux buff/cache

要理解下面内容,最好对操作系统存储有一定的了解,包括缺页中断等对于物理内存的使用方式和cpu操作硬盘的大概过程等。

linux存在系统buff/cache和CPU cache不同的缓存机制,系统的buff/cache是用于提高硬件IO的操作效率,cpu cache的左右是提高cpu操作内存的效率,这摘抄部分关于系统cache的内容,关于cpu内容的后续会补上。

我们在用户层面上对磁盘文件的各种访问,体现在内核里,则最终转化为针对磁盘(块设备)的一系列I/O操作。

扇区是块设备的基本单元,也是最小的寻址单元,但是内核却并不是按照扇区来执行磁盘操作,而是于扇区之上又抽象出了一个“块”的概念。内核执行的所有磁盘操作都是按照块来进行的,每个块的大小必须数倍于扇区,而且不能超过一个页面的长度,所以块通常的大小是512Byte、1KB或者4KB。

内核只能基于块来访问物理文件系统,所以与扇区是块设备的最小寻址单元相对应,块也被称为是文件系统的最小寻址单元。一个磁盘块被调入内存时,它需要存储在一个缓冲区中,这个缓冲区就是块在内存中的表示,它在内核中使用structbuffer_head来描述。每个块在内存中都与一个缓冲区相对应,同时都拥有一个buffer_head对象。

内核只能基于块来访问物理文件系统,所以与扇区是块设备的最小寻址单元相对应,块也被称为是文件系统的最小寻址单元。一个磁盘块被调入内存时,它需要存储在一个缓冲区中,这个缓冲区就是块在内存中的表示,它在内核中使用structbuffer_head来描述。每个块在内存中都与一个缓冲区相对应,同时都拥有一个buffer_head对象。

因为内核基于块来访问物理文件系统,而磁盘块与内存中的缓冲区又是一一对应的映射关系,所以为了提高对磁盘的存取效率,内核引入了缓冲区缓存的机制,将通过VFS访问的块的内容缓存在内存中。

2a6e651bb373

image.png

在旧版本的内核中,page cache和buffer cache是两个独立的缓存,前者缓存页,后者缓存块,但是一个磁盘块可以在两个缓存中同时存在,因此除了耗费了额外的内存外,还需要对两个缓存中的内容进行同步操作。从2.4.10内核开始,buffer cache不再是一个独立的缓存,如图10.8所示的那样,它被包含在page cache中,通过page cache来实现。对于4KB大小的page来说,根据不同的块大小,它可以包含1~8个缓冲区。

摘自《linux内核修炼之道》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值