中断和事件有什么区别?
答案 0 :(得分:32)
这两个概念都为“系统/程序”提供了处理在某些程序正常展开期间发生的各种“条件”的方法,这可能需要“系统/程序”做其他事情,返回(或不...)原始任务。然而,除了这种功能相似性之外,它们是在不同背景中使用的非常独特的概念,处于不同的层次。
中断提供低级设备,可以在正常时间内正常展开CPU正在运行的任何程序,并让CPU开始处理另一个地址的说明。中断对于处理需要CPU立即处理的各种情况非常有用(例如,处理击键或新数据到达串行通信通道)。
许多中断是由硬件产生的(某些电子设备改变了CPU的一个引脚上的极性),但也存在软件中断,这是由程序本身调用特定指令引起的。 (或者也可以通过CPU检测到某些东西在自身或程序运行方面误入歧途)。
一个非常着名的中断是INT 0x21,程序调用[d]从MS-DOS调用服务。
通常通过向量表调度中断,其中CPU在内存中具有包含地址数组的特定位置[特定中断处理程序所在的位置]。通过修改中断表的内容[如果允许...],程序可以重新定义将为给定的中断号调用哪个特定的处理程序。
另一方面,事件是系统/语言级“消息”,可用于表示各种硬件或软件情况(我使用的是单词事件),例如鼠标点击,键盘输入,以及应用程序级别的情况,例如“插入数据库中的新记录”或高度消化的请求和消息,用于模块化程序中,用于程序各部分之间的通信/请求。 / p>
与CPU完全定义的[相对简单]行为的中断不同,存在各种事件系统系统,在操作系统级别以及各种框架(例如:MS Windows,JavaScript,.NET,像QT等GUI框架。所有事件系统虽然在实现方面不同,但通常共享共同属性,例如
答案 1 :(得分:1)
在硬件(CPU)内部实现中断,以中断程序的通常线性流。这对于键盘输入等外部事件非常重要,但对于多任务操作系统中的程序也很重要。
事件是软件工程的一种手段,可能最常见于GUI工具包。在那里,工具包/ OS将按键或鼠标输入等事件包含在“事件”中。然后将这些程序发送给自己注册接收此类事件的程序。它可能有点像邮件系统。
从用户空间程序视图中比较两者:
-Interrupts会强制你的程序暂停,以便让一些低级代码执行(比如操作系统代码)
-Events通常从较低级别的代码发送给您并触发代码的执行