求高手指点,中断服务子程序到底是个什么啊?

liuxingxxx 2010-07-18 11:22:30
看了很多操作系统的书,也查了资料
1、 中断发生时,是不是要把 当前应用程序的上下文,保存到进程 内核堆栈了面啊?
2、 然后去执行中断服务子程序,我想问一下,这个子程序是谁写的?是固定好的么?? 它是一个子程序还是一个完整的应用
程序啊?
3、 我记得有人说中断服务子程序没有自己的堆栈,那么它用谁的啊?
...全文
660 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mainsea 2011-10-16
  • 打赏
  • 举报
回复
呵呵,《微机原理》里面有这些内容啊,看来学校的课本韩式挺有用的啊
zigzag_xiang 2010-07-19
  • 打赏
  • 举报
回复
恩,楼上的更正的对。如果是进程进中断就是进程上下文,如果是中断进中断就是中断上下文
carey1986 2010-07-19
  • 打赏
  • 举报
回复
LS解释有误啊
中断发生时,是把进程的上下文,实际上就是些寄存器信息存入进程的内核栈。
当然中断如果是嵌套执行,那就是保存寄存器信息入中断栈了。现在的中断是有自己的栈的
zigzag_xiang 2010-07-19
  • 打赏
  • 举报
回复
1、 中断发生时,是不是要把 当前应用程序的上下文,保存到进程 内核堆栈了面啊?
2、 然后去执行中断服务子程序,我想问一下,这个子程序是谁写的?是固定好的么?? 它是一个子程序还是一个完整的应用
程序啊?
3、 我记得有人说中断服务子程序没有自己的堆栈,那么它用谁的啊?

-------
1,当然要保存,不过保存的是中断上下文而不是进程上下文。
2,中断服务子程序大部分系统保留实现,自己也可以写好注册上去。固定的是中断异常向量表的地址,系统启动时候就由硬件分配固定的。只要将中断服务子程序指向这个地址就可以被中断调用。中断服务子程序要求非常简短精炼。所以在中断服务子程序中处理不及时的例子应该用linux的中断上下半机制解决。
3,那是不可能没有的,在计算机的所有切换过程包括进程,线程,函数调用,中断都是用堆栈来保存和恢复数据的。当然你也可以一个切换状态一套寄存器,不用堆栈。
cuiahong 2010-07-18
  • 打赏
  • 举报
回复
真的可以学到很多东西啊,原来自己还要更加努力!
Coder_Granger 2010-07-18
  • 打赏
  • 举报
回复
看这篇,讲的很详细

http://blog.chinaunix.net/u2/76263/showart_1182767.html
embeddedstar 2010-07-18
  • 打赏
  • 举报
回复
计算机内存的前1024个字节(偏移量00000H到003FFH)保存着256个中断向量,每个中断向量占4个字节,前两个字节保存着中断服务程序的入口地址偏移量,后两个字节保存着中断程序的入口段地址,使用时,只要将它们分别调入寄存器IP及CS中,就可以转入中断服务程序实现中断调用。每当中断发生时,CPU将中断号乘以4,在中断向量表中得到该中断向量地址,进而获得IP及CS值,从而转到中断服务程序的入口地址,调用中断。
如果用汇编语言写的话,就需要按照如上依次写语句。用C语言写,只需调用相应的中断函数就可以了,内部操作由编译器完成。
carey1986 2010-07-18
  • 打赏
  • 举报
回复
现在内核版本里中断是有专门的中断栈的
谭海燕 2010-07-18
  • 打赏
  • 举报
回复
《linux内核完全解析》里面有很详细的介绍。

4,441

社区成员

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

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