簡體   English   中英

信號、異常、硬件中斷、陷阱

[英]Signal vs Exceptions vs Hardware Interrupts vs Traps

我讀了這個答案,我認為我有了一個清晰的想法。 但是這個答案又讓我感到困惑。

有人能給我清楚地說明信號、異常、硬件中斷和陷阱之間的區別嗎?

另外,我想知道kernel代碼中這些塊CPU搶占了哪一個?

示例會有所幫助。

中斷由硬件針對處理器內核外部的事件生成。 這些本質上是異步的,這意味着處理器不知道何時會生成中斷。 這些也稱為硬件中斷。 示例:由鍵盤在屏幕上鍵入字符或定時器中斷產生的中斷。

異常:當處理器在執行指令時檢測到錯誤條件時發生異常,異常被分類為故障陷阱中止,具體取決於它們的報告方式以及導致異常的指令是否可以在不丟失程序或任務的情況下重新啟動。連續性。 (這些技術術語至少在 x86 上使用,可能在其他架構或一般情況下使用。)示例:除以零或頁面錯誤。

陷阱:基本上是一條指令,告訴kernel 從用戶模式切換到kernel 模式。 示例:在系統調用期間,TRAP 指令會強制 kernel 代表進程執行 kernel(內核模式)內的系統調用代碼。 陷阱是一種例外。
x86 int 0x80 “軟件中斷”指令是一個陷阱,不像外部中斷。 x86 對中斷和異常使用單個處理程序表; 其他 ISA 也可能這樣做。

有些人更普遍地使用這個術語,作為“例外”的同義詞。 例如,您可能會說“MIPS add會陷入有符號溢出,因此編譯器總是使用addu 。”

信號:信號由kernel 或進程( kill系統調用)生成。 它們最終由操作系統 kernel 管理,將它們傳遞給目標線程/進程。 例如,除以零的指令將導致 kernel 向運行它的進程傳遞一個 SIGFPE 信號(算術異常)。 (例如x86 #DE故障由kernel處理,為當前進程生成軟件SIGFPE。)


有關的:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM