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