進程及進程狀態

進程的概念及定義

定義:進程是一個具有獨立功能的程序關於某個數據集合的運行過程。它是系統進行資源分配和調度的獨立單位,是一個活動的實體。

注意:進程的定義不唯一,這個是我覺得最準確的定義。還有一點,在沒有引入線程前,資源分配和調度的基本單位都是進程。有了線程後,進程仍然是資源分配的基本單位,而調度的最小單位是線程。

在多道環境下,引入進程的概念,以便更好地描述和控制程序的併發執行,實現操作系統的併發性和共享性(最重要的兩個特性)。爲了使參與併發的程序能夠獨立地運行,必須要有一個專門的數據結構——進程控制塊(Process Control Block,PCB),系統利用PCB來描述進程的基本情況和運行狀態,進而控制和管理進程。相應地,程序段、相關數據段、和PCB三部分構成了進程實體(依然是靜態的,因爲沒有獲得處理器資源)。創建進程,實質上是創建進程的PCB;而撤銷進程,實質上是撤銷進程的PCB。所以PCB是進程存在的唯一標誌。

操作系統中的資源:抽象的理解成時間和空間。以時間爲例,分時操作系統中的"時間片"資源。以空間爲例,內存空間和一些寄存器空間。

 

進程的特徵

動態性:進程是程序在系統中的執行過程,具有一定的生命週期,進程是動態產生,動態消亡的。

併發性:多個進程實體同事存在於內存中,能在一段時間內同時運行。引入進程的目的就是爲了是程序能與其他進程併發執行,以提過資源利用率。

獨立性:進程是一個能獨立運行、獲取資源和接受調度的基本單位;

異步性由於進程間的相互制約,使進程具有執行的間斷性,即進程按各自獨立的、不可預知的速度向前推進。異步性會導致執行結果的不可再現性,爲此在操作系統中必須採用相應的進程同步機制。

結構性:進程由程序段、數據段和PCB三部分組成。

 

進程的狀態

由於系統中各進程之間的相互制約關係及系統的運行環境的變化,使得進程的狀態也是在不斷地發生變化。通常進程有以下五種狀態,前三種是基本狀態。

(1)就緒狀態進程已獲得除處理器外的所有資源,等待分配處理器資源,只要分配了處理器進程就可執行。就緒進程可以按多個優先級來劃分隊列。例如,當一個進程由於時間片用完而進入就緒狀態時,排入低優先級隊列;當進程由I/O操作完成而進入就緒狀態時,排入高優先級隊列。

(2)運行狀態:進程獲得處理器資源;處於此狀態的進程的數目小於等於處理器的數目。在沒有其他進程可以執行時(如所有進程都在阻塞狀態),通常會自動執行系統的空閒進程。

(3)阻塞狀態:由於進程等待某種條件(如資源不足、I/O操作或進程同步),在條件滿足之前無法繼續執行。即使處理器資源空閒,該進程也無法運行。

(4)創建狀態:進程正在被創建,尚未轉到就緒態。創建進程通常需要多個步驟:首先申請一個空白的PCB,並向PCB中填寫一些控制和管理進程的信息;然後有系統爲該進程分配運行是所需的資源;最後把該進程轉入就緒態。

(5)終止狀態:進程正從系統中消失,可能是正常結束或其他原因中斷退出運行。進程需要結束運行時,系統首先置該進程爲結束態,然後再進一步處理資源釋放和回收等工作。

 

狀態轉換圖如下:

就緒態 -> 運行態:處於就緒態的進程被調度後,獲取處理器資源,於是進程由就緒態轉換爲運行態。

運行態 -> 就緒態:處於運行態的進程在時間片用完後,讓出處理器,該進程有運行態轉換爲就緒態。此外,在可剝奪的調度策略中,當有高優先級的進程就緒時,調度程序將正在執行的進程轉換爲就緒態,讓更高優先級的進程執行。

運行態 -> 阻塞態:進程請求某一資源的使用、分配或等待某一件事發生時,它就從運行態轉換爲阻塞態。

阻塞態 -> 就緒態:進程等待的事件到來時,如I/O操作結束或中斷結束時,中斷處理程序必須把相應的狀態有阻塞態轉換爲就緒態。

分辨運行態是轉換成就緒態還是阻塞態,只需要看此時該進程所佔有的資源的情況。若該進程的資源沒有被剝奪,也沒有申請新的資源而沒有得到,則處於就緒態。反之處於阻塞態。

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