進程管理
1.關於程序執行順序
1)前趨圖
- 描述進程執行前後關係的圖
- 有向無循環圖(DAG)
(前趨圖關注的是前趨關係,不能有循環)
2)程序順序執行時的特徵
(1) 順序性
處理機的操作嚴格按程序規定順序執行
(2) 封閉性
程序一旦開始執行,其計算結果不受外界因素影響。
(3) 可再現性
程序執行只要初始條件一樣,不論如何停頓,重複執行多少次結果都一樣。
3)程序的併發執行分析
- 要符合前趨關係
- 併發不是隨意的
4)併發程序執行時的特徵
- 間斷性
多道 -> 程序併發執行-> 要共享系統的資源 -> 形成相互制約的關係
-> 相互制約導致併發程序具有“執行——暫停——執行”這種間斷性的活動規律。 - 失去封閉性
共享資源,資源狀態由多道程序改變,程序運行失去封閉性。即程序運行受其他程序的影響。 - 結果不可再現性
結果不確定,程序執行將沒有任何意義。
所以:多道併發應是“有控制的併發”
1.要“能控制”,
2. 要“合理控制”
2.進程
- 進程的定義
進程是進程實體的運行過程,是系統進行資源分配和調度的一個獨立單位。 - 進程的特徵
①結構性特徵,進程的根本——PCB
②動態性
*進程實質上是進程實體的一次有生命期的執行過程。程序只是靜態的一組有序指令。
*是進程最基本特徵
③併發性
*多個進程實體同存於內存中,在一段時間內同時運行。
*有PCB的程序才能併發。
④獨立性
⑤異步性
區別進程與程序:
*動與靜:
進程是動態的,程序是靜態的:程序是有序代碼的集合;進程是程序的執行。
*永久與暫時:
進程是暫時的,程序是永久的:進程是一個狀態變化的過程,程序可長久保存。
*結構:
進程的組成包括程序、數據和進程控制塊(進程各種控制信息)。
進程與程序的對應關係:
都可1對n。通過多次執行,一個程序可對應多個進程;通過調用關係,一個進程可包括多個程序。
- 進程的基本狀態(三種)
(1)就緒狀態(Ready)
進程獲得除CPU之外的所有必需資源,一旦得到CPU控制權,可立即運行。
(2)運行狀態(Running)
進程已獲得所有運行必需的資源,正在處理機上執行。
(3)阻塞狀態(Blocked)
正在執行的進程由於發生某事件(請求I/O、申請緩衝、時間片到)而暫時無法執行時,便放棄CPU後暫停。
3. 進程控制塊PCB(Process Control Block)
進程實體:代碼段+數據段+PCB
存放進程的管理和控制信息的數據結構稱爲進程控制塊。
1)進程控制塊中的信息(pcb內)
(1)進程標識符信息
每個進程都必須有一個唯一的標識符
內部標示符:唯一的數字序號,方便系統使用
外部標示符:方便用戶使用,用戶進程訪問某進程時使用
(2)處理機狀態信息
主要由處理機的各種寄存器中的內容組成,被中斷時這些信息要存放到PCB。
*通用寄存器:用戶程序訪問的,暫存信息
*指令計數器:下一條指令地址
*程序狀態字PSW:一些狀態信息
*用戶棧指針:每個用戶進程都有的存放過程和系統調用參數及調用地址的一組系統棧。
(3)進程調度信息
*進程狀態
*進程優先級
*進程調度所需的其他信息:調度算法相關信息
*事件:狀態轉換有關的事件
(4)進程控制信息
- 程序和數據的地址(單個進程)
數據所在的內外存地址
- 進程同步和通信機制(多進程間)
同步和通信機制的信號量、消息隊列指針等
- 資源清單
- 鏈接指針(PCB的組織)
本PCB所在隊列的下一個進程PCB首地址。
2)PCB信息的存放
系統運行中有若干個程序的PCB,它們常駐內存的PCB區。
採用的數據結構:PCB結構體,PCB鏈表或隊列。
- 鏈接方式
同一狀態的PCB,依靠鏈接指針鏈接成隊列。就緒隊列;若干個阻塞隊列;空白隊列(PCB區的空PCB塊)
- 索引方式
同狀態的PCB同樣集中記錄,但以索引表的方式記錄PCB的地址。用專門的單元記錄各索引表的首地址。