1. 程式人生 > >進程與PCB(二)

進程與PCB(二)

spa 服務 方便 進程創建 .com lin 結束 滿足 creat

進程控制

進程控制的基本過程:

進程的創建

進程的終止

進程的阻塞與喚醒

進程的掛起和激活

進程中的親屬關系

一般使用進程樹表示:

技術分享圖片

1 創建進程:

(1) 申請空白PCB

(2) 為新進程分配資源

主要是內存資源的處理

(3) 初始化進程控制塊

標識符(包括父進程的)、程序計數器指向程序入口地址,就緒態、優先級等信息的填寫。

(4) 將新進程插入就緒隊列

註:os通過調用進程創建原語Create()創建新進程

2 進程終止

原因:(1)正常結束

(2)異常結束

(3)外界幹預

步驟:

(1) 根據進程標示符,檢索出該進程PCB,讀其狀態

*IF 執行態,立即終止該進程,置調度標誌為真,指示重新進行調度。

*IF 有子孫進程,亦應予以終止,以防成為不可控進程。

(2) 歸還全部資源至其父進程或系統。

(3) 將該進程PCB從所在隊列或鏈表中移出。

3 進程的阻塞與喚醒

引起阻塞與喚醒的事件:

請求系統服務的滿足情況

啟動某種需等待(I/O)操作

合作需要的新數據尚未到達

執行某功能的進程暫時無新工作可做(如發送數據進程)

阻塞與喚醒過程:

由進程調用阻塞原語阻塞自己,是主動行為:

(1)將PCB中的狀態改為阻塞

(2)該PCB加入到阻塞隊列中

(3)轉進程調度,將處理機分配給另一進程

(4)進行進程切換,即根據兩切換進程的PCB,保護與重新設置處理機狀態。

註:阻塞與喚醒原語作用相反,成對使用

技術分享圖片

4 進程的掛起與激活

掛起原語將指定進程或阻塞進程掛起。

(1)檢查被掛起進程的狀態,活動就緒則改為靜止就緒,活動阻塞則改為靜止阻塞

(2)將該PCB復制到內存(方便檢查)/外存(對換)指定區域

(3)*若掛起的進程是執行態,則需重新進行進程調度。

註:

? 若掛起進程在外存上,將其調入內存

? 檢查進程狀態,若處於靜止就緒,則改為活動就緒,若處於靜止阻塞,則改為活動阻塞

技術分享圖片

進程與PCB(二)