日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

8.4-中断系统小结(cpu中断七个问题)

發布時間:2023/12/3 windows 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8.4-中断系统小结(cpu中断七个问题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【README】

本文轉自bilibili《計算機組成原理(哈工大劉宏偉)》的視頻講解,非常棒,墻裂推薦;


【1】中斷介紹

1)作用:用中斷系統實現了外設數據的輸入輸出; 還可以用于程序調試,計算機系統的異常事件,都可以用中斷系統來處理;

2)中斷因素

  • 人為設置的中斷;
  • 程序性事故,如java異常;
  • 硬件故障,如硬盤壞道;
  • Io設備,如數據輸入輸出;
  • 外部事件,如鍵盤中斷按鈕,調試程序;

  • 【2】 cpu中斷問題

    【2.1】問題1:各中斷源如何向cpu提出請求?

    給每一個中斷源設置一個觸發器,用觸發器來標記這個中斷源是否提出了中斷請求;
    一個中斷源對應一個中斷請求觸發器INTR,多個觸發器組成了中斷請求標記寄存器 INTR

    中斷請求標記寄存器 INTR 如下:


    【2.2】 問題2:各中斷源同時提出請求,怎么辦?

    對中斷源進行分級;響應優先級最高的中斷源(對中斷源的級別進行排隊);

    中斷優先級分為:響應優先級和處理優先級;

    響應優先級,由硬件決定(中斷源)決定,無法修改;

    處理優先級可以修改,通過設置中斷屏蔽字到中斷屏蔽寄存器來屏蔽其他中斷


    ?【2.3】問題3:Cpu在什么條件,什么時間,以什么方式響應中斷?

    【2.3.1】cpu在什么條件下響應中斷請求 ?

    • 為了表示cpu是否響應中斷請求,有一個允許中斷觸發器EINT,值=1表示允許cpu 響應中斷源發出的中斷請求;

    【2.3.2】 cpu在什么時間響應中斷請求 ?

    • 通常情況下,cpu只有在指令的執行階段結束以后,才能夠響應中斷請求;但cpu的某些指令的執行階段比較長,這種情況就允許cpu在指令執行過程中,響應中斷請求;

    【2.3.3】 cpu響應中斷過程:

    • 在指令執行以后,cpu發送查詢信號到中斷源的中斷請求觸發器;查詢信號把中斷請求觸發器的輸出端設置為1,把中斷請求信號發送到排隊電路;

    補充:中斷隱指令作為響應中斷的一部分,有3個操作(保護程序斷點,尋找入口地址,硬件關中斷):如下:

    中斷響應步驟如下:

    步驟

    描述

    1

    Cpu完成指令執行階段后,通過硬件向量法查找中斷源;各個中斷源的信號送入排隊器;

    2

    排隊器把中斷源信號(只有一根線為1)送給中斷標記觸發器,從而把INT設置為1,而EINT設置為0;

    3

    此外,排隊器還要把中斷信號送給向量地址形成部件,這個向量地址送給PC,為執行中斷服務程序做準備;(向量地址保存了中斷服務程序的入口地址)

    ?【小結】中斷響應過程中要解決的3個問題:

    問題1)保護程序斷點: 斷點就是中斷服務程序執行完成后,返回執行的指令;

    ?????? 方法1 斷點存到特定地址(0號地址)內;

    ??????? 方法2 斷點進棧;

    問題2)尋找中斷服務程序入口地址;

    ????????方法1 采用硬件向量法:把中斷向量地址發送到PC寄存器;PC中保存了向量地址,這個向量地址保存了中斷服務程序的入口地址,或跳轉指令,該指令會跳轉到中斷服務程序;

    ????????方法2 軟件查詢法:中斷識別程序的入口地址發送到PC寄存器;計算機執行中斷識別程序來查找中斷服務程序的入口地址;

    問題3)硬件關中斷(把中斷允許觸發器的值設置為0

    關中斷的目的: 避免在單重中斷的機器中,在執行中斷服務程序的過程中,有新的中斷源會打斷當前的中斷服務程序的執行;

    另外,即使在多重中斷的cpu中,采用關中斷的方式,也是為了保存程序斷點,保存程序現場的一個過程;


    【2.4】問題4:如何保護現場 ?

    【2.5】問題5:如何恢復現場?

    1 保護現場
    1.1?? ?保存斷點:由中斷隱指令(硬件)來做,包括3個步驟(保存斷點,形成中斷服務程序的入口地址,硬件關中斷) ;
    1.2?? ?保存寄存器內容(由中斷服務程序來做,軟件):cpu當中的一些寄存器在執行中斷服務程序的時候需要用到;這些寄存器的內容也要進行保存 ;因為這些內容將來中斷返回的時候,主程序還要用到;

    2 恢復現場
    2.1 由中斷服務程序完成;
    因為中斷服務程序在保存現場的時候,可以吧寄存器內容壓入到堆棧中;
    在中斷服務程序恢復現場時,可以出棧;

    3 中斷服務程序的工作內容包括:
    1)?? ?保護現場;push指令;
    2)?? ?其他服務程序(中斷服務程序剩余部分);
    3)?? ?恢復現場;pop指令;
    4)?? ?中斷返回;IRET指令;

    【補充*】上述保護現場入棧,恢復現場出棧,也是線程切換的流程,即線程上線文切換的原理,可以看到,頻繁切換就是入棧和出棧過程,即寄存器數據送入內存棧,和內存棧數據送入寄存器的過程;頻繁切換的話,可以看到成本非常高,這個切換過程并沒有做實際的業務邏輯


    【2.6】問題6:如何尋找中斷服務程序的入口地址?

    通過硬件向量法,或程序查詢法尋找;

    【2.6.1】硬件向量法

    排隊器輸出:只有1根線是高電平1,其他全部為低電平0;
    向量地址形成部件:根據排隊器輸出,確定需要響應的中斷源,從而確定執行哪一個中斷服務程序(通過中斷向量地址確定);

    用硬件查找中斷服務程序入口地址有兩種方法:
    方法1: 在中斷向量地址的存儲單元中存放一條跳轉指令 如 jmp 200,則200就是中斷服務程序的入口地址;
    方法2: 在中斷向量地址的存儲單元中存放的就是中斷服務程序的入口地址,如中斷向量地址12H,其保存的入口地址200;

    【2.6.2】程序查詢法

    中斷識別程序查詢步驟

    步驟

    指令

    說明

    1

    SKP DZ 1#

    SKP表示跳過下一條指令;

    指令功能:查詢第1號中斷源的完成觸發器D;看觸發器是等于0還是等于1;

  • 若等于1,說明中斷源已經準備好了,提出了中斷請求,cpu就要去執行響應的中斷服務程序(步驟2);
  • 若等于0,說明1號中斷源沒有準備好,則跳過指令2,進入2號中斷源的查詢(步驟3)
  • 2

    JMP 1#SR

    執行中斷服務程序

    3

    SKP DZ 2

    ……

    4

    JMP 2SR

    ……


    【2.7】問題7:處理中斷的過程中又出現新的中斷 怎么辦?

    ?處理過程如下:

    • 處理中斷1時,發生了中斷2,且中斷2優先級大于中斷1,則停止中斷1的服務程序,轉而執行中斷2的服務程序;
    • 處理中斷2時,發生了中斷3,且中斷3優先級大于中斷2,則停止中斷2的服務程序,轉而執行中斷3的服務程序;

    上圖中: 產生了3次中斷,和3個斷點,分別是 k+1, l+1, m+1 ;

    【例】利用中斷屏蔽字修改中斷處理優先級(響應多個中斷),參見

    https://blog.csdn.net/PacosonSWJTU/article/details/123595867


    ?【3】cpu中斷全過程小結

    cpu全過程有5個步驟:

  • 中斷請求;
  • 中斷判優;
  • 中斷響應;
  • 中斷處理;
  • 中斷返回;
  • 總結

    以上是生活随笔為你收集整理的8.4-中断系统小结(cpu中断七个问题)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。