計算機操作系統基礎筆記 操作系統有哪些狀態( 五 )


由上往下,響應時間數量級逐個降低,要求更為嚴格,所需資源也更多 。
常用的高優先權優先的實時調度算法:
1. 最早截止時間優先算法-EDF,截止時間越早越優先 。
2. 最低松弛度優先算法-LLF,松弛度:截止時間-剩余所需時間-當前時間,主要用于可搶占調度方式,當松弛度為0時,必須立即搶占CPU 。
產生死鎖的原因

  1. 競爭資源
  2. 進程推進順序非法
m個同類資源被n個進程共享,設一個進程最多可以請求多x個資源
m > n * (x-1) 時,系統不會發生死鎖 。
產生死鎖的必要條件
  1. 互斥條件
  2. 請求與保持條件
  3. 不剝奪條件
  4. 環路等待條件
處理死鎖的基本辦法預防死鎖破壞死鎖必要條件的后三者之一,互斥條件因為一些資源固有特性的限制,難以破壞,對于打印機這樣的設備可以通過SPOOLing技術對互斥條件予以破壞 。
1. 破壞“請求與保持”條件,規定所有進程都必須一次性申請運行過程所需的全部資源,會造成資源浪費嚴重和更多更久的進程阻塞 。
2. 破壞“不剝奪”條件,規定一個已經保持了某些資源的進程,在提出新的資源請求而不能立即得到滿足時,必須釋放它已經獲得的所有資源,方法實現復雜且開銷大 。
3. 破壞“環路等待“條件,將系統資源按類型賦予不同的序號,當進程要獲取多種資源時必須按序號逐個獲取資源 。會限制新設備類型的增加,由于有些進程使用資源的順序與規定的順序不同,會造成資源的浪費 。
避免死鎖將系統狀態分為安全狀態和不安全狀態,安全狀態一定不會產生死鎖,不安全狀態可能會產生死鎖 。
允許進程動態申請資源,系統分配資源前進行安全性檢查,若分配會導致系統進入不安全狀態,則不予以分配 。
銀行家算法,根本思想:當某個進程提出資源請求,并請求資源小于等于它實際所需資源時,檢查是否存在一條路徑可以在資源分配后,剩余的進程仍然可以完全結束 。
數據結構:
1. 可用資源向量 Available
2. 最大需求矩陣Max
3. 分配矩陣Allocation
4. 需求矩陣Need
5. 工作向量work
6. 工作向量Finish
死鎖的檢測與解除系統定時進行死鎖的檢測,當判明將發生死鎖或已經發生死鎖時,進行死鎖的解除 。
死鎖的檢測:
1. 判斷的現有的資源能否讓現有的進程全部正常結束,不能則認為將發生死鎖 。
2. 周期性檢測進程阻塞時間,當其超過某一時間后,認為該進程為死鎖進程 。
死鎖的解除:
1. 剝奪資源
2. 撤銷進程
存儲器管理三級存儲:
1. 高速緩存cache
2. 內存RAM
3. 磁盤
五級存儲:
1. 寄存器
2. 高速緩存
3. 內存
4. 磁盤緩存
5. 磁盤
存儲分配的三種方式:
1. 直接指定
2. 靜態分配方式
3. 動態分配方式
程序的裝入
  1. 絕對裝入方式
    編譯程序產生實際存儲地址(絕對地址)的目標模塊邏輯地址與實際內存地址完全相同
  2. 可重定位裝入方式
    重定位(地址映射/地址變換),根據地址變換進行的時間及采用技術手段不同,分為:
  3. 靜態重定位
    地址變化在裝入內存時一次完成,優點:不需要硬件支持,可以裝入有限多道程序 。缺點:一個程序通常需要占用連續的內存空間,程序裝入內存后不能移動,不易實現共享 。
  4. 動態重定位
    地址變換在程序執行時進行,在硬件地址變換機構的支持下,對每條指令或數據的訪問自動進行地址變換 。優點:主存使用更加靈活,幾個作業共享一個程序段的單個副本比較容易,可以向用戶提供一個比主存的存儲空間大得多的地址空間而用戶無需考慮覆蓋結構 。缺點:需要附加硬件支持,實現存儲器管理的軟件比較復雜 。
  5. 動態運行時裝入方式
程序的鏈接
  1. 靜態鏈接
  2. 裝入時動態鏈接
  3. 運行時動態鏈接
運行時動態鏈接是目前最常使用的鏈接方式

推薦閱讀