1. 程式人生 > >2.1 程序的基本概念

2.1 程序的基本概念

2.1 程序的基本概念

1.關於程式執行順序

1)引入前趨圖

描述程序執行前後關係的圖

有向無迴圈圖(DAG)

Pi結點:描述一個程式段、程序、或一條語句。

有向邊“”:結點之間的偏序或前序關係

PiPk,則Pi是Pk的直接前趨,Pk是Pi的直接後繼。

2)程式順序執行時的特徵

(1) 順序性

處理機的操作嚴格按程式規定順序執行

(2) 封閉性

程式一旦開始執行,其計算結果不受外界因素影響。

(3) 可再現性

程式執行只要初始條件一樣,不論如何停頓,重複執行多少次結果都一樣。

3)程式的併發執行分析

要符合前趨關係,併發不是隨意的

 

併發提高效率但併發也帶來問題

多個程式如果無序併發,得到的只能是混亂的執行結果,

多道程式執行,走走停停的可能順序有很多種,符合前趨圖的關係才是合理併發。

4)併發程式執行時的特徵

間斷性(執行表現)

     多道 -> 程式併發執行-> 要共享系統的資源 -> 形成相互制約的關係-> 相互制約導致併發程式具有“執行——暫停——執行”這種間斷性的活動規律

失去封閉性

共享資源,資源狀態由多道程式改變,程式執行失去封閉性,即程式執行受其他程式的影響。

結果不可再現性

結果不確定,程式執行將沒有任何意義。

不可再現結果的併發無意義

  1.   程序

1)程序的定義

程序是程序實體的執行過程,是系統進行資源分配和排程的一個獨立單位

2)程序的特徵

(1)結構性特徵,程序的根本——PCB

(2)動態性

程序實質上是程序實體的一次有生命期的執行過程。程式只是靜態的一組有序指令

程序最基本特徵

(3)併發性

多個程序實體同存於記憶體中,在一段時間內同時執行

擁有PCB的程式才能併發

(4)獨立性

(5)非同步性

區別程序與程式

動與靜:

程序是動態的,程式是靜態的:程式是有序程式碼的集合;程序是程式的執行。

永久與暫時:

程序是暫時的,程式是永久的:程序是一個狀態變化的過程,程式可長久儲存。

結構:

程序的組成包括程式、資料和程序控制塊(程序各種控制資訊)。

程序與程式的對應關係:

均可1對n。通過多次執行,一個程式可對應多個程序;通過呼叫關係,一個程序可包括多個程式。

3)程序的基本狀態

程序執行時的間斷性,決定了其具有多種狀態。把握各程序所屬的狀態對程序控制至關重要。與程序執行相關的各種共享資源有:CPU 儲存器 I/O裝置 時間片

 

程序的三種基本狀態

(1)就緒狀態(Ready)

      程序獲得除CPU之外的所有必需資源,一旦得到CPU控制權,可立即執行

(2)執行狀態(Running)

      程序已獲得所有執行必需的資源,正在處理機上執行

(3)阻塞狀態(Blocked)

      正在執行的程序由於發生某事件(請求I/O、申請緩衝、時間片到)而暫時無法執行時,便放棄CPU後暫停

 

各種狀態下的程序佇列

單處理機系統,執行態的程序只有一個;

就緒態、阻塞態的程序可有多個。一般講分別排稱一個佇列,稱就緒佇列、阻塞佇列

阻塞佇列有的會根據不同原因再排成多個佇列

 

不少系統除上述三種狀態,還有其他一些細節狀態:掛起、新建、終止狀態等

掛起狀態

就緒的、但不會被排程執行

產生原因

使用者自己請求暫停

父程序檢查、協調子程序時掛起子程序

調節負荷的需要,負載過重,為保證實時任務的控制,掛起一些不重要的程序

作業系統的檢查和記錄需要掛起程序

 

  1.   程序控制塊PCB

程式:程式段 + 資料段

程序實體:程式段 + 資料段 + 控制塊PCB

存放程序的管理和控制資訊的資料結構稱為程序控制塊

OS對程序進行控制和管理圍繞PCB進行

 

分析OS排程某程序的過程

查該程序的PCB,獲取其狀態、優先順序

根據PCB儲存的處理機狀態資訊,恢復現場

根據PCB中程式和資料的記憶體始址,找到其程式和資料

執行中的同步訊號等也要查閱PCB,暫停時程序執行的處理機環境儲存回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的地址。用專門的單元記錄各索引表的首地址。

 

 

程序是程序實體的執行過程,是系統進行資源分配和排程的一個獨立單位