這篇“l(fā)inux進(jìn)程的狀態(tài)有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“l(fā)inux進(jìn)程的狀態(tài)有哪些”文章吧。
創(chuàng)新互聯(lián)是專業(yè)的石林網(wǎng)站建設(shè)公司,石林接單;提供成都網(wǎng)站設(shè)計、成都網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行石林網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
有5種狀態(tài):1、可執(zhí)行狀態(tài);2、可中斷等待狀態(tài);3、不可中斷等待狀態(tài);4、停止?fàn)顟B(tài);5、中止?fàn)顟B(tài)?!翱蓤?zhí)行狀態(tài)”的state值為TASK_RUNNING,此時程序已被掛入運行隊列,處于準(zhǔn)備運行狀態(tài),一旦獲得處理器使用權(quán),即可進(jìn)入運行狀態(tài)。
本教程操作環(huán)境:linux5.9.8系統(tǒng)、Dell G3電腦。
由操作系統(tǒng)定義,并由操作系統(tǒng)所操控的一個特殊的數(shù)據(jù)結(jié)構(gòu)實例叫做進(jìn)程。它連接了用戶代碼,擁有代碼運行所需的獨立內(nèi)存空間,在調(diào)度器的調(diào)度下使用分配給它的處理器時間片來運行。
Linux進(jìn)程的5種狀態(tài)
在Linux系統(tǒng)中,一個進(jìn)程被創(chuàng)建之后,在系統(tǒng)中可以有下面5種狀態(tài)。進(jìn)程的當(dāng)前狀態(tài)記錄在進(jìn)程控制塊的state成員中。
就緒狀態(tài)和運行狀態(tài)(可執(zhí)行狀態(tài))
就緒狀態(tài)的狀態(tài)標(biāo)志state的值為TASK_RUNNING。此時,程序已被掛入運行隊列,處于準(zhǔn)備運行狀態(tài)。一旦獲得處理器使用權(quán),即可進(jìn)入運行狀態(tài)。
當(dāng)進(jìn)程獲得處理器而運行時 ,state的值仍然為TASK_RUNNING,并不發(fā)生改變;但Linux會把一個專門用來指向當(dāng)前運行任務(wù)的指針current指向它,以表示它是一個正在運行的進(jìn)程。
可中斷等待狀態(tài)
狀態(tài)標(biāo)志state的值為TASK_INTERRUPTIBL。此時,由于進(jìn)程未獲得它所申請的資源而處在等待狀態(tài)。一旦資源有效或者有喚醒信號,進(jìn)程會立即結(jié)束等待而進(jìn)入就緒狀態(tài)。
不可中斷等待狀態(tài)
狀態(tài)標(biāo)志state的值為TASK_UNINTERRUPTIBL。此時,進(jìn)程也處于等待資源狀態(tài)。一旦資源有效,進(jìn)程會立即進(jìn)入就緒狀態(tài)。這個等待狀態(tài)與可中斷等待狀態(tài)的區(qū)別在于:處于TASK_UNINTERRUPTIBL狀態(tài)的進(jìn)程不能被信號量或者中斷所喚醒,只有當(dāng)它申請的資源有效時才能被喚醒。
這個狀態(tài)被應(yīng)用在內(nèi)核中某些場景中,比如當(dāng)進(jìn)程需要對磁盤進(jìn)行讀寫,而此刻正在DMA中進(jìn)行著數(shù)據(jù)到內(nèi)存的拷貝,如果這時進(jìn)程休眠被打斷(比如強(qiáng)制退出信號)那么很可能會出現(xiàn)問題,所以這時進(jìn)程就會處于不可被打斷的狀態(tài)下。
停止?fàn)顟B(tài)
狀態(tài)標(biāo)志state的值為TASK_STOPPED。當(dāng)進(jìn)程收到一個SIGSTOP信號后,就由運行狀態(tài)進(jìn)入停止?fàn)顟B(tài),當(dāng)受到一個SIGCONT信號時,又會恢復(fù)運行狀態(tài)。這種狀態(tài)主要用于程序的調(diào)試,又被叫做“暫停狀態(tài)”、“掛起狀態(tài)”。
中止?fàn)顟B(tài)
狀態(tài)標(biāo)志state的值為TASK_DEAD。進(jìn)程因某種原因而中止運行,進(jìn)程占有的所有資源將被回收,除了task_struct結(jié)構(gòu)(以及少數(shù)資源)以外,并且系統(tǒng)對它不再予以理睬,所以這種狀態(tài)也叫做“僵死狀態(tài)”,進(jìn)程成為僵尸進(jìn)程。
在進(jìn)程的整個生命周期中,它可在5種狀態(tài)之間轉(zhuǎn)換。Linux進(jìn)程5種狀態(tài)之間的轉(zhuǎn)換關(guān)系如下圖所示:
以上就是關(guān)于“l(fā)inux進(jìn)程的狀態(tài)有哪些”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。