程序的描述與控制——程序的描述
程序的定義和特徵
1.定義
為了使參與併發執行的每個程式(含資料)都能夠獨立的執行,在作業系統中必須為之配置一個專門的資料結構,稱為程序控制塊(PCB)。系統利用PCB描述程序的基本情況和活動過程,進而控制和管理程序。
程式段、相關的資料段和PCB三部分構成了程序實體(又稱為程序影像)。一般情況下,就把程序實體簡稱為程序。
對於程序較典型的定義:
(1)程序是程式的一次執行。
(2)程序是一個程式及其資料在處理機上順序執行時所發生的活動。
(3)程序是具有獨立功能的程式在一個數據集合上執行的過程,他是系統進行資源分配和和排程的一個獨立單位。
在引入程序實體概念後,可以把傳統OS中的程序定義為:“程序是程序實體的執行過程,是系統進行資源分配和排程的一個獨立單位。”
2.程序的特徵
(1)動態性(2)併發性(3)獨立性(4)非同步性
程序的基本狀態及轉換
1.程序的三種基本狀態
(1)就緒狀態
(2)執行狀態
(3)阻塞狀態
2.三種基本狀態的轉換
3.建立狀態和終止狀態
(1)建立狀態
程序由建立而產生,建立狀態是為了保證程序的排程必須在建立工作完成後進行,以確保對程序控制塊操作的完整性;
對於處於建立狀態的程序,當其獲得了所需要的資源以及對其PCB的初始化工作完成後,便可有建立狀態轉入就緒狀態。
(2)終止狀態
兩個步驟:首先是等待作業系統進行善後處理,最後將其PCB清零,並將PCB空間返回系統。
掛起操作和程序狀態的轉換
1.掛起操作的引入
掛起狀態:就緒的、但不會被排程執行。
產生原因: (1)使用者自己請求暫停;
(2)父程序檢查、協調子程序時掛起子程序;
(3)調節負荷的需要,負載過重,為保證實時任務的控制,掛起一些不重要的程序;
(4)作業系統的檢查和記錄需要掛起程序;
2.引入掛起原語操作後三個程序狀態的轉換
程序管理中的資料結構
1.程序控制塊PCB
程序實體:程式碼段+資料段+PCB
程序控制塊定義:存放程序的管理和控制資訊的資料結構;
OS對程序控制和管理圍繞PCB進行
分析OS排程某程序的過程:
(1)查該程序的PCB,獲取其狀態、優先順序;
(2)根據PCB儲存的處理機狀態資訊,恢復現場;
(3)根據PCB中程式和資料的記憶體始址,找到其程式和資料;
(4)執行中的同步訊號也要查閱PCB,暫停時程序執行的處理機環境儲存回PCB;
2.PCB的重要性
程序控制塊是程序存在的唯一標誌;
程序管理和控制的最重要的資料結構;
3.程序控制塊中的資訊
(1)程序識別符號資訊
每一個程序都必須有一個唯一的識別符號;
- 內部識別符號:唯一的數字序號,方便系統使用;
- 外部識別符號:方便使用者使用,使用者程序訪問某程序時使用;
(2)處理機狀態資訊
主要由處理機的各種暫存器中的內容組成,被中斷時這些資訊要存放到PCB;
-
通用暫存器:使用者程式訪問的,暫存資訊;
-
指令暫存器;下一條指令地址;
-
程式狀態字PSW:一些狀態資訊;
-
使用者棧指標:每個使用者程序都有的存放過程和系統呼叫引數及呼叫地址的一組系統棧;
(3)程序排程資訊 -
程序狀態
-
程序優先順序
-
程序排程所需的其他資訊:排程演算法相關資訊;
-
事件:狀態轉換有關的事件;
(4)程序控制資訊
- 程式和資料的地址(單個程序):資料所在的內外存地址;
- 程序同步和通訊機制(多程序間):同步和通訊機制的訊號量、訊息佇列指標等;
- 資源清單
- 連結指標(PCB的組織):本PCB所在佇列的下一個程序PCB的首地址;
2) PCB資訊的存放
系統執行中有若干個程式的PCB,他們常駐記憶體的PCB區;
採用的資料結構;PCB結構體,PCB連結串列或佇列;
3)PCB的組織方式(如何有效的管理PCB)
- 連結方式
- 索引方式
- 線性方式: