進程及線程

進程

概念

進程概念的引入是在多道程序的環境下,資源共享和程序的併發導致各個程序相互間存在制約關係,故引入了進程。
進程的定義:進程是程序關於數據集合的一次執行,該程序可與其他程序間並行。
每個進程都有自己的地址空間,地址空間內有三大部分,分別是程序、數據集合以及進程控制塊(PCB)。

程序

描述進程要執行的功能,也就是我們的代碼。此部分是執行時不可修改部分。

數據集合

這部分是程序執行所需的數據和動態分配的內存。此部分是執行時可修改的部分。

進程控制塊(PCB)

這部分是爲了描述程序的動態變化,便於系統對進程進行控制管理的。

進程與程序的區別

1.程序是靜態的,進程是動態的,進程是程序的一次執行。(程序寫完後就是一片代碼,是死的!而進程是程序的一次執行,進程是活的!是動起來的!)
2.進程是短暫的,當進程完成它的使命後,就會被撤銷掉,而程序是一直都存在的。
3.一個進程可以執行一個或多個程序,一個程序也可能由一個或多個進程組成。
4.進程是可併發的。
5.傳統操作系統中,進程是系統進行資源分配和調度的基本單位,在引入線程的系統中,進程不再是調度的基本單位。

進程的三種基本調度狀態

在這裏插入圖片描述

1.運行狀態

表示當前進程獲得了處理機資源,處理機正在執行此進程。

2.就緒狀態

表示該進程已具備條件,正在等待分配處理機。

3.阻塞狀態

表示進程暫時不能運行,收到了阻塞,就算處理機空閒也不能使用,在條件滿足之前只能乾等着條件滿足爲止。

進程的控制

進程是由原語來進行控制的。原語的概念:原語的執行不能被中斷!原語操作具有不可分割性!就算一條原語由多條機器語言構成,操作系統也會採用屏蔽中斷的方法來保證原語的不可分割性。原語可用於創建一個新進程,終止一個已完成的進程,或者去終止一個因出現某事件而使其無法運行下去的進程,還可負責進程運行中的狀態轉換。

線程

概念

線程可以看做是進程內的一個執行單位,也就是一個進程包含至少一個線程,是進程中實際的運作單位。

與進程的區別

1.線程是進程內的一部分。
2.進程是資源分配的基本單位,線程是獨立運行和獨立調度的基本單位。
3.進程間的資源空間都是獨立的,而線程是共享一個進程的資源空間。資源是分配給進程的,當線程在執行中需要資源時,系統是從分配給進程的資源中分配給線程。線程都是在進程的地址空間內活動。
4.多進程比多線程更健壯,多線程中當有一個線程死掉後,整個進程也就死掉了,而多進程中有一個進程死掉後,對其他進程並無影響,因爲進程間的地址空間都是分割開的,都有着自己獨立的地址空間,互不影響。

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