主要的中断下半部及其区别


中断下半部主要有:软中断,tasklet,工作队列


区别

1. 软中断和tasket是不可以睡眠的,任务队列在进程上下问执行是可以睡眠的。

2.相同的软中断可以在不同的cpu上同时执行,类型相同的tasklet不可以同时执行,不同类型的软中断可以在不同的cpu同时执行

3.tasklet可以通过代码进行动态的注册,软中断必须在编译期间就进行静态注册。


tasklet是利用软中断实现的一种下半部机制,它和进程没有关系。


ksoftirqd的出现:

软中断被触发的频率有可能很高,因为有的软中断处理函数还会重新触发自己得到执行,所以就有可能造成用户空间的进程饥饿,所以大致有3种方案

1> 只要还有被触发的软中断本次就要处理完,重新触发的软中断也在本次执行返回前被处理。这种方案会造成用户空间的进程得不到执行。

2> 重新触发的软中断不进行处理,它们被推到下一次软中断执行时去处理。这种方案虽然不让用户空间饥饿,但是会让成软中断忍受饥饿

3> 这中方案是前两种方案的折中,采用了ksoftirqd内核线程,该内核线程的优先级较低,这能避免它跟其他进程抢夺cpu,另外该内核线程总是可以执行的。


工作队列的出现:

工作队列是可以睡眠的。,运行在进程上下文中


工作队列的实现:

工作队列的实现主要是依靠内核线程。

一个 workqueue_struct 表示一种内核线程,多种内核线程利用workqueue_struct结构中list_head结构体连接起来。

每一类内核线程对于每一次cpu有一个内核线程实体,每一个线程实体用cpu_workqueue_struct结构表示,在cpu_workqueue_sturct中work_struct 表示该线程实体的工作,工作(work_struct)中有相应的处理函数,通过执行相应的函数来完成处理下半部的目的



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值