Linux wait_on_buffer函数研究

本文深入探讨Linux0.11内核中的wait_on_buffer函数,解析其在关闭和开启中断之间的目的,以及如何保护临界区,避免并发修改。通过分析,揭示了该函数如何在内核态下保证进程或任务的连续性,并讨论了中断禁止对系统的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      Linux0.11内核中的wait_on_buffer和wait_on_inode函数是非常有代表性的延迟性函数处理过程,网上关于这两个函数的讨论

也很多,最主要的一个问题是为什么要在判断b_lock之前关中断,这个问题也困扰了我很长时间,查了不少帖子,学到不少东西,但总是

觉得有些细节没有弄清楚,因此借着自己实践开发一个小OS的过程,研究了一下wait_on_buffer,还是学到不少东西的。贴出来,分享

给大家,欢迎讨论~

 

Linux0.11版函数定义:

static inline void wait_on_buffer(struct buffer_head * bh)
{
    cli();
    while (bh->b_lock)
        sleep_on(&bh->b_wait);
    sti();
}

 

分析如下:

1.       首先可以明确,wait_on_buffer是工作在内核态的函数。更进一步应当理解为两种可能性:

          或者是当前某个用户态的进程请求数据进而引发的,那么可以认为是当前进程进入了内核态;又或者是内核本身的某个任务

          引发的操作。不管怎样wait_on_buffer背后是代表这某个进程或者任务的。

 

2.       wait_on_buffer中通过cli和sti起到一个保

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值