进程的解析
1.什么是進程?
對于進程的定義,從不同的角度可以有不同的定義,典型的定義有:
???? (1)進程 是程序的一次執行。
???? (2)進程是一個程序以及其數據在處理機順序執行時所發生的活動。
???? (3)進程是具有獨立運行功能的程序在數據集合上運行的過程,它是資源分配的基本單位。
2.進程的特征:
? (1)動態性
? (2)并發性
??(3)獨立性
? (4)異步性
3.進程的管理:
? (1)進程的控制
? (2)進程的同步
? (3)進程的通信
?
4.對于進程的控制這部分有以下重點
(1)操作系統內核
??????? 1.支撐功能:
??????????? 中斷處理
??????????? 時鐘管理
??????????? 原語操作
??????? 2.資源管理功能:
?????????? 進程管理
????????? ?存儲器管理
???????????設備管理
(2)進程的創建
??????1 .申請空白PCB,為新進程申請獲得唯一的數字標識符,并從PCB集合中索取一個空白PCB。
???????????? 初始化處理機狀態信息將系統分配的標志符和父進程的標識符填入新PCB中
???????????? 初始化處理機控制信息
????? 4.將新進程插入就緒隊列中 (3)進程的終止
????? 1.正常結束
????? 2.異常結束
????? 3.外界干預
(4)進程的基本狀態及轉換
??????1.就緒狀態
???????????當進程已分配到除CPU以外的所有必要資源后,只要獲得CPU,便可以立即執行,這時候的進程狀態稱為就緒狀態,如果系統有很多就緒狀態的進程,通常將它們按照一定的策略 (優先級策略)排成一個隊列,稱該隊列為就緒隊
??????2.執行狀態
?????????? 進程已獲得CPU,其程序正在執行的狀態。在單處理機系統中,只有一個進程處于執行狀態,而多處理機系統中,有多個進程處于執行狀態。
??????3.阻塞狀態
???????????正在執行的進程由于發生某事件(如I/0請求,申請緩沖失敗)暫時無法執行狀態,進程發生阻塞,把這種進程的狀態稱之為 阻塞狀
(5)掛起操作與進程狀態的轉換出于用戶觀察需要,進程可以執行掛起和激活兩種操作。掛起是將活躍狀態轉為掛起狀態,使進程不再被系統調用;激活是將掛起狀態轉為活躍狀態。
進程掛起的幾種情況:
- 終端用戶的需要:當終端用戶在運行程序期間發現有可疑問題,希望暫停程序的運行以便研究其執行情況或做一定的修改;
- 父進程請求;
- 符合調節的需要;
- 操作系統的需要:有時希望掛起某些進程以便檢查運行中的資源使用情況或進行記賬。
掛起原語(Suspend)的執行過程如下:
激活原語(Active)的執行過程如下:
?
? (6)進程狀態
- 運行狀態:進程正在處理機上運行。在單處理機環境下,每一時刻最多只有一個進程處于運行狀態;
- 就緒狀態:進程已處于準備運行的狀態,獲得了除處理機之外的一切所需資源,一旦得到處理機即可運行。
- 阻塞狀態,又稱等待狀態:進程正在等待某一事件而暫停運行,如等待某資源為可用(不包括處理機)或等待輸入/輸出完成。即使處理機空閑,該進程也不能運行。
- 創建狀態:進程正在被創建,尚未轉到就緒狀態。創建步驟包括:申請空白的 PCB,向 PCB 中填寫一些控制和管理信息,系統向進程分配運行時所需的資源。
- 結束狀態:進程正常結束、發生錯誤或者系統中斷退出運行。系統必須首先將進程置為結束狀態,再進一步處理資源釋放及回收工作。
總結