Linux.ChinaUnix.net
ChinaUnix
|
Linux首页
|
新闻
|
博客
|
文章
|
专栏
|
新手
|
方案
|
图书
|
下载
|
人才
|
手册
|
wiki
|
搜索
会员:
密码:
免费注册
|
忘记密码
|
会员登录
|
搜索
|
帮助
在一次中断或者系统调用返回用户态的过程中,是否会将所有的未阻塞信号全部处理掉?
1
2
3
››
首页
»
CU论坛
»
Linux
»
汇总贴列表
»
内核源码
»
请选择您要去的论坛 ←
>新手园地
>系统管理
>网络问题
>硬件支持
>内核问题
>系统互操作专区
>中文支持
>桌面与办公
>影音娱乐
>网络工具
>编程问题
>内核源码
>CPU与编译器
>嵌入式开发
>驱动开发
>数据库应用
>服务器应用
>安全防护
>集群和虚拟机
>开源业界与评论
>贴图娱乐
>红茶馆
>文档专区
>下载共享
>Linux书友会
>Linux站务交流
===============
→ 操作系统技术交流区 ←
>BSD
>Solaris
>SCO UNIX
>HP-UX
>AIX
>IBM AS400应用论坛
>Tru64 UNIX
>IRIX
>Mac OS X
→ 行业解决方案交流区 ←
> 金融行业
> 电信行业
> 互联网行业
> 医卫行业
> 制造行业
> 信息安全
> 教育行业
> 媒体娱乐行业
> 电子政务
> 交通行业
→ 程序设计交流区 ←
>C/C++
>Shell
>Java
>Php
>Perl
>Python
>Web开发
>软件工程
>中间件技术
>GUI编程
>软件配置管理
>VOIP开发技术
→ 网管技术交流区 ←
>网络安全
>网络技术
>Cisco技术
>存储备份之家
>服务器及硬件技术
→ 数据库技术交流区 ←
>MySQL
>PostgreSQL
>Oracle
>Informix
>Sybase
>DB2
→ 应用技术专题交流区 ←
>Web服务器
>Mail服务器
>FTP服务器
>DNS服务器
>Proxy服务器
>LDAP
>VPN
>Lotus
>Samba
→ IT综合交流区 ←
>IT业界新闻与评论
>IT职业生涯
>IT培训与认证
>IT二手大厅
>IT图书与评论
→ IT人的休闲生活交流区 ←
>清茶斋
>运动地带
>快乐数码摄影
>影音文字
>English Forum
>游戏玩家
>旅游天下
>贴图娱乐
>红茶馆
>IT爱车族
→ 站务及频道交流区 ←
>站务交流
>版主会议室
>Linux站务交流
>Linux版主会议室
>博客站务交流区
>下载频道交流区
>CU活动专区
最近访问的论坛 ...
时代冠军主机588元/两年
|
CU积分兑换详情
|
《奥运之夏》摄影赛开始
|
6月发帖排行获奖名单公布
|
6月份获赠《Python核心编程》名单公布
‹‹ 上一主题
|
下一主题 ››
[
打印
] [
订阅
] [
收藏
] [
推荐给朋友
] [
本帖文本页
]
ahhhhwang
圣骑士
UID:554698
注册:2007-4-21
最后登录: 2008-07-20
帖子:
117
精华:0
可用积分:115
信誉积分:
100
专家积分:
0
(本版)
状态:
...离线...
[
资料
] [
站内短信
] [
Blog
]
1楼
发表于 2008-5-15 10:13
在一次中断或者系统调用返回用户态的过程中,是否会将所有的未阻塞信号全部处理掉?还是返回到用户态,只是处理了一个信号。
应该在sys_sigreturn将要返回的时候还会处理别的信号吧,如此重复一直到所有的信号都被处理掉,才返回到被中断的代码后一句或者系统调用后一句的代码处。
[
本帖最后由 ahhhhwang 于 2008-5-15 19:16 编辑
]
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
xpl
圣骑士
UID:397977
注册:2006-4-5
最后登录: 2008-07-18
帖子:
118
精华:
2
可用积分:165
信誉积分:
100
专家积分:
5
(本版)
状态:
...离线...
[
资料
] [
站内短信
] [
Blog
]
2楼
发表于 2008-5-15 13:14
会递交所有未决信号,然后才返回的.
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
ahhhhwang
圣骑士
UID:554698
注册:2007-4-21
最后登录: 2008-07-20
帖子:
117
精华:0
可用积分:115
信誉积分:
100
专家积分:
0
(本版)
状态:
...离线...
[
资料
] [
站内短信
] [
Blog
]
3楼
发表于 2008-5-15 14:48
回复 #2 xpl 的帖子
某个进程的未决信号这个术语不太清楚,是不是:是不是指内核为这个进程的待处理信号队列添加的但是还没有被处理的信号实体?
另外递送就是说:从待处理信号队列上获得信号实体,并分别作出处理?
如果是这样的话,有个另外的问题:
比如某个系统调用阻塞,被信号发生者唤醒,且此系统调用返回-ERESTARTSYS,要求在这种情况下重新启动。
在返回被中断用户态代码的过程中,如果被处理的第一个未决信号的sa_flags标志要求不应该重新启动系统调用话,在返回到被中断代码时候,就不会重新启动。但是有可能被处理的第二个未决信号sa_flags标志并没有要求重新启动系统调用。
所以,对于上面的这种情况,如果第一个被处理的信号如果是上面说的第二个信号的话,系统调用就会重启了。
那么系统调用的是否重新启动就依赖于返回被中断代码过程中信号处理的顺序了。
情况是这样的吗?
[
本帖最后由 ahhhhwang 于 2008-5-15 15:05 编辑
]
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
xpl
圣骑士
UID:397977
注册:2006-4-5
最后登录: 2008-07-18
帖子:
118
精华:
2
可用积分:165
信誉积分:
100
专家积分:
5
(本版)
状态:
...离线...
[
资料
] [
站内短信
] [
Blog
]
4楼
发表于 2008-5-15 15:41
从中断返回用户态和系统调用重启是两个概念.
do_signal的时候, 可能是处于内核的出口路径中,也可能不是.
对于这两种情况, 处理起来是不同的.
从中断返回用户态的时候,是处于内核的出口路径, 要递交所有未决信号的.
而对于系统调用重启, 是在系统调用执行过程中出现了信号.
不过我并不能完全回答你的问题,因为对于系统调用重启这部分,我也不是很清楚.
不过对于你所说的信号导致系统调用重启的问题, 我觉的因该是立即递交该信号,然后再对系统调用进行处理,重启或者返回错误之类的.
但是对于你的假设, 我有一个问题,导致系统调用重启的信号发生时,此时有可能同时存在其他未决信号吗?
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
ahhhhwang
圣骑士
UID:554698
注册:2007-4-21
最后登录: 2008-07-20
帖子:
117
精华:0
可用积分:115
信誉积分:
100
专家积分:
0
(本版)
状态:
...离线...
[
资料
] [
站内短信
] [
Blog
]
5楼
发表于 2008-5-15 15:58
回复 #4 xpl 的帖子
我想问的就是处于内核态返回到用户态的过程中调用的do_signal,也就是你说的内核的出口路径。
对于最后你问的那个问题,我想是可能出现这种情况:
进程a调用系统调用的过程中睡眠,另外一个进程b给进程a发生了两个信号。发生第一个信号时候唤醒了睡眠的进程a,但a并没有马上开始执行,进程b又发生了第二个不同的信号。
这应该算是可能的一种情况。
当进程a又开始执行时候,根据ulk中讲的,它正在执行系统调用会以 EINTR, ERESTARTNOHAND, ERESTART_RESTARTBLOCK, ERESTARTSYS, or ERESTARTNOINTR 错误码退出,然后就是进入了返回用户态的过程中。这样在返回过程中就至少有两个信号待处理了。根据你说的,这两个信号会都被处理掉,然后进程a才重新开始执行系统调用后面的用户态代码了。
[
本帖最后由 ahhhhwang 于 2008-5-15 16:02 编辑
]
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
xpl
圣骑士
UID:397977
注册:2006-4-5
最后登录: 2008-07-18
帖子:
118
精华:
2
可用积分:165
信誉积分:
100
专家积分:
5
(本版)
状态:
...离线...
[
资料
] [
站内短信
] [
Blog
]
6楼
发表于 2008-5-15 16:13
QUOTE:
原帖由
ahhhhwang
于 2008-5-15 15:58 发表
当进程a又开始执行时候,根据ulk中讲的,它正在执行系统调用会以 EINTR, ERESTARTNOHAND, ERESTART_RESTARTBLOCK, ERESTARTSYS, or ERESTARTNOINTR 错误码退出,然后就是进入了返回用户态的过程中。这样在返回过程中就至少有两个信号待处理了。
根据你说的,这两个信号会都被处理掉,然后进程a才重新开始执行系统调用后面的用户态代码了。
我没有说这两个信号都会被处理的.
你误解我的话了?
对于系统调用重启这部分我也不清楚, 这部分code没有怎么看过.
对于你的这个发两个信号的假设, 我要想想,总觉的哪里有些不对.
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
ahhhhwang
圣骑士
UID:554698
注册:2007-4-21
最后登录: 2008-07-20
帖子:
117
精华:0
可用积分:115
信誉积分:
100
专家积分:
0
(本版)
状态:
...离线...
[
资料
] [
站内短信
] [
Blog
]
7楼
发表于 2008-5-15 16:31
回复 #6 xpl 的帖子
你说的递交所有未决信号,不是说处理所有待处理信号吗?
Signal delivery
The kernel forces the destination process to react to the signal by changing its execution state, by starting the execution of a specified signal handler, or both.
这段话的意思应该就是说,信号递送就是被内核强制去执行信号处理函数的过程。
那么递交所有未决信号就是说,被强制执行所有的待处理信号的信号处理函数,也就是说处理所有待处理信号
[
本帖最后由 ahhhhwang 于 2008-5-15 16:47 编辑
]
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
xpl
圣骑士
UID:397977
注册:2006-4-5
最后登录: 2008-07-18
帖子:
118
精华:
2
可用积分:165
信誉积分:
100
专家积分:
5
(本版)
状态:
...离线...
[
资料
] [
站内短信
] [
Blog
]
8楼
发表于 2008-5-15 16:46
我的语文表达能力没有那么差吧.
我说的是在正常的内核出口路径,是指正常的系统调用执行完成然后返回. 而不是你说的系统调用重启.
好了,这种文字的问题没有必要讨论这么多.
我们还是讨论一下你说的系统调用重启的问题吧.
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
ahhhhwang
圣骑士
UID:554698
注册:2007-4-21
最后登录: 2008-07-20
帖子:
117
精华:0
可用积分:115
信誉积分:
100
专家积分:
0
(本版)
状态:
...离线...
[
资料
] [
站内短信
] [
Blog
]
9楼
发表于 2008-5-15 16:52
QUOTE:
原帖由
xpl
于 2008-5-15 16:13 发表
我没有说这两个信号都会被处理的.
你误解我的话了?
对于系统调用重启这部分我也不清楚, 这部分code没有怎么看过.
对于你的这个发两个信号的假设, 我要想想,总觉的哪里有些不对.
假如是系统调用成功返回,不涉及到系统调用重启,如果不是两个信号都被处理了,那您的意思是会怎么样?
[
本帖最后由 ahhhhwang 于 2008-5-15 16:53 编辑
]
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
ahhhhwang
圣骑士
UID:554698
注册:2007-4-21
最后登录: 2008-07-20
帖子:
117
精华:0
可用积分:115
信誉积分:
100
专家积分:
0
(本版)
状态:
...离线...
[
资料
] [
站内短信
] [
Blog
]
10楼
发表于 2008-5-15 17:00
QUOTE:
原帖由
xpl
于 2008-5-15 16:46 发表
我的语文表达能力没有那么差吧.
我说的是在正常的内核出口路径,是指正常的系统调用执行完成然后返回. 而不是你说的系统调用重启.
好了,这种文字的问题没有必要讨论这么多.
我们还是讨论一下你说的系 ...
内容是通过文字表达,我这样只是为了保证我们没有误解对方的意思,如果觉得不自在,这里先抱歉了
您对本贴的看法:
鲜花[0]
臭蛋[0]
CU可用积分兑换Linux/Unix精品图书
|
《Ubuntu标准教程》书评获奖名单公布
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
首页
»
CU论坛
»
Linux
»
汇总贴列表
»
内核源码
»
1
2
3
››
请选择您要去的论坛 ←
>新手园地
>系统管理
>网络问题
>硬件支持
>内核问题
>系统互操作专区
>中文支持
>桌面与办公
>影音娱乐
>网络工具
>编程问题
>内核源码
>CPU与编译器
>嵌入式开发
>驱动开发
>数据库应用
>服务器应用
>安全防护
>集群和虚拟机
>开源业界与评论
>贴图娱乐
>红茶馆
>文档专区
>下载共享
>Linux书友会
>Linux站务交流
===============
→ 操作系统技术交流区 ←
>BSD
>Solaris
>SCO UNIX
>HP-UX
>AIX
>IBM AS400应用论坛
>Tru64 UNIX
>IRIX
>Mac OS X
→ 行业解决方案交流区 ←
> 金融行业
> 电信行业
> 互联网行业
> 医卫行业
> 制造行业
> 信息安全
> 教育行业
> 媒体娱乐行业
> 电子政务
> 交通行业
→ 程序设计交流区 ←
>C/C++
>Shell
>Java
>Php
>Perl
>Python
>Web开发
>软件工程
>中间件技术
>GUI编程
>软件配置管理
>VOIP开发技术
→ 网管技术交流区 ←
>网络安全
>网络技术
>Cisco技术
>存储备份之家
>服务器及硬件技术
→ 数据库技术交流区 ←
>MySQL
>PostgreSQL
>Oracle
>Informix
>Sybase
>DB2
→ 应用技术专题交流区 ←
>Web服务器
>Mail服务器
>FTP服务器
>DNS服务器
>Proxy服务器
>LDAP
>VPN
>Lotus
>Samba
→ IT综合交流区 ←
>IT业界新闻与评论
>IT职业生涯
>IT培训与认证
>IT二手大厅
>IT图书与评论
→ IT人的休闲生活交流区 ←
>清茶斋
>运动地带
>快乐数码摄影
>影音文字
>English Forum
>游戏玩家
>旅游天下
>贴图娱乐
>红茶馆
>IT爱车族
→ 站务及频道交流区 ←
>站务交流
>版主会议室
>Linux站务交流
>Linux版主会议室
>博客站务交流区
>下载频道交流区
>CU活动专区
Copyright © 2001-2008 ChinaUnix.net All Rights Reserved 联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处
京ICP证041476号
清除 Cookies
-
Linux时代
-
Archiver
-
WAP
-
TOP
Processed in 0.049530 second(s), 5 queries , Gzip enabled