2012-05-20 29 views
4

當您禁用中斷(使用x86中的cli指令)時,究竟發生了什麼?當你禁止中斷時會發生什麼,以及你如何處理你不知道如何處理的中斷?

  • 是否PIC等你開啓中斷,並觸發中斷當這種情況發生? (如果是這樣,它等待多久,以及如果時間「過期」會發生什麼?)

  • 從設備的角度來看,中斷是否會發送到「黑洞」中,而沒有響應?

  • 是否PIC莫名其妙地告訴大家,「CPU繁忙」或類似的設備?

  • 或者做了其他事情發生?

另外,你如何處理你不知道如何處理的中斷?
有沒有某種方法可以告訴PIC(或設備,如果您不知道設備是什麼),「是的,我收到了您的消息,但我不知道該怎麼辦」?

+0

「信息」是錯誤的心智形象,它只是一個信號。 CLI告訴處理器忽略它。設備在等待中斷處理程序開始傳輸數據並因此重置請求時不執行任何操作。沒有情況下你不知道如何處理中斷,你不會編程PIC來啓用IRQ。 –

+0

@HansPassant:啊,我明白了,謝謝! – Mehrdad

回答

5

8259a PIC等待來自CPU的INTA信號。 CPU在開始處理中斷時通過將控制權移交給相應的ISR來發送。哪個ISR? PIC向CPU提供中斷向量,該向量查找地址的IVT/IDT,其餘的知道。 PIC在接收INTA之前不會提供中斷向量。

8259a PIC僅與I/O設備進行單向通信。他們可以告訴它,他們有一個需要維修的中斷。

因此,如果CPU沒有響應中斷,PIC中的所有事情都在空中。但是,器件可能會在他們的意思中斷言,然後重新斷言中斷請求信號。我不知道哪一個。我也不知道哪些有中斷服務的時間要求。

如果您對來自特定來源的中斷不感興趣,則可以將其屏蔽並且不會得到任何中斷。如果你採取了中斷但不知道如何處理它,你可以告訴你已經處理它的PIC。這可能使被中斷的設備處於「凍結」狀態,無限期地等待服務發生。它也可能導致器件保持中斷請求信號爲高電平,如果在電平觸發模式下進行中斷,這將會成爲問題 - 您將不斷獲得中斷。

3

中斷仍然觸發,但CPU沒有收聽。當您再次開始收聽時(sti),信號仍然存在,並將在第一時間生效。

PC PIC有幾個級別的中斷,我相信它可以爲每個優先級別保存一個活動中斷。它會保留它們中的每一個,直到CPU告訴它相應的處理完成。中斷禁用很長一段時間可能會打破這個,所以不要這麼做!

負責中斷的設備在等待時不會得到任何響應 - 無論如何,這種響應是種類。如果它不能等待,它可能會進入一些錯誤狀態,CPU會在它最終到來時看到。

你只會得到明確啓用的中斷,所以應該沒有意外。打開中斷的設備驅動程序更好地知道如何處理它。