【Linux 内核】实时调度类 ① ( 进程分类 | 实时进程、普通进程 | Linux 内核 SCHED_FIFO、SCHED_RR 调度策略 | 实时调度实体 sched_rt_entity )
文章目錄
- 一、進程分類 ( 實時進程 | 普通進程 )
- 二、Linux 內(nèi)核調(diào)度策略
- 1、SCHED_FIFO 調(diào)度策略
- 2、SCHED_RR 調(diào)度策略
- 三、實時調(diào)度實體 sched_rt_entity
一、進程分類 ( 實時進程 | 普通進程 )
Linux 進程分為 " 實時進程 " 和 " 普通進程 " 兩類 ;
" 實時進程 " 優(yōu)先級 高于 " 普通進程 " , 如果當(dāng)前 Linux 系統(tǒng)的執(zhí)行隊列中有 " 實時進程 " , 調(diào)度器 會 優(yōu)先選擇 " 實時進程 " 進行調(diào)度 ;
如果 執(zhí)行隊列 中有多個實時進程 , 調(diào)度器 會 選擇 優(yōu)先級最高 的 " 實時進程 " 執(zhí)行 ;
進程分類 " 實時進程 " 、 " 普通進程 " 、" 限期進程 " , 可以參考
- 【Linux 內(nèi)核】進程管理 - 進程優(yōu)先級 ① ( 限期進程 | 實時進程 | 普通進程 | 進程優(yōu)先級相關(guān)字段 )
- 【Linux 內(nèi)核】調(diào)度器 ⑧ ( 進程優(yōu)先級源碼 include\linux\sched\prio.h | 進程分類 | 實時進程 | 普通進程 | 進程優(yōu)先級數(shù)值 | 0 ~ 99 實時進程 )
博客 ;
二、Linux 內(nèi)核調(diào)度策略
在 【Linux 內(nèi)核】調(diào)度器 ⑨ ( Linux 內(nèi)核調(diào)度策略 | SCHED_NORMAL 策略 | SCHED_FIFO 策略 | SCHED_NORMAL 策略 | SCHED_BATCH策略 ) 博客中 , 介紹了 Linux 內(nèi)核相關(guān)的調(diào)度策略 ;
1、SCHED_FIFO 調(diào)度策略
SCHED_FIFO 是 " 實時進程調(diào)度策略 " , 這是一種 先進先出 ( First In First Out ) 調(diào)度策略 ;
該策略 不涉及 CPU 時間片機制 ( 分時復(fù)用機制 ) , 在沒有高優(yōu)先級進程的前提下 , 只能 等待其它進程主動釋放 CPU 資源 ;
SCHED_FIFO 調(diào)度策略中 , 被 調(diào)度器 調(diào)度運行后的 進程 , 其運行時長不受限制 , 可以運行任意長的時間 ;
2、SCHED_RR 調(diào)度策略
SCHED_RR 是 " 實時進程調(diào)度策略 " , 使用的是 時間片輪轉(zhuǎn) 機制 , 對應(yīng)的 時間值 在 運行時會 減少 ;
進程 使用完 CPU 時間片 后 , 會加入到 與 進程優(yōu)先級 相應(yīng)的 執(zhí)行隊列 的 末尾 ;
同時 , 釋放 CPU 資源 , CPU 時間片會被輪轉(zhuǎn)給 相同進程優(yōu)先級 的 其它進程 ;
三、實時調(diào)度實體 sched_rt_entity
實時調(diào)度實體 在 Linux 內(nèi)核源碼中通過 sched_rt_entity 結(jié)構(gòu)體 表現(xiàn) ,
sched_rt_entity 結(jié)構(gòu)體 , 定義在 Linux 內(nèi)核源碼的 linux-5.6.18\include\linux\sched.h 頭文件中 ,
struct sched_rt_entity {struct list_head run_list;unsigned long timeout;unsigned long watchdog_stamp;unsigned int time_slice;unsigned short on_rq;unsigned short on_list;struct sched_rt_entity *back; #ifdef CONFIG_RT_GROUP_SCHEDstruct sched_rt_entity *parent;/* rq on which this entity is (to be) queued: */struct rt_rq *rt_rq;/* rq "owned" by this entity/group: */struct rt_rq *my_q; #endif } __randomize_layout;總結(jié)
以上是生活随笔為你收集整理的【Linux 内核】实时调度类 ① ( 进程分类 | 实时进程、普通进程 | Linux 内核 SCHED_FIFO、SCHED_RR 调度策略 | 实时调度实体 sched_rt_entity )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux 内核】CFS 调度器 ⑥
- 下一篇: 【错误记录】FFmpeg 推流报错 (