進程和線程

進程和線程

進程:

進程是一塊包含了某些資源的內存區域,操作系統利用進程把它的工作劃分爲一些功能單元。進程中所包含的一個或多個執行單元稱爲線程。進程還擁有一個私有的的虛擬地址空間,該空間僅能被它所包含的線程訪問。

應用程序是由一個或多個相互協作的進程組成

線程:

一個線程包含以下內容:

1> 一個指向當前被執行指令的指令指針

2> 一個棧

3> 一個寄存器值的集合,定義了一部分描述正在執行線程的處理器的狀態的值

4> 一個私有的數據區

一個程序至少有一個進程,一個進程至少有一個線程。

進程在執行過程中有獨立的內存單元,而多個線程共享內存,提高了程序的運行效率。

每個獨立的線程有一個程序運行的入口,順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由程序提供多個線程執行控制。

多線程的意義在於一個應用程序中,有多個執行部分可以同時執行。

進程是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,是系統進行資源分配和調度的一個獨立單位。

線程是進程的一個實體,是CPU調度和分派的基本單位,是比進程更小的能獨立運行的基本單位,線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其他線程共享進程所擁有的全部資源。

一個線程可以創建和撤銷另一個線程,同一個進程中的多個線程之間可以併發執行。


進程和線程的主要差別在於:他們是不同的操作系統資源管理方式。進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其他進程產生影響,而線程只是一個進程中的不同執行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等於整個線程死掉,所以多進程的程序要比多線程的程序強壯,但在進程切換時,耗費資源要大,效率要差一些。但對於一些要求同時進行又要共享某些變量的併發操作,只能用線程,不能用進程。


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