進程管理——進程的描述
一、進程的定義與特征
1、進程的定義
進程是具有獨立功能的程序關於某個數據集合上一次運行活動,是系統進行資源管理分配和調度的獨立單位。
2、進程的組成
進程=程序+數據+PCB
- 程序部分:描述了進程所要完成的功能;
- 相關數據:是程序在執行時所需要的數據和工作區,這兩部分是進程存在的物質基礎。
- PCB:是最重要的,創建進程實際上是指創建進程實體中的進程控制塊,而撤銷進程也是指將這個進程實體中的進程控制塊撤消掉。
3、進程的特征
- 動態性
是進程實體的執行過程,是進程最基本的特征。動態性還表現在“它由創建而產生,由調度而執行,由撤銷而消亡
- 並發性
指多個進程實體同時存在於內存中,並能在一段時間內同時運行。
- 獨立性
指進程實體是一個獨立運行,獨立獲得系統資源和獨立接受調度的基本單位。
- 異步性
指進程按各自獨立、不可預知的速度向前推進。
4、進程與程序的區別與聯系
(1)進程是程序的一次動態執行活動;程序是進程運行的靜態描述文本。比如做菜和菜譜。
(2)一個進程可以執行一個或多個程序,同一個程序也可以被多個進程同時執行。
(3)程序是一種軟件資源,可以長期保存;而進程是一次執行過程,是暫時存在的。
(4)程序不具備進程的4個基本特征。
二、進程的基本狀態與轉換
1、進程的三種基本狀態
- 就緒狀態
進程獲得除CPU以外的所有資源時的狀態。由就緒狀態的進程排成的隊列稱為是就緒隊列,進程只有進入就緒隊列才有權被CPU調度執行。
- 執行狀態
進程已獲得CPU,並且正在執行時的狀態。
- 阻塞狀態
正在執行的進程由於某種原因而被系統停止執行這時停止執行的進程要放棄處理機。
2、三種基本狀態的轉換
進程的三種基本狀態及其轉換,如下圖:
為了滿足進程控制塊對數據及操作的完整性要求以及增加管理的靈活性,又引入2個常用的狀態,創建狀態和終止狀態。
(1)創建狀態
創建步驟:先申請一個空白PCB,並向PCB中填寫用於控制和管理進程的信息;然後為該進程分配運行時所需的資源,最後把該進程轉入就緒狀態插入就緒隊列中。
只擁有自己的PCB,但還未擁有一些必須的資源,並且進程還未進入到內存中。創建未完成,進程還不能被調度的狀態即為創建狀態。
處於創建狀態的進程不能直接被CPU調度執行。
(2)終止狀態
進程終止步驟:等待操作系統進行善後處理,將PCB清零,將PCB的空間返還系統。
終止狀態就是停止執行且進程資源已被系統回收所處的一種狀態
一個進程正常結束或異常結束後。 進入終止狀態的進程,不再有執行資格。它的記錄暫時由操作系統保留,其中保存狀態碼和一些計時統計數據,供其他進程收集。其他進程完成信息提取後,操作系統刪除該進程。
處於終止狀態的進程不能再被CPU直接調度執行。
進程的五種基本狀態及其轉換,如下圖:
三、掛起操作和進程狀態的轉換
為了系統和用戶觀察和分析進程的需要,還引入了一個對進程的重要操作,掛起操作。
1、掛起狀態
- 掛起狀態:使原來活動的進程處於靜止狀態
引起掛起狀態的原因:
- 父進程請求
- 負荷調節的需要
- 操作系統的需要
- 終端用戶的請求
2、進程狀態的轉換
在引入掛起的系統中,進程的就緒狀態分為活動就緒和靜止就緒狀態,而進程的阻塞狀態分為活動阻塞和靜止阻塞狀態。
活動就緒(Readya)→→ 靜止就緒(Readys)
活動阻塞(Blockeda)→→ 靜止阻塞(Blockeds)
靜止就緒 →→ 活動就緒
靜止阻塞 →→ 活動阻塞
原語:
是指完成特定功能的,具有原子性的子程序。其中有原語有掛起原語(Suspend)和激活原語(Active)。
具有掛起狀態的進程狀態轉換,如下圖:(有活動和靜止之分)
具有創建、終止和掛起狀態的進程狀態轉換,如下圖:
四、進程控制塊PCB
1、PCB的概念與作用
(1)PCB的概念
PCB是系統為管理進程設置的一個記錄型數據結構,存放用於描述該進程情況和控制進程運行所需的全部信息。系統利用PCB來控制和管理進程,所以PCB是系統感知進程存在的唯一標誌。
進程與PCB是一一對應的,PCB經常被系統訪問,故常駐內存。
(2)PCB的作用
PCB的作用是使一個在多道程序環境下不能獨立運行的程序成為一個能獨立運行的基本單位。
-
作為獨立運行基本單位的標識:系統是通過PCB感知進程的存在。
-
能實現間斷性運行方式:保存CPU現場信息
-
提供進程管理所需要的信息:根據PCB的資源清單了解進程所需要的資源
-
提供進程調度所需要的信息:進程處於什麽狀態
-
實現與其他進程的同步通信:實現諸進程的協調運行。設置通信區域和指針
2、進程控制塊中的信息
(1)進程標識符(唯一地標識一個進程)
- 外部標識符
由創建者提供,通常由字母、數字組成,可重名。
- 內部標識符
系統為每個進程賦予唯一的數字標識符,不可重名。
(2)處理機狀態
- 通用寄存器
用戶可以訪問的寄存器,因此又稱為用戶可視寄存器,用於暫存信息。
- 指令計數器
存放了程序將要訪問的下一條指令的地址。
- 程序狀態字PSW
包含了正在執行程序的狀態信息:條件碼、執行方式、中斷屏蔽標誌等。
- 用戶棧指針
每個用戶都有一個或若幹個與之相關的系統棧,用於存放過程和系統調用參數及調用地址。棧指針指向該棧的棧頂。
(3)進程調度信息
- 進程狀態,指明進程的當前狀態, 作為進程調度和對換時的依據;
-
進程優先級,用於描述進程使用處理機的優先級別的一個整數, 優先級高的進程應優先獲得處理機;
-
進程調度所需的其它信息,它們與所采用的進程調度算法有關,比如,進程已等待CPU的時間總和、 進程已執行的時間總和等;
-
事件,是指進程由執行狀態轉變為阻塞狀態所等待發生的事件,即阻塞原因。
(4)進程控制信息
- 程序和數據的地址,即進程的程序和數據所在的內存或外存(首)地址,以便再調度到該進程執行時,能從PCB中找到其程序和數據;
-
進程同步和通信機制,指實現進程同步和進程通信時必需的機制, 如消息隊列指針、信號量等,它們可能全部或部分地放在PCB中;
-
資源清單,是一張列出了除CPU以外的、進程所需的全部資源及已經分配給該進程的資源的清單;
-
鏈接指針,它給出了本進程(PCB)所在隊列中的下一個進程的PCB的首地址。
3、進程控制塊的組織方式
為了有效地對進程控制塊進行管理,應該采用適當的方式把它們組織起來。
目前常用的組織方式有以下三種:
-
線性方式(適用於進程個數不多的系統)
-
按鏈接方式組織PCB(隊列)
-
按索引方式組織PCB(表)
進程管理——進程的描述