免费注册 查看新帖 |

Chinaunix

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

我是菜鸟,可是有几个很棘手的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-02-24 03:50 |只看该作者 |倒序浏览
1 linux在核心态是否可以接受中断请求, 是简单的象软信号一样放到链表里,等返回用户态处理还是立刻处理
我提这个问题是因为, 传统UNIX一般都是提高处理的优先级别以屏蔽掉比较低的中断,那么优先级别比较高的中断呢,它能屏蔽掉吗

换句话说,核心态是不可抢占的,那么这个中断是否可以在核心里被切换

2 linux在中断处理程序里是否可以使用shedule,有些文章说不能,因为要防止重入,..如何理解这个问题,为什么不能进行shedule,进一步,为什么UNIX通常通过中断程序去WAKEUP呢,这不事实上也是shedule吗
我对linux内核仅仅研究了10天(当然我在编程上算是老鸟了当然以前在linux&Unix开发过应用程序),所以以上问题都比较土,望解答和见晾

论坛徽章:
0
2 [报告]
发表于 2004-02-26 00:49 |只看该作者

我是菜鸟,可是有几个很棘手的问题

中断在那种状态下都能发生,只要优先级允许。
核心不能被抢占,是说正在运行的进程如果没有
主动放弃处理器(调用sleep),那末进程切换(swtch)
只发生在该进程从核心态返回用户态之前,中断中
决不会调用swtch,中断只是唤醒进程(相当于设置标志,没有实质的调用swtch),或是因为出错(trap),
设置相应的信号位(信号也是在核心态转到用户态处理的,而且
是在用户空间处理的,技巧是将信号函数的地址压入用户栈),再从核心态
返回的时候,代码会检查调度标志(runrun),看看是否有优先级更高的
进程等待运行,如有(runrun>;0),那末调用swtch(清runrun),swtch找优先权最高的等待运行的进程,切换到该进程,返回进程被抢先,


核心的数据是所有进程公用的,每个进程都有自己的用户空间,unix中
保证中断不会抢占核心态的进程,这样就避免了“临界区“,因为无论
有多少个中断,只会有一个进程处理之,这样就保持了数据的一致性。

论坛徽章:
0
3 [报告]
发表于 2004-02-26 16:36 |只看该作者

我是菜鸟,可是有几个很棘手的问题

说的有道理

对于第二个问题,我还想,其实中断时候只有自己被再次调用。。。就是所谓重入问题,才最有可能发生一致性问题和死锁,比如

在中断A中置一个P操作,如果发生重入A1,则A1必然死锁

对于核心不可抢占,应该只是对进程而言,原则上说,中断不是进程

在进一步说,如果中断能够被屏蔽,很明显,整个系统会发生问题

所以我想,这里的所谓被屏蔽的中断只不过是信号,即软中断而已
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP