社区
Linux_Kernel
帖子详情
关于中断处理程序的一点疑惑?
zhanghaif
2006-09-24 08:12:35
书上说到:一个中断处理程序以异步的方式执行,并且,它有可能打断其他重要的代码(甚至包括其他中断处理程序)。
又有:中断处理程序不是在“进程上下文”中运行,当执行一个中断处理程序时内核处于“中断上下文”,中断上下文和内核上下文没有瓜葛,因为没有进程背景,所以中断上下文不可以睡眠。
现在问题是:一个中断处理程序可以打断另外一个中断处理程序。但是,中断处理程序又不可以睡眠,此时被打断的中断处理程序到底处于什么状态呢?
...全文
514
5
打赏
收藏
关于中断处理程序的一点疑惑?
书上说到:一个中断处理程序以异步的方式执行,并且,它有可能打断其他重要的代码(甚至包括其他中断处理程序)。 又有:中断处理程序不是在“进程上下文”中运行,当执行一个中断处理程序时内核处于“中断上下文”,中断上下文和内核上下文没有瓜葛,因为没有进程背景,所以中断上下文不可以睡眠。 现在问题是:一个中断处理程序可以打断另外一个中断处理程序。但是,中断处理程序又不可以睡眠,此时被打断的中断处理程序到底处于什么状态呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ex_luckydog
2006-10-22
打赏
举报
回复
tb01412(tb)
中断是发生在任何一个进程运行的过程中,如果一个进程在运行,中断发生,那么中断就处在这个进程的上下文中,占用的是这个进程的页表,使用的是这个进程的地址空间,所谓中断不属于进程上下文,是指中断不发生在一个指定的进程上下文中.
-----------------------------------------------------------------------
不同意这段解释,至少在VxWorks下面中断的堆栈是独立的,而不是使用进程的。
blue_yxt
2006-10-21
打赏
举报
回复
"中断上下文"实际上是cpu作中断处理时的寄存器内容,这些内容保存在每个进程的TASK_STRUCT结构所在的8k内存;
上下文只是某个特定时刻对这些寄存器的通称概念,感觉"tb01412"把上下文当成一种内存概念,我承认这些中断上下文是保存在进程的"内核堆栈里面",但不同意说"中断就处在这个进程的上下文中"
还有进程调度只能是在中断返回前夕作这个工作,如果在中断处理时作这个事情就是一个错误!
hendric
2006-10-14
打赏
举报
回复
LZ的上下文是指寄存器环境吧,2楼的解释比较清楚了已经。
loveisbug
2006-10-11
打赏
举报
回复
不确定“中断上下文”是个什么意思,楼上第二段解释的很清楚。
tb01412
2006-09-24
打赏
举报
回复
中断可以发生在任何进程正在执行的过程中,如果此时进程A在运行,发生中断,如果在中断休眠的话,那么就会让进程A不运行,你有什么权利让进程A休眠呢??也有可能这个中断发生在进程B中,同样的道理,你有什么权利让进程B休眠呢???这就是不合逻辑的地方,再者,如果你休眠完成之后,再次调度这个进程时,这个进程如果退出了咋个办??????你总不能强制要求一个进程非得等待你的中断休眠完成之后再退出吧??再者,还有设备的问题,中断肯定不能占用太长的时间,你却要求进程休眠,这岂不是背道而驰吗?中断时间过长,会丢失中断的.
中断是发生在任何一个进程运行的过程中,如果一个进程在运行,中断发生,那么中断就处在这个进程的上下文中,占用的是这个进程的页表,使用的是这个进程的地址空间,所谓中断不属于进程上下文,是指中断不发生在一个指定的进程上下文中.中断可以嵌套,是指高优先级可以打断低优先级的运行,比如进程A在运行,中断1发生,处于进程A的上下文中,执行了一小段时间后,又一高优先级的中断2到来,打断A,这个中断还是处于进程A的上下文中,直到两个中断退出,才会执行进程调度
当然,你也可以在中断到来之时进行调度或者休眠,不过系统将会处于未知状态,你可以写一个这样的驱动来测试
Linux内核5.
中断
和
中断
处理
我们先来看一下
中断
的定义:
中断
机制:CPU在执行指令时,收到某个
中断
信号转而...本文我们从
中断
的概念开始讲起,一路上分析了
中断
的作用、
中断
的产生、
中断
的处理。其中内容最多的是硬件
中断
的处理,方法很多很繁杂。
28 | 异常和
中断
:程序出错了怎么办?
28 | 异常和
中断
:程序出错了怎么办?
CPU“
中断
”的本质是什么?
本文我们从
中断
的概念开始讲起,一路上分析了
中断
的作用、
中断
的产生、
中断
的处理。其中内容最多的是硬件
中断
的处理,方法很多很繁杂。从6.1节CPU运行模型中,我们可以看到
中断
对于推动整个系统运行的重要性。所以说...
int指令(软件
中断
指令__软件调试)__gdb调试
中断
断点原理
中断
服务子程序和标准过程的最大区别是 汇编程序可以有任意个过程,
中断
服务子程序最多有256个过程、 INT指令共有四中不同的格式: 《1》 int n n是
中断
号,这就允许用户程序调用256个
中断
服务子程序...
Linux在x86上的
中断
处理过程
Linux在x86上的
中断
处理过程一:引言二:x86的
中断
处理过程三:注意事项术语解释:CPL,DPL,RPL5.1.CPL5.2.DPL5.3.RPLx86 Registers 一:引言 在Intel的文档中,把
中断
分为两种。一种是异常,也叫 同步
中断
。一种称...
Linux_Kernel
4,438
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章