首页 > 代码库 > 硬件中断和软件中断以及中断与函数调用的区别
硬件中断和软件中断以及中断与函数调用的区别
《汇编语言程序设计》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。