計算機操作系統(8):進程的控制

2.2  進程控制

  1. 進程控制是進程管理中最基本的功能。
  2. 進程控制包括:

    ◆ 創建進程

    ◆ 終止進程

    ◆ 進程狀態轉換

  1. 進程控制是由OS的內核完成的。

2.2.1  進程的創建

2.進程的創建

調用進程創建原語Create(),按下述步驟創建一個進程

(1)申請空白PCB;

(2)爲新進程分配資源。主要是內存空間。

(3)初始化PCB。包括:

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

2.2.2  進程的終止

2.進程的終止過程

OS調用終止原語,按下述過程終止進程:

  1. 根據被終止進程的標識,從PCB集合中找除該進程的PCB,讀出該進程狀態。
  2. 若被終止進程正處於執行狀態,應立即終止其執行,並置調度標誌爲真,用於指示該進程被終止後應重新進行調度。若該進程還有子孫進程,應將其所有子孫進程終止,以防止它們成爲不可控進程。
  3. 將被終止進程的所有資源,或者歸還給其父進程,或者歸還給系統。
  4. 將被終止進程(它的PCB)從所在隊列中移出,等待其他進程來搜索信息。 

2.2.3  進程的阻塞和喚醒

2.進程阻塞過程

調用阻塞原語block把自己阻塞。(主動行爲)

阻塞(block)過程:

  1. 立即停止執行;
  2. 把PCB中進程狀態由“執行”改爲“阻塞”;
  3. 將PCB插入具有相同事件的阻塞隊列;
  4. 轉進程調度程序,將處理機分配給某個就緒進程,並進行進程切換——保留被阻塞進程的處理機狀態(在PCB中),再按新進程的PCB中處理機狀態設置CPU的環境。 
  5. 3.進程喚醒過程
  6. 調用喚醒原語wakeup( ),將等待事件的進程喚醒。
  7. 喚醒原語執行過程:
  8. ▲將被喚醒進程的PCB從阻塞隊列移出;
  9. ▲將其PCB中進程狀態由“阻塞”改爲“就緒”;
  10. ▲將改PCB插入到就緒隊列中。

2.2.4  進程的掛起和激活

1.進程的掛起

當出現了引起進程掛起的事件時(用戶進程請求將自己掛起,或父進程請求將子進程掛起),系統將用掛起原語suspend( )將指定進程或處於阻塞狀態的進程掛起。

掛起原語的執行過程

2.進程的激活

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章