處理器管理2

中斷系統

中斷系統是計算機系統中響應和處理中斷的系統,包括硬件子系統和軟件子系統兩部分,中斷響應由硬件子系統完成,中斷處理由軟件子系統完成數據結構

中斷響應處理與指令執行週期

在指令執行週期最後增長一個微操做,以響應中斷編輯器

中斷裝置

計算機系統中發現並響應中斷/異常的硬件裝置稱爲中斷裝置,因爲中斷源的多樣性,硬件實現的中斷裝置有多種,分別處理不一樣類型的中斷,這些中斷裝置因計算機而異,一般有:函數

  • 處理器外的中斷:由中斷控制器發現和響應
  • 處理器內的異常:由指令的控制邏輯和實現線路發現和響應,相應機制稱爲陷阱
  • 請求OS服務的系統異常:處理器執行陷入指令時直接觸發,相應機制稱爲系統陷阱

中斷控制器

中斷控制器是CPU中的一個控制部件,包括中斷控制邏輯線路和中斷寄存器,外部設備向其發出中斷請求IRQ,在中斷寄存器中設置已發生的中斷;指令處理結束前,會檢查中斷寄存器,如有不被屏蔽的中斷產生,則改變處理器內操做的順序,引出操做系統中的中斷處理程序性能

陷阱與系統陷阱

陷阱與系統陷阱是指令的邏輯和實現線路的一部分,執行指令出現異常後,會根據異常狀況轉向操做系統的異常處理程序,出現虛擬地址異常後,須要從新執行指令,每每越過陷阱獨立設置頁面異常處理程序,執行陷入指令後,越過陷阱處理,觸發系統陷阱,激活系統調用處理程序操作系統

中斷響應過程

  • 發現中斷源,提出中斷請求
    • 發現中斷寄存器中記錄的中斷
    • 決定這些中斷是否應該屏蔽
    • 當有多個要響應的中斷源時,根據規定的優先級選擇一個
  • 中斷當前程序的執行
    • 保存當前程序的PSW/PC到核心棧
  • 轉向操做系統的中斷處理程序

中斷的處理

中斷處理程序是操做系統處理中斷事件的控制程序,主要任務是處理中斷事件和恢復正常操做指針

中斷處理過程:code

  • 保護未被硬件保護的處理器狀態
  • 經過分析被中斷進程的PSW中斷碼字段,識別中斷源
  • 分別處理髮生的中斷事件
  • 恢復正常操做

狀況一:對於某些中斷,在處理完畢後,直接返回剛剛被中斷的進程blog

狀況二:對於其餘一些中斷,須要中斷當前進程的運行,調整進程隊列,啓動進程調度,選擇下一個執行的進程並恢復其執行索引

中斷屏蔽

當計算機檢測到中斷時,中斷裝置經過中斷屏蔽位決定是否響應已發生的中斷,能夠有選擇的響應中斷隊列

中斷優先級

當計算機同時檢測到多箇中斷時,中斷裝置響應中斷的順序,有優先度的響應中斷,一種可能的處理次序:處理機硬件故障中斷事件、自願性中斷事件、程序性中斷事件、時鐘中斷等外部中斷事件、輸入輸出中斷事件、重啓動和關機中斷事件,不一樣類型的操做系統有不一樣的中斷優先級

中斷的嵌套處理

當計算機響應中斷後,在中斷處理過程當中,能夠再響應其餘中斷,操做系統是性能攸關程序系統,且中斷響應處理有硬件要求,考慮系統效率和實現代價問題,中斷的嵌套處理應限制在必定層數內,如3層,中斷的嵌套處理改變中斷處理次序,先響應的有可能後處理

多中斷的響應與處理

決定中斷處理次序的因素:

  • 中斷屏蔽可使中斷裝置不響應某些中斷
  • 中斷優先級決定了中斷裝置響應中斷的次序
  • 中斷能夠嵌套處理,但嵌套的層數應有限制
  • 中斷的嵌套處理改變了中斷處理的次序

進程

操做系統必須全方位地管理計算機系統中運行的程序,所以操做系統爲正在運行程序創建一個管理實體——進程,進程是一個具備必定獨立功能的程序關於某個數據集合的一次運行活動,進程是操做系統進行資源分配和調度的一個獨立單位,進程是操做系統進行資源分配和調度的一個獨立單位

一個進程包括五個實體部分,分別是:

  • (OS管理運行程序的)數據結構P
  • (運行程序的)內存代碼C
  • (運行程序的)內存數據D
  • (運行程序的)通用寄存器信息R
  • (OS控制程序執行的)程序狀態字信息PSW

進程舉例

不一樣程序在不一樣數據集上運行:構成兩個無關進程;不一樣程序在相同數據集上運行:構成兩個共享數據的交往進程

相同代碼在不一樣數據集上運行:構成兩個共享代碼的無關進程,共享的代碼稱爲可再入程序,如編輯器;可再入程序是純代碼的

前述的程序與數據集均是內存級的,那麼,在不一樣時段中針對(同一個外存數據文件)運行(同一個外存程序文件),意味着徹底不一樣的(P,C,D,R,Psw),因此兩次運行構成兩個不一樣的進程

概念級的進程狀態

  • 運行態指進程佔有處理器運行
  • 就緒態指進程具有運行條件等待處理器運行
  • 等待態指進程因爲等待資源、輸入輸出、信號等而不具有運行條件

進程掛起的概念

OS沒法預期進程的數目與資源需求,計算機系統在運行過程當中可能出現資源不足的狀況,運行資源不足表現爲性能低和死鎖兩種狀況,解決辦法:剝奪某些進程的內存及其餘資源,調入OS管理的對換區,不參加進程調度,待適當時候再調入內存、恢復資源、參與運行,這就是進程掛起

掛起態與等待態有着本質區別,後者佔有已申請到的資源處於等待,前者沒有任何資源

進程掛起的選擇與恢復

通常選擇等待態進程進入掛起等待態,也可選擇就緒態進程進入掛起就緒態,運行態進程還能夠掛起本身,等待事件結束後,掛起等待態進入掛起就緒態,通常選擇掛起就緒態進程予以恢復

進程的數據描述

進程控制塊,ProcessControlBlock

進程控制塊PCB是OS用於記錄和刻畫進程狀態及環境信息的數據結構,藉助PCB,OS能夠全面管理進程的物理實體,刻畫進程的執行現狀,控制進程的執行

進程控制塊-標識信息

用於存放惟一標識該進程的信息:

  • 系統分配的標識號
  • 系統分配的進程組標識號
  • 用戶定義的進程名
  • 用戶定義的進程組名

進程控制塊-現場信息

用於存放該進程運行時的處理器現場信息:

  • 用戶可見寄存器內容:數據寄存器、地址寄存器
  • 控制與狀態寄存器內容:PC、IR、PSW
  • 棧指針內容:核心棧與用戶棧指針

進程控制塊-控制信息

用於存放與管理、調度進程相關的信息:

  • 調度相關信息:狀態、等待事件/緣由、優先級
  • 進程組成信息:代碼/數據地址、外存映像地址
  • 隊列指引元:進程隊列指針、父子兄弟進程指針
  • 通訊相關信息:消息隊列、信號量、鎖
  • 進程特權信息:如內存訪問權限、處理器特權
  • 處理器使用信息:佔用的處理器、時間片、處理器使用時間/已執行總時間、記帳信息
  • 資源清單信息:如正佔有的資源、已使用的資源

進程映像,ProcessImage

某一時刻進程的內容及其執行狀態集合::

  • 進程控制塊:保存進程的標識信息、狀態信息和控制信息
  • 進程程序塊:進程執行的程序空間
  • 進程數據塊:進程處理的數據空間,包括數據、處理函數的用戶棧和可修改的程序
  • 核心棧:進程在內核模式下運行時使用的堆棧,中斷或系統過程使用

進程映像是內存級的物理實體,又稱爲進程的內存映像

進程上下文,Processcontext

進程的執行須要環境支持,包括CPU現場和Cache中的執行信息,OS中的進程物理實體和支持進程運行的環境合成進程上下文,包括如下:

  • 用戶級上下文:用戶程序塊/用戶數據區/用戶棧/用戶共享內存
  • 寄存器上下文:PSW/棧指針/通用寄存器
  • 系統級上下文:PCB/內存區表/核心棧

進程上下文刻畫了進程的執行狀況

進程的管理

概念級的OS進程管理軟件

關鍵的進程管理軟件包括::

  • 系統調用/中斷/異常處理程序
  • 隊列管理模塊
  • 進程控制程序
  • 進程調度程序(獨立進程居多)
  • 進程通訊程序(多個程序包)
  • 終端登陸與做業控制程序、性能監控程序、審計程序等外圍程序

隊列管理模塊

隊列管理模塊是操做系統實現進程管理的核心模塊,操做系統創建多個進程隊列,包括就緒隊列和等待隊列,按需組織爲先進先出隊列與優先隊列,隊列中的進程能夠經過PCB中的隊列指引元採用單/雙指引元或索引鏈接,出隊和入隊操做,進程與資源調度圍繞進程隊列展開

進程的控制與管理

  • 進程建立:進程表加一項,申請PCB並初始化,生成標識,創建映像,分配資源,移入就緒隊列
  • 進程撤銷:從隊列中移除,歸還資源,撤銷標識,回收PCB,移除進程表項
  • 進程阻塞:保存現場信息,修改PCB,移入等待隊列,調度其餘進程執行
  • 進程喚醒:等待隊列中移出,修改PCB,移入就緒隊列(該進程優先級高於運行進程觸發搶佔)
  • 進程掛起:修改狀態並出入相關隊列,收回內存等資源送至對換區
  • 進程激活:分配內存,修改狀態並出入相關隊列
  • 其餘:如修改進程特權進程的控制與管理

原語與進程控制原語

進程控制過程當中涉及對OS核心數據結構(進程表/PCB池/隊列/資源表)的修改,爲防止與時間有關的錯誤,應使用原語,原語是由若干條指令構成的完成某種特定功能的程序,執行上具備不可分割性,原語是由若干條指令構成的完成某種特定功能的程序,執行上具備不可分割性,原語的執行能夠經過關中斷實現,進程控制使用的原語稱爲進程控制原語,另外一類經常使用原語是進程通訊原語

進程切換

進程切換指從正在運行的進程中收回處理器,讓待運行進程來佔有處理器運行,進程切換實質上就是被中斷運行進程與待運行進程的上下文切換,處理過程是:

  • 保存被中斷進程的上下文
  • 轉向進程調度
  • 恢復待運行進程的上下文

模式切換

進程切換必須在操做系統內核模式下完成,這就須要模式切換,模式切換又稱處理器狀態切換,包括:

  • 用戶模式到內核模式:由中斷/異常/系統調用中斷用戶進程執行而觸發
  • 內核模式到用戶模式:OS執行中斷返回指令將控制權交還用戶進程而觸發

模式切換的基本工做任務

中斷裝置完成正向模式切換,包括:

  • 處理器模式轉爲內核模式
  • 保存當前進程的PC/PSW值到核心棧
  • 轉向中斷/異常/系統調用處理程序

中斷返回指令完成逆向模式轉換,包括:

  • 從待運行進程核心棧中彈出PSW/PC值
  • 處理器模式轉爲用戶模式

進程切換的工做過程

1.(中斷/異常等觸發)正向模式切換並壓入PSW/PC

2.保存被中斷進程的現場信息

3.處理具體中斷/異常

4.把被中斷進程的系統堆棧指針SP值保存到PCB

5.調整被中斷進程的PCB信息,如進程狀態

6.把被中斷進程的PCB加入相關隊列

----------------------------------

7.選擇下一個佔用CPU運行的進程

----------------------------------

8.修改被選中進程的PCB信息,如進程狀態

9.設置被選中進程的地址空間,恢復存儲管理信息

10.恢復被選中進程的SP值處處理器寄存器SP

11.恢復被選中進程的現場信息進入處理器

12.(中斷返回指令觸發)逆向模式轉換並彈出PSW/PC

進程切換的發生時機

進程切換必定發生在中斷/異常/系統調用處理過程當中,常見的狀況是:

  • 阻塞式系統調用、虛擬地址異常致使被中斷進程進入等待態
  • 時間片中斷、I/O中斷後發現更高優先級進程
  • 終止用系統調用、不能繼續執行的異常致使被中斷進程進入終止態

進程切換與模式切換

一些中斷/異常不會引發進程狀態轉換,不會引發進程切換,只是在處理完成後把控制權交回給被中斷進程,處理流程是:

  • (中斷/異常觸發)正向模式切換壓入PSW/PC
  • 保存被中斷進程的現場信息
  • 處理中斷/異常
  • 恢復被中斷進程的現場信息
  • (中斷返回指令觸發)逆向模式轉換彈出PSW/PC
相關文章
相關標籤/搜索