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

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

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(復習)的評論 (共 條)

分享到微博請遵守國家法律
兰溪市| 阿克苏市| 吉木萨尔县| 永川市| 日土县| 韶山市| 紫云| 扎赉特旗| 北辰区| 赣榆县| 罗源县| 登封市| 湖南省| 晴隆县| 玛纳斯县| 阿坝县| 汉中市| 时尚| 商都县| 济源市| 新宁县| 邹城市| 炎陵县| 行唐县| 天峻县| 南通市| 枝江市| 陆川县| 法库县| 洛阳市| 肃宁县| 柳河县| 榆社县| 定日县| 邯郸县| 平顶山市| 芜湖县| 昌江| 山丹县| 新郑市| 南华县|