在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

Linux調(diào)度器的核心scheduler_tick介紹

望獲Linux ? 來(lái)源:jf_20082045 ? 作者:jf_20082045 ? 2024-08-22 14:54 ? 次閱讀

Linux內(nèi)核中,scheduler_tick是系統(tǒng)調(diào)度的核心組件,負(fù)責(zé)處理定時(shí)器中斷、更新任務(wù)狀態(tài),并決定是否進(jìn)行任務(wù)切換。每當(dāng)定時(shí)器中斷發(fā)生時(shí),scheduler_tick會(huì)被調(diào)用,以保障系統(tǒng)按照預(yù)定的時(shí)間間隔進(jìn)行調(diào)度和時(shí)間更新,從而維護(hù)時(shí)間精度和調(diào)度的準(zhǔn)確性。

在系統(tǒng)時(shí)間管理中,scheduler_tick負(fù)責(zé)更新系統(tǒng)時(shí)間,包括更新時(shí)間戳和jiffies(系統(tǒng)時(shí)間的單位),為調(diào)度提供可靠的數(shù)據(jù)支持。通過(guò)這些精準(zhǔn)的時(shí)間更新,內(nèi)核確保其時(shí)間管理機(jī)制的一致性和準(zhǔn)確性,從而為調(diào)度決策提供堅(jiān)實(shí)的基礎(chǔ)。

scheduler_tick還更新當(dāng)前進(jìn)程的時(shí)間統(tǒng)計(jì)數(shù)據(jù),這些數(shù)據(jù)幫助內(nèi)核有效地掌握各個(gè)進(jìn)程的運(yùn)行時(shí)間,進(jìn)而優(yōu)化調(diào)度決策的制定。在資源分配方面,這些時(shí)間統(tǒng)計(jì)數(shù)據(jù)確保了CPU時(shí)間的合理分配和整體系統(tǒng)的高效運(yùn)行。

在調(diào)度決策過(guò)程中,scheduler_tick具有決定性作用。當(dāng)當(dāng)前進(jìn)程的時(shí)間片用盡或更高優(yōu)先級(jí)的進(jìn)程需要運(yùn)行時(shí),scheduler_tick會(huì)調(diào)用調(diào)度函數(shù)選擇下一個(gè)進(jìn)程,以確保系統(tǒng)資源的高效利用和任務(wù)的連續(xù)執(zhí)行。通過(guò)這樣的機(jī)制,scheduler_tick實(shí)現(xiàn)了有效的任務(wù)管理和系統(tǒng)性能的提升。

下面我們提供一些代碼片段來(lái)幫助理解。

以下是 scheduler_tick 的代碼分析,假設(shè)我們有如下函數(shù):

void scheduler_tick(void)

{

struct rq *rq = this_rq(); // 獲取當(dāng)前運(yùn)行隊(duì)列

struct task_struct *p = rq->curr; // 獲取當(dāng)前進(jìn)程

// 更新當(dāng)前進(jìn)程的運(yùn)行時(shí)間

update_curr(rq);

// 統(tǒng)計(jì)系統(tǒng)時(shí)間

account_system_time();

// 檢查是否需要進(jìn)行任務(wù)切換

if (need_resched())

schedule(); // 調(diào)用調(diào)度函數(shù)

// 更新系統(tǒng)時(shí)間

tick_update();

}

1. update_curr(rq)

static inline void update_curr(struct rq *rq)

{

struct task_struct *p = rq->curr;

unsigned int delta_exec;

delta_exec = rq->clock - p->se.exec_start;

p->se.exec_start = rq->clock;

p->se.sum_exec_runtime += delta_exec;

}

作用:更新當(dāng)前進(jìn)程 p 的執(zhí)行時(shí)間。

delta_exec 是當(dāng)前時(shí)間與進(jìn)程上次更新時(shí)間的差值

p->se.sum_exec_runtime 是進(jìn)程的累計(jì)運(yùn)行時(shí)間。

重要性:準(zhǔn)確記錄進(jìn)程的運(yùn)行時(shí)間對(duì)于調(diào)度決策和性能分析非常重要。

2. account_system_time()

void account_system_time(void)

{

// 這里可能包括對(duì)系統(tǒng)時(shí)間的處理

// 例如更新系統(tǒng)時(shí)間統(tǒng)計(jì)、處理內(nèi)核時(shí)間等

}

作用:負(fù)責(zé)更新系統(tǒng)時(shí)間的相關(guān)統(tǒng)計(jì)數(shù)據(jù)。可能涉及到系統(tǒng)時(shí)間的記錄、計(jì)算等。

重要性:確保系統(tǒng)時(shí)間的準(zhǔn)確性,并為調(diào)度和時(shí)間管理提供支持。

3. need_resched()

bool need_resched(void)

{

return !!(current->sched_flags & SCHED_FLAG_YIELD);

}

作用:判斷當(dāng)前系統(tǒng)是否需要進(jìn)行任務(wù)切換。SCHED_FLAG_YIELD 是調(diào)度標(biāo)志,表示當(dāng)前進(jìn)程可能需要讓出 CPU。

重要性:決定是否需要進(jìn)行任務(wù)切換,以確保系統(tǒng)的公平性和響應(yīng)性。

4. tick_update()

void tick_update(void)

{

// 更新系統(tǒng)時(shí)間計(jì)數(shù)器,如 jiffies 等

jiffies++;

}

作用:更新系統(tǒng)的時(shí)間計(jì)數(shù)器。例如,jiffies 是內(nèi)核用來(lái)跟蹤時(shí)間的一個(gè)變量,每次定時(shí)器中斷都會(huì)增加。

重要性:確保系統(tǒng)時(shí)間的準(zhǔn)確性,提供時(shí)間基礎(chǔ)給其他內(nèi)核功能。

總結(jié)

scheduler_tick在Linux內(nèi)核中扮演著關(guān)鍵角色。它不僅負(fù)責(zé)處理定時(shí)器中斷和更新系統(tǒng)時(shí)間,還記錄進(jìn)程的運(yùn)行時(shí)間,并決定是否需要進(jìn)行任務(wù)切換。通過(guò)這些功能,scheduler_tick有效保障了系統(tǒng)的時(shí)間管理和任務(wù)調(diào)度,使操作系統(tǒng)能夠高效、準(zhǔn)確地管理多個(gè)進(jìn)程。

聲明:本文內(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)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1379

    瀏覽量

    40353
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11332

    瀏覽量

    210024
  • 調(diào)度器
    +關(guān)注

    關(guān)注

    0

    文章

    98

    瀏覽量

    5265
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    深入探討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)重要的模
    的頭像 發(fā)表于 08-13 13:36 ?973次閱讀
    深入探討<b class='flag-5'>Linux</b>的進(jìn)程<b class='flag-5'>調(diào)度</b><b class='flag-5'>器</b>

    Linux系統(tǒng)調(diào)度是實(shí)現(xiàn)特性的關(guān)鍵部分

    系統(tǒng)資源的使用,提高系統(tǒng)使用效率。  Linux內(nèi)核中實(shí)現(xiàn)了Scheduler Classes,來(lái)實(shí)現(xiàn)多個(gè)調(diào)度類(Scheduler class)的協(xié)同工作,每個(gè)不同的
    發(fā)表于 07-05 07:05

    Linux的0號(hào)中斷有何作用

    系統(tǒng)日期和時(shí)間,使系統(tǒng)時(shí)間不斷地得到跳轉(zhuǎn)。另外該中斷的中斷處理函數(shù)除了更新系統(tǒng)時(shí)間外,還需要更新本地CPU統(tǒng)計(jì)數(shù)。指的是調(diào)用scheduler_tick遞減進(jìn)程的時(shí)間片,若進(jìn)程的時(shí)間片遞減到0,進(jìn)程則被調(diào)度
    發(fā)表于 07-29 08:38

    調(diào)度的原理及其任務(wù)調(diào)度代碼實(shí)現(xiàn)

    一、介紹調(diào)度是常用的一種編程框架,也是操作系統(tǒng)的拆分多任務(wù)的核心,比如單片機(jī)的裸機(jī)程序框架,網(wǎng)絡(luò)協(xié)議棧的框架如can網(wǎng)關(guān)、485網(wǎng)關(guān)等等,使用場(chǎng)合比較多,是做穩(wěn)定產(chǎn)品比較常用的編程技
    發(fā)表于 02-17 07:07

    RT-Thread每一次tick中斷應(yīng)該不會(huì)同時(shí)執(zhí)行兩種調(diào)度

    系統(tǒng)時(shí)基更新函數(shù)void rt_tick_increase(void){struct rt_thread thread;/ 系統(tǒng)時(shí)基計(jì)數(shù)加 1 操作,rt_tick 是一個(gè)
    發(fā)表于 10-08 14:42

    關(guān)于RTT中scheduler線程調(diào)度的學(xué)習(xí)

    RTT中的scheduler并不是以一個(gè)類的形式存在,更類似傳統(tǒng)的過(guò)程編程。個(gè)人認(rèn)為這一點(diǎn)在編程風(fēng)格上和其他的組件是不夠統(tǒng)一的。 下面引用一段RTT官網(wǎng)上,關(guān)于RTT線程調(diào)度介紹。 RTT中提
    發(fā)表于 04-27 14:19

    Linux內(nèi)核的DL調(diào)度的細(xì)節(jié)和怎么樣使用DL調(diào)度

    Linux內(nèi)核的DL調(diào)度是一個(gè)全局EDF調(diào)度,它主要針對(duì)有deadline限制的sporadic任務(wù)。注意:這些術(shù)語(yǔ)已經(jīng)在本系列文章的第
    的頭像 發(fā)表于 07-16 10:54 ?5537次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核的DL<b class='flag-5'>調(diào)度</b><b class='flag-5'>器</b>的細(xì)節(jié)和怎么樣使用DL<b class='flag-5'>調(diào)度</b><b class='flag-5'>器</b>?

    詳細(xì)解讀Linux 2.6 完全公平調(diào)度算法CFS(Completely Fair Scheduler

    早期的 Linux 調(diào)度器使用了最低的設(shè)計(jì),它顯然不關(guān)注具有很多處理的大型架構(gòu),更不用說(shuō)是超線程了。
    發(fā)表于 05-10 11:05 ?4554次閱讀

    需要了解的linux HZ Tick Jiffies

    Jiffies為Linux核心變數(shù)(32位元變數(shù),unsigned long),它被用來(lái)紀(jì)錄系統(tǒng)自開(kāi)幾以來(lái),已經(jīng)過(guò)多少的tick。每發(fā)生一次timer interrupt,Jiffies變數(shù)會(huì)被加一。
    發(fā)表于 05-15 09:07 ?1677次閱讀

    更改 Linux I/O 調(diào)度來(lái)改善服務(wù)性能

    為了從?Linux?服務(wù)榨取盡可能多的性能,請(qǐng)了解如何更改 I/O 調(diào)度以滿足你的需求。Linux I/O
    發(fā)表于 04-02 14:46 ?272次閱讀

    英創(chuàng)信息技術(shù)Linux系統(tǒng)調(diào)度簡(jiǎn)介

    系統(tǒng)資源的使用,提高系統(tǒng)使用效率。 Linux內(nèi)核中實(shí)現(xiàn)了Scheduler Classes,來(lái)實(shí)現(xiàn)多個(gè)調(diào)度類(Scheduler class)的協(xié)同工作,每個(gè)不同的
    的頭像 發(fā)表于 02-05 10:31 ?1260次閱讀
    英創(chuàng)信息技術(shù)<b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>調(diào)度</b>簡(jiǎn)介

    從零開(kāi)始入門(mén) K8s | 調(diào)度調(diào)度流程和算法介紹

    等,并介紹了兩種方式用于實(shí)現(xiàn)自定義調(diào)度能力。 調(diào)度流程 調(diào)度流程概覽 Kubernetes 作為當(dāng)下最主流的容器自動(dòng)化運(yùn)維平臺(tái),作為 K8s 的容器編排的
    發(fā)表于 03-09 17:04 ?1192次閱讀

    kube-scheduler v1.21 的調(diào)度流程分析

    Scheduler 在整個(gè)系統(tǒng)中承擔(dān)了“承上啟下”的重要功能。“承上”是指它負(fù)責(zé)接受 Controller Manager 創(chuàng)建的新 Pod,為其安排 Node;“啟下”是指安置工作完成后,目標(biāo)
    的頭像 發(fā)表于 08-22 09:15 ?1193次閱讀

    NVIDIA Triton 系列文章(11):模型類別與調(diào)度-1

    在 Triton 推理服務(wù)的使用中,模型(model)類別與調(diào)度scheduler)、批量處理(batcher)類型的搭配,是整個(gè)管
    的頭像 發(fā)表于 01-11 06:35 ?897次閱讀

    實(shí)時(shí)操作系統(tǒng)的滴答Tick設(shè)置多少才合適?

    實(shí)時(shí)操作系統(tǒng)的滴答Tick設(shè)置多少才合適? 介紹實(shí)時(shí)操作系統(tǒng)中Tick的設(shè)置。 在實(shí)時(shí)操作系統(tǒng)中,Tick是指操作系統(tǒng)的時(shí)間基準(zhǔn),它是操作系統(tǒng)用來(lái)衡量時(shí)間、同步操作和
    的頭像 發(fā)表于 10-29 16:33 ?941次閱讀
    主站蜘蛛池模板: 电影一区二区三区| 天天曰夜夜曰| 黄色的视频在线免费观看| 久久香蕉国产线看观看精品yw| 尻老逼| 国产午夜大片| ww.色| 天天天天天天天操| 免费在线黄色网址| 日本三级11k影院在线| 2345成人高清毛片| 国产2021成人精品| 性xxxxbbbb在线| 日韩a无吗一区二区三区| 欧美黄视频在线观看| 国内精品视频免费观看| 在线午夜| 嘿嘿午夜| 中文字幕一区二区精品区| 欧美一二三区在线| 性欧美高清精品videos| 日韩特级| 福利视频欧美| 男人资源站| 91亚洲视频| 亚洲婷婷六月| 欧美色图中文字幕| 99精品久久久久久久婷婷| 全免费一级毛片在线播放| 欧美另类xx| 永久免费的拍拍拍网站| 日本 韩国 三级 国产 欧美| 国产精品热久久毛片| 91大神免费视频| 欧美激情xxxx性bbbb| 亚洲成人自拍| 男人天堂综合网| 亚洲一级特黄| 欧美三级免费网站| 一级黄色片欧美| 久青草视频在线|