淺談進程和線程的個人理解

#進程和線程

首先什麼是進程? 進程是操作系統動態執行的基本單元,進程就可以說是一段程序的執行過程,當我們有很多程序同時執行時,就有了一種類似於排隊的模式,就如說我們去銀行櫃檯取錢,爲了同時進行,我們可以規定讓每個人一次只能取500,取完之後就下一個人取,如此循環,先取完就等同於程序執行完了,然後慢的就繼續剛剛的排隊。

線程又是什麼呢。線程是操作系統動態執行的最小單元,爲什麼要引入線程。因爲比如你取完錢還有比較重要的事要去做,你就希望快點把錢取完,然後你就可以喊你基友,女票,你的爸媽等過來和你一起排隊,這樣取錢的速度就會變快,你叫的那些人就可以理解爲多個線程。我們通常把進程作爲分配資源的基本單位,而線程基本不佔用資源,所以系統對它的調度開銷就會小一些,能夠更高效的提高多個程序同時執行的效率。

多線程是通過提高系統資源的利用率來提高我們的運行效率,多線程之間是資源共享的。

#按照專業的回答:
進程的概念主要有兩點:第一,進程是一個實體,每一個進程都有它自己的地址空間,一般情況下,包括文本區域(text region) 數據區域(data region)和堆棧(stack region),文本區域存儲處理器執行的代碼;數據區域存儲變量和進程執行期間使用的動態分配的內存;堆棧區域存儲着活動過程調用的指令和本地變量,第二,進程是一個“執行中的程序”。程序是一個沒有生命的實體,只有處理器賦予程序生命時(操作系統執行時),他才能成爲一個活動的實體,我們稱之爲進程。

線程,有時被稱爲輕量進程,是程序執行流的最小單元,一個標準的線程由線程ID,當前指令指針(PC),寄存器集合和堆棧組成。另外,線程是進程中的一個實體,是被系統獨立調度和分配的基本單位,線程自己不用擁有系統資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬於一個進程的其他線程共享進程所擁有的全部資源,一個線程可與創建和撤銷另一個線程,同一進程中的多個線程之間可與併發執行。由於線程之間的互相制約,致使線程在運行中呈現出間斷性。線程也有就緒,阻塞和運行三種基本狀態。就緒狀態是指線程具備運行的縮影條件,邏輯可以運行,在等待處理器;運行狀態是指線程佔有處理器正在運行;阻塞狀態是指線程在等待一個事件(如某個信號量),邏輯上不可執行。每一個程序都至少有一個線程,若程序只有一個線程,那就是程序本身。

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