av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Linux下D狀態(tài)進(jìn)程:運行與掛起間的切換(linuxd狀態(tài)的進(jìn)程)

在linux操作系統(tǒng)下,有多種狀態(tài)的進(jìn)程分布于用戶的操作中。其中最為常見的是D狀態(tài)的進(jìn)程,它位于 R(正在運行)進(jìn)程與S(掛起)進(jìn)程之間,既不是正在運行的進(jìn)程,也不是掛起的進(jìn)程。

D狀態(tài)進(jìn)程即為不可中斷的睡眠狀態(tài),該進(jìn)程就此進(jìn)入暫停狀態(tài),擁有被掛起進(jìn)程具備的所有權(quán)限,但不占用CPU資源,也不允許外部的中斷端口喚醒它。這是因為D狀態(tài)的進(jìn)程正在等待IO操作的完成,而這需要一段時間,所以D狀態(tài)的進(jìn)程要一直保持暫停狀態(tài)直至IO的完成,才可被喚醒繼續(xù)運行。

D狀態(tài)進(jìn)程的切換是通過“休眠(sleep)”和”喚醒(wake)”兩個操作實現(xiàn)的。在系統(tǒng)調(diào)度時,進(jìn)程會根據(jù)不同情況進(jìn)入休眠狀態(tài),例如,當(dāng)進(jìn)程等待IO操作完成時,會進(jìn)入休眠狀態(tài);當(dāng)IO操作完成時,調(diào)度器會喚醒I/O等待進(jìn)程,給予它運行的機會。這就說明:使用“休眠(sleep)”和”喚醒(wake)”,可以實現(xiàn)進(jìn)程從R(正在運行)與S(掛起)間的切換,而當(dāng)進(jìn)程從R進(jìn)入休眠狀態(tài),系統(tǒng)內(nèi)的進(jìn)程狀態(tài)會從R變更為D,反之則從D變更為R。

代碼實現(xiàn)如下:

// 休眠(sleep)

int sleep(int seconds)

{

int ret;

// 先設(shè)定一個信號掛起的處理函數(shù)

handler my_handler = {.sa_handler = suspender};

sigaction(SIGALARM, &my_handler, NULL);

// 設(shè)置定時器,每seconds秒觸發(fā)一次SIGALARM信號

struct itimerval timer;

timer.it_interval.tv_sec = 0;

timer.it_interval.tv_usec = 0;

timer.it_value.tv_sec = seconds;

timer.it_value.tv_usec = 0;

ret = setitimer(ITIMER_REAL, &timer, NULL);

if (ret

return ret;

// 通過發(fā)送SIGALARM信號來調(diào)節(jié)進(jìn)程的狀態(tài)

sigaction(SIGALARM, &my_handler, NULL);

return 0;

}

// 喚醒(wake)

int wake(int seconds)

{

int ret;

// 設(shè)置定時器,每seconds秒觸發(fā)一次SIGALARM信號

struct itimerval timer;

timer.it_interval.tv_sec = 0;

timer.it_interval.tv_usec = 0;

timer.it_value.tv_sec = seconds;

timer.it_value.tv_usec = 0;

ret = setitimer(ITIMER_REAL, &timer, NULL);

if (ret

return ret;

// 再次設(shè)定一個喚醒的處理函數(shù)

Handler my_handler = {.sa_handler = waker};

sigaction(SIGALARM, &my_handler, NULL);

// 通過發(fā)送SIGALARM信號來恢復(fù)進(jìn)程的狀態(tài)

sigaction(SIGALARM, &my_handler, NULL);

return 0;

}

在Linux操作系統(tǒng)下,D狀態(tài)的進(jìn)程是運行與掛起的中介,即不是正在運行的進(jìn)程,又不是掛起的進(jìn)程。它的運行與掛起切換是通過“休眠(sleep)”和”喚醒(wake)”兩個操作實現(xiàn)的,它不僅能夠更好地優(yōu)化系統(tǒng)調(diào)度,增強系統(tǒng)的吞吐量,而且還能有效地減少對CPU的資源消耗,從而提高系統(tǒng)的性能。

成都服務(wù)器租用選創(chuàng)新互聯(lián),先試用再開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價格厚道的香港/美國云服務(wù)器和獨立服務(wù)器。物理服務(wù)器托管租用:四川成都、綿陽、重慶、貴陽機房服務(wù)器托管租用。


網(wǎng)頁題目:Linux下D狀態(tài)進(jìn)程:運行與掛起間的切換(linuxd狀態(tài)的進(jìn)程)
分享鏈接:http://uogjgqi.cn/article/dhiieio.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流