免费注册 查看新帖 |

Chinaunix

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

Unix的信号处理机制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-28 13:34 |只看该作者 |倒序浏览
看《Unix环境高级编程》这本书的第10章“信号”时,讲道信号处理程序可能并发执行,即在一个信号处理程序未执行完的时候,另一个信号处理程序可能也在执行。但在10.15节举了个例子,在一个信号处理程序中触发一个另一个信号,则前者似乎会等待后者处理程序的返回,这个描述好像不是非常正确。
哪位高人可以将Unix的信号处理机制作个清晰的描述?

论坛徽章:
0
2 [报告]
发表于 2005-05-28 13:43 |只看该作者

Unix的信号处理机制

10.15中的等待可能不是信号处理程序的执行机制造成的,因为这个例子中在alarm后有一个循环等待的过程,所以这种等待第二个信号处理程序返回的情景是这个例子特有的。
想知道信号处理程序的并发是如何实现的呢?是一种类似多线程的机制吗?
一个信号处理程序中的longjmp为什么会影响另一个信号处理程序的执行呢?(程序10-6)

论坛徽章:
0
3 [报告]
发表于 2005-05-29 11:15 |只看该作者

Unix的信号处理机制

个人建议,为了提高程序的稳定性,要考虑在信号句柄执行过程中因有其它信号的到来而打断运行,首先屏蔽可能会造成中断的信号。书上说信号处理返回时,有的函数是不可再入的,这会导致程序处理的不可预见性!

论坛徽章:
0
4 [报告]
发表于 2005-05-31 22:05 |只看该作者

Unix的信号处理机制

谢谢楼上的回答!
请问哪位可以将Unix的信号处理机制简要描述一下

论坛徽章:
0
5 [报告]
发表于 2005-06-01 09:36 |只看该作者

Unix的信号处理机制

软件中断的作用不会立即产生。如果受影响的进程当前正在运行,那么经短时间延迟后,
软件中断的作用就可能产生。如果受影响的进程已被挂起或者其映像已被换出到磁盘上,那
么软件中断就可能经过相当长的时间后才能起作用。
对于软件中断的规定动作总是由受影响的进程自己执行并施加到自身的,因此只有当所
影响的进程是活动进程时,软件中断的作用才可能产生。
如果软件中断的相应动作是执行一个用户定义的过程,那么为了实现这一点,核心态进
程要对用户态栈作调整使其符合下列状态:刚刚进入该软件中断对应的用户定义过程,在执
行其第1条指令之前立即被中断(硬件类型)。于是当系统从核心态以一般方式返回至用户态时,
由于用户栈调整后的作用,下一条执行的用户态指令就是指定过程的第1条指令。
...
详细说明可以参阅《莱昂氏UNIX源代码分析》第13章

论坛徽章:
0
6 [报告]
发表于 2005-06-01 11:24 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP