面試不能不懂的進程與線程

進程的概念

爲什麼引入進程?
在多道程序同時運行的背景下,進程之間需要共享系統資源,這樣就會導致各程序在執行過程中出現相互制約的關係,程序的執行就會表現出間斷性的特徵。這些特徵都是在程序的執行過程中發生的,是動態的過程,而傳統的程序本身是一組指令的集合,是一個靜態的概念,無法描述程序在內存中的執行情況,因此,程序這個靜態概念已不能如實的反映程序併發執行過程的特徵。爲了深刻描述程序動態執行過程的性質乃至更好地支持和管理多道程序的併發執行,引入了進程概念。
什麼是進程及其組成?
進程是一個具有獨立功能的程序關於某個數據集合的一次運行活動。它可以申請和擁有系統資源,是一個動態的概念,是一個活動的主體,不只是程序的代碼本身,還包括當前的活動,通過程序計數器的值和處理寄存器的內容來表示。
一個進程實體由程序段、相關數據段和PCB三部分組成,其中PCB是標誌一個進程存在的唯一標識,程序段是進程運行的程序的代碼,數據段則存儲程序運行過程中相關的一些信息。
進程如何解決問題?
進程把能夠識別程序運行狀態的一些變量存放在PCB之中,通過這些變量系統能夠更好地瞭解進程的狀況,並在適當的時候進行進程的切換,以避免一些資源的浪費,甚至劃分爲更小的調度單位線程來提高系統的併發度。
進程的基本特性:
(1)動態性:進程是程序的一次執行,他有着創建、活動、暫停、終止等過程,具有一定的生命週期,是動態地產生、變化和消亡的。動態性是進程最基本的特性。
(2)併發性:指多個進程實體,同存於內存中,能在一段時間內同時運行,併發性是進程的重要特徵,同時也是操作系統的重要特徵。引入進程的目的就是爲了使程序能與其他進程的程序併發執行,以提高資源利用率。
(3)獨立性:指進程實體是一個能獨立運行、獨立獲得資源和獨立接受調度的基本單位。凡未建立PCB的程序都不能作爲一個獨立的單位參與運行。
(4)異步性:由於進程的相互制約,使程序具有執行的間斷性,即進程按各自獨立的、不可預知的速度向前推進。異步性會導致執行結果的不可再現性,位次,在操作系統中必須配置相應的進程同步機制。
(5)結構性:每個進程都配置一個PCB對其進行描述。從結構上看,進程實體是由程序段、數據段和進程控制段三部分組成的。

線程的概念

引入進程的目的是爲了更好地使用多道程序併發執行,以提高資源利用率和系統吞吐量,增加併發程度;而引入線程,則是爲了減小程序在併發執行時所付出的時空開銷,提高操作系統的併發性能。
線程最直接的理解就是輕量級進程,它是基本的CPU執行單位,也是程序執行流的最小單元,由線程ID、程序計數器、寄存器集合和堆棧組成。線程是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其他線程共享進程所擁有的全部資源。一個線程可以創建和撤銷另一個線程,同一個進程中的多個線程之間可以併發執行。由於一個進程內部有多個線程,如果線程的切換髮生在同一個進程內部,則只需要很少的時空開銷。

進程與線程的比較

(1)調度。在傳統的操作系統中,擁有資源和獨立調度的基本單位都是進程。在引入線程的操作系統中,線程是獨立調度的基本單位,進程是擁有資源的基本單位。在同一進程中,線程的切換不會引起進程切換。在不同進程中使用線程切換,會引起進程切換。
(2)擁有資源。進程是擁有資源的基本單位,而線程不擁有系統資源(也有一點必不可少的資源),但線程可以訪問其隸屬進程的系統資源。
(3)併發性。在引入線程的操作系統中,不僅進程之間可以併發執行,而且多個線程之間也可以併發執行,從而使操作系統具有更好的併發性,提高了系統的吞吐量。
(4)系統開銷。由於創建或撤銷進程時,系統都要爲之分配或回收資源,因此操作系統所付出的開銷遠大於創建或撤銷線程時的開銷。
(5)地址空間和其他資源。進程的地址空間相互獨立,同一進程的各線程間共享進程的資源,某進程內的線程對於其他進程不可見。

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