精華區beta CSSE 關於我們 聯絡資訊
take by http://0rz.tw/d948Z Wiki Interrupt 在輪詢(Polling)時,為了避免處理器浪費寶貴的時間等待外部事件發生, 因此採用一種叫做硬體中斷的方式。 中斷可由硬體的控制線來當作一套分別的系統實作,或是也可以整合到記憶體系統下。 如果在硬體下實作,在裝置與處理器的中斷接腳之間通常會有一個中斷控制器 (controller)電路,用來多工處理數個中斷源,通常對應到一至兩條的處理器線路上。 如果實作成記憶體控制器的一部分,中斷則會對應到系統記憶體位置空間上。 中斷可以分類成:可遮罩式(maskable)中斷(參閱IRQ)、 不可遮罩式(non-maskable)中斷(參閱NMI)、 內部處理器中斷(interprocessor interrupt,簡稱IPI)、 軟體中斷,和偽中斷。 可遮罩式中斷(IRQ)是一種硬體中斷,透過設定中斷遮罩暫存器 (interrupt mask register; IMR)內的位元遮罩(bit-mask)值來讓它可被系統忽略。 同樣地,不可遮罩式(NMI)也是硬體中斷,但卻和位元遮罩無關,意謂著它是無法被系統 忽略的。NMI通常使用於計時器(timers),特別像是看門狗計時器(watchdog timers) 。 內部處理器中斷是一種中斷的特殊案例,在多處理器系統下,由某顆處理器產出中斷來通 知另一顆處理器之用。 軟體中斷是處理器內執行了某個指令後,所產生出的中斷。軟體中斷通常用來實作成系統 呼叫(System calls),因為它們是實作成某種例行性的副程式呼叫,用於處理器保護層 級(Ring (電腦安全))更動時。 偽中斷是一種非需求的硬體中斷。在某些系統狀況下會容易發生,如中斷線路上的電子干 擾,或是不正確的硬體設計。 處理器通常含有一個內部的中斷遮罩,當這個設定後,可讓軟體忽略所有的外部硬體中斷 。在可程式化中斷控制器(PIC)中,相較於去讀取中斷遮罩暫存器(IMR),這個遮罩可 提供較快的硬體存取,或是關閉裝置本身的中斷。 在某些例子中,像是x86架構下,在處理器本身關閉和開啟中斷會以記憶屏障 (memory barrier)的方式運作,在此情況下實際上反而變慢。 若一個中斷使機器處於明確定義的狀態,則稱這中斷為精確中斷(precise interrupt)。 這類的中斷有下列四種特性: 程式計數器(Program Counter; PC)會存入已知的位置。 在PC導向前所有的指令都會執行完畢。 超出PC導向後的指令不可以被執行。 (並沒有限制超出PC後不可有指令,只是任何對暫存器或記憶體造成的改變必須在中斷發 生前復原。) PC導向的指令執行狀態是已知的。 任何一種中斷其不符合這些需求的,稱作非精確中斷(imprecise interrupt)。 若耗費過多時間處理中斷,會造成整體系統效能被嚴重阻礙的現象, 有人稱作中斷風暴(interrupt storm)。 -- ---------------------------------------- 雲彩飛舞 http://coolcoolwind.spaces.live.com/ [我總在最深的絕望裡,遇見最美麗的驚奇。] 幾 米 ( ̄ Ο ̄)y▂ξ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.211.186
rexrainbow:推~ 05/27 13:27