吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

當(dāng)沒(méi)有進(jìn)程可調(diào)度時(shí)內(nèi)核在做什么呢?

dyquk4xk2p3d ? 來(lái)源:卯時(shí)卯刻 ? 2023-05-08 10:02 ? 次閱讀

內(nèi)核的主要職責(zé)是進(jìn)程調(diào)度,比如當(dāng)一個(gè)進(jìn)程阻塞時(shí),它會(huì)調(diào)度另外一個(gè)進(jìn)程來(lái)執(zhí)行。 那當(dāng)沒(méi)有進(jìn)程可以調(diào)度時(shí),內(nèi)核在做什么呢? 此時(shí),內(nèi)核會(huì)進(jìn)入到idle狀態(tài),其大致邏輯是:

while(1) {
while(!need_resched()) {// 判斷是否有其他進(jìn)程可執(zhí)行
asm("hlt");// 如果沒(méi)有,則執(zhí)行hlt指令
}
schedule_idle();// 如果有,則轉(zhuǎn)而執(zhí)行其他進(jìn)程
}
由上可見(jiàn),當(dāng)沒(méi)有其他進(jìn)程可執(zhí)行時(shí),idle循環(huán)里會(huì)一直執(zhí)行hlt匯編指令,該指令的作用是暫停cpu的執(zhí)行,直到有中斷等情況發(fā)生時(shí)。

當(dāng)有中斷發(fā)生時(shí),比如內(nèi)核接收到了新的tcp包,此時(shí)某個(gè)進(jìn)程會(huì)從阻塞狀態(tài)轉(zhuǎn)變?yōu)榭蓤?zhí)行狀態(tài)。

當(dāng)中斷邏輯執(zhí)行完畢后,上面的idle循環(huán)也會(huì)從halt狀態(tài)退出,繼續(xù)循環(huán)執(zhí)行need_resched()函數(shù),此時(shí)該函數(shù)返回true,表示有其他進(jìn)程可執(zhí)行,這樣該邏輯會(huì)退出hlt循環(huán),繼續(xù)執(zhí)行schedule_idle()函數(shù),schedule_idle()函數(shù)的作用是從idle進(jìn)程切換到目標(biāo)進(jìn)程,進(jìn)而執(zhí)行其對(duì)應(yīng)的代碼。

這樣,內(nèi)核就從idle狀態(tài),退回到了正常的進(jìn)程調(diào)度狀態(tài)。

當(dāng)其他所有進(jìn)程又都執(zhí)行完畢,又都進(jìn)入到了阻塞狀態(tài),導(dǎo)致內(nèi)核沒(méi)有進(jìn)程可調(diào)度時(shí),內(nèi)核邏輯又會(huì)切換到上述idle循環(huán)代碼,從schedule_idle()函數(shù)后繼續(xù)執(zhí)行,即進(jìn)入下一次循環(huán)。

上面的idle循環(huán)在內(nèi)核中也是以一個(gè)進(jìn)程來(lái)表示的,它的pid是0,它的名字是swapper。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • PID
    PID
    +關(guān)注

    關(guān)注

    35

    文章

    1473

    瀏覽量

    85825
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    900

    瀏覽量

    41755
  • TCP通信
    +關(guān)注

    關(guān)注

    0

    文章

    146

    瀏覽量

    4292

原文標(biāo)題:當(dāng)沒(méi)有進(jìn)程可調(diào)度時(shí),內(nèi)核在做什么呢?

文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux內(nèi)核進(jìn)程管理與調(diào)度:策略優(yōu)化與實(shí)踐分析

    與之相關(guān)的優(yōu)先級(jí),如果有多個(gè)可執(zhí)行的進(jìn)程等待CPU資源,那么具有更高優(yōu)先級(jí)的進(jìn)程將優(yōu)先被調(diào)度執(zhí)行。今天就給大家講解一下Linux內(nèi)核中的進(jìn)程
    發(fā)表于 05-08 09:42 ?1172次閱讀
    Linux<b class='flag-5'>內(nèi)核</b><b class='flag-5'>進(jìn)程</b>管理與<b class='flag-5'>調(diào)度</b>:策略優(yōu)化與實(shí)踐分析

    深入探討Linux的進(jìn)程調(diào)度

    Linux操作系統(tǒng)作為一個(gè)開(kāi)源且廣泛應(yīng)用的操作系統(tǒng),其內(nèi)核設(shè)計(jì)包含了許多核心功能,而進(jìn)程調(diào)度器(Scheduler)就是其中一個(gè)至關(guān)重要的模塊。進(jìn)程
    的頭像 發(fā)表于 08-13 13:36 ?994次閱讀
    深入探討Linux的<b class='flag-5'>進(jìn)程</b><b class='flag-5'>調(diào)度</b>器

    labview的工程師在做什么

    會(huì)labview的工程師在做什么??要找工作了,想給自己一個(gè)定位,想問(wèn)下大家,我本專業(yè)是機(jī)械的,碩士做了兩年關(guān)于labview控制的數(shù)據(jù)采集系統(tǒng),想了解下大家的現(xiàn)狀!交流交流哈!
    發(fā)表于 03-30 09:39

    干貨分享:基于嵌入式Linux中進(jìn)程調(diào)度實(shí)現(xiàn)方法

    。處于該狀態(tài)的進(jìn)程通過(guò)其他進(jìn)程的信號(hào)才能被喚醒。 2.2 調(diào)度方式Linux 中的每個(gè)進(jìn)程都分配有一個(gè)相對(duì)獨(dú)立的虛擬地址空間。該虛存空間分為兩部分:用戶空間包含了
    發(fā)表于 12-10 14:17

    【HarmonyOS】鴻蒙內(nèi)核源碼分析(調(diào)度機(jī)制篇)

    的不同,Task是調(diào)度層面的概念,線程是進(jìn)程層面概念。比如 main() 函數(shù)中首個(gè)函數(shù) OsSetMainTask(); 就是設(shè)置啟動(dòng)任務(wù),但此時(shí)啥都還沒(méi)開(kāi)始,Kprocess 進(jìn)程
    發(fā)表于 10-14 14:00

    鴻蒙內(nèi)核源碼分析(調(diào)度機(jī)制篇):Task是如何被調(diào)度執(zhí)行的

    (); 就是設(shè)置啟動(dòng)任務(wù),但此時(shí)啥都還沒(méi)開(kāi)始,Kprocess 進(jìn)程都沒(méi)創(chuàng)建,怎么會(huì)有大家一般意義上所理解的線程。狹義上的后續(xù)有 鴻蒙內(nèi)核源碼分析(啟動(dòng)過(guò)程篇) 來(lái)說(shuō)明。不知道大家
    發(fā)表于 11-23 10:53

    鴻蒙內(nèi)核源碼分析(調(diào)度隊(duì)列篇):進(jìn)程和Task的就緒隊(duì)列對(duì)調(diào)度的作用

    OsTaskPriQueueTop查最高優(yōu)先級(jí)任務(wù)OsDequeEmptySchedMap進(jìn)程出列[td]OsGetTopTask獲取被調(diào)度選擇的task鴻蒙內(nèi)核進(jìn)程和線程各有32個(gè)就
    發(fā)表于 11-23 11:09

    Linux進(jìn)程調(diào)度的原理解析

    進(jìn)程調(diào)度依據(jù) 調(diào)度程序運(yùn)行時(shí),要在所有可運(yùn)行狀態(tài)的進(jìn)程中選擇最值得運(yùn)行的進(jìn)程投入運(yùn)行。選擇進(jìn)程
    發(fā)表于 11-02 11:01 ?1次下載

    uClinux進(jìn)程調(diào)度器的實(shí)現(xiàn)分析

    分享到:標(biāo)簽:uClinux 調(diào)度策略 進(jìn)程調(diào)度器 摘要:針對(duì)操作系統(tǒng)中進(jìn)程調(diào)度機(jī)制,依次對(duì)其調(diào)度
    發(fā)表于 11-06 14:30 ?0次下載

    當(dāng) CPU 空閑時(shí)它都在做什么

    人在空閑的時(shí)候免不了昏昏欲睡那cpu空閑時(shí)在做什么
    的頭像 發(fā)表于 03-06 15:43 ?5095次閱讀
    <b class='flag-5'>當(dāng)</b> CPU 空閑時(shí)它都<b class='flag-5'>在做什么</b>?

    Linux 進(jìn)程調(diào)度淺析

    的優(yōu)先級(jí),如果有多個(gè)進(jìn)程同時(shí)處于可執(zhí)行狀態(tài),那么誰(shuí)優(yōu)先級(jí)高誰(shuí)就去執(zhí)行,沒(méi)有什么好糾結(jié)的了。那么,進(jìn)程的優(yōu)先級(jí)該如何確定?有兩種方式:由用戶程序指定、由
    發(fā)表于 04-02 14:40 ?365次閱讀

    linux進(jìn)程調(diào)度淺析

    進(jìn)程定義優(yōu)先級(jí)。定義了進(jìn)程的優(yōu)先級(jí),如果有多個(gè)進(jìn)程同時(shí)處于可執(zhí)行狀態(tài),那么誰(shuí)優(yōu)先級(jí)高誰(shuí)就去執(zhí)行,沒(méi)有什么好糾結(jié)的了。那么,進(jìn)程的優(yōu)先級(jí)該如何
    發(fā)表于 04-02 14:45 ?355次閱讀

    鴻蒙內(nèi)核源碼分析:task是內(nèi)核調(diào)度的單元

    從系統(tǒng)的角度看,線程是競(jìng)爭(zhēng)系統(tǒng)資源的最小運(yùn)行單元。線程可以使用或等待CPU、使用內(nèi)存空間等系統(tǒng)資源,并獨(dú)立于其它線程運(yùn)行。 鴻蒙內(nèi)核每個(gè)進(jìn)程內(nèi)的線程獨(dú)立運(yùn)行、獨(dú)立調(diào)度,當(dāng)前進(jìn)程內(nèi)線程
    發(fā)表于 11-23 15:51 ?22次下載
    鴻蒙<b class='flag-5'>內(nèi)核</b>源碼分析:task是<b class='flag-5'>內(nèi)核</b><b class='flag-5'>調(diào)度</b>的單元

    鴻蒙內(nèi)核源碼分析:進(jìn)程和Task的就緒隊(duì)列對(duì)調(diào)度的作用

    鴻蒙內(nèi)核代碼中有兩個(gè)源文件是關(guān)于隊(duì)列的,一個(gè)是用于調(diào)度的隊(duì)列,另一個(gè)是用于線程間通訊的IPC隊(duì)列。 鴻蒙內(nèi)核進(jìn)程和線程各有32個(gè)就緒隊(duì)列,進(jìn)程
    發(fā)表于 11-23 15:48 ?31次下載
    鴻蒙<b class='flag-5'>內(nèi)核</b>源碼分析:<b class='flag-5'>進(jìn)程</b>和Task的就緒隊(duì)列對(duì)<b class='flag-5'>調(diào)度</b>的作用

    帶大家看看Linux內(nèi)核如何調(diào)度進(jìn)程

    部分,打開(kāi)調(diào)度器的黑匣子,來(lái)看看Linux內(nèi)核如何調(diào)度進(jìn)程的。實(shí)際上,進(jìn)程調(diào)度器主要做兩件事:選
    的頭像 發(fā)表于 07-26 15:14 ?2053次閱讀
    豪华百家乐桌子| 百家乐天下第一庄| 百家乐官网园云鼎娱乐平台| 喜達博彩网| 大发888官网授权网 | 百家乐怎么玩| 大发888188| 百家乐特殊计| 线上百家乐官网怎么玩| 百家乐官网赌场游戏平台| 百家乐官网如何视频| 红利来娱乐城| 钱大发888游戏下载| 678百家乐博彩赌场娱乐网规则| 网上百家乐新利| 赤壁百家乐官网娱乐城| 玩百家乐官网输澳门百家乐官网现场| 彰武县| bet365官方网站| 现金网游戏| 大发888为什么打不开| 真人百家乐最高赌注| 澳门百家乐网上娱乐场开户注册 | 八卦24山| 长春百家乐官网的玩法技巧和规则 | 3U百家乐官网的玩法技巧和规则| 百家乐官网韩泰阁| 真钱百家乐官网五湖四海全讯网| 宜兴市| 网上现金博彩网| 时时彩论坛| 香港六合彩开奖结果| 丹东亿酷棋牌世界官方下载| 大发888娱乐场and| 大发888登陆网页游戏| 大发888手机版官网| 大发888信用好不好| 老虎机的规律| 大发888游戏平台dafa888gw| 太阳城娱乐正网| 桐城太阳城招聘|