在系統(tǒng)結(jié)構(gòu)中,CPU工作的模式有兩種泉沾,一種是中斷骤星,由各種設(shè)備發(fā)起;一種是輪詢爆哑,由CPU主動(dòng)發(fā)起。
中斷IRQ:
中斷允許讓設(shè)備(如鍵盤舆吮,串口卡揭朝,并口等設(shè)備)表明它們需要CPU。一旦CPU接收了中斷請(qǐng)求色冀,CPU就會(huì)暫時(shí)停止執(zhí)行正在運(yùn)行的程序潭袱,并且調(diào)用一個(gè)稱為中斷處理器或中斷服務(wù)程序(interrupt service routine)的特定程序。CPU處理完中斷后锋恬,就會(huì)恢復(fù)執(zhí)行之前被中斷的程序屯换。
中斷分類:
硬中斷+軟中斷
硬中斷:
①非屏蔽中斷:不能被屏蔽,硬件發(fā)生的錯(cuò)誤:內(nèi)存錯(cuò)誤与学,風(fēng)扇故障彤悔,溫度傳感器故障等。
②可屏蔽中斷:可被CPU忽略或延遲處理索守。當(dāng)緩存控制器的外部針腳被觸發(fā)的時(shí)候就會(huì)產(chǎn)生這種類型的中斷晕窑,而中斷屏蔽寄存器就會(huì)將這樣的中斷屏蔽掉。我們可以將一個(gè)比特位設(shè)置為0卵佛,來禁用在此針腳觸發(fā)的中斷杨赤。
軟中斷:
是軟件實(shí)現(xiàn)的中斷,也就是程序運(yùn)行時(shí)其他程序?qū)λ闹袛?而硬中斷是硬件實(shí)現(xiàn)的中斷,是程序運(yùn)行時(shí)設(shè)備對(duì)它的中斷。
CPU之間的中斷處理(IPI)
處理器間中斷允許一個(gè)CPU向系統(tǒng)其他的CPU發(fā)送中斷信號(hào)截汪,處理器間中斷(IPI)不是通過IRQ線傳輸?shù)募采亲鳛樾盘?hào)直接放在連接所有CPU本地APIC的總線上。
CALL_FUNCTION_VECTOR (向量0xfb)
發(fā)往所有的CPU衙解,但不包括發(fā)送者阳柔,強(qiáng)制這些CPU運(yùn)行發(fā)送者傳遞過來的函數(shù),相應(yīng)的中斷處理程序叫做call_function_interrupt()蚓峦,例如盔沫,地址存放在群居變量call_data中來傳遞的函數(shù),可能強(qiáng)制其他所有的CPU都停止枫匾,也可能強(qiáng)制它們?cè)O(shè)置內(nèi)存類型范圍寄存器的內(nèi)容架诞。通常,這種中斷發(fā)往所有的CPU干茉,但通過smp_call_function()執(zhí)行調(diào)用函數(shù)的CPU除外谴忧。
RESCHEDULE_VECTOR (向量0xfc)
當(dāng)一個(gè)CPU接收這種類型的中斷時(shí),相應(yīng)的處理程序限定自己來應(yīng)答中斷,當(dāng)從中斷返回時(shí)沾谓,所有的重新調(diào)度都自動(dòng)運(yùn)行委造。
INVALIDATE_TLB_VECTOR (向量0xfd)
發(fā)往所有的CPU,但不包括發(fā)送者均驶,強(qiáng)制它們的轉(zhuǎn)換后援緩沖器TLB變?yōu)闊o效昏兆。相應(yīng)的處理程序刷新處理器的某些TLB表項(xiàng)。