一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2023-07-25 17:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

因為輪轉(zhuǎn)的速度特別快,所以在正常人看來,這些進程好像是在同時執(zhí)行。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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




審核編輯:劉清

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

    關(guān)注

    4

    文章

    605

    瀏覽量

    28618
  • 狀態(tài)機
    +關(guān)注

    關(guān)注

    2

    文章

    493

    瀏覽量

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

    關(guān)注

    1

    文章

    317

    瀏覽量

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

    關(guān)注

    0

    文章

    31

    瀏覽量

    6117

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

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

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

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

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

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

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

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

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

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

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

    進程與程序何不同

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

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

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

    進程幾種狀態(tài)

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

    Linux進程管理

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

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

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

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

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

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

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

    Linux如何以暫停狀態(tài)啟動新進程

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

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

    進程進入等待狀態(tài)的方式多種,下面將詳細介紹。 一、阻塞等待狀態(tài) 阻塞等待狀態(tài)是指進程由于某些原
    的頭像 發(fā)表于 11-17 11:19 ?3180次閱讀

    Linux進程狀態(tài)詳解

    進程狀態(tài)是task_struct內(nèi)的一個整數(shù);進行:進程在調(diào)度隊列中,進程狀態(tài)都是running,阻塞:等待某種設(shè)備或者資源就緒。
    的頭像 發(fā)表于 04-01 09:46 ?444次閱讀
    Linux<b class='flag-5'>進程</b><b class='flag-5'>狀態(tài)</b>詳解