硬件中断和软件中断以及中断与函数调用的区别

《汇编语言程序设计》Richard Blum著:6.2.3中断

 

中断有两种形式:

(1)硬件中断;

(2)软件中断。

 

硬件设备生成硬件中断。

使用硬件中断发出信号,表示硬件层发生的事件(比如I/O端口接收到输入信号时)。

 

程序生成软件中断。

它们是把控制交给另一个程序的信号。

 

当一个程序被中断调用时,发出调用的程序暂停,被调用的程序接替它运行。指令指针被转移到被调用的程序,并且从被调用的程序内继续执行。被调用的程序完成时,它可以把控制返回给发出调用的程序(使用中断返回指令)。

 

软件中断是操作系统提供的,使应用程序可以使用操作系统内的函数,并且,在某些情况下,甚至可以接触底层的BIOS系统。在Microsoft DOS操作系统中,为很多函数提供了0x21软件中断。在Linux领域,0x80中断用于提供低级内核函数。

 

 

http://blog.sina.com.cn/s/blog_913c070a0100zse4.html

中断:

1)何时发生可能是不可预料的;CPU正在处理某件事情的时候,外部发生的某一事件(如一个电平的变化,一个脉冲沿的发生或定时器计数溢出等)请求CPU迅速去处理,于是CPU暂时中止当前的工作,转去处理所发生的事件。中断服务处理完该事件以后,再回到原来被中止的地方继续原来的工作

2)对于可剥夺型内核,完成中断调度后,不是立刻返回原来的执行点执行,而是回到就绪态优先级最高的任务开始运行。

3)没有返回值;

4)不能传递参数。

 

函数:

1)何时发生是可预料的;

2)完成函数调度后会返回到原来的代码片段继续执行;

3)有返回值;

4)能传递参数。

 

相同点:

1)在执行调度之前,都保存现场;

2)都是调用一个subcode。

posted @ 2014-08-06 19:30  ITtecman  阅读(4642)  评论(0编辑  收藏  举报