您好,登錄后才能下訂單哦!
本篇內容主要講解“linux任務調度機制指的是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“linux任務調度機制指的是什么”吧!
linux的任務調度機制是指系統在某個事件執行的特定命令或程序;每一個CPU都會有一個隊列來存儲處于“TASK_RUNNING”狀態的任務,任務調度就是從這些隊列中取出優先級最高的任務作為下一個放入CPU執行的任務。
本教程操作環境:linux7.3系統、Dell G3電腦。
是指系統在某個時間執行的特定的命令或程序
在Linux中,每一個CPU都會有一個隊列來存儲處于TASK_RUNNING狀態的任務,任務調度就是從這些隊列中取出優先級最高的任務作為下一個放入CPU執行的任務。
任務的調度需要進過兩個過程:上下文切換和選擇算法
上下文切換
從一個進程的上下文切換到另一個進程的上下文,因為其發生頻率很高,所以通常都是調度器效率高低的關鍵。
schedule()函數中調用了switch_to宏,這個宏實現了進程之間的真正切換,其代碼存放于include/i386/system.h。
switch_to宏是用嵌入式匯編寫成的,較難理解。
switch_to()函數正常返回,棧上的返回地址是新進程的task_struct::thread::eip,即新進程上一次被掛起時設置的繼續運行的位置(上一次執行switch_to()時的標號”1:”位置)。
至此轉入新進程的上下文中運行。這其中涉及到wakeup,sleepon等函數來對進程進行睡眠與喚醒操作。
選擇算法
Linux schedule()函數將遍歷就緒隊列中的所有進程,調用goodness()函數計算每一個進程的權值weight,從中選擇權值最大的進程投入運行。Linux的調度器主要實現在schedule()函數中。
調度步驟:
Schedule函數工作流程如下:
(1)清理當前運行中的進程
(2)選擇下一個要運行的進程(pick_next_task)
(3)設置新進程的運行環境
(4) 進程上下文切換
Linux 調度器將進程分為三類
進程調度是操作系統的核心功能。
調度器只是調度過程中的一部分,進程調度是非常復雜的過程,需要多個系統協同工作完成。
本文所關注的僅為調度器,它的主要工作是在所有RUNNING 進程中選擇最合適的一個。
作為一個通用操作系統,Linux 調度器將進程分為三類:
交互式進程
此類進程有大量的人機交互,因此進程不斷地處于睡眠狀態,等待用戶輸入。典型的應用比如編輯器 vi。此類進程對系統響應時間要求比較高,否則用戶會感覺系統反應遲緩。
批處理進程
此類進程不需要人機交互,在后臺運行,需要占用大量的系統資源。但是能夠忍受響應延遲。比如編譯器。
實時進程
實時對調度延遲的要求最高,這些進程往往執行非常重要的操作,要求立即響應并執行。比如視頻播放軟件或飛機飛行控制系統,很明顯這類程序不能容忍長時間的調度延遲,輕則影響電影放映效果,重則機毀人亡
到此,相信大家對“linux任務調度機制指的是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。