深入Linux内核架构笔记(页缓存和块缓存)

这篇博客深入探讨了Linux内核中的缓存架构,重点讲解了页缓存和块缓存的运作原理。页缓存通过页树管理,以页为单位操作,而块缓存则以块为单位,处理不同长度的块。内核通过pdflush守护进程和系统调用来管理缓存页的回写。地址空间的概念使得数据来源与缓存之间的关联更为通用,支持更多类型的数据源。此外,文章还介绍了地址空间相关的操作函数以及块缓存在Linux历史中的角色。缓存机制提高了内存和磁盘交互的效率,确保了数据的快速访问和持久存储。
摘要由CSDN通过智能技术生成

缓存是页交换或调页操作的逆操作(换页的相关信息,在第18章讨论)。尽管缓存牺牲了物理内 存(使得不需要在块设备上进行低速操作),而实现页交换时,则是用低速的块设备来代替物理内存。 因而内核必须尽力同时考虑到这两种机制,确保一种方法带来的好处不会被另一种方法的不利之处抵 消,这不是件容易事。

slab缓存是一个内存到内存的缓存, 其目的不是加速对低速设备的操作,而是对现存资源进行更简单、更高效的使用。dentry缓存也用于 减少对低速块设备的访问,但它无法推广到通用场合,因为它是专门用于处理单一数据类型的。

内核为块设备提供了两种通用的缓存方案。

(1) 页缓存(page cache)针对以页为单位的所有操作,并考虑了特定体系结构上的页长度。一个 主要的例子是许多章讨论过的内存映射技术。因为其他类型的文件访问也是基于内核中的这一技术实 现的,所以页缓存实际上负责了块设备的大部分缓存工作。

(2) 块缓存(buffer cache)以块为操作单位。在进行I/O操作时,存取的单位是设备的各个块,而 不是整个内存页。尽管页长度对所有文件系统都是相同的,但块长度取决于特定的文件系统或其设置。 因而,块缓存必须能够处理不同长度的块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值