進程與線程區別,爲什麼進入進程機制?

(1)

程序是計算機指令的集合,它以文件的形式存儲在磁盤上。

進程是爲了描述程序在併發執行時對系統資源的共享,所需的一個描述程序執行時動態特徵的概念。

進程是具有獨立功能的程序關於某個數據集合的一次運行活動,是系統進行資源分配、調度和保護的單位。因此它可以使用系統中的運行資源。

線程又稱之爲輕量級進程,是進程中的一個運行實體,作爲CPU的調度單位。(但,在多線程系統中,資源分配的單位,或資源擁有者還是進程)

(2)進程與線程的比較

1.進程是資源分配的基本單位。進程也是搶佔處理機的調度單位,它擁有一個完整的虛擬地址空間。而線程與資源分配無關,它屬於某一個進程,並與進程內其他線程一起共享進程的資源。

2.當進程發生調度時,不同的進程擁有不同的虛擬地址空間,而同一進程內的不同線程共享同一地址空間。

3.線程只由相關堆棧寄存器和線程控制塊(TCB)組成。寄存器可被用來存儲線程內的局部變量,但不能存儲其他線程的相關變量。

4.進程切換時涉及有關資源指針的保存以及地址空間變化等問題;線程切換時由於進程內不同線程共享資源和地址空間,將不涉及資源保存和地址變化問題,從而減少了操作系統開銷時間。而且,進程的調度與切換都是由操作系統內核完成,而線程既可以由操作系統內核完成,也可由用戶程序完成。

5.進程間關係比較疏遠。各個進程在自己獨有的地址空間內執行,不但寄存器和堆棧是獨有的,動態數據堆、靜態數據區和程序代碼也相互獨立。而線程間關係則較爲緊密,雖然線程爲保持自己的控制流而獨有寄存器和棧,但由於兩線程同屬於一進程,他們共享同一地址空間,所以動態堆、靜態數據區及程序代碼爲各線程共享。



發佈了50 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章