免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 16728 | 回复: 40
打印 上一主题 下一主题

软中断是如何实现的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-03 20:27 |只看该作者 |倒序浏览
看过不少书上面都讲到软中断,一直搞不清到底什么是软中断,还有就是和AST(asynchronous system trap),DPC(deferred procedure call),APC(asynchronous procdure call)的关系,后面两个是这
这几天看widows internals看到的,
哪位老大能解释一下啊!

论坛徽章:
0
2 [报告]
发表于 2006-05-03 20:42 |只看该作者
原帖由 ocean390 于 2006-5-3 20:27 发表
看过不少书上面都讲到软中断,一直搞不清到底什么是软中断,还有就是和AST(asynchronous system trap),DPC(deferred procedure call),APC(asynchronous procdure call)的关系,后面两个是这
这几天看widows inte ...


这些区别可以借助研究中断和系统调用过程的实现来理解,放假期间不便查资料,难免言论有误,等上班后再详细讨论一下!

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
3 [报告]
发表于 2006-05-03 20:51 |只看该作者
相对于软中断的是硬中断。这个概念很清晰,硬件在完成操作之后,向处理器中断控制芯片引脚发出的一个跳变电平。
软中断,顾名思义就是以软件方式产生的中断。一般以int指令提供。除此之外,我们常见的/0错误,换页异常,处理器权限错误等,都会导致软件异常/中断的产生。BSD采用的是int 80中断。dos没有记错的话好像是int 21

异步的意思是“你只能说明当xxx发生时,系统可以执行什么操作;而你却不能预测xxx的发生。”
至于AST,DPC,APC,在BSD里面我暂时只遇到AST,我的理解,Intel将软件中断分成中断和异常两种类型,他们都是提供的异步机制。AST的概念应该和异步系统中断差不多。

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
4 [报告]
发表于 2006-05-03 20:53 |只看该作者
原帖由 雨丝风片 于 2006-5-3 20:42 发表


这些区别可以借助研究中断和系统调用过程的实现来理解,放假期间不便查资料,难免言论有误,等上班后再详细讨论一下!


LZ,现在版主大哥的脑子里在盘算明天怎么去看mm

论坛徽章:
0
5 [报告]
发表于 2006-05-03 21:11 |只看该作者
刚才用百度搜索了一下,发现了不少讲软中断的文章,发现在搜索中文方面,百度还是要比google强不少。
不过搜索到的都是关于Linux方面的。上面讲到的软中断的意思就是相当于一般上讲的Linux中的中断的bottom down的处理,BSD中有中断线程的方法,是不是就不再需要软中断的方法了。在TCP/IP详解的卷二
接口:以太网 中讲到当网卡收到一个数据包之后,如果是一个IP分组就调度一个ip软件中断,如果是一个ARP分组就调度一个arp软件中断。我的意思就是这样的软中断是什么意思,是怎么实现的。
DPC,APC我也说了是在Windows internals上面看到的,BSD中没有这样的说法。

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
6 [报告]
发表于 2006-05-03 21:19 |只看该作者
原帖由 ocean390 于 2006-5-3 21:11 发表
不过搜索到的都是关于Linux方面的。上面讲到的软中断的意思就是相当于一般上讲的Linux中的中断的bottom down的处理,BSD中有中断线程的方法,是不是就不再需要软中断的方法了。在TCP/IP详解的卷二
接口:以太网 中讲到当网卡收到一个数据包之后,如果是一个IP分组就调度一个ip软件中断,如果是一个ARP分组就调度一个arp软件中断。我的意思就是这样的软中断是什么意思,是怎么实现的。

Linux我脑子里现在没有什么映像。
BSD的中断线程??我只知道中断上下文。

软中断,我不知道你说的实现是指什么。
软中断是一种机制,是处理器提供的,0-31是保留给intel的,32-255是可以给用户的,硬件怎么实现,那需要找处理器的资料了。
你要是问软中断是怎么安装的,在置顶的<程序开发资料汇总>里面有相关联接。

论坛徽章:
0
7 [报告]
发表于 2006-05-03 21:34 |只看该作者
我想一般书中讲的调度一个软中断不会是通过一个int指令实现的吧,这样的指令有什么意义呢?intel把通过int指令产生的中断或者执行过程中产生的异常如被0除称为软中断,这个不是太清楚。已经很长时间没看intel 的手册了。
我个人感觉如tcp/ip这本书中讲的软中断,应该和windows下的deferred procedure call差不多吧。
老大不会还没听说过BSD中的中断线程吧!

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
8 [报告]
发表于 2006-05-03 21:58 |只看该作者
原帖由 ocean390 于 2006-5-3 21:34 发表
我想一般书中讲的调度一个软中断不会是通过一个int指令实现的吧,这样的指令有什么意义呢?intel把通过int指令产生的中断或者执行过程中产生的异常如被0除称为软中断,这个不是太清楚。已经很长时间没看intel 的手 ...

我不是很清楚你说的tcp/ip这本书中讲的"软中断"。不过,按照术语来说,"软中断"是一个标准的名称,这个名称不太可能由int指令和其他什么东西共享。
中断线程,恩,我理解错了你的意思。不过"BSD中有中断线程的方法,是不是就不再需要软中断的方法了"是错误的。中断上下文的出现是为了提供一个细粒度的中断处理周期,这样做的好处在于SMP和RealTime. 它其实还是中断,也就是说系统可以没有中断线程,但是不能没有(硬、软)中断。两者不是如你理解的那样独立的关系。

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
9 [报告]
发表于 2006-05-03 22:25 |只看该作者
原帖由 ocean390 于 2006-5-3 20:27 发表
看过不少书上面都讲到软中断,一直搞不清到底什么是软中断,还有就是和AST(asynchronous system trap),DPC(deferred procedure call),APC(asynchronous procdure call)的关系,后面两个是这
这几天看widows inte ...


你可以看看freebsd设计与实现一书的3.3节。

论坛徽章:
0
10 [报告]
发表于 2006-05-03 22:26 |只看该作者
应该是”软件中断“吧,不过网上关于Linux的分析都是叫做”软中断“,我感觉两者应该是相同的意思,就一直叫”软中断“了,在
http://www.freebsdchina.org/forum/topic_11120.html
FreeBSD 5 内核源代码分析之中断处理,这片文章中也提到了软件中断,不过介绍的不是很详细,没有讲软件中断是怎么被调度的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP