最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

Linux--CFS調度1(復習)

2023-03-24 23:48 作者:圣母和正負喜歡沒辦法  | 我要投稿

簡單說:就是允許每個進程運行一段時間,循環(huán)輪詢,選擇運行最少的作為下一個進程。

? ? ? ? ? ? ? 通過總的運行數計算出單個進程運行時間

? ? ? ? ? ? ? nice優(yōu)先級用于計算權重

一 時間記賬

每個進程只能在公平分配給他的處理器里時間運行。

時間在調度實體struct sched_entity中維護。

vruntime記錄程序運行時長和還有多少運行時間。(ns)

delta_exec:當前進程的執(zhí)行時間,參數傳遞給calc_delta_fair。

calc_delta_fair 再根據當前可運行進程總數對運行時間進行加權計算,將最終權重值與當前進程的vruntimes相加。curr->vruntime += calc_delta_fair(delta_exec, curr);。

update_curr由系統(tǒng)定時器周期性調用,不管進程在可運行還是阻塞狀態(tài),vruntime可以準確地計算出給定進程的運行時間,而且制定誰應該是下一個被運行進程。

二 調度器入口

schedule() 選擇哪個進程可以運行,何時將其投入運行。

調用pick_next_task,會以優(yōu)先級排序,從高到低,依次檢查每個調度類,并從最高優(yōu)先級調度類中,選擇最高優(yōu)先級的進程。

上下文切換本身通過調用兩個特定于處理器的函數完成

1> switch_mm 更換通過task_struct->mm描述的內存管理上下文

2> switch_to切換處理器寄存器內容和內核棧,通常使用匯編編寫

switch_to(prev, next, prev);//之后的代碼只有在當前進程的下一次被選擇運行時才會執(zhí)行

barrier();//前后語句執(zhí)行順序不會因為任何可能的優(yōu)化而改變

return finish_task_switch(prev);//完成清理工作,才能夠正確釋放鎖.

三 進程選擇

圖3

進程不在就緒態(tài)就用_dequeue_entity將其從樹種刪除。

選擇vruntime最小也就是紅黑樹中最左側葉子節(jié)點,

實現函數pick_next_entity->__pick_next_entity。

睡眠:進程會標記為休眠狀態(tài),從可執(zhí)行紅黑樹中移除,放入等待隊列,然后調用schedule選擇執(zhí)行下一個進程。

喚醒:進程被設置為可執(zhí)行狀態(tài),從等待隊列中移到可執(zhí)行紅黑樹中。

check_preempt_wakeup->wakeup_preempt_entity


Linux--CFS調度1(復習)的評論 (共 條)

分享到微博請遵守國家法律
衡水市| 博野县| 隆尧县| 涿州市| 汽车| 建湖县| 长丰县| 长海县| 浦江县| 无为县| 齐齐哈尔市| 隆尧县| 天台县| 天祝| 阿勒泰市| 枣强县| 贵州省| 澜沧| 柳河县| 南部县| 仪陇县| 景东| 滨海县| 额济纳旗| 宝鸡市| 方城县| 无棣县| 黑水县| 枞阳县| 榆中县| 象山县| 班玛县| 玛沁县| 囊谦县| 汉川市| 海林市| 太和县| 盐城市| 泌阳县| 卢湾区| 荥经县|