進程與線程相關

以下內(nèi)容整理自互聯(lián)網(wǎng)返咱,僅用于個人學習


1. 進程

1.1 進程的定義

  • 進程是程序運行的一次執(zhí)行過程逢净。
  • 進程是一個程序及其數(shù)據(jù)在處理機上順序執(zhí)行所發(fā)生的活動隘截。
  • 進程是具有獨立功能的程序在一個數(shù)據(jù)集合上運行的過程,它是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位汹胃。

為了使參與并發(fā)執(zhí)行的程序(含數(shù)據(jù))能獨立的運行,必須為之配置一個專門的數(shù)據(jù)結構东臀,稱為進程控制塊(Process Control Block着饥,PCB)。系統(tǒng)利用PCB來描述進程的基本情況和運行狀態(tài)惰赋,進而控制和管理進程宰掉。相應地呵哨,由程序段、相關數(shù)據(jù)段和PCB三部分過程了進程映像(進程實體)轨奄。所謂創(chuàng)建進程孟害,實質(zhì)上是創(chuàng)建進程映像中的PCB;而撤銷進程實質(zhì)上是撤銷進程的PCB挪拟。值得注意的是挨务,進程映像是靜態(tài)的,進程則是動態(tài)的玉组。

PCB是進程存在的唯一標識谎柄!

引入進程實體的概念后,我們可以把傳統(tǒng)操作系統(tǒng)中的進程定義為:
進程是進程實體的運行過程惯雳,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位朝巫。

1.2 進程狀態(tài)轉(zhuǎn)換

  • 運行狀態(tài):進程正在處理機上運行。但處理機環(huán)境下石景,每一時刻最多只有一個進程處于運行狀態(tài)劈猿。
  • 就緒狀態(tài):進程已處于準備運行狀態(tài),即進程獲得了除了處理機之外的一切所需資源潮孽,一旦得到處理機即可運行揪荣。
  • 阻塞狀態(tài):又稱為等待狀態(tài)。進程正在等待某一事件而暫停運行恩商,如等待某資源為可用(不包括處理機)或等待輸入/輸出完成变逃。即使處理器空閑,該進程也不能運行怠堪。
  • 創(chuàng)建狀態(tài):進程正在被創(chuàng)建揽乱,尚未轉(zhuǎn)入到就緒狀態(tài)。進程創(chuàng)建需要多個步驟:首先申請一個空白的PCB粟矿,并向PCB中填寫一些控制和管理進程的信息凰棉;然后由系統(tǒng)為該進程分配運行時所必需的資源;最后把該進程轉(zhuǎn)入就緒狀態(tài)陌粹。
  • 結束狀態(tài):進程正從系統(tǒng)中消失撒犀,這可能是進程正常結束或其他原因中斷退出運行。當進程需要結束運行時掏秩,系統(tǒng)首先必須置該進程為結束狀態(tài)或舞,然后進一步處理資源釋放和回收等工作。
進程狀態(tài)轉(zhuǎn)換.jpg
  • 就緒→運行:處于就緒狀態(tài)的進程被調(diào)度后蒙幻,獲得處理機資源(分派處理機時間片)映凳,于是進程由就緒狀態(tài)轉(zhuǎn)運行狀態(tài)。
  • 運行→就緒:處于運行狀態(tài)的進程在時間片用完后邮破,不得不讓出處理機诈豌,從而進程由運行狀態(tài)轉(zhuǎn)換為就緒仆救。此外,在可剝奪的操作系統(tǒng)中矫渔,當有更高級的進程就緒時彤蔽,調(diào)度程度將正執(zhí)行的進程轉(zhuǎn)換為就緒狀態(tài),讓更高優(yōu)先級的進程執(zhí)行庙洼。
  • 運行→阻塞:當進程請求某一資源(如外設)的使用和分配或等待某一事件的發(fā)生(如I/O操作的完成)時顿痪,它就從運行狀態(tài)轉(zhuǎn)換為阻塞狀態(tài)。進程以系統(tǒng)調(diào)用的形式請求操作系統(tǒng)提供服務送膳,這是一種特殊员魏、由用戶態(tài)程序調(diào)用操作系統(tǒng)內(nèi)核過程的形式。
  • 阻塞→就緒:當進程等待的時間到來時叠聋,如I/O操作結束或中斷結束時撕阎,終端處理程序必須把相應的進程狀態(tài)由阻塞狀態(tài)轉(zhuǎn)為就緒狀態(tài)。

2. 線程

引入進程的目的碌补,是為了使多道程序并發(fā)執(zhí)行虏束,以提高資源利用率和系統(tǒng)吞吐量;而引入線程厦章,則是為了減少程序在并發(fā)執(zhí)行時所付出的時空開銷镇匀,提高操作系統(tǒng)的并發(fā)性能。

線程就是"輕量級進程"袜啃,它是一個基本的CPU執(zhí)行單元汗侵,也是程序執(zhí)行流的最小單元,由線程ID群发、程序計數(shù)器晰韵、寄存器集合和堆棧組成。線程自己不擁有系統(tǒng)資源熟妓,只擁有在運行中必不可少的資源雪猪,但與其他線程共享進程所擁有的全部資源。

線程也有 就緒起愈、阻塞只恨、運行 三種基本狀態(tài)。

引入線程后抬虽,進程的內(nèi)涵發(fā)送了改變:進程只作為除CPU以外系統(tǒng)資源
的分配單元官觅,線程則作為處理機分配單元。

3. 進程與線程比較

3.1 調(diào)度

在傳統(tǒng)操作系統(tǒng)中阐污,用于資源和獨立調(diào)度的基本單位都是進程缰猴。在引入線程的操作系統(tǒng)中,線程是獨立調(diào)度的基本單位疤剑,進程是資源擁有的基本單位滑绒。統(tǒng)一進程中,線程的切換不會引起進程切換隘膘。在不同進程中的線程切換疑故,如從一個進程內(nèi)的線程切換到另一個進程的線程時,會引起進程切換弯菊。

3.2 資源

不論是傳統(tǒng)操作系統(tǒng)還是設有線程的操作系統(tǒng)纵势,進程都是擁有資源的基本單位,而線程不擁有系統(tǒng)資源(也有一點必不可少的資源)管钳,但線程可以訪問其隸屬進程的系統(tǒng)資源钦铁。

3.3 并發(fā)性

在引入線程的操作系統(tǒng)中,不僅進程之間可以并發(fā)執(zhí)行才漆,而且多個線程之間也可以并發(fā)執(zhí)行牛曹,從而使操作系統(tǒng)具有更好的并發(fā)性,提高系統(tǒng)的吞吐量醇滥。

3.4 系統(tǒng)開銷

由于創(chuàng)建或撤銷進程時黎比,系統(tǒng)都要為之分配或回收資源,如內(nèi)存空間鸳玩、I/O設備等阅虫,因此操作系統(tǒng)所付出的開銷遠大于創(chuàng)建或撤銷線程時的開銷。

類似的不跟,在進行進程切換時颓帝,涉及當前執(zhí)行進程CPU環(huán)境的保存以及新調(diào)度到進程CPU環(huán)境的設置,而線程切換只需保存和設置少量寄存器內(nèi)容窝革,開銷很小购城。

此外,由于同一個進程內(nèi)的多個線程共享進程的地址空間聊闯,因此工猜,這些線程之間的同步與通信非常容易實現(xiàn),甚至無需操作系統(tǒng)的干預菱蔬。

3.5 地址空間和其他資源(如打開文件)

進程的地址空間之間相互獨立篷帅,同一進程的各線程間共享進程的資源,某進程內(nèi)的線程對于其他進程不可見拴泌。

3.6 通信

進程間通信(IPC)需要進程同步和互斥手段輔助魏身,以保證數(shù)據(jù)的一致性,而線程間可以直接讀寫進程數(shù)據(jù)段(如全局變量)來進行通信蚪腐。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末箭昵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子回季,更是在濱河造成了極大的恐慌家制,老刑警劉巖正林,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異颤殴,居然都是意外死亡觅廓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門涵但,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杈绸,“玉大人,你說我怎么就攤上這事矮瘟⊥В” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵澈侠,是天一觀的道長劫侧。 經(jīng)常有香客問我,道長埋涧,這世上最難降的妖魔是什么板辽? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮棘催,結果婚禮上劲弦,老公的妹妹穿的比我還像新娘。我一直安慰自己醇坝,他們只是感情好邑跪,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呼猪,像睡著了一般画畅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宋距,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天轴踱,我揣著相機與錄音,去河邊找鬼谚赎。 笑死淫僻,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的壶唤。 我是一名探鬼主播雳灵,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼闸盔!你這毒婦竟也來了悯辙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎躲撰,沒想到半個月后针贬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡拢蛋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年坚踩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓤狐。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖批幌,靈堂內(nèi)的尸體忽然破棺而出础锐,到底是詐尸還是另有隱情,我是刑警寧澤荧缘,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布皆警,位于F島的核電站,受9級特大地震影響截粗,放射性物質(zhì)發(fā)生泄漏信姓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一绸罗、第九天 我趴在偏房一處隱蔽的房頂上張望意推。 院中可真熱鬧,春花似錦珊蟀、人聲如沸菊值。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腻窒。三九已至,卻和暖如春磅崭,著一層夾襖步出監(jiān)牢的瞬間儿子,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工砸喻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留柔逼,地道東北人。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓恩够,卻偏偏與公主長得像卒落,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蜂桶,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 11.1進程的概念 進程的定義 進程是指一個具有一定獨立功能的程序在一個數(shù)據(jù)集合上的一次動態(tài)執(zhí)行過程 精髓:正在執(zhí)...
    龜龜51閱讀 474評論 0 1
  • 又來到了一個老生常談的問題儡毕,應用層軟件開發(fā)的程序員要不要了解和深入學習操作系統(tǒng)呢? 今天就這個問題開始,來談談操...
    tangsl閱讀 4,122評論 0 23
  • 進程和線程 進程線程的區(qū)別1腰湾、進程是什么雷恃?是具有一定獨立功能的程序、它是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位费坊,重點...
    HeartGo閱讀 1,209評論 0 4
  • 小紅帽住在一個森林里倒槐,她木制的臥室里掛滿了紅色帽子,春夏秋冬每個季節(jié)都有數(shù)不清的帽子附井,她出門總是選一頂自己當天喜歡...
    梅子Mey閱讀 732評論 0 1
  • 說字符串之前讨越,我先說說字符,所謂字符(Character)是文字與符號的總稱永毅,包括文字把跨、圖 形符號、數(shù)學符號等沼死。 ...
    魂夢云邊閱讀 452評論 1 0