作業系統必須交替執行多個程序,在合理的響應時間範圍內使處理器的利用率最大
作業系統必須按照特定的策略給程序分配資源,同時避免死鎖
作業系統可以支援程序間的通訊和使用者建立程序,它們對構建應用程式很有幫助
程序乙個正在執行中的程式
乙個正在計算機上執行的程式例項
能分配給處理器並由處理器執行的實體
乙個具有以下特徵的活動單元: 一組指令序列的執行、乙個當前狀態和相關的系統資源集
程序的基本元素: 程式** 和 與**相關的資料集
程序控制塊(process control block)由作業系統建立和管理 含有充分的資訊包括每個程序具備的元素
唯一識別符號 狀態 優先順序 程式計數器(程式中即將被執行的下一條指令位址) 記憶體指標(程式**和程序相關資料的指標) 上下文資料(程序執行時處理器的暫存器中的資料) i/o狀態資訊(包括顯式的) 記賬資訊
軌跡(trace) 可以通過列出為該程序執行的指令序列描述單個程序的行為 這樣的序列稱為程序的軌跡
導致程序建立的原因 新的批處理作業 使用者互動登入 作業系統提供服務而建立 由現有的程序派生
導致程序終止的原因 正常完成 超過時限 無可用記憶體 越界訪問 保護錯誤 算術錯誤 等待時間超出 i/o失敗 無效指令 特權指令 資料誤用 作業系統干涉 父程序終止 父程序請求
五狀態模型 新建態 就緒態 阻塞態 執行態 退出態
執行態 該程序正在執行
就緒態 該程序做好了準備 有機會就開始執行
阻塞態 程序在某些事件發生前不能執行
新建態 程序剛幫被建立 還未載入到作業系統的可執行程序組當中
退出態 從作業系統的可執行程序中刪除
交換:把記憶體中某個程序的一部分或者全部移到磁碟中 (是乙個磁碟i/o操作)
作業系統就把阻塞的程序換出到磁碟中的掛起佇列中(suspend queue) 當記憶體中沒有處於就緒狀態的程序時,從磁碟中換入程序
掛起態 換入 就緒態
阻塞態 換出 掛起態
掛起程序
程序不能立即執行
程序可能是或者不是在等待乙個事件(如果是 阻塞條件不依賴於掛起條件 阻塞事件的發生不會使程序立即被執行)
為阻止程序執行,可以通過**把這個程序置於掛起狀態 **可以是 程序自己 父程序 作業系統
除非**顯式的命令系統進行狀態轉移 否則程序無法從該狀態中轉移
導致程序掛起的原因 交換 使用者請求 父程序請求 定時 其他原因
作業系統的控制結構
作業系統為了管理程序和資源 必須掌握每個程序和資源當前狀態的資訊
作業系統構造並維護這每個實體的資訊表 (四種型別 記憶體表 i/o表 檔案表 程序表)
處理器的執行模式 特權態(系統態 控制態 核心態) 非特權態
程序控制塊中的資訊可以分成三類 程序標識資訊 程序狀態資訊 程序控制資訊
程序建立 分配唯一程序識別符號 給程序分配空間 初始化程序控制塊 儲存到作業系統中 擴充其他資料結構
程序切換 某一時刻,正在執行的程序被中斷,作業系統指定另乙個程序為執行態,控制權交給該程序
程序切換時機 系統時鐘中斷(程序執行超時) i/o中斷 記憶體失效 陷阱(出現錯誤)
程序描述和控制 作業系統精髓與設計
作業系統設計必須滿足某些一般性的需求,大多數需求都涉及程序 程序的定義 也可以把程序當作一組元素的實體,程序的兩個基本元素是程式 可能被執行相同程式的其他程序共享 和與 相關聯的資料集。假設處理器開始執行該程式 且我們把這個執行實體成為程序。在程序執行時,任意給定乙個時間,程序都可以唯一的被表徵為以...
作業系統精髓與設計原理 三 程序
程序的兩個基本組成元素 1.程式 2.資料集 程序控制塊 程序控制塊是支援多程序的關鍵工具,程序中斷時,作業系統會把程式計數器和上下文資料儲存到程序控制塊中,程序的狀態也相應的改變為其他值,支援後來恢復程序的執行.識別符號 用來區分其他程序 狀態 執行態等 優先順序 程序的優先順序 記憶體指標 程式...
《作業系統 精髓與設計原理》 作業系統概述
作業系統為應用程式提供與硬體互動的介面,它的主要功能是為執行中的程式動態地分配可共享的系統資源,與之相關的研究主要涉及記憶體 程序及外設的管理和排程。相鄰層次間的介面不斷改變。一方面,原來由作業系統負責的功能被遷移到硬體中,另一方面,一些與應用程式解決的問題無關的程式化函式也被加入作業系統中 作業系...