linux中什麼是中斷
在linux中,中斷是硬體在需要的時候向CPU發出訊號,CPU暫時停止正在進行的工作,來處理硬體請求的一種機制。當硬體忙碌的時候,CPU很可能會做許多無用功(每次輪詢都是跳過不處理);所以為了提高CPU和外圍硬體(硬碟,鍵盤,滑鼠等等)之間協同工作的效能,引入了中斷的機制。
本教學操作環境:linux7.3系統、Dell G3電腦。
1、中斷定義
中斷是硬體在需要的時候向CPU發出訊號,CPU暫時停止正在進行的工作,來處理硬體請求的一種機制。
具體說:
中斷是指在CPU正常運作期間,由於內部和外部事件或由程式預先安排的事件引起的CPU暫時停止正在運行的程序,轉而為該內部或外部事件或預先安排的事件服務的程式中去,服務完畢後再返回去繼續執行被暫時中斷的程式。
1.沒有中斷的話,CPU和周邊設備之間協同工作/通訊可能只有輪詢這個方法:CPU定期檢查硬體狀態,需要處理時就處理,否則就跳過。
2.處理器的速度跟外圍的硬體設備不在一個數量級上,因此提供一種機制讓硬體在需要的時候向核心發出訊號。
輪詢的缺點/引入中斷機制:
當硬體忙碌的時候,CPU很可能會做許多無用功(每次輪詢都是跳過不處理)。
所以,為了提高CPU和周邊硬體(硬碟,鍵盤,滑鼠等等)之間協同工作的效能,引入了中斷的機制。
中断: 硬件/进程发,内核收 信号:内核发,进程收,或者进程发进程收
中断是异步发生的,是来自处理器外部的I/O设备的信号的结果 1. 硬件中断不是由任何一条专门的指令造成的,从这个意义上来说它是异步的 2. 硬件中断的异常处理程序常常被称为中断处理程序(interrupt handler)
圖8.5
在目前指令完成執行之前,處理器注意到中斷腳的電壓變高了,就從系統匯流排讀取異常號,然後呼叫適當的中斷處理程序。當處理程序返回時,它就將控制權傳回給下一條指令(也就是,如果沒有發生中斷,在控制流中會在當前指令之後的那條指令)。結果是程式繼續執行,就好像沒有發生過中斷一樣。
剩下的异常类型(陷阱、故障和终止)是同步发生的,是执行当前指令的结果 我们把这类指令叫做故障指令(faulting instruction)
中斷由硬體設備生成,並直接送入中斷控制器(簡單的電子晶片)的輸入引腳中,中斷控制器採用複用技術將多路中斷管線只透過一個和處理器連接的管線與處理器通訊。處理器一經偵測到此訊號,便中斷自己目前的工作轉而處理中斷。硬體設備產生中斷的時候並不考慮與處理器的時脈同步,即中斷隨時可以產生,因此核心隨時可能因為新到來的中斷而被打斷。
2、中斷類型(分類)
Linux中通常分為外部中斷(又叫硬體中斷)和內部中斷(又叫異常)。 同步中斷(異常/內部中斷):同步中斷由CPU本身產生,又稱為內部中斷或異常2.1.1 同步中斷舉例:缺頁中斷
CPU在執行一條指令時,如果發現他要存取的頁(虛擬位址的頁)沒有在實體記憶體中,那麼停止該指令的執行,並產生一個頁不存在的異常 一個可執行檔可能很大,放在磁碟上,一次只將其中一部分讀進記憶體(cpu局部性原理),
當他要存取剩餘內容時,會產生缺頁中斷,這時候再去從磁碟上換進來
2.2.1 异步中断举例:网卡的工作原理
当网卡接受到数据包时,通知内核,触发中断,所谓的上半部就是,及时读取数据包到内存,防止因为延迟导致丢失,这是很急迫的工作。
读到内存后,对这些数据的处理不再紧迫,此时内核可以去执行中断前运行的程序,而对网络数据包的处理则交给下半部处理。
异常与中断不同,中断是由硬件引起的;
异常则发生在编程失误而导致错误指令,或者在执行期间出现特殊情况必须要靠内核来处理的时候(比如缺页)。它在产生时必须考虑与处理器时钟同步,因此异常也称同步中断。
3、中断请求实现:上下半部机制
中断处理程序运行需要快速执行(因为不可阻塞),同时要能完成尽可能多的工作,这里存在矛盾。
因此把中断处理切分为两个部分,上半部分(top half)接收到一个中断后立即执行,但是只做有严格时限的工作,例如对接收到的中断进行应答或复位硬件。能够被允许稍后完成的工作会推迟到下半部分(bottom half)去,此后在合适的时机下半部分会被中断执行,Linux提供了实现下半部分的各种机制。
优点:这种设计可以使系统处于中断屏蔽状态的时间尽可能的短,以此来提高系统的响应能力。
中断处理程序是上半部——接受中断,他就立即开始执行,但只有做严格时限的工作。
上半部简单快速,执行时禁止一些或者全部中断。
工作内容:处理紧急功能,取寄存器状态。
能够被允许稍后完成的工作会推迟到下半部去,此后,在合适的时机,下半部执行
工作内容:完成中断事件绝大多数任务。
下半部稍后执行,而且执行期间可以响应所有的中断。
下半部的实现有软中断实现, tasklet 实现和工作队列实现。
1) 如果一个任务对时间非常敏感,将其放在中断处理程序中执行; 2) 如果一个任务和硬件有关,将其放在中断处理程序中执行; 3) 如果一个任务要保证不被其他中断打断,将其放在中断处理程序中执行; 4) 其他所有任务,考虑放置在下半部执行
当网卡接受到数据包时,通知内核,触发中断,所谓的上半部就是,及时读取数据包到内存,防止因为延迟导致丢失,这是很急迫的工作。
读到内存后,对这些数据的处理不再紧迫,此时内核可以去执行中断前运行的程序,而对网络数据包的处理则交给下半部处理。
4、中断号
中断对应着一个中断号,内核通过这个中断号查找相应的中断服务程序。
每个中断都通过一个唯一的数字标志,这样操作系统才能够给不同的中断提供对应的中断处理程序。
这些中断值即中断请求线,例如IRQ 0是时钟中断、IRQ 1是键盘中断。对于连接在PCI总线上的设备而言,中断请求线是动态分配的。
5、中断上下文
中断服务程序不在进程上下文中执行,而是在一个与所有进程都无关的、专门的中断上下文中运行,以此保证中断服务程序能够在第一时间响应和处理中断请求,然后快速地退出。
处理器在任何指定时间点上的活动必然属于以下三种情况之一:
运行于用户空间,执行用户进程; 运行于内核空间,处于进程上下文,代表某个特定的进程执行; (CPU空闲时,内核执行空进程) 运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断;
相关推荐:《Linux视频教程》
以上是linux中什麼是中斷的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

VS Code擴展安裝失敗的原因可能包括:網絡不穩定、權限不足、系統兼容性問題、VS Code版本過舊、殺毒軟件或防火牆干擾。通過檢查網絡連接、權限、日誌文件、更新VS Code、禁用安全軟件以及重啟VS Code或計算機,可以逐步排查和解決問題。

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

VS Code 可以在 Mac 上使用。它具有強大的擴展功能、Git 集成、終端和調試器,同時還提供了豐富的設置選項。但是,對於特別大型項目或專業性較強的開發,VS Code 可能會有性能或功能限制。
