存档

文章标签 ‘中断’

中断栈溢出后的结果

2013年3月24日 没有评论 688 次浏览

说一下上文中最开始提到的“某个问题”:如果一台主机网卡比较多,然后每个网卡分队列又比较多,总之结果就是系统里的网卡设备的中断号比较多(关于超过256个中断数的情况,请见参考1,2,3),一旦所有这些中断都绑定到同一个CPU,那么如果网卡收到数据包进而触发中断,而众多硬中断一嵌套就非常容易出现中断栈溢出。一旦中断栈溢出,那么将会导致怎样的结果,这曾在之前的文章里隐含的提到过,这里再重新整理一遍。

对Linux x86-64架构上硬中断的重新认识

2013年3月16日 1 条评论 1,081 次浏览

对于x86硬中断的概念,一直都落在理论的认识之上,直到这两天才(因某个问题)发现Linux的实现却并非如此,这里纠正一下(注意:Linux内核源码更新太快,一个说法的时效性太短,所以需注意我提到的香草内核版本,并且以x86-64架构为基准)。

汇编硬编码触发中断

2012年6月16日 没有评论 757 次浏览

Intel cpu中断是一些非常有意思的玩意,比如对于3号中断,很多内核调试机制像kprobe、kgdb就利用了它,而这在3号中断的内核处理函数do_int3内可以看到一些端倪。
怎样去主动触发这些中断呢?可以使用int指令,以下代码触发3号中断:

分类: *nix技术 标签: , ,

Triple Fault的捕获与处理

2012年4月11日 没有评论 810 次浏览

前面有文章说Triple Fault无法捕获,经过几天资料搜寻,对于这个问题还是有办法的。如果可以,对于捕获Triple Fault,最简便的方法就是使用虚拟机来进行操作,这样在发生Triple Fault时影响的只是虚拟机,在host机器里我们仍然可以做进一步处理。当前虚拟机比较多,比如最常用的Vmware、Qemu、Bochs等,我就试了一下Vmware,发生Triple Fault时Vmware会弹个框进行提示CPU进入shutdown模式,按确定(虚拟机)重启,按取消(虚拟机)关机;这个对于我们调试Triple Fault帮助不大;另外几个虚拟机,网上搜索了一下,据称Qemu会有oops信息:
http://readlist.com/lists/netbsd.org/current-users/5/28250.html
Bochs也会有oops信息:
http://www.brokenthorn.com/Resources/OSDev15.html
http://www.brokenthorn.com/Resources/OSDev9.html

Double Fault & Triple Fault

2012年4月7日 没有评论 1,134 次浏览

之前我曾提到过intel x86 cpu的14号中断用于处理缺页异常,这也是被人熟知的一个中断号,事实上intel架构总共可用的中断号有256个(从0到255),其中前32个(从0到31)中断号保留给Intel架构内部使用,也就是说这些中断都有其特定的含义而不可被用户更改,而剩余的224(从32到255)个中断则可由用户自定义和实现其具体功能。本文重点关注前32个中断,更具体点说是其中的一个中断Double Fault,以及隐包含的另外一个中断Triple Fault。