清详细描述一下啥是软中断,啥是硬中断?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了清详细描述一下啥是软中断,啥是硬中断?相关的知识,希望对你有一定的参考价值。

请尽可能的详细的描述一下,最好能举个例子说明一下,同时这些中断是由什么 东东 产生的?

软中断:
1、编程异常通常叫做软中断
2、软中断是通讯进程之间用来模拟硬中断的 一种信号通讯方式。
3、 中断源发中断请求或软中断信号后,CPU或接收进程在适当的时机自动进行中断处理或完成软中断信号对应的功能
4、软中断是软件实现的中断,也就是程序运行时其他程序对它的中断;而硬中断是硬件实现的中断,是程序运行时设备对它的中断。

硬中断:
1、 硬中断是由外部事件引起的因此具有随机性和突发性;软中断是执行中断指令产生的,无面外部施加中断请求信号,因此中断的发生不是随机的而是由程序安排好的。
2、硬中断的中断响应周期,CPU需要发中断回合信号(NMI不需要),软中断的中断响应周期,CPU不需发中断回合信号。
3、硬中断的中断号是由中断控制器提供的(NMI硬中断中断号系统指定为02H);软中断的中断号由指令直接给出,无需使用中断控制器。
4、硬中断是可屏蔽的(NMI硬中断不可屏蔽),软中断不可屏蔽。

区别:
1、软中断发生的时间是由程序控制的,而硬中断发生的时间是随机的
2、软中断是由程序调用发生的,而硬中断是由外设引发的
3、硬件中断处理程序要确保它能快速地完成它的任务,这样程序执行时才不会等待较长时间‍
参考技术A 编程异常通常叫做软中断
软中断是通讯进程之间用来模拟硬中断的 一种信号通讯方式。
中断源发中段请求或软中断信号后,CPU 或接收进程在适当的时机自动进行中断
处 理或完成软中断信号对应的功能
硬中断是硬件实现的中断,是程序运行时设备对它的中断
参考技术B 给你打个比方,你在家里打电话,如果这时候有人敲门,你中断了打电话的行为就叫做软中断,而如果是因为电话线出了问题导致你的电话中断了,这就叫做硬中断。 参考技术C 你提的问题。。也太不详细了吧。。都不知道你说哪一方面。。在我理解。。软中断就是按正常程序中断内容,硬中断就是强行中止。。。大概就这样吧。。我说的不是决对答案。。只供参考。。。

软中断的概念

参考技术A

软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果。很多情况下,软中断和信号有些类似,同时,软中断又是和硬中断相对应的,硬中断是外部设备对CPU的中断,软中断通常是硬中断服务程序对内核的中断,信号则是由内核(或其他进程)对某个进程的中断(《Linux内核源代码情景分析》第三章)。
软中断是linux系统原“底半处理”的升级,在原有的基础上发展的新的处理方式,以适应多cpu 、多线程的软中断处理。
软中断是实现系统API函数调用的手段
函数调用时将返回地址和CPU状态寄存器内容压栈,函数执行完毕后出栈返回断点继续执行。
软中断调用时将返回地址和CPU状态寄存器内容压栈,修改特权级,根据中断号查找中断向量表,找到ISR中断服务例程地址,跳转执行。
综上,函数调用和软中断调用的区别是,软中断多了修改特权级和查找中断向量表的功能,其他部分完全一样。
一般,系统程序由软件公司实现且不开源,你无法知道系统API函数的偏移地址,而且你写的应用程序和软件公司提供的系统程序是完全分开的,编译器无法将二者链接在一起,同时,系统程序需要核心态特权才能运行,此时用函数调用的办法是无法调用系统API函数的。解决这个问题的方法是使用软中断,当应用程序需要调用API时,就先设置功能号(如AX=0H),然后触发软中断(如INT 80H)。系统程序设置好中断向量表。这样,应用程序就可以间接找到系统API了。
有了软中断,就可以实现应用程序的动态加载。就像WINDOWS/Linux那样,应用程序和系统程序分别开发,不在一起编译连接,应用程序通过软中断调用系统提供的功能。

以上是关于清详细描述一下啥是软中断,啥是硬中断?的主要内容,如果未能解决你的问题,请参考以下文章

面试官:啥是软中断?

软中断的概念

认认真真的聊聊“软“中断

操作系统中啥是“原子操作”

中断下半部之 tasklet

中断下半部之 tasklet