当进入一个inteerupt处理程序时,我们首先在该cpu上“禁用中断”(使用类似x86上的cli指令)。在禁用中断期间,假设用户按下键盘上的字母'a',这通常会导致中断。但由于中断被禁用,这是否意味着:
答案 0 :(得分:6)
通常,一个中断由硬件“排队”。
[中断通常只是一个可以坚持的逻辑门;一旦它开启,它会持续一段时间。]
如果用户仅在禁用中断的时间间隔内点击“a”一次,则会在重新启用时注册为中断。
如果用户在禁用中断的时间间隔内以某种方式设法击中'a'两次,则在启用时将注册为中断。无论是第一个还是第二个取决于确切的逻辑门配置。
答案 1 :(得分:6)
答案是,这取决于你是否已经在处理键盘中断。
大多数中断服务程序(ISR)在它们的终止处都有代码,通知硬件它已被“服务”。在键盘控制器的情况下,向其写入命令以确认接收的字节。在确认时,键盘控制器硬件停止使用电来发出中断信号。
如果您正在处理非键盘中断,让我们说火警中断,那么电子断言中断的键盘硬件将在按下键时触发。电源信号被忽略,直到CPU再次启用中断为止。在服务火警中断结束时,火警ISR确认任何数据并重新启用CPU上的中断。 CPU立即进入中断状态,因为键盘控制器仍在电子信号通知中断状态。
如果您正在处理键盘中断,并且用户在执行键盘ISR期间快速键入第二次键击,则可能会丢失第二次击键时的数据,或者如果有的话,稍后收到它。特别是,如果ISR通过确认重置键盘控制器,但ISR实际上没有从键盘控制器接收到所有可用字节,则这是一个问题。
通常,ISR将首先处理触发其激活的中断,然后在确认中断之后,轮询设备以查看自第一次中断以来是否已收到更多数据。如果是,则生成软件中断以重新进入ISR并为设备提供服务。
答案 2 :(得分:1)
简单的答案是中断会自动禁用进一步的中断。中断应该在最短的时间内被禁用。原始AT BIOS键盘ISR中的第一条指令为STI
以启用中断。
快乐的答案是PIC优先考虑硬件中断,即使启用了中断,只有定时器中断IRQ0可以中断键盘ISR。当然,NMI可以以任何一种方式发生,但幸运的是,这种情况永远不会发生在当前的PC上。
答案 3 :(得分:0)
在正常处理中断期间,用户在物理上不可能按两次“a”。即使他一次按下两个键也是非常不可能的,但是硬件应该至少保留一个键,直到CPU准备好它为止。
在PC上 - 这是回到我的PCXT日 - 键盘子系统可以保持在13次按键区域为CPU。
答案 4 :(得分:-3)
禁用中断有不同的证据。 1.硬件故障 2.exceptions {例如:除以零} 等等。
或者例如:用于I / O设备。 如果中断不是,计算机效率不高!