mjv*_*mjv 32

这两个概念都为"系统/程序"提供了处理在某些程序正常展开期间发生的各种"条件"的方法,并且可能要求"系统/程序"在返回之前做其他事情(或者不是......)原来的任务.然而,除了这种功能相似性之外,它们是在不同的环境中使用的非常独特的概念,在不同的层次上.

中断提供了一个 低级设备,用于中断CPU在给定时间内正在工作的任何程序的正常展开,并让CPU在另一个地址处开始处理指令.中断对于处理需要CPU立即处理的各种情况(例如处理击键或串行通信信道中新数据的到达)非常有用.

许多中断是由硬件产生的(某些电子设备改变了CPU的一个引脚上的极性),但也存在软件中断,这是由程序本身调用特定指令引起的.(或者也可以通过CPU检测某些东西在自身或程序运行方面是误入歧途).

一个非常着名的中断是INT 0x21,程序调用[d]从MS-DOS调用服务.

通常通过向量表来分派中断,其中CPU在存储器中具有包含地址阵列的特定位置[特定中断处理程序所在的位置].通过修改中断表的内容[如果允许...],程序可以重新定义将为给定的中断号调用哪个特定的处理程序.

活动,在另一方面,是系统/语言级的"消息"可以用来表示各种硬件或软件的情况下(我用这个词事件),如鼠标点击,键盘输入,也应用级诸如"插入数据库中的新记录"或高度消化的请求和消息之类的情况,用于模块化程序中,用于程序各部分之间的通信/请求.

与CPU完全定义的[相对简单]行为的中断不同,存在各种事件系统系统,在操作系统级别以及各种框架(例如:MS Windows,JavaScript,.NET,GUI框架等QT等..).所有事件系统虽然在实现方面不同,但通常具有共同的属性,例如

  • 处理程序的概念,它是程序的特定功能/方法,被指定用于处理来自特定事件源的特定类型的事件.
  • 事件的概念,它是一个[通常很小]的结构,包含有关事件的信息:它的类型,源,自定义参数(语义取决于事件类型)
  • 一个队列,其中事件由源插入并由消费者/处理程序轮询(或者更确切地说,由调度员根据系统...)