第2章 程序管理
2.1 程序的基本概念 要點 分析程式執行順序、以及併發的特徵 程序的概念、特徵與狀態 程序控制塊及其組織 1.關於程式執行順序 1)引入前趨圖 描述程序執行前後關係的圖 有向無迴圈圖(DAG) 2)程式順序執行 (1) 順序性 處理機的操作嚴格按程式規定順序執行 (2) 封閉性 程式一旦開始執行,其計算結果不受外界因素影響。 (3) 可再現性 程式執行只要初始條件一樣,不論如何停頓,重複執行多少次結果都一樣。 3)程式的併發執行分析 要符合前趨關係 併發不是隨意的 併發提高效率但併發也帶來問題:多個程式如果無序併發,得到的只能是混亂的執行結果,多道程式執行,走走停停的可能順序有很多種,符合前趨圖的關係才是合理併發。 兩程式對N的使用是互相影響的,沒有封閉性。執行中對N的修改都會影響對方結果,結果不可再現。 4)併發程式執行時的特徵 間斷性(執行表現) 多道->程式併發執行->要共享系統的資源->形成相互制約的關係->相互制約導致併發程式具有“執行——暫停——執行”這種間斷性的活動規律。 失去封閉性:共享資源,資源狀態由多道程式改變,程式執行失去封閉性。即程式執行受其他程式的影響。 結果不可再現性:結果不確定,程式執行將沒有任何意義。 所以:多道併發應是“有控制的併發”。要“能控制”,要“合理控制”。 程式:程式段+資料段 程序實體:程式段+資料段+控制塊PCB 2.程序 OS利用“程序實體”控制程式執行就產生了“程序”。程序就是用於描述、控制程式在記憶體中併發執行的一個東東。 1)程序的定義 程序是程序實體的執行過程,是系統進行資源分配和排程的一個獨立單位。 可併發執行的程式在一個數據集合上的一次執行過程。程式的一次執行。是一個程式與其資料一道通過處理機的執行所發生的活動。 2)程序的特徵 結構性特徵,程序的根本——PCB 動態性:程序實質上是程序實體的一次有生命期的執行過程。程式只是靜態的一組有序指令。程序最基本特徵 併發性:多個程序實體同存於記憶體中,在一段時間內同時執行。有PCB的程式才能併發。 獨立性 非同步性 3)程序的基本狀態 程序執行時的間斷性,決定了其具有多種狀態。把握各程序所屬的狀態對程序控制至關重要。與程序執行相關的各種共享資源有:CPU 儲存器 I/O裝置 時間片 程序的三種基本狀態 (1)就緒狀態(Ready) 程序獲得除CPU之外的所有必需資源,一旦得到CPU控制權,可立即執行。 (2)執行狀態(Running) 程序已獲得所有執行必需的資源,正在處理機上執行。 (3)阻塞狀態(Blocked) 正在執行的程序由於發生某事件(請求I/O、申請緩衝、時間片到)而暫時無法執行時,便放棄CPU後暫停。 單處理機系統,執行態的程序只有一個; 就緒態、阻塞態的程序可有多個。一般講它們分別排稱一個佇列,稱就緒佇列、阻塞佇列。 阻塞佇列有的會根據不同原因再排成多個佇列。 掛起狀態 就緒的、但不會被排程執行 產生原因 使用者自己請求暫停 父程序檢查、協調子程序時掛起子程序 調節負荷的需要,負載過重,為保證實時任務的控制,掛起一些不重要的程序 作業系統的檢查和記錄需要掛起程序。 3.程序控制塊PCB 存放程序的管理和控制資訊的資料結構稱為程序控制塊。 程序控制塊是程序存在的唯一標誌:程序建立時,PCB建立並伴隨程序執行的全過程,直到程序撤消而撤消。PCB就象我們的戶口。 1)程序控制塊中的資訊(pcb內) (1)程序識別符號資訊 每個程序都必須有一個唯一的識別符號 內部標示符:唯一的數字序號,方便系統使用 外部標示符:方便使用者使用,使用者程序訪問某程序時使用 (2)處理機狀態資訊 主要由處理機的各種暫存器中的內容組成,被中斷時這些資訊要存放到PCB。 通用暫存器:使用者程式訪問的,暫存資訊 指令計數器:下一條指令地址 程式狀態字PSW:一些狀態資訊 使用者棧指標:每個使用者程序都有的存放過程和系統呼叫引數及呼叫地址的一組系統棧。 (3)程序排程資訊 程序狀態 程序優先順序 程序排程所需的其他資訊:排程演算法相關資訊 事件:狀態轉換有關的事件 (4)程序控制資訊 程式和資料的地址(單個程序) 資料所在的內外存地址 程序同步和通訊機制(多程序間) 同步和通訊機制的訊號量、訊息佇列指標等 資源清單 連結指標(PCB的組織) 本PCB所在佇列的下一個程序PCB首地址。 2)PCB資訊的存放 系統執行中有若干個程式的PCB,它們常駐記憶體的PCB區。 採用的資料結構:PCB結構體,PCB連結串列或佇列 3)PCB的組織方式 連結方式:同一狀態的PCB,依靠連結指標連結成佇列。就緒佇列;若干個阻塞佇列;空白佇列(PCB區的空PCB塊) 索引方式:同狀態的PCB同樣集中記錄,但以索引表的方式記錄PCB的地址。用專門的單元記錄各索引表的首地址。