linux 内核抢占分析

linux 内核抢占分析

在 Linux 2.6 以后版本的 Linux 内核中,一个内核任务可以被抢占,从而提高系统的实时性。这样做最主要的优势在于,可以极大地增强系统的用户交互性,用户将会觉得鼠标单击和击键的事件得到了更快速的响应。

Linux 2.6 以后的内核版本还是存在一些不可抢占的区间,如中断上下文软中断上下文自旋锁锁住的区间,如果给 Linux 内核打上 RT-Preempt 补丁,则中断和软中断都被线程化了,自旋锁也被互斥体替换,Linux 内核变得能支持硬实时。

如下图所示,左侧是 Linux 2.4,右侧是 Linux 2.6 以后的内核。在 Linux 2.4 的内核中,在 IRQ1 的中断服务程序唤醒 RT(实时)任务后,必须要等待前面一个 Normal(普通)任务的系统调用完成,返回用户空间的时候,RT 任务才能切入;而在 Linux 2.6 内核中,Normal 任务的关键部分(如自旋锁)结束的时候,RT 任务就从内核切入了。不过也可以看出,Linux 2.6 以后的内核仍然存在中断、软中断、自旋锁等原子上下文进程无法抢占执行的情况,这是 Linux 内核本身只提供软实时能力的原因。
在这里插入图片描述
上文摘抄自《Linux设备驱动开发详解:基于最新的Linux 4.0内核》

说一下自己的理解:
从上图可以看出(从左往右看),普通任务执行了系统调用,系统调用进入了irq1任务,irq1任务进入了irq2任务,当irq2任务完成后,在唤醒rt任务时,2.4需要等待系统调用完成,而2.6中是立即运行的,这说明rt任务和系统调用在同时竞争cpu的使用权,并且还竞争过了获得了cpu的使用权
所以2.6中是将系统调用和rt任务放在了同一水平面,而不是像2.4 ,默认系统调用优先级比rt任务高
如果将系统调用比作中断服务函数,那么这个是不是就是中断的线程化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

white_line

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

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

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

打赏作者

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

抵扣说明:

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

余额充值