笔记 7 :linux 011 注释,函 bread () , get_hash_table () , find_buffer () 。 3-22a-----3-23

(57a)接着介绍另一个读盘块的函数 bread,以及释放 bh 的函数 brelse( ):

![![![![![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/93586ebce9494adf8618f8ffe0947bba.png](https://i-blog.csdnimg.cn/direct/cd4ec790dff842c4873709410497d348.png](https://i-blog.csdnimg.cn/direct/b556131e6173499a82b56cf38a73bfd2.jpeg](https://i-blog.csdnimg.cn/direct/235ea38f73ff422c9dc4fafaa6fee51f.jpeg](https://i-blog.csdnimg.cn/direct/811e850435ae434a97204440f9fc38fc.jpeg

(57b) 接着探讨下 bread 的调用链,看看这个函数的具体执行过程。可见虽然是一个简单的读块函数,也非常的复杂:

在这里插入图片描述

(57c) 接着探讨下硬盘中断发生时候的调用链,如此数据传输链就完整了:

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e4b710d921044a6cae2f52dbc70a41ab.jpeg

(57d) 3-22d bh.b_dirt,b_uptodate,b_lock的赋值与数据同步 :

在这里插入图片描述

(58)因为 函数 get_blk()大量调用了其它函数,一版面列举不完,故对其调用的函数先行注释:get_hash_table()与 find_buffer():

find_buffer

(59) 再来学习一个全局变量 : buffer_wait 。当进程要读硬盘,但内存的缓存块没有空闲的,进程会 sleep_on,形参传入此变量:

在这里插入图片描述

(60)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值