免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: drizztzou
打印 上一主题 下一主题

关于work queue与softirq的一个问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2006-03-14 14:25 |只看该作者
softirq函数本身还是不能被抢占的,但可以被中断。可以抢占的是softirqd进程。后者调用前者,前者在执行过程中preempt_disable()了。

论坛徽章:
0
22 [报告]
发表于 2006-03-14 18:58 |只看该作者
原帖由 albcamus 于 2006-3-14 10:01 发表
ksoftirqd也算是process context, 可以睡眠。 可是除非softirq重复触发, 否则在interrupt conetxt中就处理完了, 不用唤起ksoftirqd来处理。

所以尽管softirq有可能在process context执行, 我们还是要保证 ...


我觉得这是一个概念的问题吧。我的理解是这样的:上下文是相对于进程和内核线程的概念。严格地说,某个进程或是内核线程都不是属于context的。context特指进程和内核线程以外的内核代码。比如system call的那部分进程上下文不属于特定进程,而interrupt top half, 向内核注册的softirq,tasklet,work queue代码也不属于特定的内核线程。context更像是这些进程和内核线程运行的环境。所以很难说某个进程或是内核线程“属于”,“在”或是“是”上下文。

就像书上说的,软中断是不可以休眠的,但是ksoftirqd确是可以休眠的。前面指的是软中断的上下文,后者指的是ksoftirqd内核线程。

我有点钻牛角尖了,不知道理解得对不对。

[ 本帖最后由 richardhesidu 于 2006-3-15 00:03 编辑 ]

论坛徽章:
0
23 [报告]
发表于 2006-03-15 09:04 |只看该作者
原帖由 richardhesidu 于 2006-3-14 18:58 发表


我觉得这是一个概念的问题吧。我的理解是这样的:上下文是相对于进程和内核线程的概念。严格地说,某个进程或是内核线程都不是属于context的。context特指进程和内核线程以外的内核代码。比如system call的那 ...


和我的理解很不一样,上下文应该是进程或者内核线程的一个运行环境,包括hardware context、thread info、stack等,所谓进程在某种context中运行,应该是对这个进程运行环境的一种描述

论坛徽章:
0
24 [报告]
发表于 2006-03-15 10:30 |只看该作者
原帖由 drizztzou 于 2006-3-15 09:04 发表


和我的理解很不一样,上下文应该是进程或者内核线程的一个运行环境,包括hardware context、thread info、stack等,所谓进程在某种context中运行,应该是对这个进程运行环境的一种描述


感觉你的理解跟我的理解没有什么不同啊。

论坛徽章:
0
25 [报告]
发表于 2006-03-15 11:19 |只看该作者
Bach在《UNIX操作系统设计》里讲,进程上下文是由其用户地址空间的内容、硬件寄存器的内容以及与该进程有关的内核数据结构组成。他把进程上下文分为用户级上下文、寄存器上下文以及系统级上下文三部分
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP