狹義定義:進程是正在運行的程序的實例(an instance of a computer program that is being executed)。
廣義定義:進程是一個具有一定獨立功能的程序關于某個數(shù)據(jù)集合的一次運行活動涧窒。它是操作系統(tǒng)動態(tài)執(zhí)行的基本單元罢防,在傳統(tǒng)的操作系統(tǒng)中叨襟,進程既是基本的分配單元床蜘,也是基本的執(zhí)行單元粥诫。
進程的概念主要有兩點:
第一油航,進程是一個實體。每一個進程都有它自己的地址空間怀浆,一般情況下谊囚,包括文本區(qū)域(text region)、數(shù)據(jù)區(qū)域(data region)和堆棧(stack region)执赡。文本區(qū)域存儲處理器執(zhí)行的代碼镰踏;數(shù)據(jù)區(qū)域存儲變量和進程執(zhí)行期間使用的動態(tài)分配的內存;堆棧區(qū)域存儲著活動過程調用的指令和本地變量沙合。
第二奠伪,進程是一個“執(zhí)行中的程序”。程序是一個沒有生命的實體,只有處理器賦予程序生命時(操作系統(tǒng)執(zhí)行之)绊率,它才能成為一個活動的實體谨敛,我們稱其為進程。
?進程是操作系統(tǒng)中最基本滤否、重要的概念脸狸。是多道程序系統(tǒng)出現(xiàn)后,為了刻畫系統(tǒng)內部出現(xiàn)的動態(tài)情況藐俺,描述系統(tǒng)內部各道程序的活動規(guī)律引進的一個概念,所有多道程序設計操作系統(tǒng)都建立在進程的基礎上肥惭。
原因 操作系統(tǒng)引入進程的概念的原因: 從理論角度看,是對正在運行的程序過程的抽象紊搪; 從實現(xiàn)角度看蜜葱,是一種數(shù)據(jù)結構,目的在于清晰地刻畫動態(tài)系統(tǒng)的內在規(guī)律耀石,有效管理和調度進入計算機系統(tǒng)主存儲器運行的程序牵囤。
?特征 動態(tài)性:進程的實質是程序在多道程序系統(tǒng)中的一次執(zhí)行過程,進程是動態(tài)產生滞伟,動態(tài)消亡的揭鳞。
并發(fā)性:任何進程都可以同其他進程一起并發(fā)執(zhí)行
獨立性:進程是一個能獨立運行的基本單位,同時也是系統(tǒng)分配資源和調度的獨立單位梆奈; 異步性:由于進程間的相互制約野崇,使進程具有執(zhí)行的間斷性,即進程按各自獨立的亩钟、不可預知的速度向前推進
結構特征:進程由程序乓梨、數(shù)據(jù)和進程控制塊三部分組成。 多個不同的進程可以包含相同的程序:一個程序在不同的數(shù)據(jù)集里就構成不同的進程清酥,能得到不同的結果扶镀;但是執(zhí)行過程中,程序不能發(fā)生改變焰轻。
狀態(tài) 進程的三個基本狀態(tài) 進程的三個基本狀態(tài) 進程執(zhí)行時的間斷性臭觉,決定了進程可能具有多種狀態(tài)。事實上辱志,運行中的進程可能具有以下三種基本狀態(tài)蝠筑。
1)就緒狀態(tài)(Ready): 進程已獲得除處理器外的所需資源,等待分配處理器資源揩懒;只要分配了處理器進程就可執(zhí)行什乙。就緒進程可以按多個優(yōu)先級來劃分隊列。例如旭从,當一個進程由于時間片用完而進入就緒狀態(tài)時稳强,排入低優(yōu)先級隊列;當進程由I/O操作完成而進入就緒狀態(tài)時和悦,排入高優(yōu)先級隊列退疫。
?2)運行狀態(tài)(Running): 進程占用處理器資源;處于此狀態(tài)的進程的數(shù)目小于等于處理器的數(shù)目鸽素。在沒有其他進程可以執(zhí)行時(如所有進程都在阻塞狀態(tài))褒繁,通常會自動執(zhí)行系統(tǒng)的空閑進程。
?3)阻塞狀態(tài)(Blocked): 由于進程等待某種條件(如I/O操作或進程同步)馍忽,在條件滿足之前無法繼續(xù)執(zhí)行棒坏。該事件發(fā)生前即使把處理器資源分配給該進程,也無法運行遭笋。