LINUX怎样处理被中断的系统调用

kkkwdb 2010-07-23 08:11:24
我读的是linux 0.12内核。
linux的系统调用采用的是陷阱门,也就是执行一个耗时的系统调用时可以被硬件中断,比如时钟中断。
当时钟中断返回时如果没有信号需要处理貌似不会发生错误,
但当有信号处理是,程序转入到用户空间的信号处理函数时貌似会发生错误。
这是linux 0.12的一个bug吗,如果是以后的内核怎样改进的?
...全文
124 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fdisksys 2011-07-31
  • 打赏
  • 举报
回复
linux 0.12系统调用的IDT描述符是在那个文件里面设置的?
kkkwdb 2010-07-25
  • 打赏
  • 举报
回复
错了,应该是linux 0.12只实现了用户态下的栈结构的修改
kkkwdb 2010-07-25
  • 打赏
  • 举报
回复
楼上说的是没有信号处理的情况,
如果有信号需要处理,内核会修改内核栈结构以便切换到用户空间的信号处理函数执行。
但问题是系统调用被中断的栈结构和用户态下的栈结构是不一样的,
linux 0.12只实现了前一种,难道不是个bug?
充电宝111 2010-07-23
  • 打赏
  • 举报
回复
被中断的系统调用下次继续执行啊,内核态有内核栈,会保存上下文的

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧