不同角度來(lái)剖析進(jìn)程

通過(guò)cpu角度去理解進(jìn)程的概念:

進(jìn)程和線程都是一個(gè)時(shí)間段的描述,是對(duì)CPU工作時(shí)間段的一個(gè)描述眨层。
下面細(xì)說(shuō)背景:

CPU+RAM+各種資源(比如顯卡,光驅(qū),鍵盤贝咙,GPS, 等等外設(shè))構(gòu)成我們的電腦,但是電腦的運(yùn)行拂募,實(shí)際就是CPU和相關(guān)寄存器以及RAM之間的事情庭猩。

一個(gè)最最基礎(chǔ)的事實(shí):

CPU太快窟她,太快,太快了蔼水,寄存器僅僅能夠追的上他的腳步震糖,RAM和別的掛在各總線上的設(shè)備完全是望其項(xiàng)背。那當(dāng)多個(gè)任務(wù)要執(zhí)行的時(shí)候怎么辦呢趴腋?輪流著來(lái)?或者誰(shuí)優(yōu)先級(jí)高誰(shuí)來(lái)吊说?不管怎么樣的策略,一句話就是在CPU看來(lái)就輪流著來(lái)优炬。

一個(gè)必須知道的事實(shí):

執(zhí)行一段程序代碼颁井,實(shí)現(xiàn)一個(gè)功能的過(guò)程介紹 ,當(dāng)?shù)玫紺PU的時(shí)候穿剖,相關(guān)的資源必須也已經(jīng)就位蚤蔓,就是顯卡啊,GPS啊什么的必須就位糊余,然后CPU開始執(zhí)行秀又。這里除了CPU以外所有的就構(gòu)成了這個(gè)程序的執(zhí)行環(huán)境,也就是我們所定義的程序上下文贬芥。當(dāng)這個(gè)程序執(zhí)行完了吐辙,或者分配給他的CPU執(zhí)行時(shí)間用完了,那它就要被切換出去蘸劈,等待下一次CPU的臨幸昏苏。在被切換出去的最后一步工作就是保存程序上下文,因?yàn)檫@個(gè)是下次他被CPU臨幸的運(yùn)行環(huán)境威沫,必須保存贤惯。

串聯(lián)起來(lái)的事實(shí):

前面講過(guò)在CPU看來(lái)所有的任務(wù)都是一個(gè)一個(gè)的輪流執(zhí)行的,具體的輪流方法就是:先加載程序A的上下文棒掠,然后開始執(zhí)行A孵构,保存程序A的上下文,調(diào)入下一個(gè)要執(zhí)行的程序B的程序上下文烟很,然后開始執(zhí)行B,保存程序B的上下文颈墅。。雾袱。恤筛。

========= 重要的東西出現(xiàn)了========

進(jìn)程和線程就是這樣的背景出來(lái)的,兩個(gè)名詞不過(guò)是對(duì)應(yīng)的CPU時(shí)間段的描述芹橡,名詞就是這樣的功能毒坛。

進(jìn)程就是包換上下文切換的程序執(zhí)行時(shí)間總和 = CPU加載上下文+CPU執(zhí)行+CPU保存上下文線程是什么呢?

進(jìn)程的顆粒度太大林说,每次都要有上下的調(diào)入粘驰,保存屡谐,調(diào)出。如果我們把進(jìn)程比喻為一個(gè)運(yùn)行在電腦上的軟件蝌数,那么一個(gè)軟件的執(zhí)行不可能是一條邏輯執(zhí)行的,必定有多個(gè)分支和多個(gè)程序段度秘,就好比要實(shí)現(xiàn)程序A顶伞,實(shí)際分成 a,b剑梳,c等多個(gè)塊組合而成唆貌。那么這里具體的執(zhí)行就可能變成:

程序A得到CPU =》CPU加載上下文,開始執(zhí)行程序A的a小段垢乙,然后執(zhí)行A的b小段锨咙,然后再執(zhí)行A的c小段,最后CPU保存A的上下文追逮。這里a酪刀,b,c的執(zhí)行是共享了A的上下文钮孵,CPU在執(zhí)行的時(shí)候沒有進(jìn)行上下文切換的骂倘。

這里的a,b巴席,c就是線程历涝,也就是說(shuō)線程是共享了進(jìn)程的上下文環(huán)境,的更為細(xì)小的CPU時(shí)間段漾唉。到此全文結(jié)束荧库,
再一個(gè)總結(jié):進(jìn)程和線程都是一個(gè)時(shí)間段的描述,是CPU工作時(shí)間段的描述赵刑,不過(guò)是顆粒大小不同分衫。

并發(fā)的本質(zhì):是在時(shí)間上重疊的多個(gè)邏輯流,也就是說(shuō)同時(shí)運(yùn)行的多個(gè)邏輯流料睛。

關(guān)于進(jìn)程和線程丐箩,大家總是說(shuō)的一句話是“進(jìn)程是操作系統(tǒng)分配資源的最小單元,線程是操作系統(tǒng)調(diào)度的最小單元”恤煞。這句話理論上沒問(wèn)題屎勘,我們來(lái)看看什么是所謂的“資源”呢。

什么是計(jì)算機(jī)資源

經(jīng)典的馮諾依曼結(jié)構(gòu)把計(jì)算機(jī)系統(tǒng)抽象成 CPU + 存儲(chǔ)器 + IO居扒,那么計(jì)算機(jī)資源無(wú)非就兩種:
  1. 計(jì)算資源
  2. 存儲(chǔ)資源

CPU是計(jì)算單元概漱,單純從CPU的角度來(lái)說(shuō)它是一個(gè)黑盒,它只對(duì)輸入的指令和數(shù)據(jù)進(jìn)行計(jì)算喜喂,然后輸出結(jié)果瓤摧,它不負(fù)責(zé)管理計(jì)算哪些”指令和數(shù)據(jù)“竿裂。 換句話說(shuō)CPU只提供了計(jì)算能力,但是不負(fù)責(zé)分配計(jì)算資源照弥。

計(jì)算資源是操作系統(tǒng)來(lái)分配的腻异,也就是常說(shuō)的操作系統(tǒng)的調(diào)度模塊,由操作系統(tǒng)按照一定的規(guī)則來(lái)分配什么時(shí)候由誰(shuí)來(lái)獲得CPU的計(jì)算資源这揣,比如分時(shí)間片

存儲(chǔ)資源就是內(nèi)存悔常,磁盤這些存儲(chǔ)設(shè)備的資源。在這篇計(jì)算機(jī)底層知識(shí)拾遺(一)理解虛擬內(nèi)存機(jī)制 我們說(shuō)了操作系統(tǒng)使用了虛擬內(nèi)存機(jī)制來(lái)管理存儲(chǔ)器给赞,從緩存原理的角度來(lái)說(shuō)机打,把內(nèi)存作為磁盤的緩存。進(jìn)程是面向磁盤的片迅,為什么這么說(shuō)呢残邀,進(jìn)程表示一個(gè)運(yùn)行的程序,程序的代碼段柑蛇,數(shù)據(jù)段這些都是存放在磁盤中的芥挣,在運(yùn)行時(shí)加載到內(nèi)存中。所以虛擬內(nèi)存面向的是磁盤唯蝶,虛擬頁(yè)是對(duì)磁盤文件的分配九秀,然后被緩存到物理內(nèi)存的物理頁(yè)中桨啃。

所以存儲(chǔ)資源是操作系統(tǒng)由虛擬內(nèi)存機(jī)制來(lái)管理和分配的伟葫。進(jìn)程應(yīng)該是操作系統(tǒng)分配存儲(chǔ)資源的最小單元。

再來(lái)看看線程泻帮,理論上說(shuō)Linux內(nèi)核是沒有線程這個(gè)概念的征字,只有內(nèi)核調(diào)度實(shí)體(Kernal Scheduling Entry都弹, KSE)這個(gè)概念。Linux的線程本質(zhì)上是一種輕量級(jí)的進(jìn)程匙姜,是通過(guò)clone系統(tǒng)調(diào)用來(lái)創(chuàng)建的畅厢。何謂“輕量級(jí)”會(huì)在后面細(xì)說(shuō)。進(jìn)程是一種KSE氮昧,線程也是一種KSE框杜。所以“線程是操作系統(tǒng)調(diào)度的最小單元”這句話沒問(wèn)題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末袖肥,一起剝皮案震驚了整個(gè)濱河市咪辱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌椎组,老刑警劉巖油狂,帶你破解...
    沈念sama閱讀 222,865評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡专筷,警方通過(guò)查閱死者的電腦和手機(jī)弱贼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)磷蛹,“玉大人吮旅,你說(shuō)我怎么就攤上這事∠夷簦” “怎么了鸟辅?”我有些...
    開封第一講書人閱讀 169,631評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)莺葫。 經(jīng)常有香客問(wèn)我,道長(zhǎng)枪眉,這世上最難降的妖魔是什么捺檬? 我笑而不...
    開封第一講書人閱讀 60,199評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮贸铜,結(jié)果婚禮上堡纬,老公的妹妹穿的比我還像新娘。我一直安慰自己蒿秦,他們只是感情好烤镐,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棍鳖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪渡处。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評(píng)論 1 314
  • 那天侣肄,我揣著相機(jī)與錄音稼锅,去河邊找鬼。 笑死矩距,一個(gè)胖子當(dāng)著我的面吹牛畔濒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赞弥,決...
    沈念sama閱讀 41,221評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼悼嫉!你這毒婦竟也來(lái)了拼窥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,174評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤总棵,失蹤者是張志新(化名)和其女友劉穎改含,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骤视,經(jīng)...
    沈念sama閱讀 46,699評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡专酗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評(píng)論 3 343
  • 正文 我和宋清朗相戀三年盗扇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粱玲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,918評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡允青,死狀恐怖卵沉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情琼掠,我是刑警寧澤停撞,帶...
    沈念sama閱讀 36,573評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站艰猬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏冠桃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望樱报。 院中可真熱鬧,春花似錦玷室、人聲如沸笤受。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)章喉。三九已至,卻和暖如春秸脱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咐蝇。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工有序, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人旭寿。 一個(gè)月前我還...
    沈念sama閱讀 49,364評(píng)論 3 379
  • 正文 我出身青樓崇败,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親缩膝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評(píng)論 2 361

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