進程與PCB(二)
進程控制
進程控制的基本過程:
進程的創建
進程的終止
進程的阻塞與喚醒
進程的掛起和激活
進程中的親屬關系
一般使用進程樹表示:
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(二)