欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:運(yùn)維 【Linux】進(jìn)程狀態(tài)

柚子快報邀請碼778899分享:運(yùn)維 【Linux】進(jìn)程狀態(tài)

http://yzkb.51969.com/

文章目錄

進(jìn)程三狀態(tài)轉(zhuǎn)換Linux進(jìn)程狀態(tài)R狀態(tài)S狀態(tài)D狀態(tài)如何暫停進(jìn)程t狀態(tài)x狀態(tài)Z狀態(tài)

總結(jié)

進(jìn)程三狀態(tài)轉(zhuǎn)換

新建態(tài): 操作系統(tǒng)已經(jīng)分配了資源給進(jìn)程了。 就緒態(tài): 已經(jīng)具備了執(zhí)行的所有必有的條件,但是由于各種原因,暫時無法運(yùn)行,進(jìn)程進(jìn)入就緒狀態(tài)。 運(yùn)行狀態(tài): 當(dāng)進(jìn)程處于調(diào)度隊列當(dāng)中的時候就處于運(yùn)行狀態(tài)。 阻塞狀態(tài): 當(dāng)執(zhí)行進(jìn)程時,遇到代碼中有scanf的時候,但是又遲遲沒有接收到鍵盤的信息的時候,這時候會出現(xiàn)阻塞狀態(tài),當(dāng)重新接收到鍵盤信息的時候,這時候會重新回到就緒態(tài),馬上到運(yùn)行態(tài)。 終止態(tài): 當(dāng)一個程序運(yùn)行完了的時候這個進(jìn)程就進(jìn)入終止態(tài)。

這一系列狀態(tài)到底是如何完成的呢?

操作系統(tǒng)會提供一個運(yùn)行隊列用來運(yùn)行這些進(jìn)程,為了后續(xù)講解,首先應(yīng)該先了解一下下面的概念:

并行和并發(fā) 并行: 多個進(jìn)程在多個CPU下分別,同時進(jìn)行運(yùn)行,這稱之為并行 并發(fā): 多個進(jìn)程在一個CPU下采用進(jìn)程切換的方式,在一段時間之內(nèi),讓多個進(jìn)程都得以推進(jìn),稱之為并發(fā) 并行很容易理解,那什么是并發(fā)呢?并發(fā)中講到了一個概念就是進(jìn)程切換,首先我們要知道,很多電腦都是一個CPU的,那只有一個CPU是如何完成如此之多了的進(jìn)程呢?就拿我們的電腦為例,我們的電腦是如何同時打開多個程序的呢?其實CPU在調(diào)度進(jìn)程的時候,不是一下就把一個代碼跑完的,而是以時間片為單位來跑代碼的,比如我們寫代碼的時候,遇到死循環(huán)了,或者遇到scanf時我們不輸入了,其他程序還是照樣能跑,就是這個原因。具體我們拿一個圖來說。 當(dāng)上面的運(yùn)行隊列的隊首的進(jìn)程運(yùn)行完一個時間片之后會被抽離出來然后插入到隊列尾運(yùn)行下一個進(jìn)程,這樣循環(huán)往復(fù)。并發(fā)就是這樣循環(huán)往復(fù)的一個過程。什么是時間片: 時間片就是操作系統(tǒng)分配給系統(tǒng)中每個進(jìn)程用于執(zhí)行的時間片段。執(zhí)行完一個時間片之后立馬調(diào)到下一個進(jìn)程執(zhí)行下一個時間片。等待的本質(zhì): 什么是等待,當(dāng)我們的程序中的代碼遇到scanf的時候,這就是一種等待,那么操作系統(tǒng)是如何處理這種狀態(tài)的呢? 在操作系統(tǒng)的下層有很多硬件設(shè)備與操作系統(tǒng)交互,當(dāng)遇到scanf的時候,如果遲遲得不到鍵盤的信息,這時候不會連入到運(yùn)行隊列尾,而是連入到struct_device隊尾,這里struct_device中存在一個wait_queue用來存儲等待的進(jìn)程。等待對應(yīng)的硬件準(zhǔn)備好后,就可以重新排入到運(yùn)行隊列中了。 所以等待的本質(zhì)就是將進(jìn)程的PCB連入到對應(yīng)的硬件的隊列當(dāng)中。

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

static const char * const task_state_array[] = {

"R (running)", /* 0 */

"S (sleeping)", /* 1 */

"D (disk sleep)", /* 2 */

"T (stopped)", /* 4 */

"t (tracing stop)", /* 8 */

"X (dead)", /* 16 */

"Z (zombie)", /* 32 */

};

上面就是Linux中進(jìn)程的七種狀態(tài)。

R狀態(tài)

我們寫一段死循環(huán)代碼:

#include

#include

int main()

{

int count=0;

while(1)

{

//scanf("%d",&count);

// printf("hello world,cnt : %d \n",count);

//sleep(1);

}

return 0;

}

可以看見上面代碼是R運(yùn)行狀態(tài)。 我們把打印加上:

可以發(fā)現(xiàn)狀態(tài)變成了休眠狀態(tài)。 為什么呢? 因為我們printf是在內(nèi)存中寫入,如果一直寫,當(dāng)緩沖區(qū)會寫滿,這導(dǎo)致顯示器不是常常在線的。

S狀態(tài)

S狀態(tài)是可被中斷的休眠狀態(tài),類似于淺睡眠

D狀態(tài)

D狀態(tài)是不可被中斷的休眠狀態(tài),類似于深睡眠

如何暫停進(jìn)程

18和19, 18進(jìn)程繼續(xù),19是進(jìn)程暫停。 可以看見進(jìn)程被暫停了 可以看見進(jìn)程處于暫停狀態(tài)。

進(jìn)程繼續(xù):

可以看見進(jìn)程狀態(tài)雖然是S但是后面少了一個+號,這是由前臺進(jìn)程轉(zhuǎn)換為了后臺進(jìn)程,這時我們再在前面用ctrl+c就結(jié)束不了進(jìn)程了,只能用kill來殺死后臺進(jìn)程(后臺不能用ctrl+c來殺死)

t狀態(tài)

當(dāng)一個進(jìn)程被追蹤時,斷點(diǎn)停下就是t狀態(tài)。

x狀態(tài)

x狀態(tài)是死亡狀態(tài),當(dāng)一個進(jìn)程已經(jīng)終止并且已經(jīng)中系統(tǒng)中完全清除。

Z狀態(tài)

z狀態(tài)是僵尸狀態(tài),與死亡狀態(tài)不同,z狀態(tài)是指進(jìn)程已經(jīng)終止但父進(jìn)程還沒有還沒有讀取其退出信息的一種狀態(tài)。

總結(jié)

通過對進(jìn)程狀態(tài)轉(zhuǎn)換和 Linux 進(jìn)程狀態(tài)的分析,我們了解了操作系統(tǒng)如何通過不同的狀態(tài)管理進(jìn)程的執(zhí)行。進(jìn)程的三種基本狀態(tài)轉(zhuǎn)換解釋了進(jìn)程從創(chuàng)建到結(jié)束的生命周期,而 Linux 系統(tǒng)中常見的 R、S、D 等狀態(tài)則細(xì)化了進(jìn)程在運(yùn)行、等待以及阻塞中的具體表現(xiàn)。這些知識不僅幫助我們理解了系統(tǒng)的運(yùn)行機(jī)制,也為解決系統(tǒng)性能調(diào)優(yōu)、進(jìn)程管理等實際問題提供了理論基礎(chǔ)。掌握這些進(jìn)程狀態(tài),對于操作系統(tǒng)調(diào)試與開發(fā)者都是非常重要的一步。

柚子快報邀請碼778899分享:運(yùn)維 【Linux】進(jìn)程狀態(tài)

http://yzkb.51969.com/

相關(guān)閱讀

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19565372.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄