會不會有兩個中斷絕對同時發出,cpu會如何處理?

時間 2022-01-05 12:53:45

1樓:

中斷控制器可以根據優先順序仲裁,不可能同時觸發兩個中斷。

而且鍵盤的按鍵也不是作為中斷進入CPU的。按鍵的電訊號,途經鍵盤MCU、主機USB控制器、南橋、記憶體等等變成抽象的資料報,才會被CPU處理。最初的脈衝早就被封裝得媽都不認識了。

2樓:davy

可以反過來想:如果你設計中斷處理電路,會怎麼做?

首先肯定會有乙個用來儲存未處理中斷的表吧,然後搞個中斷優先順序判斷的處理電路,每個時鐘週期都看一下,表裡有東西就挑個優先順序高的給cpu(要是有多個cpu可以多調幾個給過去)

順著捋,那肯定還得有一堆中斷發生器吧,時鐘要有乙個吧,異常斷電要有乙個吧,別的各類外設是不是都要各自引線過去,來了中斷就來個訊號給我,讓我這邊電路把訊號轉成表內容放表裡吧。那兩個訊號同時來咋辦?反正乙個表不能同時寫入吧,那就加個鎖電路,你寫完了我在寫。

同時來的就按訊號線編號排,一號線寫完二號線寫。

都搞完了,讀和寫本身也得防止同時吧,效率低點的,奇數週期讀,偶數週期寫,效率高的,同一週期做兩套表,這個週期讀a寫b,下個週期讀b寫a,或者再高點,乙個週期內高電平寫,低電平讀。反正有的是辦法。不會讓訊號撞車的情況出現,不然這cpu就有bug了。

3樓:chenc

兩個中斷絕對同時發出,其實也不需要絕對同時發出,在同乙個時鐘週期內發出,硬體是分辨不出先後的。這種時候會有另外的優先順序來確定先處理哪個後處理哪個。

另外鍵盤只有乙個中斷,就算兩個鍵「同時」按下,鍵盤也會有一定的處理機制確定先後把按鍵資訊通知到cpu,當然,這種機制不同鍵盤未必是相同的,比如A和B同時按下可能某些鍵盤先A後B,某些鍵盤可能先B後A,這個並不重要。

4樓:

不會發生這種現象!

1、鍵盤的開關陣列是掃瞄讀取到鍵盤內的微控制器的,同一時刻能且僅能讀取到乙個鍵位資訊。

2、鍵盤到上級裝置的訊號傳輸是序列的PS2、USB口都是序列、232家族就更不用說了,即使同時按下多個鍵,傳輸的資料報也是按照一定規則先後發出,對主機來說永遠都是乙個個的讀取。

好比你同時按了Ctrl Alt Delete;主機收到的一定是乙個資料報、起始位\順序傳送三個鍵的編碼\停止位。 主機收到之後,判定你同時按了Ctrl Alt Delete,執行「登陸」或者「任務管理器」。

5樓:許中

關於問題本身的答案是,邏輯上的cpu本身只有乙個中斷輸入引腳,它要處理中斷必須有中斷控制器協助(我們通常使用的arm晶元實際是soc,中斷控制器也被整合在裡面了)。cpu會在中斷同時到來時在中斷控制器的協助下根據中斷優先順序依次呼叫每乙個中斷服務程式,絕不會遺漏。

至於問題描述中的情況,你可能有些誤解。你以為鍵盤每個鍵都對應乙個中斷由cpu單獨處理,事實上我們通常使用的usb鍵盤是典型的慢速裝置,所有的按鍵事件都由鍵盤控制器硬體預處理後生成按鍵列表傳輸給usb控制器,usb控制器再通過中斷的形式通知中斷控制器,每個usb控制器只有一根中斷線連線到中斷控制器。

6樓:KSr01dO

(典型學校硬體教的太少,老師講的太淺,課時安排不足啊)簡單來說就是訊號不是直接給進去的,會有排程,也可能是輪詢總之同時到達是沒問題的

而且也不可能同時到達

實在是死鎖了也會有看門狗解決

總之現代計算機系統在這種級別的事情上(底層多執行緒安全)早就做到了完美無缺了,不需要太過擔心,有一大把機制用於防範

另外有個事實性錯誤,中斷並非乙個按鍵獨享乙個中斷號

7樓:北極

題主的問題表達的不太正確,不過要問的內容還是很清晰的,先回答一下:

1.整個乙個鍵盤共乙個中斷,甚至是跟別的裝置共用乙個中斷,不管是什麼鍵盤。

機械鍵盤,並不是乙個鍵位對應著乙個中斷。如果是PS/2的,只有乙個中斷。如果是USB的,那麼實際上是USB控制器輪詢的(雖然叫中斷傳輸),所以從作業系統驅動的層面上,根本看不到「同時來了兩個中斷」的事件。

由於主流的機械鍵盤都是USB的,USB-HID型別的裝置,單次只能上報8位元組的報文,處理6-9個按鍵,所以,同時按下兩個鍵,那麼作業系統在某個輪訓週期內,看到的是乙個HID report裡新包含了兩個鍵。

但是即使這樣,驅動也是從前往後掃瞄report然後依次上報的(從keycode1到keycode6),所以從驅動到作業系統軟體這個層次上,按鍵時間是依次上報的。

2. 不管鍵盤同時按下幾個鍵,鍵盤硬體是可以處理的。

這個解釋起來比較長,我在這個問題裡回答過:

計算機中,假設鍵盤同時按下兩個鍵,會優先生效哪乙個?

電路掃瞄動作也是從上到下的,所以,即使同時按下兩個鍵,硬體也是依次上報。

3. 不談鍵盤,只說兩個中斷,中斷控制器不會同時上報兩個中斷。

以x86上最古老的8259控制器來說,它的中斷是有優先順序的:

沒配置優先順序的情況下,從IRQ0到IRQ7依次排列,所以即使硬體上同時來了兩個中斷,那麼8259A也是按照優先順序依次上報的,不會同時上報兩個中斷。

(4)優先權判別器PR

若某中斷請求正在被處理,8259A外部又有新的中斷請求,則由優先權判別器將新進入的中斷請求和當前正在處理的中斷進行比較,以決定哪乙個優先順序更高。若新的中斷請求比正在處理的中斷級別高,由PR通過控制邏輯向CPU發出中斷申請INT,正在處理的中斷自動被禁止,先處理級別高的中斷

所以,對於題主的問題,答案就是:不會有兩個中斷同時發出。

8樓:麻花辮

相同優先順序的兩個中斷,絕對同時到達,根據中斷號判斷響應順序,絕大多數cpu都是先響應中斷號小的中斷,當然你想設計成先響應大的也沒問題

9樓:皮特派

可能會同時發生。我了解arm,其他的不太了解,我就以arm作例子。

arm內部管中斷的器件叫NVIC,它管所有中斷的使能(使能一般有2個,乙個由NVIC控制,另乙個在裝置本身,誰的中斷誰控制),中斷優先順序,中斷掛起等。

如果2個中斷同時發生(雖然湊巧,但也不是不可能),我們在乙個 .s 檔案中會定義中斷的優先順序,或者乾脆直接配置NVIC,設好每個中斷的優先順序。當2個中斷同時發生時,會按優先順序,優先的那個先處理,不優先的那個就掛起(pend),等到優先的處理完後,再處理掛起的那個。

聽說有些CPU可以巢狀中斷,就是在乙個優先順序低的中斷正在處理時,優先順序高的中斷來了,還能得到盡快處理,我沒用過這種CPU,我只見過那種處理完乙個,再處理另乙個的。

10樓:我叫陳飛

我從作業系統角度來看的話,是不可能的,這是死鎖,一定是有演算法排程的。中斷不可能同時發出,一定會有延時。只不過CPU的訊號的接收速度近似光速。

乙個中斷接收到後立刻進入單執行緒,另乙個中斷會交給另乙個執行緒來完成資源請求和排程的。

你有沒有幻想過,電腦為什麼沒有兩個滑鼠?

11樓:lu luce

你以為你的外設是直接用一根導線連線到CPU的嗎?

不,他們是連線到匯流排的,俗稱南北橋,南北橋上的中斷控制器會根據優先順序選擇。

冰箱技術未來兩年會不會有質的飛躍

採蘑菇的老頭 不會,不管技術怎麼突破,卡諾迴圈已經給框死了,本質上都是蒸汽壓縮,相態轉變。壓縮機,製冷劑,換熱器已經到極致了,玩不出什麼花了,除非有本質上新的製冷原理。 劉艾文 作為製冷行業從業者,首先個人認為短期內 5年內 不太會有嚴格意義上的質的飛躍,也就是完全區別於傳統冰箱的A 類創新。而能夠...

同水平和公斤級下,泰拳面對地面系的會不會有很大劣勢

實話直說 昨天剛和乙個柔術加空手道的壯老外在拳館打了切磋,被摔的現在渾身疼的不行。注意千萬不要近身纏鬥,泰拳的那點摔法只能對付不會摔的,當然也可能我自己不精。注意千萬不要中掃腿,高低掃可以,中掃等著被抱吧。我能想到的就是拉開距離,用低掃或者低踹,踢廢他膝蓋,當然友誼切磋肯定不能用了。 陳聖哲 如果是...

會不會有絕對零度以下的物質存在?類似以反物質的反低溫物質?

境者無界 溫度表達的是空間物質動量傳輸波動的程度,穩定無大小和方向變化的動量傳輸狀態即為絕對零度。負波動是無意義且不存在的,就如水從有波浪到最終完全靜止就到頭了,沒有負靜止的概念。物體亦由空間物質構成,所以不存在負靜止。 匠人 溫度是分子熱運動的表現,動能是質量乘以速度平方。嗯.假如某物溫度為負,就...