中斷系統是計算機系統中響應和處理中斷的系統,包括硬件子系統和軟件子系統兩部分,中斷響應由硬件子系統完成,中斷處理由軟件子系統完成數據結構
在指令執行週期最後增長一個微操做,以響應中斷編輯器
計算機系統中發現並響應中斷/異常的硬件裝置稱爲中斷裝置,因爲中斷源的多樣性,硬件實現的中斷裝置有多種,分別處理不一樣類型的中斷,這些中斷裝置因計算機而異,一般有:函數
中斷控制器是CPU中的一個控制部件,包括中斷控制邏輯線路和中斷寄存器,外部設備向其發出中斷請求IRQ,在中斷寄存器中設置已發生的中斷;指令處理結束前,會檢查中斷寄存器,如有不被屏蔽的中斷產生,則改變處理器內操做的順序,引出操做系統中的中斷處理程序性能
陷阱與系統陷阱是指令的邏輯和實現線路的一部分,執行指令出現異常後,會根據異常狀況轉向操做系統的異常處理程序,出現虛擬地址異常後,須要從新執行指令,每每越過陷阱獨立設置頁面異常處理程序,執行陷入指令後,越過陷阱處理,觸發系統陷阱,激活系統調用處理程序操作系統
中斷處理程序是操做系統處理中斷事件的控制程序,主要任務是處理中斷事件和恢復正常操做指針
中斷處理過程:code
狀況一:對於某些中斷,在處理完畢後,直接返回剛剛被中斷的進程blog
狀況二:對於其餘一些中斷,須要中斷當前進程的運行,調整進程隊列,啓動進程調度,選擇下一個執行的進程並恢復其執行索引
當計算機檢測到中斷時,中斷裝置經過中斷屏蔽位決定是否響應已發生的中斷,能夠有選擇的響應中斷隊列
當計算機同時檢測到多箇中斷時,中斷裝置響應中斷的順序,有優先度的響應中斷,一種可能的處理次序:處理機硬件故障中斷事件、自願性中斷事件、程序性中斷事件、時鐘中斷等外部中斷事件、輸入輸出中斷事件、重啓動和關機中斷事件,不一樣類型的操做系統有不一樣的中斷優先級
當計算機響應中斷後,在中斷處理過程當中,能夠再響應其餘中斷,操做系統是性能攸關程序系統,且中斷響應處理有硬件要求,考慮系統效率和實現代價問題,中斷的嵌套處理應限制在必定層數內,如3層,中斷的嵌套處理改變中斷處理次序,先響應的有可能後處理
決定中斷處理次序的因素:
操做系統必須全方位地管理計算機系統中運行的程序,所以操做系統爲正在運行程序創建一個管理實體——進程,進程是一個具備必定獨立功能的程序關於某個數據集合的一次運行活動,進程是操做系統進行資源分配和調度的一個獨立單位,進程是操做系統進行資源分配和調度的一個獨立單位
一個進程包括五個實體部分,分別是:
不一樣程序在不一樣數據集上運行:構成兩個無關進程;不一樣程序在相同數據集上運行:構成兩個共享數據的交往進程
相同代碼在不一樣數據集上運行:構成兩個共享代碼的無關進程,共享的代碼稱爲可再入程序,如編輯器;可再入程序是純代碼的
前述的程序與數據集均是內存級的,那麼,在不一樣時段中針對(同一個外存數據文件)運行(同一個外存程序文件),意味着徹底不一樣的(P,C,D,R,Psw),因此兩次運行構成兩個不一樣的進程
OS沒法預期進程的數目與資源需求,計算機系統在運行過程當中可能出現資源不足的狀況,運行資源不足表現爲性能低和死鎖兩種狀況,解決辦法:剝奪某些進程的內存及其餘資源,調入OS管理的對換區,不參加進程調度,待適當時候再調入內存、恢復資源、參與運行,這就是進程掛起
掛起態與等待態有着本質區別,後者佔有已申請到的資源處於等待,前者沒有任何資源
通常選擇等待態進程進入掛起等待態,也可選擇就緒態進程進入掛起就緒態,運行態進程還能夠掛起本身,等待事件結束後,掛起等待態進入掛起就緒態,通常選擇掛起就緒態進程予以恢復
進程控制塊PCB是OS用於記錄和刻畫進程狀態及環境信息的數據結構,藉助PCB,OS能夠全面管理進程的物理實體,刻畫進程的執行現狀,控制進程的執行
用於存放惟一標識該進程的信息:
用於存放該進程運行時的處理器現場信息:
用於存放與管理、調度進程相關的信息:
某一時刻進程的內容及其執行狀態集合::
進程映像是內存級的物理實體,又稱爲進程的內存映像
進程的執行須要環境支持,包括CPU現場和Cache中的執行信息,OS中的進程物理實體和支持進程運行的環境合成進程上下文,包括如下:
進程上下文刻畫了進程的執行狀況
關鍵的進程管理軟件包括::
隊列管理模塊是操做系統實現進程管理的核心模塊,操做系統創建多個進程隊列,包括就緒隊列和等待隊列,按需組織爲先進先出隊列與優先隊列,隊列中的進程能夠經過PCB中的隊列指引元採用單/雙指引元或索引鏈接,出隊和入隊操做,進程與資源調度圍繞進程隊列展開
進程控制過程當中涉及對OS核心數據結構(進程表/PCB池/隊列/資源表)的修改,爲防止與時間有關的錯誤,應使用原語,原語是由若干條指令構成的完成某種特定功能的程序,執行上具備不可分割性,原語是由若干條指令構成的完成某種特定功能的程序,執行上具備不可分割性,原語的執行能夠經過關中斷實現,進程控制使用的原語稱爲進程控制原語,另外一類經常使用原語是進程通訊原語
進程切換指從正在運行的進程中收回處理器,讓待運行進程來佔有處理器運行,進程切換實質上就是被中斷運行進程與待運行進程的上下文切換,處理過程是:
進程切換必須在操做系統內核模式下完成,這就須要模式切換,模式切換又稱處理器狀態切換,包括:
中斷裝置完成正向模式切換,包括:
中斷返回指令完成逆向模式轉換,包括:
1.(中斷/異常等觸發)正向模式切換並壓入PSW/PC
2.保存被中斷進程的現場信息
3.處理具體中斷/異常
4.把被中斷進程的系統堆棧指針SP值保存到PCB
5.調整被中斷進程的PCB信息,如進程狀態
6.把被中斷進程的PCB加入相關隊列
----------------------------------
7.選擇下一個佔用CPU運行的進程
----------------------------------
8.修改被選中進程的PCB信息,如進程狀態
9.設置被選中進程的地址空間,恢復存儲管理信息
10.恢復被選中進程的SP值處處理器寄存器SP
11.恢復被選中進程的現場信息進入處理器
12.(中斷返回指令觸發)逆向模式轉換並彈出PSW/PC
進程切換必定發生在中斷/異常/系統調用處理過程當中,常見的狀況是:
一些中斷/異常不會引發進程狀態轉換,不會引發進程切換,只是在處理完成後把控制權交回給被中斷進程,處理流程是: