首頁 運維 linux運維 linux中什麼是中斷

linux中什麼是中斷

Apr 20, 2023 pm 04:34 PM
linux

在linux中,中斷是硬體在需要的時候向CPU發出訊號,CPU暫時停止正在進行的工作,來處理硬體請求的一種機制。當硬體忙碌的時候,CPU很可能會做許多無用功(每次輪詢都是跳過不處理);所以為了提高CPU和外圍硬體(硬碟,鍵盤,滑鼠等等)之間協同工作的效能,引入了中斷的機制。

linux中什麼是中斷

本教學操作環境:linux7.3系統、Dell G3電腦。

1、中斷定義

中斷是硬體在需要的時候向CPU發出訊號,CPU暫時停止正在進行的工作,來處理硬體請求的一種機制。

具體說:
中斷是指在CPU正常運作期間,由於內部和外部事件或由程式預先安排的事件引起的CPU暫時停止正在運行的程序,轉而為該內部或外部事件或預先安排的事件服務的程式中去,服務完畢後再返回去繼續執行被暫時中斷的程式。

1.1 背景(為什麼需要中斷)

1.沒有中斷的話,CPU和周邊設備之間協同工作/通訊可能只有輪詢這個方法:CPU定期檢查硬體狀態,需要處理時就處理,否則就跳過。
2.處理器的速度跟外圍的硬體設備不在一個數量級上,因此提供一種機制讓硬體在需要的時候向核心發出訊號。

輪詢的缺點/引入中斷機制:
當硬體忙碌的時候,CPU很可能會做許多無用功(每次輪詢都是跳過不處理)。
所以,為了提高CPU和周邊硬體(硬碟,鍵盤,滑鼠等等)之間協同工作的效能,引入了中斷的機制。

1.2 中斷與訊號

#
中断: 硬件/进程发,内核收
信号:内核发,进程收,或者进程发进程收
登入後複製

#1.3 中斷處理過程(參考CSAPP書籍)

中断是异步发生的,是来自处理器外部的I/O设备的信号的结果

1. 硬件中断不是由任何一条专门的指令造成的,从这个意义上来说它是异步的
2. 硬件中断的异常处理程序常常被称为中断处理程序(interrupt handler)
登入後複製
下圖概述了一個中斷的處理。

圖8.5

linux中什麼是中斷

I/O設備,例如絡適配器、磁碟控制器和定時器晶片,透過向處理器晶片上的一個管腳發出訊號,並將異常號放到系統匯流排上,來觸發中斷,這個異常號標示了造成中斷的設備。

在目前指令完成執行之前,處理器注意到中斷腳的電壓變高了,就從系統匯流排讀取異常號,然後呼叫適當的中斷處理程序。當處理程序返回時,它就將控制權傳回給下一條指令(也就是,如果沒有發生中斷,在控制流中會在當前指令之後的那條指令)。結果是程式繼續執行,就好像沒有發生過中斷一樣。

剩下的异常类型(陷阱、故障和终止)是同步发生的,是执行当前指令的结果
我们把这类指令叫做故障指令(faulting instruction)
登入後複製

1.4 中斷本質及處理機制/流程

中斷本質是一種特殊的電訊號

linux中什麼是中斷

處理過程:

中斷由硬體設備生成,並直接送入中斷控制器(簡單的電子晶片)的輸入引腳中,中斷控制器採用複用技術將多路中斷管線只透過一個和處理器連接的管線與處理器通訊。處理器一經偵測到此訊號,便中斷自己目前的工作轉而處理中斷。硬體設備產生中斷的時候並不考慮與處理器的時脈同步,即中斷隨時可以產生,因此核心隨時可能因為新到來的中斷而被打斷。

2、中斷類型(分類)

Linux中通常分為外部中斷(又叫硬體中斷)和內部中斷(又叫異常)。

2.1 同步中斷(異常/內部中斷)

同步中斷(異常/內部中斷):同步中斷由CPU本身產生,又稱為內部中斷或異常

2.1.1 同步中斷舉例:缺頁中斷

CPU在執行一條指令時,如果發現他要存取的頁(虛擬位址的頁)沒有在實體記憶體中,那麼停止該指令的執行,並產生一個頁不存在的異常

一個可執行檔可能很大,放在磁碟上,一次只將其中一部分讀進記憶體(cpu局部性原理),
當他要存取剩餘內容時,會產生缺頁中斷,這時候再去從磁碟上換進來

2.2 非同步中斷(中斷/外部中斷)

#非同步中斷(中斷/外部中斷):非同步中斷是由外部硬體設備產生,又稱為外部中斷或中斷

2.2.1 异步中断举例:网卡的工作原理

当网卡接受到数据包时,通知内核,触发中断,所谓的上半部就是,及时读取数据包到内存,防止因为延迟导致丢失,这是很急迫的工作。
读到内存后,对这些数据的处理不再紧迫,此时内核可以去执行中断前运行的程序,而对网络数据包的处理则交给下半部处理。

2.3 中断与异常的区别

异常与中断不同,中断是由硬件引起的;
异常则发生在编程失误而导致错误指令,或者在执行期间出现特殊情况必须要靠内核来处理的时候(比如缺页)。它在产生时必须考虑与处理器时钟同步,因此异常也称同步中断。

3、中断请求实现:上下半部机制

3.1 背景

中断处理程序运行需要快速执行(因为不可阻塞),同时要能完成尽可能多的工作,这里存在矛盾。

因此把中断处理切分为两个部分,上半部分(top half)接收到一个中断后立即执行,但是只做有严格时限的工作,例如对接收到的中断进行应答或复位硬件。能够被允许稍后完成的工作会推迟到下半部分(bottom half)去,此后在合适的时机下半部分会被中断执行,Linux提供了实现下半部分的各种机制。

优点:这种设计可以使系统处于中断屏蔽状态的时间尽可能的短,以此来提高系统的响应能力。

3.2 上半部:

中断处理程序是上半部——接受中断,他就立即开始执行,但只有做严格时限的工作。
上半部简单快速,执行时禁止一些或者全部中断。
工作内容:处理紧急功能,取寄存器状态。

3.3 下半部:

能够被允许稍后完成的工作会推迟到下半部去,此后,在合适的时机,下半部执行
工作内容:完成中断事件绝大多数任务。
下半部稍后执行,而且执行期间可以响应所有的中断。
下半部的实现有软中断实现, tasklet 实现和工作队列实现。

3.4 上下半部划分原则

1) 如果一个任务对时间非常敏感,将其放在中断处理程序中执行;
2) 如果一个任务和硬件有关,将其放在中断处理程序中执行;
3) 如果一个任务要保证不被其他中断打断,将其放在中断处理程序中执行;
4) 其他所有任务,考虑放置在下半部执行
登入後複製

3.5 举例子: 用网卡来解释一下这两半。

当网卡接受到数据包时,通知内核,触发中断,所谓的上半部就是,及时读取数据包到内存,防止因为延迟导致丢失,这是很急迫的工作。
读到内存后,对这些数据的处理不再紧迫,此时内核可以去执行中断前运行的程序,而对网络数据包的处理则交给下半部处理。

4、中断号

中断对应着一个中断号,内核通过这个中断号查找相应的中断服务程序。

每个中断都通过一个唯一的数字标志,这样操作系统才能够给不同的中断提供对应的中断处理程序。
这些中断值即中断请求线,例如IRQ 0是时钟中断、IRQ 1是键盘中断。对于连接在PCI总线上的设备而言,中断请求线是动态分配的。

5、中断上下文

中断服务程序不在进程上下文中执行,而是在一个与所有进程都无关的、专门的中断上下文中运行,以此保证中断服务程序能够在第一时间响应和处理中断请求,然后快速地退出。

处理器在任何指定时间点上的活动必然属于以下三种情况之一:

运行于用户空间,执行用户进程;
运行于内核空间,处于进程上下文,代表某个特定的进程执行;
			 (CPU空闲时,内核执行空进程)
运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断;
登入後複製

相关推荐:《Linux视频教程

以上是linux中什麼是中斷的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

vscode需要什麼電腦配置 vscode需要什麼電腦配置 Apr 15, 2025 pm 09:48 PM

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體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

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

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

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

vscode終端使用教程 vscode終端使用教程 Apr 15, 2025 pm 10:09 PM

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

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

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

vscode 無法安裝擴展 vscode 無法安裝擴展 Apr 15, 2025 pm 07:18 PM

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

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

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

vscode 可以用於 mac 嗎 vscode 可以用於 mac 嗎 Apr 15, 2025 pm 07:36 PM

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

See all articles