導航:首頁 > 源碼編譯 > Unix進程調度演算法

Unix進程調度演算法

發布時間:2025-06-10 03:10:05

A. unix系統v的進程調度是採用怎樣的調度演算法完成的

答案為D。 多級反饋隊列輪轉法 調度演算法(作業調度、進程調度) 1、先來先服務調度演算法(FCFS) 按進入後備(或就緒)隊列的先後選擇目標作業(或進程)。 有利於長作業(進程),不利於短作業(進程)。 2、最短作業優先調度演算法SJ(P)F 從後備(或就緒)隊列中選擇估計運行時間最短的作業(或進程) tn+1=a tn+(1-a) tn tn為實際值, tn為預測值 SJF有效地降低作業的平均等待時間,提高了系統的吞吐量。 對長作業(或進程)不利,可能死等,且未考慮作業的緊迫程度。 3、時間片輪轉調度演算法(進程調度) 系統將所有的就緒進程按先來先服務原則,排成一個隊列,每次調度時把CPU分配給隊首進程,令其執行一個時間片。 就緒隊列中所有進程,在一個給定的時間內,均能獲得一個時間片的處理機執行時間。T=nq 4、優先權調度演算法 適用於作業調度和進程調度。 非搶占式、搶占式優先權調度演算法 優先權類型:靜態優先權、動態優先權 5、高響應比優先調度演算法(作業調度) 響應比RP= 響應時間/要求服務時間=(等待時間+要求服務時間)/要求服務時間 = 1+等待時間/要求服務時間 同時到達的作業(等待時間相同),要求服務時間越短(短作業),響應比越高,有利於短作業。 要求服務時間相同的作業,等待時間越長,響應比越高,相當於先來先服務。 長作業在等待足夠長時間後,響應比上升,也可被調度,避免長作業的死等。 每次調度需計算響應比,增加系統的開銷。 6、多級隊列調度 根據作業的性質或類型的不同,將就緒進程隊列分成若干個子隊列,各個作業固定分屬於一個隊列。每個隊列採用各自的調度演算法。 7、多級反饋隊列調度演算法 UNIX系統中的進程調度演算法。 處理方法: 設置多個就緒隊列,每個隊列賦予不同的優先權(S1>S2……>Sn ),且各隊列中進程執行的時間片的大小各不相同(q,2q……nq)。 新進程進入內存,首先放在S1的末尾,按FCFS排隊調度,執行q時間片,若未完成,該進程轉入S2,依次類推。 僅當Si空閑,才會調度Si+1中進程。 能較好地滿足各種類型用戶的需要。

B. 【linux內核】cpu時間片的概念

Linux內核中的CPU時間片是指CPU分配給各個進程或線程執行的時間段。以下是關於CPU時間片的詳細解釋:

C. linux進程調度的三種策略是什麼

linux內核的三種主要調度策略:
1,SCHED_OTHER 分時調度策略,
2,SCHED_FIFO實時調度策略,先到先服務
3,SCHED_RR實時調度策略,時間片輪轉

實時進程將得到優先調用,實時進程根據實時優先順序決定調度權值。分時進程則通過nice和counter值決定權值,nice越小,counter越大,被調度的概率越大,也就是曾經使用了cpu最少的進程將會得到優先調度。

SHCED_RR和SCHED_FIFO的不同:
當採用SHCED_RR策略的進程的時間片用完,系統將重新分配時間片,並置於就緒隊列尾。放在隊列尾保證了所有具有相同優先順序的RR任務的調度公平。
SCHED_FIFO一旦佔用cpu則一直運行。一直運行直到有更高優先順序任務到達或自己放棄。
如果有相同優先順序的實時進程(根據優先順序計算的調度權值是一樣的)已經准備好,FIFO時必須等待該進程主動放棄後才可以運行這個優先順序相同的任務。而RR可以讓每個任務都執行一段時間。

相同點:
RR和FIFO都只用於實時任務。
創建時優先順序大於0(1-99)。
按照可搶占優先順序調度演算法進行。
就緒態的實時任務立即搶占非實時任務。

所有任務都採用linux分時調度策略時:
1,創建任務指定採用分時調度策略,並指定優先順序nice值(-20~19)。
2,將根據每個任務的nice值確定在cpu上的執行時間(counter)。
3,如果沒有等待資源,則將該任務加入到就緒隊列中。
4,調度程序遍歷就緒隊列中的任務,通過對每個任務動態優先順序的計算權值(counter+20-nice)結果,選擇計算結果最大的一個去運行,當這個時間片用完後(counter減至0)或者主動放棄cpu時,該任務將被放在就緒隊列末尾(時間片用完)或等待隊列(因等待資源而放棄cpu)中。
5,此時調度程序重復上面計算過程,轉到第4步。
6,當調度程序發現所有就緒任務計算所得的權值都為不大於0時,重復第2步。

所有任務都採用FIFO時:
1,創建進程時指定採用FIFO,並設置實時優先順序rt_priority(1-99)。
2,如果沒有等待資源,則將該任務加入到就緒隊列中。
3,調度程序遍歷就緒隊列,根據實時優先順序計算調度權值(1000+rt_priority),選擇權值最高的任務使用cpu,該FIFO任務將一直佔有cpu直到有優先順序更高的任務就緒(即使優先順序相同也不行)或者主動放棄(等待資源)。
4,調度程序發現有優先順序更高的任務到達(高優先順序任務可能被中斷或定時器任務喚醒,再或被當前運行的任務喚醒,等等),則調度程序立即在當前任務堆棧中保存當前cpu寄存器的所有數據,重新從高優先順序任務的堆棧中載入寄存器數據到cpu,此時高優先順序的任務開始運行。重復第3步。
5,如果當前任務因等待資源而主動放棄cpu使用權,則該任務將從就緒隊列中刪除,加入等待隊列,此時重復第3步。

所有任務都採用RR調度策略時:
1,創建任務時指定調度參數為RR,並設置任務的實時優先順序和nice值(nice值將會轉換為該任務的時間片的長度)。
2,如果沒有等待資源,則將該任務加入到就緒隊列中。
3,調度程序遍歷就緒隊列,根據實時優先順序計算調度權值(1000+rt_priority),選擇權值最高的任務使用cpu。
4,如果就緒隊列中的RR任務時間片為0,則會根據nice值設置該任務的時間片,同時將該任務放入就緒隊列的末尾。重復步驟3。
5,當前任務由於等待資源而主動退出cpu,則其加入等待隊列中。重復步驟3。

系統中既有分時調度,又有時間片輪轉調度和先進先出調度:
1,RR調度和FIFO調度的進程屬於實時進程,以分時調度的進程是非實時進程。
2,當實時進程准備就緒後,如果當前cpu正在運行非實時進程,則實時進程立即搶占非實時進程。
3,RR進程和FIFO進程都採用實時優先順序做為調度的權值標准,RR是FIFO的一個延伸。FIFO時,如果兩個進程的優先順序一樣,則這兩個優先順序一樣的進程具體執行哪一個是由其在隊列中的未知決定的,這樣導致一些不公正性(優先順序是一樣的,為什麼要讓你一直運行?),如果將兩個優先順序一樣的任務的調度策略都設為RR,則保證了這兩個任務可以循環執行,保證了公平。

Ingo Molnar-實時補丁
為了能並入主流內核,Ingo Molnar的實時補丁也採用了非常靈活的策略,它支持四種搶占模式:
1.No Forced Preemption (Server),這種模式等同於沒有使能搶占選項的標准內核,主要適用於科學計算等伺服器環境。
2.Voluntary Kernel Preemption (Desktop),這種模式使能了自願搶占,但仍然失效搶占內核選項,它通過增加搶占點縮減了搶占延遲,因此適用於一些需要較好的響應性的環境,如桌面環境,當然這種好的響應性是以犧牲一些吞吐率為代價的。
3.Preemptible Kernel (Low-Latency Desktop),這種模式既包含了自願搶占,又使能了可搶占內核選項,因此有很好的響應延遲,實際上在一定程度上已經達到了軟實時性。它主要適用於桌面和一些嵌入式系統,但是吞吐率比模式2更低。
4.Complete Preemption (Real-Time),這種模式使能了所有實時功能,因此完全能夠滿足軟實時需求,它適用於延遲要求為100微秒或稍低的實時系統。
實現實時是以犧牲系統的吞吐率為代價的,因此實時性越好,系統吞吐率就越低。

閱讀全文

與Unix進程調度演算法相關的資料

熱點內容
單片機51開發板 瀏覽:969
綿陽在哪個app查社保 瀏覽:416
網劇程序員那麼可愛女主身世 瀏覽:809
程序員的一天周報 瀏覽:97
安卓如何把塗鴉的圖片還原 瀏覽:646
鬧鍾該怎麼加密 瀏覽:228
編譯原理答案第三版第二章 瀏覽:664
怎麼快速把app放在文件夾 瀏覽:323
怎麼截屏截長圖安卓 瀏覽:287
javabean轉json 瀏覽:38
python默認參數排列 瀏覽:619
官方體彩app下載哪個好 瀏覽:95
哪個app助農 瀏覽:200
南寧50m雲伺服器 瀏覽:599
查市值用哪個app 瀏覽:248
小圈app封了這些人去哪裡了 瀏覽:864
開源可商用小程序源碼 瀏覽:875
matlab編程是什麼語言 瀏覽:48
我的中文字典程序python 瀏覽:808
正版三維力控組態軟體加密狗價格 瀏覽:384