进程的概念
進程的概念
?
????????? 進程(Process)是計算機中的程序關于某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。
????????? 在早期面向進程設計的計算機結構中,進程是程序的基本執行實體,在當代面向線程設計的計算機結構中,進程是線程的容器。
????????? 程序是指令、數據及其組織形式的描述,進程是程序的實體。
?
????????? 進程的提出
????????? 進程是60年代初首先由麻省理工學院的MULTICS系統和IBM公司的CTSS/360系統引入的。
????????? 進程是一個具有獨立功能的程序關于某個數據集合的一次運行活動,它可以申請和擁有系統資源,是一個動態的概念,是一個活動的實體,它不只是程序的代碼,還包括當前的活動,通過程序計數器的值和處理寄存器的內容來表示。
?
????????? 進程的定義
????????? 狹義定義:進程是正在運行的程序的實例?????????????????????????????????????? (an instance of a computerprogram that is being executed)。
????????? 廣義定義:進程是一個具有一定獨立功能的程序關于某個數據集合的一次運行活動。它是操作系統動態執行的基本單元,在傳統的操作系統中,進程既是基本的分配單元,也是基本的執行單元。
????????? 進程是操作系統中最基本、重要的概念,是多道程序系統出現后,為了刻畫系統內部出現的動態情況,描述系統內部各道程序的活動規律引進的一個概念,所有多道程序設計操作系統都建立在進程的基礎上。
?
????????? 進程的概念主要有兩點
????????? 第一、進程是一個實體。
????????? 每一個進程都有它自己的地址空間,一般情況下,包括文本區域(textregion)、數據區域(dataregion)和堆棧(stack region)。
????????? 文本區域存儲處理器執行的代碼;數據區域存儲變量和進程執行期間使用的動態分配的內存;堆棧區域存儲著活動過程調用的指令和本地變量。
????????? 第二、進程是一個“執行中的程序”。
????????? 程序是一個沒有生命的實體,只有處理器賦予程序生命時(操作系統執行之),它才能成為一個活動的實體,我們稱其為進程。
?
????????? 引入進程的原因
????????? 為了能正確反映程序執行時,的活動規律和狀態變化,需要引入一個新的概念——進程,從變化的角度,動態的分析和研究程序的執行。
????????? 1、提高資源的利用率
????????? 把一個計算問題中的,可獨立執行的程序模塊,看做一個進程來處理,比如輸入進程、處理進程、打印進程,通過進程的同步,可以這些進程正確合作,從而是處理器和外圍設備并行的工作,提高資源的利用率。
????????? 2、正確的描述程序的執行情況
????????? 從程序的角度無法正確的描述程序的執行狀態,尤其是采用多道程序設計,引入進程是非常必要的。
????????? 從理論角度看,是對正在運行的程序過程的抽象。
????????? 從實現角度看,是一種數據結構,目的在于清晰地刻畫動態系統的內在規律,有效管理和調度進入計算機系統主存儲器運行的程序。
?
????????? 進程的特征
????????? 動態性:進程的實質是程序在多道程序系統中的一次執行過程,進程是動態產生,動態消亡的。
????????? 并發性:任何進程都可以同其他進程一起并發執行
????????? 獨立性:進程是一個能獨立運行的基本單位,同時也是系統分配資源和調度的獨立單位;
????????? 異步性:由于進程間的相互制約,使進程具有執行的間斷性,即進程按各自獨立的、不可預知的速度向前推進
????????? 結構特征:進程由程序、數據和進程控制塊三部分組成。
????????? 多個不同的進程可以包含相同的程序:一個程序在不同的數據集里就構成不同的進程,能得到不同的結果;但是執行過程中,程序不能發生改變。
?
????????? 進程的內容
????????? 程序的可運行機器碼的一個在存儲器的映像。
????????? 分配到的存儲器(通常包括虛擬內存的一個區域),存儲器的內容包括可運行代碼、特定于進程的數據(輸入、輸出)、調用堆棧、堆棧(用于保存運行時運數中途產生的數據)。
????????? 分配給該進程的資源的操作系統描述符,諸如文件描述符(Unix術語)或文件句柄(Windows)、數據源和數據終端。安全特性,諸如進程擁有者和進程的權限集(可以容許的操作)。處理器狀態(內文),諸如寄存器內容、物理存儲器尋址等。
????????? 當進程正在運行時,狀態通常儲存在寄存器,其他情況在存儲器。
?
????????? 進程的狀態
????????? 進程執行時的間斷性,決定了進程可能具有多種狀態,運行中的進程可能具有以下三種基本狀態。
?
????????? 1、就緒狀態(Ready)
????????? 進程已獲得除處理器外的所需資源,等待分配處理器資源;只要分配了處理器進程就可執行,就緒進程可以按多個優先級來劃分隊列。
????????? 例如,當一個進程由于時間片用完而進入就緒狀態時,排入低優先級隊列,當進程由I/O操作完成而進入就緒狀態時,排入高優先級隊列。
????????? 2、運行狀態(Running)
????????? 進程占用處理器資源,處于此狀態的進程的數目小于等于處理器的數目,在沒有其他進程可以執行時(如所有進程都在阻塞狀態),通常會自動執行系統的空閑進程。
????????? 3、阻塞狀態(Blocked)
????????? 由于進程等待某種條件(如I/O操作或進程同步),在條件滿足之前無法繼續執行,該事件發生前即使把處理器資源分配給該進程,也無法運行。
????????? 每個進程在執行過程中的任一時刻,當且僅當處于上述三種基本狀態之一。
?
總結
- 上一篇: UML之状态图
- 下一篇: 数据库中char varchar nch