淺析進(jìn)程與線程

進(jìn)程與線程.png

進(jìn)程與線程的概念經(jīng)常遇到誓篱,雖然腦海里是知道怎么回事,編程開發(fā)也能寫出多進(jìn)程凯楔、多線程的程序窜骄,但是對(duì)于理論上的描述一直不是很明確,今日閑暇摆屯,找到了以前的書籍邻遏,好好的看了一遍,記錄下進(jìn)程鸥拧、線程簡單的理論概念党远。

操作系統(tǒng)的教材里面進(jìn)程一章的內(nèi)容還是很多的,描述的相當(dāng)詳細(xì)富弦,但是對(duì)于開發(fā)者而言沟娱,知道其核心的概念即可解答常見的進(jìn)程相關(guān)的問題,如果需要深究的腕柜,再去翻閱文獻(xiàn)也是可以的济似。

1矫废、進(jìn)程的定義
進(jìn)程的實(shí)體是由:程序段、相關(guān)的數(shù)據(jù)段和PCB三部分構(gòu)成的砰蠢。其中蓖扑,進(jìn)程實(shí)體其實(shí)就是我們常說的進(jìn)程,因此台舱,創(chuàng)建進(jìn)程律杠,其實(shí)就是創(chuàng)建進(jìn)程實(shí)體中的PCB,撤消進(jìn)程也就是撤消進(jìn)程的PCB竞惋。

歸結(jié)一下常見的進(jìn)程的定義:

(1)進(jìn)程是程序的一次執(zhí)行
(2)進(jìn)程是具有獨(dú)立功能的程序在一個(gè)數(shù)據(jù)集合上運(yùn)行的過程柜去,它是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單元。
(3)進(jìn)程是一個(gè)程序及其數(shù)據(jù)在處理機(jī)上順序執(zhí)行時(shí)所發(fā)生的活動(dòng)拆宛。

這里順便介紹一下進(jìn)程和程序的區(qū)別:

(1)程序是永存的嗓奢;進(jìn)程是暫時(shí)的,是程序在數(shù)據(jù)集上的一次執(zhí)行浑厚,有創(chuàng)建有撤銷股耽,存在是暫時(shí)的;
(2)程序是靜態(tài)的觀念钳幅,進(jìn)程是動(dòng)態(tài)的觀念物蝙;
(3)進(jìn)程具有并發(fā)性,而程序沒有贡这;
(4)進(jìn)程是競爭計(jì)算機(jī)資源的基本單位茬末,程序不是。
(5)進(jìn)程和程序不是一一對(duì)應(yīng)的: 一個(gè)程序可對(duì)應(yīng)多個(gè)進(jìn)程即多個(gè)進(jìn)程可執(zhí)行同一程序盖矫; 一個(gè)進(jìn)程可以執(zhí)行一個(gè)或幾個(gè)程序

進(jìn)程和程序是兩個(gè)截然不同的概念,除了進(jìn)程具有程序所沒有的PCB結(jié)構(gòu)外击奶,還具有一下特征:

(1)動(dòng)態(tài)性
(2)并發(fā)性
(3)獨(dú)立性
(4)異步性

2辈双、進(jìn)程的狀態(tài)
進(jìn)程一般具備三種狀態(tài):

(1)就緒態(tài)。即進(jìn)程處于準(zhǔn)備好運(yùn)行的狀態(tài)柜砾,進(jìn)程已分配到除CPU以外的所有資源
(2)執(zhí)行態(tài)湃望,進(jìn)程已獲得CPU,其程序正在執(zhí)行的狀態(tài)
(3)阻塞態(tài)痰驱,正在執(zhí)行的進(jìn)程由于發(fā)生某事件(如IO請(qǐng)求等)暫時(shí)無法繼續(xù)執(zhí)行時(shí)的狀態(tài)

狀態(tài)轉(zhuǎn)換圖:

狀態(tài)轉(zhuǎn)換圖.png

圖中的創(chuàng)建狀態(tài)和退出是進(jìn)程的開始和終止這里不再解釋证芭。

3、進(jìn)程的PCB
OS為每個(gè)進(jìn)程專門定義了一個(gè)數(shù)據(jù)結(jié)構(gòu)--進(jìn)程控制塊(Process Control Block)PCB担映,用于描述進(jìn)程的當(dāng)前情況以及管理進(jìn)程運(yùn)行的全部信息废士,是OS最重要的記錄型數(shù)據(jù)結(jié)構(gòu),線程與之相對(duì)的是TCB(下文介紹)蝇完。

PCB的作用:

(1)作為獨(dú)立運(yùn)行基本單位的標(biāo)志官硝。當(dāng)一個(gè)程序(含數(shù)據(jù))配置了PCB后矗蕊,就表示它是一個(gè)能在多道程序環(huán)境下獨(dú)立運(yùn)行的、合法的基本單位氢架。當(dāng)系統(tǒng)創(chuàng)建一個(gè)進(jìn)程時(shí)傻咖,就為它創(chuàng)建了一個(gè)PCB,進(jìn)程結(jié)束時(shí)又回收其PCB岖研,進(jìn)程于是也隨之消滅卿操,即系統(tǒng)是通過PCB感知進(jìn)程的存在的。
(2)能實(shí)現(xiàn)間斷性運(yùn)行方式孙援。當(dāng)進(jìn)程因阻塞而暫停運(yùn)行時(shí)害淤,可以將CPU現(xiàn)場信息等保存在PCB中,供該進(jìn)程再次被調(diào)度時(shí)恢復(fù)現(xiàn)場使用赃磨。
(3)提供進(jìn)程管理所需要的信息筝家。
(4)提供進(jìn)程調(diào)度所需要的信息。
(5)實(shí)現(xiàn)與其他進(jìn)程的同步與通信

4邻辉、線程的定義
線程溪王,有時(shí)被稱為輕量級(jí)進(jìn)程(Lightweight Process,LWP)值骇,是程序執(zhí)行流的最小單元莹菱。
一個(gè)標(biāo)準(zhǔn)的線程由線程ID,當(dāng)前指令[指針]吱瘩,[寄存器]集合和[堆棧]組成道伟。

另外,線程是進(jìn)程中的一個(gè)實(shí)體使碾,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位蜜徽,線程自己不擁有系統(tǒng)資源,只擁有一點(diǎn)兒在運(yùn)行中必不可少的資源票摇,但它可與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源拘鞋。

和進(jìn)程一樣,線程同樣有三種狀態(tài):執(zhí)行狀態(tài)矢门、就緒狀態(tài)盆色、阻塞狀態(tài),線程之間的轉(zhuǎn)換與進(jìn)程一樣的祟剔,這里不再贅述隔躲。

系統(tǒng)同樣為線程分配了一個(gè)線程控制塊TCB,將所有用于控制和管理線程的信息記錄在線程控制塊中物延,TCB通常包括:

(1)線程標(biāo)示符 (2)一組寄存器 (3)線程運(yùn)行狀態(tài) (4)優(yōu)先級(jí) (5)線程專有存儲(chǔ)區(qū) (6)信號(hào)屏蔽

5宣旱、線程與進(jìn)程的區(qū)別
進(jìn)程是資源分配的基本單位。所有與該進(jìn)程有關(guān)的資源教届,都被記錄在進(jìn)程控制塊PCB中响鹃,以表示該進(jìn)程擁有這些資源或正在使用它們驾霜。
另外,進(jìn)程也是搶占處理機(jī)的調(diào)度單位买置,它擁有一個(gè)完整的虛擬地址空間粪糙。當(dāng)進(jìn)程發(fā)生調(diào)度時(shí),不同的進(jìn)程擁有不同的虛擬地址空間忿项,而同一進(jìn)程內(nèi)的不同線程共享同一地址空間蓉冈。

與進(jìn)程相對(duì)應(yīng),線程與資源分配無關(guān)轩触,
它屬于某一個(gè)進(jìn)程寞酿,
并與進(jìn)程內(nèi)的其他線程一起共享進(jìn)程的資源。

線程只由相關(guān)堆棧(系統(tǒng)椡阎或用戶棧)寄存器和線程控制表TCB組成伐弹。寄存器可被用來存儲(chǔ)線程內(nèi)的局部變量,但不能存儲(chǔ)其他線程的相關(guān)變量榨为。

通常在一個(gè)進(jìn)程中可以包含若干個(gè)線程惨好,它們可以利用進(jìn)程所擁有的資源。在引入線程的操作系統(tǒng)中随闺,通常都是把進(jìn)程作為分配資源的基本單位日川,而把線程作為獨(dú)立運(yùn)行和獨(dú)立調(diào)度的基本單位。

由于線程比進(jìn)程更小矩乐,基本上不擁有系統(tǒng)資源龄句,故對(duì)它的調(diào)度所付出的開銷就會(huì)小得多,能更高效的提高系統(tǒng)內(nèi)多個(gè)程序間并發(fā)執(zhí)行的程度散罕,從而顯著提高系統(tǒng)資源的利用率和吞吐量分歇。

因而近年來推出的通用操作系統(tǒng)都引入了線程,以便進(jìn)一步提高系統(tǒng)的并發(fā)性欧漱,并把它視為現(xiàn)代操作系統(tǒng)的一個(gè)重要指標(biāo)卿樱。

線程與進(jìn)程的區(qū)別可以歸納為以下4點(diǎn):

1)地址空間和其它資源(如打開文件):進(jìn)程間相互獨(dú)立,同一進(jìn)程的各線程間共享硫椰。某進(jìn)程內(nèi)的線程在其它進(jìn)程不可見。
2)通信:進(jìn)程間通信萨蚕,IPC靶草,線程間可以直接讀寫進(jìn)程數(shù)據(jù)段(如全局變量)來進(jìn)行通信——需要進(jìn)程同步和互斥手段的輔助,以保證數(shù)據(jù)的一致性岳遥。
3)調(diào)度和切換:線程上下文切換比進(jìn)程上下文切換要快得多奕翔。
4)在多線程OS中,進(jìn)程不是一個(gè)可執(zhí)行的實(shí)體浩蓉。

關(guān)于線程和進(jìn)程的概念簡單介紹到這里派继,有個(gè)基本的認(rèn)識(shí)即可宾袜。

歡迎大家評(píng)論一起交流。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末驾窟,一起剝皮案震驚了整個(gè)濱河市庆猫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绅络,老刑警劉巖月培,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異恩急,居然都是意外死亡杉畜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門衷恭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來此叠,“玉大人,你說我怎么就攤上這事随珠∶鹪” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵牙丽,是天一觀的道長简卧。 經(jīng)常有香客問我,道長烤芦,這世上最難降的妖魔是什么举娩? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮构罗,結(jié)果婚禮上铜涉,老公的妹妹穿的比我還像新娘。我一直安慰自己遂唧,他們只是感情好芙代,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盖彭,像睡著了一般纹烹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上召边,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天铺呵,我揣著相機(jī)與錄音,去河邊找鬼隧熙。 笑死片挂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播音念,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沪饺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了闷愤?” 一聲冷哼從身側(cè)響起整葡,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肝谭,沒想到半個(gè)月后掘宪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡攘烛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年魏滚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坟漱。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鼠次,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芋齿,到底是詐尸還是另有隱情腥寇,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布觅捆,位于F島的核電站赦役,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏栅炒。R本人自食惡果不足惜掂摔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赢赊。 院中可真熱鬧乙漓,春花似錦、人聲如沸释移。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玩讳。三九已至涩蜘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間熏纯,已是汗流浹背皱坛。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留豆巨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓掐场,卻偏偏與公主長得像往扔,于是被迫代替她去往敵國和親贩猎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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

  • 又來到了一個(gè)老生常談的問題萍膛,應(yīng)用層軟件開發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢吭服? 今天就這個(gè)問題開始,來談?wù)劜?..
    tangsl閱讀 4,127評(píng)論 0 23
  • 11.1進(jìn)程的概念 進(jìn)程的定義 進(jìn)程是指一個(gè)具有一定獨(dú)立功能的程序在一個(gè)數(shù)據(jù)集合上的一次動(dòng)態(tài)執(zhí)行過程 精髓:正在執(zhí)...
    龜龜51閱讀 474評(píng)論 0 1
  • word直接復(fù)制來了蝗罗,格式就不改了艇棕。至于這門課怎么復(fù)習(xí),只要平時(shí)實(shí)驗(yàn)都認(rèn)真完成串塑、報(bào)告認(rèn)真寫沼琉,平時(shí)分都很高;考試的話...
    Jozhn閱讀 4,556評(píng)論 0 8
  • 朋友夫妻鬧離婚桩匪,向我求助打瘪! 我約他們一起來我家喝茶聊天! 女方是個(gè)6W5傻昙,男方直覺9號(hào)自保闺骚! 聊天記錄: 女方:我...
    竺子閱讀 234評(píng)論 0 0
  • 國慶節(jié)假期,我們一大家子人一起去了普吉島妆档,最小的2歲僻爽,最老的70歲,這是家族史上的第一次贾惦,其中發(fā)生了很多很多好玩的...
    張鋆Helen閱讀 237評(píng)論 0 1