日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux下D狀態(tài)進程:運行與掛起間的切換(linuxd狀態(tài)的進程)

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

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

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

sigaction(SIGALARM, &my_handler, NULL);

return 0;

}

在Linux操作系統(tǒng)下,D狀態(tài)的進程是運行與掛起的中介,即不是正在運行的進程,又不是掛起的進程。它的運行與掛起切換是通過“休眠(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ù)器托管租用。


當(dāng)前標(biāo)題:Linux下D狀態(tài)進程:運行與掛起間的切換(linuxd狀態(tài)的進程)
網(wǎng)站鏈接:http://www.5511xx.com/article/dhiieio.html