免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6474 | 回复: 10
打印 上一主题 下一主题

软中断一定工作在 中断 上下文 吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-30 10:35 |只看该作者 |倒序浏览
我在看《linux内核设计与实现》第二版中断那一章的下半部时,P84页提到的ksoftirqd进程。
原文是这么说的:

”而作为改进,当大量软中断出现的时候,内核会唤醒一组内核线程来处理这些负载。这些线程在最低的优先级上运行(nice值是19),这能避免它们跟其他重要的任务抢夺资源。但它们最终肯定会被执行,所以这个折中方案能够保证在软中断负担很中的时候用户程序不会因为得不到处理时间处于饥饿状态。相应的,也能保证”过量“的软中断终究会得到处理。


我的疑问是,这是不是说明 软中断 也工作在进程上下文中啊?如果说工作在 进程上下文 中,那是什么保证他不被 抢占呢?

刚看内核不久,希望大家帮我解决疑问,谢谢!

论坛徽章:
0
2 [报告]
发表于 2011-03-30 10:47 |只看该作者
软中断也是作为进程的一部分在运行,只不过它的优先级没有硬中断优先级高罢了。软中断是在开中断的情况下执行的,所以,它可以被硬中断所中断,却不会被用户的代码所中断。
以上是鄙人的一定浅见,希望对你有所帮助。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
3 [报告]
发表于 2011-03-30 11:21 |只看该作者
回复 1# Alan0521
网络软中断可能运行在进程上下文,所以说软中断的代码需要自己通过锁机制来实现临界区的保护。

论坛徽章:
0
4 [报告]
发表于 2011-03-30 13:30 |只看该作者
处理不过来的中断才会分发到ksoftirqd,这是内核线程,在进程上下文处理。
而一般的softirq是在中断上下文处理的。

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
5 [报告]
发表于 2011-03-30 13:35 |只看该作者
回复 4# marsbible


    中断上下文和进程上下文的根本区别在哪呢?这个问题好久都没搞清楚..请教一下

论坛徽章:
0
6 [报告]
发表于 2011-03-31 11:41 |只看该作者
我觉得进程上下文就是current的资源你可以拿来用,而中断上下文的情况下你就不敢随便用了= =

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
7 [报告]
发表于 2011-03-31 13:58 |只看该作者
我的理解就是进程上下文就是进程的栈(通过这个可以获取进程所有信息,包括所有寄存器的值),中断上下文其用的也是被中断进程的栈,但是由于其特殊的地位不可以访问进程地址空间里的东西,换一个名字叫中断上下文。
不知道对不对

论坛徽章:
0
8 [报告]
发表于 2011-04-01 09:08 |只看该作者
处理不过来的中断才会分发到ksoftirqd,这是内核线程,在进程上下文处理。
而一般的softirq是在中断上下文 ...
marsbible 发表于 2011-03-30 13:30



    应该是这样的

论坛徽章:
0
9 [报告]
发表于 2011-04-01 09:30 |只看该作者
我的理解就是进程上下文就是进程的栈(通过这个可以获取进程所有信息,包括所有寄存器的值),中断上下文其 ...
amarant 发表于 2011-03-31 13:58

所以中断上下文与进程上下文的本质区别是,中断上下文不能阻塞,而进程上下文就是可以的,如果中断上下文发生阻塞,将会引起进程的调度,改变中断发生时的内核栈

论坛徽章:
0
10 [报告]
发表于 2011-04-06 14:03 |只看该作者
网络软中断可以运行于进程上下文?

LZ说的在内核线程里,只是在执行软中断与软中断的间隙间是才属于进程上下文吧。软中断执行过程之中应该是中断上下文。

进程上下文和中断的上下文,我的理解的是,中断上下文就是说CPU在执行带有“速入速出”特征的代码,这个时候CPU只能被同样带有“速入速出”特征的代码打断。正常的时候CPU一个进程一个进程的调度来执行代码,中断上下文临时脱离了这个框架,临时脱离了进程体系,执行一段特殊的代码。所以在中断上下文中,进程没有意义。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP