78、深入探究页面缓存:原理、操作与优化

深入探究页面缓存:原理、操作与优化

1. 页面缓存中定位块的过程

在页面缓存中定位一个块,需要通过块设备描述符的地址 bdev 和逻辑块号 nr 来完成,这是一个分三步的过程:
1. 获取包含该块的块设备的 address_space 对象的指针,即 bdev->bd_inode->i_mapping
2. 获取设备的块大小 bdev->bd_block_size ,并计算包含该块的页面的索引。这通常是对逻辑块号进行位运算。例如,如果块大小为 1024 字节,每个缓冲区页面包含四个块缓冲区,那么页面的索引就是 nr/4
3. 在块设备的基数树中搜索缓冲区页面。获取页面描述符后,内核就可以访问描述页面内块缓冲区状态的缓冲区头。

为了提高系统性能,内核管理着一个 bh_lrus 数组,每个 CPU 都有一个小磁盘缓存,称为最近最少使用(LRU)块缓存。每个磁盘缓存包含八个指向给定 CPU 最近访问的缓冲区头的指针。每个 CPU 数组中的元素按顺序排列,最近使用的缓冲区头的指针索引为 0。同一个缓冲区头可能出现在多个 CPU 数组中,但不会在同一个 CPU 数组中出现两次。每次缓冲区头出现在 LRU 块缓存中,其 b_count 使用计数器就会加 1。

2. __find_get_block() 函数

__find_get_bl

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值