操作系統(tǒng)--阻塞,睡眠件缸,掛起

線程阻塞狀態(tài)

線程從創(chuàng)建铜靶、運行到結(jié)束總是處于下面五個狀態(tài)之一:新建狀態(tài)、就緒狀態(tài)停团、運行狀態(tài)旷坦、阻塞狀態(tài)及死亡狀態(tài)。


所謂阻塞狀態(tài)是正在運行的線程沒有運行結(jié)束佑稠,暫時讓出CPU秒梅,這時其他處于就緒狀態(tài)的線程就可以獲得CPU時間,進入運行狀態(tài)舌胶。

線程運行過程中捆蜀,可能由于各種原因進入阻塞狀態(tài):

  1. 線程調(diào)用一個在I/O上被阻塞的操作,即該操作在輸入輸出操作完成之前不會返回到它的調(diào)用者幔嫂;
  2. 線程試圖得到一個鎖辆它,而該鎖正被其他線程持有;
  3. 線程通過調(diào)用sleep方法進入睡眠狀態(tài)履恩;
  4. 線程在等待某個觸發(fā)條件锰茉;
  5. ......

以上原因可以劃分成三大類:線程阻塞、線程睡眠切心、線程掛起飒筑。

線程阻塞、線程睡眠绽昏、線程掛起的形象比喻


操作系統(tǒng)中阻塞协屡、睡眠、掛起的區(qū)別形象解釋全谤。首先這些術(shù)語都是對于線程來說的肤晓,對線程的控制就好比你控制了一個雇工為你干活。

線程阻塞:本來你讓雇工掃地认然,結(jié)果掃帚被偷了或被鄰居家借去了补憾,你又沒讓雇工繼續(xù)干別的活,他就只好睡覺了季眷。雇工一旦發(fā)現(xiàn)掃帚回來了余蟹,他就會自己去干活的。

線程睡眠:你主動對雇工說:“你睡覺去吧子刮,某時某刻過來報到威酒,然后接著干活”。

掛起線程:你對主動對雇工說:“你睡覺去吧挺峡,用著你的時候我主動去叫你葵孤,然后接著干活”杆怕。

線程阻塞


線程在運行過程中必然要獲取訪問系統(tǒng)資源惊橱,暫且不說CPU,線程運行肯定要和磁盤進行交互蔼紧,繼而發(fā)生IO操作狭姨,IO操作勢必要引起等待宰啦,在資源未讀取完成苏遥,線程必然要等待,那么在等待IO完成這個部分就是阻塞狀態(tài)赡模。所以從這里來看田炭,阻塞是一種被動的方式,由于獲取資源獲取不到而引起的等待漓柑。

本人將線程阻塞細分成兩類:

  • 等待阻塞:等待IO等硬件資源
  • 同步阻塞:等待信號量等內(nèi)核資源教硫,延伸的還有互斥鎖、條件變量等線程同步對象(線程Join操作原理估計也是同步阻塞)辆布。

線程睡眠


當一個線程獲取資源失斔簿亍(但沒有觸發(fā)線程阻塞)暫時無法繼續(xù)運行時,可以有兩種處理方式:

  • 放棄CPU锋玲,自己睡眠景用,觸發(fā)調(diào)度;
  • 占有CPU惭蹂,忙等待丛肢,使用完自己的時間。

從這里看剿干,睡眠是一種主動的方式蜂怎,且僅僅作為一種處理手段。睡眠不僅僅用于使線程進入阻塞狀態(tài)置尔,更多的杠步,我們可以在適當?shù)臅r候設置讓線程睡眠一定的時間。

線程掛起


線程掛起是操作系統(tǒng)調(diào)度線程的手段之一榜轿,操作系統(tǒng)在調(diào)度時暫停當前線程的執(zhí)行幽歼,將其切換至阻塞狀態(tài),將CPU資源調(diào)度給其他的線程谬盐;在需要的時候甸私,操作系統(tǒng)可以恢復某線程的執(zhí)行權(quán)限,將其切換至就緒狀態(tài)飞傀。

因此常見的線程掛起是一種被動的方式皇型,場景如下:

  1. 分時操作系統(tǒng)當前進程時間片用完時,被動切換至阻塞狀態(tài)
  2. 搶占式操作系統(tǒng)當前進程被高優(yōu)先級進程搶占后砸烦,被動切換至阻塞狀態(tài)

某些情況下線程掛起是主動觸發(fā)的弃鸦,比如調(diào)試程序時,線程執(zhí)行到某個斷點幢痘,會主動掛起線程(trap陷入)唬格。

進程掛起


線程掛起主要考慮CPU資源的調(diào)度,而進程掛起主要考慮是內(nèi)存資源的分配。

掛起進程在操作系統(tǒng)中可以定義為暫時被淘汰出內(nèi)存的進程购岗,機器的資源是有限的汰聋,在資源不足的情況下,操作系統(tǒng)對在內(nèi)存中的程序進行合理的安排喊积,其中有的進程被暫時調(diào)離出內(nèi)存马僻,當條件允許的時候,會被操作系統(tǒng)再次調(diào)回內(nèi)存注服,重新進入等待被執(zhí)行的狀態(tài)即就緒態(tài)。

操作系統(tǒng)為什么要引入掛起狀態(tài)措近?掛起狀態(tài)涉及到中級調(diào)度溶弟,因為當內(nèi)存中的某個程序需要大的內(nèi)存空間來執(zhí)行,但這時內(nèi)存有沒有空余空間了瞭郑,那么操作系統(tǒng)就回根據(jù)調(diào)度算法把一些進程放到外存中去辜御,以騰出空間給正在執(zhí)行的程序的數(shù)據(jù)和程序,所以引如了掛起狀態(tài)屈张。引起掛起狀態(tài)的原因有如下幾方面:

(1)終端用戶的請求擒权。當終端用戶在自己的程序運行期間發(fā)現(xiàn)有可疑問題時,希望暫停使自己的程序靜止下來阁谆。亦即碳抄,使正在執(zhí)行的進程暫停執(zhí)行;若此時用戶進程正處于就緒狀態(tài)而未執(zhí)行场绿,則該進程暫不接受調(diào)度剖效,以便用戶研究其執(zhí)行情況或?qū)Τ绦蜻M行修改。我們把這種靜止狀態(tài)成為“掛起狀態(tài)”焰盗。

(2)父進程的請求璧尸。有時父進程希望掛起自己的某個子進程,以便考察和修改子進程熬拒,或者協(xié)調(diào)各子進程間的活動爷光。

(3)負荷調(diào)節(jié)的需要。當實時系統(tǒng)中的工作負荷較重澎粟,已可能影響到對實時任務的控制時蛀序,可由系統(tǒng)把一些不重要的進程掛起,以保證系統(tǒng)能正常運行活烙。

(4)操作系統(tǒng)的需要哼拔。操作系統(tǒng)有時希望掛起某些進程,以便檢查運行中的資源使用情況或進行記賬瓣颅。

(5)對換的需要倦逐。為了緩和內(nèi)存緊張的情況,將內(nèi)存中處于阻塞狀態(tài)的進程換至外存上。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末檬姥,一起剝皮案震驚了整個濱河市曾我,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌健民,老刑警劉巖抒巢,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異秉犹,居然都是意外死亡蛉谜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門崇堵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來型诚,“玉大人,你說我怎么就攤上這事鸳劳≌幔” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵赏廓,是天一觀的道長涵紊。 經(jīng)常有香客問我,道長幔摸,這世上最難降的妖魔是什么摸柄? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮既忆,結(jié)果婚禮上塘幅,老公的妹妹穿的比我還像新娘。我一直安慰自己尿贫,他們只是感情好电媳,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著庆亡,像睡著了一般匾乓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上又谋,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天拼缝,我揣著相機與錄音,去河邊找鬼彰亥。 笑死咧七,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的任斋。 我是一名探鬼主播继阻,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瘟檩?” 一聲冷哼從身側(cè)響起抹缕,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎墨辛,沒想到半個月后卓研,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡睹簇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年奏赘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片太惠。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡磨淌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出垛叨,到底是詐尸還是另有隱情,我是刑警寧澤柜某,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布嗽元,位于F島的核電站,受9級特大地震影響喂击,放射性物質(zhì)發(fā)生泄漏剂癌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一翰绊、第九天 我趴在偏房一處隱蔽的房頂上張望佩谷。 院中可真熱鬧,春花似錦监嗜、人聲如沸谐檀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桐猬。三九已至,卻和暖如春刽肠,著一層夾襖步出監(jiān)牢的瞬間溃肪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工音五, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留惫撰,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓躺涝,卻偏偏與公主長得像厨钻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

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

  • 又來到了一個老生常談的問題莉撇,應用層軟件開發(fā)的程序員要不要了解和深入學習操作系統(tǒng)呢呢蛤? 今天就這個問題開始,來談談操...
    tangsl閱讀 4,127評論 0 23
  • 進程和線程 進程線程的區(qū)別1棍郎、進程是什么其障?是具有一定獨立功能的程序、它是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位涂佃,重點...
    HeartGo閱讀 1,211評論 0 4
  • 童年的花園隱藏著幸福的秘密 2017-05-25老默 微信公眾號:活在當下的小魚 每天晚上都會做夢励翼,很多...
    深圳老默閱讀 641評論 1 3
  • 人際關(guān)系中感性和理性哪個更重要汽抚? 那次和他們討論,我之所以站在理性這一邊伯病,是因為我想成為理性人造烁。 第一點 其實哪個...
    素年錦時198503閱讀 4,253評論 1 3
  • 美容院的管理在于新客戶的開發(fā)老客戶的服務銷售服務維護客勤關(guān)系了解客戶需求(拓客留客服務做活動) 管理美容師的心態(tài)技...
    燕南霏閱讀 263評論 0 0