1):轮询: 顺序的查询系统中的每个设备,“询问”他们是否需要服务,编程简单,但太耗处理器资源,影响系统性能
2):中断请求:在设备需要服务时向处理器提出请求,处理器也只有在设备提出请求时才为其提供服务。处理器会在执行完当前的一条指令后立刻应答设备的请求,并转而执行该设备的服务程序,当服务程序执行完后,处理器会接着去做刚才被中断的程序。
通常处理器会以下面三种情况处理中断请求:
1、当设备激活其中断IRQ信号时,中断控制器(PIC)立刻会检测到。
2、在同时收到几个设备的中断服务请求的情况下,PIC会对 他们进行优先级比较并选出最高优先级的中断请求进行处理。
3、如果处理器正在执行一个设备的中断服务过程,那么PIC还需要把选出来的中断请求与正在处理的优先级比较,并基于该比较结果来确定是否向处理器发出一个中断信号。当PIC向处理器的INT引脚发出一个中断信号时,处理器会立刻停下当时所做的事情,并询问PIC需要执行哪个中断服务请求。PIC则通过向数据总线发送对应的中断号来告诉处理器要执行哪个中断服务过程。处理器则根据中断号查询中断向量表或中断描述符表,取得中断服务程序地址,并执行中断服务程序。当中断服务程序执行结束,处理器就继续执行被中断信号打断的程序。
注意:
中断方法不一定与硬件相关,也可用于软件中。通过使用int指令并使用其操作数指明中断号,就可以让处理器执行相应的中断服务程序了。