日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式軟件

作者:李志敏,華清遠見嵌入式學院上海中心講師。

一:引言

在Intel的文檔中,把中斷分為兩種。一種是異常,也叫同步同斷。一種稱之為中斷,也叫異常中斷。同步中斷指的是由CPU控制單元產(chǎn)生,之所以稱之為同步,是因為只有一條指令執(zhí)行完畢后才會發(fā)出中斷。例如除法運算中,除數(shù)為零的時候,就會產(chǎn)生一個異常。異步中斷是由外部設(shè)備按照CPU的時鐘隨機產(chǎn)生的。例如,網(wǎng)卡檢測到一個數(shù)據(jù)到來就會產(chǎn)生一個中斷。

二:x86的中斷處理過程

由于中斷是開著的,所以當執(zhí)行完一條指令后,cs和eip這對寄存器中已經(jīng)包含了下一條將要執(zhí)行的指令的邏輯地址。在處理那條指令之前,控制單元會檢查在運行前一條指令時是否發(fā)生了一個中斷或異常。如果發(fā)生了一個中斷和異常,那么控制單元執(zhí)行下列操作:

1. 確定與中斷或異常關(guān)聯(lián)的向量i(0≤ i ≤255)

2. 讀由IDTr寄存器指向的IDT表中的第i項。

3. 從gdtr寄存器獲得GDT的基地址,并在GDT中查找,以讀取IDT表項中的選擇符標識的段描述符。這個描述符指定中斷或異常處理程序所在的段的基地址。

4. 確信中斷是由授權(quán)的(中斷)發(fā)生源發(fā)出的。首先將當前特權(quán)級CPL(存放在cs寄存器的低兩位)與段描述符(存放在GDT中)的描述符特權(quán)級DPL比較。如果CPL小于DPL,就產(chǎn)生一個“通常保護”異常,因為中斷處理程序的特權(quán)級不能低于引起中斷的程序的特權(quán)。對于編程異常,則做進一步的安全檢查:比較CPL與處于IDT中的門描述符的DPL,如果DPL小于CPL,就產(chǎn)生一個“通常保護”異常,這最后一個檢查可以避免用戶應用程序訪問特殊的陷阱門和中斷門。

5. 檢查是否發(fā)生了特權(quán)級的變化,也就是說,CPL是否不同于所選擇的段描述符的DPL。如果是,控制單元必須開始使用與新的特權(quán)級相關(guān)的棧,通過執(zhí)行以下步驟來保證這一點:

A. 讀tr寄存器,以訪問運行進程的TSS段。

B. 用與新特權(quán)級相關(guān)的棧段和棧指針的正確值裝載ss和esp寄存器。這些值可以在TSS中找到。

C. 在新的棧中保存ss和esp以前的值,這些值定義了與舊特權(quán)級相關(guān)的棧的邏輯地址。

6. 如果故障已發(fā)生,用引起異常的指令地址裝載cs和eip寄存器,從而使得這條指令能再次被執(zhí)行。

7. 在棧中保存eflag、cs和eip的內(nèi)容。

8. 如果異常產(chǎn)生了一個硬件出錯碼,則將它保存在棧中。

9. 裝載cs和eip寄存器,其值分別是IDT表中第i項門描述符的段選擇符和偏移量字段。這些值給出了中斷或者異常處理程序的第一條指令的邏輯地址??刂茊卧鶊?zhí)行的最后一步就是跳轉(zhuǎn)到中斷或異常處理程序。換句話說,處理完中斷信號后,控制單元所執(zhí)行的指令就是被選中處理程序的第一條指令。

上面的處理過程的描述摘自<<深入理解linux內(nèi)核>>,其中有幾點值得注意的地方:

1:通過門后,只能提高運行級別。就像上面所述的 “當前特權(quán)級CPL(存放在cs寄存器的低兩位)與段描述符(存放在GDT中)的描述符特權(quán)級DPL比較。如果CPL小于DPL,就產(chǎn)生一個“通常保護”異常”。在中斷處理中,通常把IDT中的相應段選擇符設(shè)為__KERNEL_CS。即最高的運行級別

2:上面C所述:“在新的棧中保存ss和esp以前的值,這些值定義了與舊特權(quán)級相關(guān)的棧的邏輯地址”,那ss,esp以前的值是如何找到的呢?應該是從TSS中。在中斷發(fā)生的時候,如果檢測到運行級別發(fā)生了改了,將寄存器SS,ESP中的值保存進TSS的相應級別位置。再加載新的SS,ESP的值,然后從TSS中取出舊的SS,ESP值,再壓棧。

3:堆棧的改變,如下圖所示:


從上圖中可以看到,硬件自動保存的硬件環(huán)境是非常少,要在中斷后恢復到以前的環(huán)境,還需要保存更多的寄存器值,這是由操作系統(tǒng)完成的。這在內(nèi)核的代碼中可以看到中斷和異常被處理完畢后,相應的處理程序必須產(chǎn)生一條iret指令,把控制權(quán)轉(zhuǎn)交給被中斷的進程,這將迫使控制單元:

1. 用保存在棧中的值裝載cs、eip和eflag寄存器。如果一個硬件出錯碼曾被壓入棧中,并且在eip內(nèi)容的上面,那么,執(zhí)行iret指令前必須先彈出這個硬件出錯碼。

2. 檢查處理程序的CPL是否等于cs中的低兩位的值。如果是,iret終止返回;否則,轉(zhuǎn)入下一步。

3. 從棧中轉(zhuǎn)載ss和esp寄存器,因此,返回到與舊特權(quán)級相關(guān)的棧。

4. 檢查ds、es、fs及gs段寄存器的內(nèi)容,如果其中一個寄存器包含的選擇符是一個段描述符,并且其DPL值小于CPL,那么,清相關(guān)的段寄存器??刂茊卧@么做是為了禁止用戶態(tài)的程序利用內(nèi)核以前所用的段寄存器。如果不清除這些寄存器的話,惡意的用戶程序就會利用他們來訪問內(nèi)核地址空間。

注意到4:舉例說明一下。如果通過系統(tǒng)調(diào)用進入內(nèi)核態(tài)。然后將DS,ES的值賦為__KERNEL_DS(在2。4的內(nèi)核里),處理完后(調(diào)用iret后),恢復CS,EIP的值,此時CS的CPL是3。因為DS,ES被設(shè)為了__KERNEL_DS,所以其DPL是0,所以要將DS,ES中的值清除。在2。6內(nèi)核中,發(fā)生中斷或異常后,將DS,ES的值設(shè)為了__USER_DS,避免了上述的清除過程,提高了效率。

“本文由華清遠見http://www.embedu.org/index.htm提供”



華清遠見

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉