软中断与硬中断

硬件中断面对CPU, 软中断对内核, 信号对某个进程中断

软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果。

软中断的工作工程模拟了实际的中断处理过程,当某一软中断事件发生后,首先需要设置对应的中断标记位,触发中断事务,然后唤醒守护线程去检测中断状态寄存器,如果通过查询发现有软中断事务发生,那么通过查询软中断向量表调用相应的软中断服务程序action()。这就是软中断的过程,"与硬件中断唯一不同的地方是从中断标记到中断服务程序的映射过程。"在CPU的硬件中断发生之后,CPU需要将硬件中断请求通过向量表映射成具体的服务程序,这个过程是硬件自动完成的,但是软中断不是,其需要守护线程去实现这一过程,这也就是软件模拟的中断,"故称之为软中断"。一个软中断不会去抢占另一个软中断,只有硬件中断才可以抢占软中断,所以软中断能够保证对时间的严格要求。

软中断与硬中断区别:

1. 硬中断是由外部事件引起的因此具有随机性和突发性;软中断是执行中断指令产生的,无面外部施加中断请求信号,因此中断的发生不是随机的而是由程序安排好的。

2. 硬中断的中断响应周期,CPU需要发中断回合信号(NMI不需要),软中断的中断响应周期,CPU不需发中断回合信号。

3. 硬中断的中断号是由中断控制器提供的(NMI硬中断中断号系统指定为02H);软中断的中断号由指令直接给出,无需使用中断控制器。

4. 硬中断是可屏蔽的(NMI硬中断不可屏蔽),软中断不可屏蔽。

5. 软中断发生的时间是由程序控制的,而硬中断发生的时间是随机的。

6. 软中断是由程序调用发生的,而硬中断是由外设引发的。

7. 硬件中断处理程序要确保它能快速地完成它的任务,这样程序执行时才不会等待较长时间。

 

 

 

 

 

你可能感兴趣的:(Embedded)