網(wǎng)站 框架網(wǎng)頁建設(shè)軟文的概念是什么
1 中斷分為同步中斷(中斷)和異步中斷(異常)
1.1 中斷和異常的不同
-
中斷由IO設(shè)備和定時器產(chǎn)生,用戶的一次按鍵會引起中斷。異步。
-
異常一般由程序錯誤產(chǎn)生或者由內(nèi)核必須處理的異常條件產(chǎn)生。同步。缺頁異常,斷點(diǎn)int3
異常如果由程序錯誤產(chǎn)生,內(nèi)核通過發(fā)送一個信號來處理異常
如果由內(nèi)核必須處理的異常條件誘發(fā),那么內(nèi)核必須執(zhí)行所需要的所有步驟。
(思考信號產(chǎn)生的動機(jī))
1.2 中斷和進(jìn)程上下文切換的不同
中斷切換的代碼不是一個進(jìn)程,而是一個內(nèi)核控制路徑,代表中斷發(fā)生時正在執(zhí)行的進(jìn)程在內(nèi)核中執(zhí)行。
1.3 中斷敏感性
-
當(dāng)內(nèi)核正打算做一些事情,中斷隨時可能會到來,因此中斷必須很快完成(以便內(nèi)核處理它的事情),盡可能把多的事情放到后面執(zhí)行。
-
中斷隨時可能到來,在處理一個中斷時必須允許其他中斷到來。這樣可以允許盡量多的IO設(shè)備處于忙碌狀態(tài)。所以中斷應(yīng)該允許嵌套
-
臨界區(qū)中,中斷必須被禁止。這個要求對于臨界區(qū)來說是必要的,但是對于內(nèi)核規(guī)則來說是不應(yīng)當(dāng)?shù)摹K詰?yīng)該減少臨界區(qū)。
1.4 中斷向量表
非屏蔽中斷和異常的向量是固定的,可屏蔽中斷的向量可以通過編程來改變。
1.5 IRQ和中斷
IRQ(Interrupt request)是設(shè)備用來向可編程中斷控制器發(fā)送中斷請求的,IRQ在硬件上和中斷控制器相連接。一個設(shè)備可能有多條IRQ,如PCI卡有4條。
當(dāng)設(shè)備產(chǎn)生中斷信號時,會發(fā)送到IRQ線上。中斷信號會被中斷控制器一直監(jiān)視,如果有條IRQ線上同時出現(xiàn)中斷信號,那么會選取IRQn值最小的那一個優(yōu)先處理。
中斷控制器會將從IRQn上接受來的中斷信號轉(zhuǎn)換為對應(yīng)的向量,將這個向量放到I/O端口上以便CPU需要的時候通過讀取數(shù)據(jù)總線來讀。中斷控制器將接受到的中斷信號轉(zhuǎn)發(fā)到CPU的INTR引腳上產(chǎn)生一個中斷
接下來就是等待CPU把這個中斷信號寫進(jìn)可編程中斷控制器的I/O端口來確認(rèn)這個向量。如果確實是,則清INTR線。
IRQ編號從0開始,IRQn對應(yīng)的intel的缺省向量為n+32。IRQ和向量的對應(yīng)關(guān)系可以通過一些指令來重新編程。
選擇性的禁止IRQ線相當(dāng)于"服務(wù)臺"(中斷控制器)讓客戶的需求(設(shè)備中斷)排隊,當(dāng)開啟IRQ時還會來處理需求
通過cli sti來開啟和屏蔽可屏蔽中斷相當(dāng)于服務(wù)臺暫時不上班,客戶的需求會被忽略。
1.6 多APIC系統(tǒng)和中斷分發(fā)方式
-
靜態(tài)分發(fā)
-
動態(tài)分發(fā) 中斷在CPU之間分發(fā)
CPU產(chǎn)生處理器之間的中斷,這在SMP系統(tǒng)中很有用。
如果是單處理器,那么APIC可以弱化成8259A,LIN0 LIN1分別作為INTR和NMI引腳使用
也可以作為一個外部的I/O APIC使用(雖然它在處理器內(nèi)部),本地APIC被激活。