什么是禁用中断?

时间:2010-08-06 20:29:02

标签: interrupt-handling keyboardinterrupt

当进入一个inteerupt处理程序时,我们首先在该cpu上“禁用中断”(使用类似x86上的cli指令)。在禁用中断期间,假设用户按下键盘上的字母'a',这通常会导致中断。但由于中断被禁用,这是否意味着:

  1. 永远不会调用'a'的中断处理程序,因为在关键部分禁用了中断或
  2. 中断将由操作系统处理但延迟,直到再次启用中断。 具体来说,用户是否需要再次按'a',如果他第一次按'a'是在中断被禁用的时候?

5 个答案:

答案 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 {例如:除以零} 等等。

  1. 当硬件故障发生时,操作系统必须运行混合。
  2. 当发生异常时,操作系统必须对系统进行操作并切换另一个进程来处理中断。
  3. 或者例如:用于I / O设备。 如果中断不是,计算机效率不高!