linux的任務(wù)調(diào)度機(jī)制是什么
Linux的任務(wù)調(diào)度機(jī)制是指系統(tǒng)在某個(gè)事件執(zhí)行的特定命令或程序;每一個(gè)CPU都會(huì)有一個(gè)隊(duì)列來存儲(chǔ)處于“TASK_RUNNING”狀態(tài)的任務(wù),任務(wù)調(diào)度就是從這些隊(duì)列中取出優(yōu)先級(jí)最高的任務(wù)作為下一個(gè)放入CPU執(zhí)行的任務(wù)。
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
linux的任務(wù)調(diào)度機(jī)制是什么
是指系統(tǒng)在某個(gè)時(shí)間執(zhí)行的特定的命令或程序
在Linux中,每一個(gè)CPU都會(huì)有一個(gè)隊(duì)列來存儲(chǔ)處于TASK_RUNNING狀態(tài)的任務(wù),任務(wù)調(diào)度就是從這些隊(duì)列中取出優(yōu)先級(jí)最高的任務(wù)作為下一個(gè)放入CPU執(zhí)行的任務(wù)。
任務(wù)的調(diào)度需要進(jìn)過兩個(gè)過程:上下文切換和選擇算法
上下文切換
從一個(gè)進(jìn)程的上下文切換到另一個(gè)進(jìn)程的上下文,因?yàn)槠浒l(fā)生頻率很高,所以通常都是調(diào)度器效率高低的關(guān)鍵。
schedule()函數(shù)中調(diào)用了switch_to宏,這個(gè)宏實(shí)現(xiàn)了進(jìn)程之間的真正切換,其代碼存放于include/i386/system.h。
switch_to宏是用嵌入式匯編寫成的,較難理解。
switch_to()函數(shù)正常返回,棧上的返回地址是新進(jìn)程的task_struct::thread::eip,即新進(jìn)程上一次被掛起時(shí)設(shè)置的繼續(xù)運(yùn)行的位置(上一次執(zhí)行switch_to()時(shí)的標(biāo)號(hào)”1:”位置)。
至此轉(zhuǎn)入新進(jìn)程的上下文中運(yùn)行。這其中涉及到wakeup,sleepon等函數(shù)來對(duì)進(jìn)程進(jìn)行睡眠與喚醒操作。
選擇算法
Linux schedule()函數(shù)將遍歷就緒隊(duì)列中的所有進(jìn)程,調(diào)用goodness()函數(shù)計(jì)算每一個(gè)進(jìn)程的權(quán)值weight,從中選擇權(quán)值最大的進(jìn)程投入運(yùn)行。Linux的調(diào)度器主要實(shí)現(xiàn)在schedule()函數(shù)中。
調(diào)度步驟:
Schedule函數(shù)工作流程如下:
(1)清理當(dāng)前運(yùn)行中的進(jìn)程
(2)選擇下一個(gè)要運(yùn)行的進(jìn)程(pick_next_task)
(3)設(shè)置新進(jìn)程的運(yùn)行環(huán)境
(4) 進(jìn)程上下文切換
Linux 調(diào)度器將進(jìn)程分為三類
進(jìn)程調(diào)度是操作系統(tǒng)的核心功能。
調(diào)度器只是調(diào)度過程中的一部分,進(jìn)程調(diào)度是非常復(fù)雜的過程,需要多個(gè)系統(tǒng)協(xié)同工作完成。
本文所關(guān)注的僅為調(diào)度器,它的主要工作是在所有RUNNING 進(jìn)程中選擇最合適的一個(gè)。
作為一個(gè)通用操作系統(tǒng),Linux 調(diào)度器將進(jìn)程分為三類:
交互式進(jìn)程
此類進(jìn)程有大量的人機(jī)交互,因此進(jìn)程不斷地處于睡眠狀態(tài),等待用戶輸入。典型的應(yīng)用比如編輯器 vi。此類進(jìn)程對(duì)系統(tǒng)響應(yīng)時(shí)間要求比較高,否則用戶會(huì)感覺系統(tǒng)反應(yīng)遲緩。
批處理進(jìn)程
此類進(jìn)程不需要人機(jī)交互,在后臺(tái)運(yùn)行,需要占用大量的系統(tǒng)資源。但是能夠忍受響應(yīng)延遲。比如編譯器。
實(shí)時(shí)進(jìn)程
實(shí)時(shí)對(duì)調(diào)度延遲的要求最高,這些進(jìn)程往往執(zhí)行非常重要的操作,要求立即響應(yīng)并執(zhí)行。比如視頻播放軟件或飛機(jī)飛行控制系統(tǒng),很明顯這類程序不能容忍長(zhǎng)時(shí)間的調(diào)度延遲,輕則影響電影放映效果,重則機(jī)毀人亡
推薦學(xué)習(xí):Linux視頻教程
以上就是linux的任務(wù)調(diào)度機(jī)制是什么的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注其它相關(guān)文章!
版權(quán)聲明:
本站所有文章和圖片均來自用戶分享和網(wǎng)絡(luò)收集,文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系網(wǎng)站客服處理。