現在作業系統可以同時運行多個任務,例如一邊聽歌,一邊碼字,一邊瀏覽網頁,同時還有很多任務在后臺運行著,對于作業系統來說,一個任務就是一個行程(process),當我們在碼字的時候,word可以同時進行打字,列印等等,打字,列印又對應著行程里的執行緒,
一、概念
行程:行程(Process)是計算機中的程式關于某資料集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是作業系統結構的基礎,
執行緒:執行緒(thread)是作業系統能夠進行運算調度的最小單位,它被包含在行程之中,是行程中的實際運作單位,
二、區別
行程與執行緒的關系就像火車與車廂的關系,在這里我把行程看作火車,把執行緒看作車廂,
1、根本區別
執行緒是程式執行的最小單位,而行程是作業系統分配資源的最小單位,
只有火車能在鐵軌上運行,單獨一個車廂無法在鐵軌上運行,
2、包含關系
一個行程由一個或多個執行緒組成,執行緒是一個行程中代碼的不同執行路線,
一列火車有多節車廂,每節車廂程載著相應的旅客,
3、記憶體分配
行程之間相互獨立,但同一行程下的各個執行緒之間共享程式的記憶體空間,
當我們坐火車時,我們可以從頭車廂到尾車廂,
4、資源開銷
執行緒之間切換的開銷要遠遠高于行程切換的開銷
當我們想要從一節車廂轉移到另一節車廂的時候,我們會發現很容易,直接溜溜達達的過去就可以了,但是當我們嘗試從這列火車上換到另外一列火車上的時候會發現要困難很多,
5、影響關系
一個行程崩潰后,在保護模式下不會對其他行程產生影響,但是一個執行緒崩潰整個行程都死掉,
在火車運行程序中,其中一節車廂突然發生火災,此時火車將無法繼續運行,但是對于其他軌道上的火車并沒有太大影響,
6、執行程序
執行緒不能單獨執行,
火車在運行時,需要從始發站發車,順序經過途徑站點,最終在重點站結束旅程,車廂必須依附于火車才能實作旅程,
著作權宣告:本文為博客園博主「Spear_J」的原創文章,撰寫不易,轉載請附上原文出處鏈接及本宣告,
https://www.cnblogs.com/lmh15054109/p/15541116.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/356016.html
標籤:Java
