linux内核等待队列(ldd3简单休眠)

等待队列介绍:

等待队列可以让进程进入休眠等待状态。
等待队列, 例如,在字符设备的读状态当中,如果没有可读的字符, 那么进程可以进入休眠等待状态,条件满足以后,唤醒进程。

在写操作当中,如果缓冲区满了,进程也可以进入等待状态,等有空间以后再唤醒进程进行写的操作。

休眠对进程意味着,它会被标记为一种特殊的状态,并从调度器中把运行的队列移走。
在某个时刻这个状态发生改变了以后,进程才会在任意的cpu上调度。

在让进程休眠时,我们需要注意自己的代码。。。

a:不要在原子上下文中进入休眠,也就是说,不要在进程拥有自旋锁,seqlock,RCU时进入休眠。
在禁止中断的情况下也不能进入休眠,而在拥有信号量时进入休眠是可以的,但是在其他的线程当中,如果有
现在在获取这个信号量,那么这个线程也会进入休眠(因为这个线程获取不到信号量嘛,所以也进入休眠了)
b:在唤醒进程以后我们不对进程的状态做任何的判断,因为也有可能有其他的进程在唤醒了以后把我们的资源拿走。。所以最好不要做这种判断。
c:我们必须知道,进入休眠的进程,我们的代码可能会在程序的那些地方唤醒它。

所以在ldd3里面,等待队列的意思被解释为,需要维护一个数据结构(也就是等待队列),它能够帮助我们知道休眠的进程。
也就是说,等待队列就是一个进程列表,其中包含了等待某个特定事件的所有进程。

等待队列通过等待队列头(wait queue head)来管理。

需要包含的头文件: #include<linux/w

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酸菜。

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值