讀書筆記 計算機系統--系統架構與操做系統的高度集成 第四章中斷、陷入及異常

本章討論處理器如何處理執行中的不連續性程序員

    程序執行的不連續性---------------------------一異步

    體系結構的改進---------------------------------二工具

    硬件的細節---------------------------------------三spa

 

一 :程序執行的不連續性操作系統

引入同步和異步指針

    同步,在規定好的時間內發生的事件,如第三章的各個微狀態之間的轉移。
blog

    異步,系統正在進行的,其餘活動相關的,不可預料的時間發生的事情,如中斷。索引

程序執行的不連續性事件

    中斷,設備引發處理器注意的機制,通常指外部設備引發的不連續性。內存

    異常,內部產生的問題,執行非法指令,要打斷原有指令序列的執行而後去處理。

    陷入,當前運行的程序沒法處理的一種內部狀況,只能調用操做系統來處理。

   

    不連續性是一種工具:

        他容許計算機系統提供輸入/輸出

        他容許計算機系統爲相互競爭的活動管理資源。

        他容許計算機系統幫助程序員開發正確的程序。

    檢測不連續性是處理器的責任,引導處理器處理不連續性代碼是操做系統的責任。

處理不連續性要作的事

    硬件隱式完成的活動

    操做系統顯式完成的活動。

引入處理過程,處理器處理不連續時執行的過程。

處理器在處理不連續性上,與第二章的調用過程基本同樣,可是有四個要注意

    一、不連續性能夠在指令執行的任意位置發生。

    二、不連續性是計劃外的,硬件控制權給處理過程,要保存PC的值。

    三、在檢測到不連續性時,硬件須要肯定處理過程的地址,以便轉交控制權。

    四、硬件隱式保存PC值,須要知道如何如恢復。

引入異常/陷入寄存器ETR,用來保存不連續性的編號。

操做系統和處理器體系結構合做解決

    一、體系結構定義一系列異常和他們對應的編號

    二、操做體統定義一系列異常(中斷,陷入)以及他們對應的編號。

    三、在啓動操做系統,創建中斷向量表IVT,給出處理異常中斷陷入的處理過程地址。

    四、在普通程序執行時,硬件檢測異常和陷入,將矢量表填入ETR

    五、在普通程序執行時,硬件檢測外部中斷以及對應編號。

    六、硬件使用矢量值索引IVT,找處處理過程,將控制權交給處理過程。

:體系結構的改進

修改FSM:

    在原來FSM基礎上多一個宏狀態

    

 

    FSM在指令結束時檢查,有中斷則到INT宏狀態,沒有就返回Fetch。

    把當前PC保存在某個寄存器$k0,接受處理過程的地址,裝入PC。

    之因此在最後一個檢查,由於處理器的寄存器處於乾淨的狀態。

處理級聯中斷:

    中斷中又中斷回事去原始程序的PC值。

    爲處理級聯中斷引入:

        禁止中斷指令

        容許中斷指令

    處理方法:

        

        關閉中斷,原始程序的返回地址保存到$k0,

        打開中斷,保存寄存器堆,而後執行指令,

        執行處理過程,

        關閉中斷,恢復寄存器$k0,返回原程序。

    設備會有不一樣的優先級,如硬盤〉鍵盤,若是硬盤中斷則忽視鍵盤。

從處理過程當中返回

    引入新指令:Return from interrupt (RETI)

        語義:Load PC from $k0;

              Enable interrupts;

        這是一條原子指令,執行完以前不會有新的中斷。

三:硬件的細節  

中斷數據通路的細節

    引入:

        INT線,全部但願中斷CPU的設備都斷言該線。

        INTA線,CPU斷言該線,讓一個設備獲得確認。

    

        全部設備經過「線或」(超出本書範圍)先到INT線上

        處理器發出的INTA線一次穿過全部設備(菊鏈),最接近處理器的優先處理。

    推廣:

        多條INT和INTA線,每一對對應一個優先級

      

        設備速度越快,丟失數據可能性越高,因此須要快速處理。

得到過程地址的細節:   

    

    在收處處理器發送的INTA信號時,將它的向量放到數據總線上,

    與以前操做系統開機放在內存中的IVT對應。

總結:

    一、不管什麼時候,設備中斷處理器都斷言INT。

    二、處理器完成EXCUTE宏後檢查INT宏狀態。

    三、若是有中斷請求,處理器進入INT宏狀態並將INTA線斷言。

    四、設備收到INTA信號後,將本身的向量放到數據總線上。

    五、處理器收到向量並在IVT中查找對應表項,記錄處理過程的PC值。

    六、處理器將PC保存在$k0中並將IVT中取出的值填入PC。

保存/恢復棧:

    中斷與當前運行的程序沒有關係,取內存哪裏爲棧。

    體系結構有棧指針寄存器來保存兩個棧:

        用戶棧

        系統棧

    進入INT宏狀態,FSM執行棧切換。

    硬件改進:

        一、複製棧指針,指派$sp爲棧指針,複製一個給用戶一個給系使用,

        中斷處理過程保存狀態用系統$sp,不會弄亂用戶棧。

        二、特權模式,處理器引入一個模式位來判斷時用戶模式仍是內核模式(FSM在INT宏狀態中爲「內核」),

        以前容許中斷的指令只能夠由操做系統使用,也叫特權指令。

 

體系結構和硬件改進總結

    一箇中斷向量表IVT,由操做系統初始化爲各處理過程的地址。

    一個異常/陷入寄存器ETR,含有內部產生的異常和陷入的向量。

    接受外部中斷的向量的硬件機制。

    用戶/內核模式和與之相關的處理器模式位。

    與模式位有關的用戶/內核棧。

    一個硬件機制,中斷時隱式將當前PC保存到特殊寄存器$k0中。

    加入只能由操做系統使用的特權指令用來打斷。     

相關文章
相關標籤/搜索