進程的定義、組成、組織方式、特征

一、進程的定義
程序
程序:就是一個指令序列
早期的計算機(只支持單道程序):內存中在同一時刻同一時間段內,只會存在一個程序相關數據,包括程序段和數據段;CPU和I/O設備也被一個程序占有。程序的代碼放在程序段內,程序運行過程處理的數據放在數據段內(如變量)
引入多道程序后,內存中同時放入多道程序,各個程序的代碼、運算數據存放的位置不同。操作系統要怎么才能找到各程序的存放位置呢?
系統為每個運行的程序配置一個數據結構,稱為進程控制塊(PCB),用來描述進程的各種信息(如程序代碼存放位置)
為了方便操作系統管理,完成各程序並發執行,引入了進程、進程實體的概念
PCB、程序段、數據段三部分構成了進程實體(進程映像)。一般情況下,我們把進程實體就簡稱為進程,例如,所謂創建進程,實質上是創建進程實體中的PCB;而撤銷進程,實質上是撤銷進程實體中的PCB。
注意:PCB是進程存在的唯一標志!
定義
從不同的角度,進程可以有不同的定義,比較傳統典型的定義有(強調“動態性”):
1.進程是程序的一次執行過程。
2.進程是一個程序及其數據在處理機上順序執行時所發生的活動。
3.進程是具有獨立功能的程序在數據集合上運行的過程,它是系統進行資源分配和調度的一個獨立單位
引入進程實體的概念后,可把進程定義為:
進程是進程實體的運行過程,是系統進行資源分配和調度的一個獨立單位。
注:嚴格來說,進程實體和進程並不一樣,進程實體是靜態的,進程則是動態的。不過,除非題目專門考察二者區別,否則可以認為進程實體就是進程。因此我們也可以說“進程由程序段、數據段、PCB三部分組成”
二、進程的組成
進程(進程實體)由程序段、數據段、PCB三部分組成。
PCB:操作系統通過PCB來管理進程,因此PCB中應該包含操作系統對其進行管理所需的各種信息。
程序段:程序代碼即存放在此
數據段:程序運行時使用、產生的運算數據。如全局變量、局部變量、宏定義的常量就存放在數據段內


三、進程的組織
在一個系統中,通常有數十、數百乃至數千個PCB。為了能對他們加以有效的管理,應該用適當的方式把這些PCB組織起來。
注:進程的組成討論的是一個進程內部由哪些部分構成的問題,而進程的組織討論的是多個進程之間的組織方式問題



四、進程的特征
進程和程序是兩個截然不同的概念,相比於程序,進程擁有以下特征:

動態性是進程最基本的特征
進程是資源分配、接受調度的基本單位
異步性會導致並發程序執行結果的不確定性。具體會在“進程同步”相關小節進行學習

