吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

進(jìn)程有哪些狀態(tài)?細(xì)說進(jìn)程的狀態(tài)

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2023-07-25 17:06 ? 次閱讀

進(jìn)程有哪些狀態(tài)?這個(gè)問題在面試的時(shí)候出現(xiàn)的概率也比較高。

如果你學(xué)過操作系統(tǒng)這門課,那一定看過這張圖:

30bdeef2-2aca-11ee-a368-dac502259ad0.png ?

運(yùn)行、就緒、阻塞指的就是進(jìn)程的三種狀態(tài)。 要想搞懂這三種狀態(tài),還得從操作系統(tǒng)的進(jìn)程調(diào)度說起。

假設(shè)CPU是單核的,單核的CPU一次只能處理一件事情,但是在操作系統(tǒng)上往往有多個(gè)任務(wù)需要執(zhí)行。

于是操作系統(tǒng)就會(huì)輪流讓任務(wù)占用CPU,比如先讓第一個(gè)進(jìn)程占用CPU,運(yùn)行個(gè)5ms,然后把它放一邊去,再讓第二個(gè)進(jìn)程占用CPU,也運(yùn)行個(gè)幾毫秒。

因?yàn)檩嗈D(zhuǎn)的速度特別快,所以在正常人看來,這些進(jìn)程好像是在同時(shí)執(zhí)行。

有了這個(gè)背景,再來看進(jìn)程的狀態(tài)就會(huì)比較容易。

所謂運(yùn)行,就是進(jìn)程占用CPU正在執(zhí)行的狀態(tài)。

所謂就緒,就是萬事俱備,等待被操作系統(tǒng)調(diào)度的狀態(tài)。

最后還有一種阻塞,比如程序在運(yùn)行的時(shí)候,遇到了類似scanf這樣阻塞的函數(shù),需要等待用戶從鍵盤輸入,這個(gè)時(shí)候即使讓他占用CPU運(yùn)行,也是浪費(fèi)時(shí)間,干脆就讓它進(jìn)入阻塞的狀態(tài),直到條件滿足,也就是有用戶輸入了數(shù)據(jù),再讓它回到就緒的狀態(tài),等待被操作系統(tǒng)調(diào)用。

再來看下Linux下進(jìn)程的狀態(tài)。

31731d54-2aca-11ee-a368-dac502259ad0.png ?

這個(gè)分的就更細(xì)了,結(jié)合代碼來說明。

int main()
{
    while (1);
}
先來個(gè)死循環(huán),運(yùn)行起來,此時(shí)它是R的狀態(tài),表示正在運(yùn)行,加號(hào)表示前臺(tái)運(yùn)行。

31ede228-2aca-11ee-a368-dac502259ad0.png ?

代碼稍微修改一下,加上printf輸出。
int main()
{
    while (1)
    {
printf("
");
    }
    
    return 0;
}
此時(shí)變成了S狀態(tài),就是睡眠狀態(tài)。

320b0fc4-2aca-11ee-a368-dac502259ad0.png ?

那么問題就來了,程序正在運(yùn)行,為什么就是睡眠狀態(tài)?

因?yàn)閜rintf需要訪問外設(shè),比CPU速度慢很多,程序大部分時(shí)間都在等待輸出,并不是在等待被調(diào)度,所以并不屬于運(yùn)行狀態(tài)。

還有一種睡眠狀態(tài)叫D,Disk sleep,也叫深度睡眠。

32243b34-2aca-11ee-a368-dac502259ad0.png ?

服務(wù)器壓力過大時(shí),操作系統(tǒng)會(huì)殺掉一些進(jìn)程,如果是D狀態(tài),操作系統(tǒng)無法干預(yù),比如dd這個(gè)命令,進(jìn)程就是D狀態(tài)。

還有一種T狀態(tài)也比較常見,一個(gè)正在運(yùn)行的程序,如果按下ctrl z,就會(huì)進(jìn)入暫停狀態(tài)。

3240162e-2aca-11ee-a368-dac502259ad0.png ? 32627386-2aca-11ee-a368-dac502259ad0.png ?




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    595

    瀏覽量

    27510
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    492

    瀏覽量

    27649
  • LINUX內(nèi)核
    +關(guān)注

    關(guān)注

    1

    文章

    316

    瀏覽量

    21744
  • printf函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    5921

原文標(biāo)題:細(xì)說進(jìn)程的狀態(tài)

文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux系統(tǒng)下進(jìn)程的幾種狀態(tài)介紹

    文章對(duì) Linux 系統(tǒng)下進(jìn)程的幾種狀態(tài)進(jìn)行介紹,并對(duì)系統(tǒng)出現(xiàn)大量僵尸進(jìn)程和不可中斷進(jìn)程的場(chǎng)景進(jìn)行分析,使用常用的幾種工具進(jìn)行問題分析定位。
    發(fā)表于 11-24 16:15 ?1.3w次閱讀
    Linux系統(tǒng)下<b class='flag-5'>進(jìn)程</b>的幾種<b class='flag-5'>狀態(tài)</b>介紹

    【Linux學(xué)習(xí)雜談】之進(jìn)程狀態(tài)

    本帖最后由 michael_llh 于 2016-9-27 00:37 編輯 進(jìn)程的5種狀態(tài):1.就緒態(tài) 就緒態(tài)就是說進(jìn)程已經(jīng)準(zhǔn)備好了去運(yùn)行了,只要CPU有空閑的時(shí)間就可以運(yùn)行2.運(yùn)行態(tài)
    發(fā)表于 09-27 00:36

    Linux下的進(jìn)程結(jié)構(gòu)

    、所接收的信號(hào)信息等。 下面詳細(xì)講解task_struct結(jié)構(gòu)中最為重要的兩個(gè)域:state(進(jìn)程狀態(tài))和pid(進(jìn)程標(biāo)識(shí)符)。 1)進(jìn)程狀態(tài)
    發(fā)表于 05-27 09:24

    linux系統(tǒng)進(jìn)程存在狀態(tài)及管理

    linux系統(tǒng)進(jìn)程存在狀態(tài)及管理詳解
    發(fā)表于 05-21 06:28

    進(jìn)程類型及三種狀態(tài)

    進(jìn)程類型進(jìn)程的三種狀態(tài)
    發(fā)表于 04-02 07:06

    進(jìn)程與程序何不同

    著文件、靜態(tài)和可以復(fù)制。進(jìn)程是暫時(shí)的,程序使長(zhǎng)久的:進(jìn)程是個(gè)狀態(tài)變化的過程,程序可長(zhǎng)久保存。進(jìn)程與程序組成不同:進(jìn)程的組成包括程序、數(shù)據(jù)和
    發(fā)表于 11-08 08:27

    進(jìn)程是什么?進(jìn)程與程序的區(qū)別在哪

    進(jìn)程是什么?進(jìn)程與程序的區(qū)別在哪?進(jìn)程狀態(tài)哪幾種?
    發(fā)表于 12-23 06:27

    進(jìn)程幾種狀態(tài)

    文章目錄操作系統(tǒng)進(jìn)程和線程什么是進(jìn)程?什么是線程?進(jìn)程和線程什么區(qū)別?何時(shí)使用多進(jìn)程,何時(shí)使用多線程?
    發(fā)表于 12-24 07:16

    Linux進(jìn)程管理

    Linux進(jìn)程管理 本章主要介紹進(jìn)程的概念、狀態(tài)、構(gòu)成以及Linux進(jìn)程的相關(guān)知識(shí)。 掌握進(jìn)程的概念 掌握
    發(fā)表于 04-28 14:57 ?0次下載

    Linux 進(jìn)程狀態(tài)淺析

    盡管進(jìn)程狀態(tài)好幾種,但是進(jìn)程狀態(tài)的變遷卻只有兩個(gè)方向——從TASK_RUNNING狀態(tài)變?yōu)榉荰
    發(fā)表于 04-02 14:40 ?302次閱讀

    進(jìn)程的三種基本狀態(tài)進(jìn)程控制塊(PCB)

    一個(gè)進(jìn)程在運(yùn)行期間,不斷地從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài),它可以多次處于就緒狀態(tài)和執(zhí)行狀態(tài),也可以多次處于阻塞
    的頭像 發(fā)表于 01-15 10:36 ?1.4w次閱讀
    <b class='flag-5'>進(jìn)程</b>的三種基本<b class='flag-5'>狀態(tài)</b>及<b class='flag-5'>進(jìn)程</b>控制塊(PCB)

    經(jīng)典雙進(jìn)程狀態(tài)機(jī)的FPGA實(shí)現(xiàn)(含testbeach)

    經(jīng)典雙進(jìn)程狀態(tài)機(jī)的FPGA實(shí)現(xiàn)(含testbeach)(肇慶理士電源技術(shù)有限公司圖片)-該文檔為經(jīng)典雙進(jìn)程狀態(tài)機(jī)的FPGA實(shí)現(xiàn)(含testbeach)總結(jié)文檔,是一份很不錯(cuò)的參考資料,
    發(fā)表于 08-31 13:26 ?3次下載
    經(jīng)典雙<b class='flag-5'>進(jìn)程</b><b class='flag-5'>狀態(tài)</b>機(jī)的FPGA實(shí)現(xiàn)(含testbeach)

    Linux如何以暫停狀態(tài)啟動(dòng)新進(jìn)程

    “請(qǐng)教一個(gè)Bash的問題:有沒有什么辦法讓一個(gè)新開的進(jìn)程,一開始就處于暫停狀態(tài),直到我輸入fg?”
    的頭像 發(fā)表于 04-15 12:25 ?2192次閱讀

    CPU進(jìn)入idle進(jìn)程狀態(tài)的流程

    每一個(gè) CPU 核心都會(huì)有一個(gè) idle 進(jìn)程,idle 進(jìn)程是當(dāng)系統(tǒng)沒有調(diào)度 CPU 資源的時(shí)候,會(huì)進(jìn)入 idle 進(jìn)程,而 idle 進(jìn)程的作用就是不使用 CPU,以此達(dá)到省電的目
    的頭像 發(fā)表于 10-14 09:26 ?2512次閱讀

    進(jìn)程進(jìn)入等待狀態(tài)哪幾種方式

    進(jìn)程進(jìn)入等待狀態(tài)的方式多種,下面將詳細(xì)介紹。 一、阻塞等待狀態(tài) 阻塞等待狀態(tài)是指進(jìn)程由于某些原
    的頭像 發(fā)表于 11-17 11:19 ?2538次閱讀
    下三元八运24山详解| 至尊百家乐下载| 百家乐千术手法| 大发888娱乐场168| 明升88 | 百家乐官网注册开户送彩金| 莫斯科百家乐官网的玩法技巧和规则 | 网址百家乐的玩法技巧和规则 | 鸿博,| 百家乐官网技术辅助软件| 百盛百家乐的玩法技巧和规则| 老牌全讯网| 英皇百家乐官网的玩法技巧和规则| 缅甸百家乐赌场娱乐网规则| 大众娱乐城| 三国百家乐官网的玩法技巧和规则 | 永康百家乐赌博| 凯斯网娱乐城| 百家乐室系统软件| 博狗投注| 阳宅24山流年吉凶方位| 菲律宾沙龙国际| 24山向内什么山向最好| 六合彩香港| 百家乐官网试玩| 莆田棋牌迷| 网上百家乐官网公司| 澳门顶级赌场317| 百家乐官网桌布呢布| 92棋牌游戏| 百家乐经典路单| 皇冠现金网娱乐城| 澳门赌百家乐打法| 百家乐官网玩法及细则| 百家乐有诈吗| 百家乐官网账号变动原因| 大三元百家乐的玩法技巧和规则| 百家乐官网投注软件有用吗| 威尼斯人娱乐网假吗 | 大发888游戏平台电子| 太阳百家乐官网代理|