非強制中斷和硬中斷

來源:互聯網
上載者:User

1、中斷:
通常被定義成一個事件,該事件改變處理器執行的指令順序。這樣的事件與cpu晶片外部電路產生

的電訊號相對應。
2、中斷的產生:
每個能夠發出插斷要求的硬體裝置控制器都有一條稱為IRQ的輸出線(中斷線)。所有的IRQ線都

與一個中斷控制器的輸入引腳相連,中斷控制器與cpu的intr引腳相連。
3、中斷向量:
每個中斷由0-255之間的一個8位元來標識。稱為中斷向量。
4、中斷描述符表:
IDT是一個系統資料表,它與每一個中斷或者異常向量相聯絡,每一個向量在表中有相應的中斷處理程

序的入口地址。cpu的idtr寄存器執行IDT表的物理基地址。
5、中斷的硬體處理:
在核心被init進程初始化後,cpu運行在保護模式下。當執行一條指令後,sc和eip這對寄存器包

含了下一條將要執行的指令的邏輯地址。在執行這條指令之前,cpu控制單元會檢查在運行前一條指令時是

否發生了一個中斷。如果發生了,cpu控制單元處理中斷。

非強制中斷:

非強制中斷是利用硬體中斷的概念,用軟體方式進行類比,實現宏觀上的非同步執行效果。
硬中斷是外部裝置對cpu的中斷。
非強制中斷通常是硬中斷服務程式對核心的中斷。(中斷服務程式和中斷處理常式不同)
訊號則是由核心或者其他進程對某個進程的中斷。
理解:因為每個進程空間或者線程空間都是在一定程度上相對邏輯獨立的,類似於外部裝置DMA相

對於cpu。所以從理論上說,是可以實現中斷的。
擴充:訊號量與訊息佇列都是提供給使用者程式的,是核心服務的一種封裝。

 

進程核心棧和使用者棧:
每個進程都有兩個棧:使用者棧和核心棧。當進程在使用者空間運行時,cpu堆棧指標寄存器裡面的內

容是使用者堆棧地址。同理,進程在核心空間運行時,eip值是核心棧空間地址。
進程使用者棧和核心棧的切換,當進程因為中斷或者系統調用而陷入核心態執行時,進程所使用的

堆棧也要從使用者棧轉到核心棧。
檢查訊號中斷時在核心態即將進入使用者態的時候,而不是任何時候都檢查的。
非強制中斷時軟體實現的中斷,也就是程式運行時其他程式對它的中斷。
中斷源發插斷要求或者非強制中斷訊號後,cpu或者接收進程在適當的時機自動進行中斷處理或者完成

非強制中斷訊號對應的功能。
非強制中斷發生的時間是由程式控制的,而硬中斷時隨機的。
構成非強制中斷機制的核心元素:
非強制中斷狀態寄存器irq_stat:
非強制中斷向量表:
非強制中斷守護daemon:這是非強制中斷實現的核心,通過查詢irq_stat判斷非強制中斷是否發生。
非強制中斷的工作過程類比了硬中斷過程,當某一個非強制中斷事件發生後,首先需要設定對應的中斷標

記位,觸發中斷事務,然後喚醒守護進程去檢查中斷狀態寄存器,如果查詢發現某一個非強制中斷事務發生,

那麼通過非強制中斷向量表調用非強制中斷服務程式action。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.