【Linux 内核】实时调度类 ① ( 进程分类 | 实时进程、普通进程 | Linux 内核 SCHED_FIFO、SCHED_RR 调度策略 | 实时调度实体 sched_rt_entity )
文章目錄
- 一、進程分類 ( 實時進程 | 普通進程 )
- 二、Linux 內核調度策略
- 1、SCHED_FIFO 調度策略
- 2、SCHED_RR 調度策略
- 三、實時調度實體 sched_rt_entity
一、進程分類 ( 實時進程 | 普通進程 )
Linux 進程分為 " 實時進程 " 和 " 普通進程 " 兩類 ;
" 實時進程 " 優先級 高于 " 普通進程 " , 如果當前 Linux 系統的執行隊列中有 " 實時進程 " , 調度器 會 優先選擇 " 實時進程 " 進行調度 ;
如果 執行隊列 中有多個實時進程 , 調度器 會 選擇 優先級最高 的 " 實時進程 " 執行 ;
進程分類 " 實時進程 " 、 " 普通進程 " 、" 限期進程 " , 可以參考
- 【Linux 內核】進程管理 - 進程優先級 ① ( 限期進程 | 實時進程 | 普通進程 | 進程優先級相關字段 )
- 【Linux 內核】調度器 ⑧ ( 進程優先級源碼 include\linux\sched\prio.h | 進程分類 | 實時進程 | 普通進程 | 進程優先級數值 | 0 ~ 99 實時進程 )
博客 ;
二、Linux 內核調度策略
在 【Linux 內核】調度器 ⑨ ( Linux 內核調度策略 | SCHED_NORMAL 策略 | SCHED_FIFO 策略 | SCHED_NORMAL 策略 | SCHED_BATCH策略 ) 博客中 , 介紹了 Linux 內核相關的調度策略 ;
1、SCHED_FIFO 調度策略
SCHED_FIFO 是 " 實時進程調度策略 " , 這是一種 先進先出 ( First In First Out ) 調度策略 ;
該策略 不涉及 CPU 時間片機制 ( 分時復用機制 ) , 在沒有高優先級進程的前提下 , 只能 等待其它進程主動釋放 CPU 資源 ;
SCHED_FIFO 調度策略中 , 被 調度器 調度運行后的 進程 , 其運行時長不受限制 , 可以運行任意長的時間 ;
2、SCHED_RR 調度策略
SCHED_RR 是 " 實時進程調度策略 " , 使用的是 時間片輪轉 機制 , 對應的 時間值 在 運行時會 減少 ;
進程 使用完 CPU 時間片 后 , 會加入到 與 進程優先級 相應的 執行隊列 的 末尾 ;
同時 , 釋放 CPU 資源 , CPU 時間片會被輪轉給 相同進程優先級 的 其它進程 ;
三、實時調度實體 sched_rt_entity
實時調度實體 在 Linux 內核源碼中通過 sched_rt_entity 結構體 表現 ,
sched_rt_entity 結構體 , 定義在 Linux 內核源碼的 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;總結
以上是生活随笔為你收集整理的【Linux 内核】实时调度类 ① ( 进程分类 | 实时进程、普通进程 | Linux 内核 SCHED_FIFO、SCHED_RR 调度策略 | 实时调度实体 sched_rt_entity )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux 内核】CFS 调度器 ⑥
- 下一篇: 【错误记录】FFmpeg 推流报错 (