任何乙個通用的cpu,比如說8086,都會具備一種能力,可以在執行完當前正在執行的指令之後,檢測到從cpu外部傳送過來的或者內部產生的一種特殊的資訊,並且可以立即對所接受到的資訊進行處理,這樣的資訊,我們就稱為中斷資訊,在這裡我們主要去講解cpu內部產生的中斷資訊
cpu對不同的中斷資訊肯定是要去做不同處理的,也就是說cpu首先要去知道所接收到的中斷資訊的**,所以中斷資訊中必須包含識別**的編碼,在8086cpu中用稱為中斷型別的碼的資料來標識中斷資訊的**,中斷型別碼為乙個位元組的資料,可以用來表示256種中斷資訊的**,我們可以把這種中斷資訊的**稱之為中斷源上面提到的四種中斷源在8086cpu當中的中斷型別碼如下所示
當cpu收到中斷資訊之後,就需要對中斷資訊進行處理,而如何去對中斷資訊進行處理,就可以由我們的程式設計去決定了,我們編寫的用來處理中斷資訊的程式被稱之為是中斷處理程式,一般來說我們需要對不同的中斷資訊編寫不同的處理程式在cpu收到中斷資訊之後就應該去執行該中斷資訊的處理程式,既然要去執行中斷程式肯定是要去設定cs暫存器和ip暫存器的值的,所以cpu在收到中斷資訊之後,怎麼去根據中斷資訊確定其處理程式的入口這是乙個問題,其實8086cpu就是去通過8位的中斷型別碼通過中斷向量表去找到相應的中斷處理程式的入口位址,中斷向量指的就是中斷處理程式的入口位址,中斷向量表其實就是中斷處理程式的入口位址的列表
中斷向量表如下所示,中斷向量表在記憶體當中儲存,裡面存放著256個中斷源所對應的中斷處理程式的入口位址cpu只要知道了中斷型別碼就可以將中斷的型別碼作為中斷向量表的表項號,定位相應的表項,從而得到中斷處理程式的入口位址,也就是說其實cpu只需要去用中斷型別碼去通過查詢中斷向量表,就可以去得到中斷處理程式的入口位址了
對於8086pc機來說,中斷向量表在記憶體當中存放,中斷向量表指定放在記憶體位址0處。從記憶體0000:0000到0000:03ff的1024個單元中存放著中斷向量表,這是規定,8086cpu就從這個地方去讀取中斷向量表,在中斷向量表當中,乙個表項存放乙個中斷向量,也就是乙個中斷處理程式的入口的位址,乙個表項佔據兩個字的大小,高位址字是存放的是段位址,低位址字存放偏移位址需要了解的是儲存n號中斷源對應的中斷處理程式入口的偏移位址的記憶體單元的位址為4n+2,而偏移位址為4n8086cpu在收到中斷資訊後,會引發的中斷過程cpu在收到中斷資訊之後,如果處理該中斷資訊,就會完成乙個由硬體自動執行的中斷過程用更加簡潔的方式去描述中斷的過程就是在第6步之後,cpu開始執行由程式設計師編寫的中斷處理程式由於cpu隨時都可能檢測到中斷資訊,所以cpu隨時都可能執行中斷處理程式,所以中斷處理程式必須一直儲存在記憶體當中的某段空間之中,而中斷處理程式的入口位址,即中斷向量,必須儲存在對應的中斷向量表表項中中斷處理程式的常規步驟如下所示iret指令的功能用彙編語法描述其實正是由於終端向量通常位於低記憶體,所以程式設計師也通常的將作業系統也放在低記憶體pop ip
pop cs
popf ;就是pop棧頂內容到標誌暫存器
CPU響應中斷的條件
cpu響應中斷的條件 1 中斷源如何向cpu表達中斷請求 一般是設定中斷請求觸發器,在需要cpu服務時,將中斷請求觸發器置位,其1端或0端輸出的跳變作為中斷請求訊號。顯然中斷源可以隨時提出中斷請求。2 中斷請求何種情況下才可能得到cpu響應 乙個中斷請求在同時具備下列兩個條件時,才有可能得到cpu響...
外部中斷與內部中斷
外部中斷與內部中斷 中斷基本概念 什麼是中斷?先打個比方。當乙個經理正處理檔案時,鈴響了 中斷請求 不得不在檔案上做乙個記號 返回位址 暫停工作,去接 中斷 並指示 按第二方案辦 調中斷服務程式 然後,再靜下心來 恢復中斷前狀態 接著處理檔案 計算機科學家觀察了類似例項,外師物化,內得心源 借用了這...
中斷占用CPU的時間分析
本篇從一道題目出發理清楚這類題目想表達的意思。這類題目很有趣的一點在於,從不同的角度思考,複雜度是不一樣的。也就是,用正確的思路去想,就很簡單且自然。假設乙個計算機系統具有如下效能特徵 處理一次中斷平均需要500us,一次程序排程平均需要花費1ms,程序的切換平均需要花費2ms。若該計算機系統的定時...