CPU中斷請求理解

2021-09-29 00:24:55 字數 1216 閱讀 4756

1、什麼是中斷

中斷表示我們請求操作事件準備就緒了,例如從磁碟讀取資料,我們知道cpu執行速度比磁碟執行速度快幾個數量級,因此如果cpu每次check磁碟是否準備就緒了,那麼系統的併發能力和效能會大大下降,但是採用中斷方式,非同步事件驅動方式來提公升系統效率,首先會在驅動程式中嵌入中斷程式,一旦磁碟準備就緒就會通過驅動程式發生乙個中斷請求操作,cpu立馬停下手裡的活來執行中斷程式,該中斷程式會從磁碟中讀取資料到記憶體中。

2、如何避免丟失其他中斷請求

一定要保證中斷程式快速能處理,因為當cpu在處理中斷時,是不能響應其他中斷請求的,那麼就會導致其他中斷請求丟失

改進方式:如果換一種方式,你和外賣小哥約定乙個通知方式,例如當外賣到了家門口小哥就打**通知我,我就出去取外賣。 打**就是一次中斷請求,你就安心的幹其他事情,靜靜等**。 如果你點了兩份外賣,當第乙份外賣到了,小哥**通知你,但是你在**中溝通發票問題,這個時候第二份外賣到了另外乙個小哥給你打**發現佔線,幾次嘗試後還是失敗,這個時候外賣小哥就走了,導致丟失了這次外賣。

**解決:**在**中只回答好,然後溝通發票問題當面說,這個時候就可以接到另外小哥的**。 所以系統的中斷請求分為兩個階段:

第一階段(上半部請求):接受硬體中斷請求(從硬體中取完資料後傳送一次軟斷請求,複雜邏輯交給下半部分請求,),稱為硬中斷,特點是處理速度快

第二階段(下半部請求): 核心執行緒接受到上半部分軟中斷請求,就會非同步的繼續執行上半部未完成的請求, 稱為軟中斷,特點延遲執行

舉個網路接受資料例子:

當網絡卡接收到資料時,首先會傳送乙個硬中斷請求,這個時候cpu就會執行中斷處理程式,快速將網絡卡中資料讀取到記憶體中,完成後會傳送乙個軟中斷請求,下半部被軟中斷訊號喚醒後就會按照網路協議棧將記憶體資料進行解析處理,最終遞給應用程式。(處理期間還是可以響應其他硬中斷請求的)

3、檢視硬中斷和軟中斷運**況

可以檢視 /proc/interrupts 和 /proc/softirq 檔案

從 /proc/softirq檔案中可以看到軟中斷型別

timer(定時中斷)、net_rx(網路接收)、sched(核心排程)、rcu(rcu 鎖)

一般如果軟中斷占用cpu多時,大多都是系統讀取網絡卡資料太頻繁了(要麼資料報太小、可能受到了sync flood攻擊 (交換機或防火牆遮蔽此ip,防止將資料進入系統中))

中斷請求request irq

今天在跟marvell溝通問題的時候,覺得有些地方的 看得不夠仔細,於是細看了一下。發現了幾個請求中斷的函式。request threaded irq,這個函式在核心中有注釋,引數有好多,大概引數有handler,這是要指定的中斷處理函式,thread fn是要在核心執行緒中呼叫的函式,還有申請中斷...

中斷請求級

中斷請求級 在設計windows的時候,設計者3將中斷請求劃分為軟體中斷和硬體中斷,並將這些中斷都對映成不同級別的中斷請求級 irql 同步處理機制很大程度上依賴於中斷請求級。1.中斷請求 irq 與可程式設計中斷控制器 pic 中斷請求 irq 一般有兩種,一種是外部中斷,也就是硬體產生的中斷,另...

FIQ(快速中斷請求)和IRQ 外部中斷請求

快速中斷請求 fast interrupt request,fiq 在arm中,fiq模式是特權模式中的一種,同時也屬於異常模式一類。用於高速資料傳輸或通道處理,在觸發快速中斷請求 fiq 時進入。fiq和irq 外部中斷模式 之間有很大的區別。fiq模式必須盡快處理,處理結束後離開這個模式 irq...