社区
Linux_Kernel
帖子详情
LINUX怎样处理被中断的系统调用
kkkwdb
2010-07-23 08:11:24
我读的是linux 0.12内核。
linux的系统调用采用的是陷阱门,也就是执行一个耗时的系统调用时可以被硬件中断,比如时钟中断。
当时钟中断返回时如果没有信号需要处理貌似不会发生错误,
但当有信号处理是,程序转入到用户空间的信号处理函数时貌似会发生错误。
这是linux 0.12的一个bug吗,如果是以后的内核怎样改进的?
...全文
124
4
打赏
收藏
LINUX怎样处理被中断的系统调用
我读的是linux 0.12内核。 linux的系统调用采用的是陷阱门,也就是执行一个耗时的系统调用时可以被硬件中断,比如时钟中断。 当时钟中断返回时如果没有信号需要处理貌似不会发生错误, 但当有信号处理是,程序转入到用户空间的信号处理函数时貌似会发生错误。 这是linux 0.12的一个bug吗,如果是以后的内核怎样改进的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
被中断的系统调用下次继续执行啊,内核态有内核栈,会保存上下文的
Linux
内核源代码情景分析 (上下册 高清非扫描 )
第3章
中断
、异常和
系统
调用
3.1 X86 CPU对
中断
的硬件支持 3.2
中断
向量表IDT的初始化 3.3
中断
请求队列的初始化 3.4
中断
的响应和服务 3.5 软
中断
与Bottom Half 3.6 页面异常的进入和返回 3.7 时钟
中断
3.8
系统
...
深入分析
Linux
内核源码.chm
8.7 文件
系统
的
系统
调用
8 .8
Linux
2.4文件
系统
的移植问题 第九章 Ext2文件
系统
9.1 基本概念 9.2 Ext2的磁盘布局和数据结构 9.3 文件的访问权限和安全 9.4 链接文件 9.5 分配策略 第十章 模块机制 10.1 概述 10.2 ...
【
Linux
编程】
中断
的
系统
调用
如果进程在执行一个低速
系统
调用
而阻塞期间捕捉到一个信号,则该
系统
调用
就被
中断
不再继续执行。该
系统
调用
返回出错,其errno被设置为EINTR。
调用
这些
系统
调用
的程序要对这些错误的返回进行
处理
,典型的
处理
代码如下...
linux
软
中断
和
系统
调用
深入研究
x86 架构是硬
中断
int 80,
中断
号为80来实现
系统
调用
的; arm架构是使用swi命令,使arm切换为软
中断
模式,执行swi异常向量表中的异常向量。 软
中断
的异常向量 arm中异常象量表: 异常类型 偏移地址(低) 偏移
Linux
系统
的
中断
、
系统
调用
和调度概述
最近学习
Linux
操作
系统
,关于
中断
系统
调用
和进程的级别总是感觉有些模糊的地方,特在此做个小结,整理下思路。 所谓的
中断
就是在计算机执行程序的过程中,由于出现了某些特殊事情,使得CPU暂停对程序的执行,转而去...
Linux_Kernel
4,436
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章