首页
/
每日頭條
/
生活
/
linux進程和線程的區别
linux進程和線程的區别
更新时间:2024-10-01 15:35:31

Linux進程與線程的區别,早已成為IT界經常讨論但熱度不減的話題。無論你是初級程序員,還是資深專家,都應該考慮過這個問題,隻是層次角度不同罷了。對于一般的程序員,搞清楚二者的概念并在工作中學會運用是其思考的主要問題;對于資深工程師,如何在系統層面實現兩種技術及其各自的性能和實現代價是其思考的主要問題。由此可見進程和線程在IT界的重要地位。

linux進程和線程的區别(Linux中進程與線程的概念以及區别)1

進程和線程是操作系統的基本概念,它們之間既有區别又有聯系。從定義來看,它們比較抽象,很難理解。今天給大家打個比方,教大家用類比的方法去理解它,掌握它。其實,進程和線程的關系就好比是工廠車間和車間工人的關系,進程就像是一個工廠車間,線程就像是車間裡的工人,每個工廠車間有一個入口和出口,這就好比執行進程程序的主函數;每個工廠車間都有自己的地址空間,這個空間裡邊可以包含不同工種的工人,這就好比一個進程的地址空間,包含文本區域,數字區域,堆棧;一個工廠車間可以容納1個或n車間工人,進程和線程是一對一或一對多的關系,一個進程至少包含一個線程;車間裡的工人共享車間裡的空間,這象征着一個進程的内存空間是共享的,每個線程都可以使用共享内存;每個車間可以供不同的工人使用,但每個車間的大小不一,容納人數都有上限,比如說每個廁所可以容納1人,每個廚房可以容納n人,但車間裡的每個工人都有上廁所和吃飯的需求,那怎麼解決這個問題呢?分批次進行!這就好比線程裡的鎖機制,當n個線程争奪同一資源時,就在這個資源上加把鎖,當線程使用完畢,資源釋放後才會供給後邊的資源使用。有人可能會問,怎麼确定使用該資源的先後順序呢?按照優先級的高低來确定,優先級高的先使用,優先級低的後使用,同一級别按照先來後到的順序使用。

通過這個故事我麼可以看出,操作系統的設計可以歸納為3點:

(1) 以多進程形式,允許多個任務同時運行,也就是允許工廠裡的多個車間同時工作;

(2) 以多線程形式,允許單個任務分成不同的部分運行,也就是允許同一車間可以有不同的工種完成不同的任務;

(3) 提供協調機制,一方面防止進程和線程之間産生沖突,另一方面進程和線程之間共享資源。

我們大緻對進程和線程有一個基本的概念之後,接下來再來看下進程和線程之間的區别:

(1) 進程的執行過程是順序執行的,雖然在執行過程中可能發生中斷或暫停,但該進程所擁有的資源隻為該線狀執行過程服務。就好比一次隻能給一個車間供電的工廠,當一個車間A正在工作時,另外一個更高級的車間B也要開啟工作時,那麼此時車間A就要斷電,但車間A的一切設施和位置都不會發生變化,等車間B斷電後,車間A繼續工作。這是進程宏觀上的線性執行過程。而線程的改變隻是改變了CPU執行過程,而沒有發生進程所擁有資源的變化。除了CPU之外,計算機内的軟硬件資源的分配與線程無關,線程隻能共享它所屬進程的資源。這就好比一個車間裡的工人,他們可以互換位置,但他們還是在同一車間。

(2) 進程在執行過程中與線程還是有區别的。進程是執行中的程序,每個獨立的進程有一個程序運行的入口、順序執行序列和程序的出口,這就是程序中的主函數。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。就好比每個車間都有一個進口和出口,可以單獨生産一件産品,但這依賴于車間裡的工人協同工作才能完成。

(3) 通過進程和線程的執行過程我們可以看出,進程和線程是一對一或一對多的關系,一個進程至少包含一個線程,進程擁有一個完整的虛拟地址空間,它的空間大小是在設計它事就已經确定的,不随工人的多少,體積大小而改變,也就是說,不依賴于線程而獨立存在;反之,線程是進程的一部分,沒有自己的地址空間,與進程内的其他線程一起共享分配給該進程的所有資源。

(4) 線程在很少做進程調度和切換的實時系統中可以有效地提高系統的執行效率,但并不是在所有計算機系統中都是适用的。這就好比同一車間工人總是做同一種産品的産能要比經常切換車間,切換工種,做不同産品的産能要高,因為他們更換車間,熟悉環境,熟悉生産流程都需要花時間。這也就是說線程的創建要比進程的創建開銷要小的多。

(5) 從邏輯角度來看,多線程的意義在于一個應用程序中,他們可以實現應用程序的多個功能,但并不能實現一個完整的應用程序。就好比生産一個複雜的産品,每個車間隻是生産該産品一個或多個零部件,一個完成的産品還是要靠整個工廠來完成。換言之,進程的調度和管理以及資源分配還是要靠操作系統來完成,這就是進程和線程的重要區别。

好了,今天就先分享這麼多,《Linux就該這麼學》這本書寫的真的非常好,條理清晰,用通俗的語言闡明難懂的知識點,在這裡分享給大家,有興趣的同學可以去關注下啦!

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
虎刺梅緻癌為什麼還那麼多人養
虎刺梅緻癌為什麼還那麼多人養
虎刺梅緻癌為什麼還那麼多人養?虎刺梅産生的緻癌物質在生活中随處可見,隻要避免皮膚接觸,觸碰後及時洗手就沒有危害,可放心養護,今天小編就來聊一聊關于虎刺梅緻癌為什麼還那麼多人養?接下來我們就一起去研究一下吧!虎刺梅緻癌為什麼還那麼多人養虎刺梅...
2024-10-01
香酥脆棗一天吃幾個最合适
香酥脆棗一天吃幾個最合适
香酥脆棗一天吃幾個最合适?香酥脆棗一天吃3-5個最合适脆棗的營養價值很高,含有豐富的維生素和多種礦物質一般情況下,每天吃三到五個就可以滿足人體的維生素需求量和礦物質的需求量脆中含有豐富的鐵元素,可以促進體内血紅蛋白的合成,預防缺鐵性貧血,含...
2024-10-01
互有好感然後突然冷淡
互有好感然後突然冷淡
互有好感然後突然冷淡?你們并不适合,在之前的交往中,男生通過足夠細緻的了解,對女生的印象已經有了一個完整的判斷在他心裡自己苦苦追求的女孩子,到底是不是自己女神,現在已經足以見分曉了如果此時他選擇冷淡自己的感情,很有可能是因為他覺得自己并沒有...
2024-10-01
憫農其一古詩解釋意思
憫農其一古詩解釋意思
憫農其一古詩解釋意思?譯文:春天隻要播下一粒種子,秋天就可收獲很多糧食普天之下,沒有荒廢不種的田地,卻仍有勞苦農民被餓死盛夏中午,烈日炎炎,農民還在勞作,汗珠滴入泥土有誰想到,我們碗中的米飯,一粒一粒都是農民辛苦勞動得來的呀?,我來為大家科...
2024-10-01
桑梓一般用來借指什麼
桑梓一般用來借指什麼
桑梓一般用來借指什麼?桑梓指家鄉、故鄉古代,人們喜歡在住宅周圍栽植桑樹和梓樹,後來人們就用物代處所,用“桑梓”代稱家鄉贊揚某人為家鄉造福,往往用“功在桑梓”,接下來我們就來聊聊關于桑梓一般用來借指什麼?以下内容大家不妨參考一二希望能幫到您!...
2024-10-01
Copyright 2023-2024 - www.tftnews.com All Rights Reserved