新聞中心
介紹

成都創(chuàng)新互聯(lián)公司自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元平果做網(wǎng)站,已為上家服務(wù),為平果各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
Linux操作系統(tǒng)的調(diào)度器是一個核心組件,它負(fù)責(zé)控制進(jìn)程在CPU上執(zhí)行的時間片,并決定哪個進(jìn)程將獲得下一個時間片。Linux 2.6是一個重要版本,它重新實(shí)現(xiàn)了調(diào)度器,加入了很多新特性和性能優(yōu)化。本篇文章將深入分析Linux 2.6調(diào)度器的優(yōu)化和實(shí)現(xiàn)。
調(diào)度器架構(gòu)
Linux 2.6的調(diào)度器采用了O(1)調(diào)度器架構(gòu),主要由三個部分組成:運(yùn)行隊(duì)列,調(diào)度策略和進(jìn)程狀態(tài)機(jī)。
運(yùn)行隊(duì)列
運(yùn)行隊(duì)列是調(diào)度器的核心組成部分,它是一個有優(yōu)先級的雙向鏈表,按照優(yōu)先級從高到低排列。每個優(yōu)先級都對應(yīng)一個運(yùn)行隊(duì)列,可以有多個進(jìn)程在同一優(yōu)先級的隊(duì)列中等待運(yùn)行。當(dāng)一個進(jìn)程的時間片用完后,它將被放回到相應(yīng)的運(yùn)行隊(duì)列中等待下次調(diào)度。
調(diào)度策略
調(diào)度策略是決定哪個進(jìn)程將獲得下一個時間片的決策方法。Linux 2.6支持多種調(diào)度策略,包括先進(jìn)先出(FIFO)、最短作業(yè)優(yōu)先(SJF)、輪詢(Round-robin)和反饋(Feedback)。默認(rèn)情況下,Linux 2.6使用輪詢調(diào)度策略,但是可以根據(jù)需要進(jìn)行修改。
進(jìn)程狀態(tài)機(jī)
進(jìn)程狀態(tài)機(jī)是用來跟蹤進(jìn)程狀態(tài)轉(zhuǎn)換的數(shù)據(jù)結(jié)構(gòu)。在Linux 2.6中,進(jìn)程可以處于就緒、運(yùn)行、等待和退出四種狀態(tài)之一。就緒狀態(tài)表示進(jìn)程已經(jīng)準(zhǔn)備好運(yùn)行但是還沒有獲得時間片。運(yùn)行狀態(tài)表示進(jìn)程正在運(yùn)行并占用CPU。等待狀態(tài)表示進(jìn)程正在等待某個事件發(fā)生。退出狀態(tài)表示進(jìn)程已經(jīng)結(jié)束并且需要被回收。
調(diào)度器優(yōu)化
Linux 2.6采用了一系列性能優(yōu)化,包括提高調(diào)度器的平均響應(yīng)時間、降低延遲和增加并發(fā)度。
菜單式調(diào)度
菜單式調(diào)度是一種新的調(diào)度方法,它將調(diào)度器分成多個個體,并交給一個負(fù)責(zé)運(yùn)行的進(jìn)程來控制。這個進(jìn)程可以根據(jù)需要選擇合適的調(diào)度策略和運(yùn)行隊(duì)列來完成調(diào)度工作。菜單式調(diào)度可以提高調(diào)度器的并發(fā)度和響應(yīng)時間。
多級反饋隊(duì)列
Linux 2.6引入了多級反饋隊(duì)列調(diào)度器,它可以更好地支持不同種類的進(jìn)程和不同的調(diào)度策略。多級反饋隊(duì)列調(diào)度器將所有進(jìn)程分為多個隊(duì)列,每個隊(duì)列對應(yīng)一個優(yōu)先級。進(jìn)程在各個隊(duì)列之間移動,根據(jù)進(jìn)程的歷史執(zhí)行時間來調(diào)整優(yōu)先級。如果一個進(jìn)程一直在等待,在等待隊(duì)列中的等待時間也會影響其優(yōu)先級。
實(shí)時調(diào)度器
Linux 2.6還引入了實(shí)時調(diào)度器,它可以更好地支持對響應(yīng)時間敏感的應(yīng)用程序。實(shí)時調(diào)度器有兩個優(yōu)先級,實(shí)時優(yōu)先級和普通優(yōu)先級。實(shí)時優(yōu)先級的進(jìn)程可以打斷普通優(yōu)先級的進(jìn)程,并在時間片用完之前立即執(zhí)行。實(shí)時調(diào)度器也支持多級隊(duì)列和多種調(diào)度策略。
實(shí)現(xiàn)細(xì)節(jié)
在Linux 2.6中,調(diào)度器的實(shí)現(xiàn)基于預(yù)處理器和宏定義。這種實(shí)現(xiàn)方式可以保證調(diào)度器的高效率和顯著的性能優(yōu)化。在調(diào)度器的實(shí)現(xiàn)中,還涉及到各種數(shù)據(jù)結(jié)構(gòu)和算法,包括雙向鏈表、紅黑樹、偽隨機(jī)數(shù)等。
Linux 2.6調(diào)度器是一個非常優(yōu)秀的調(diào)度器,它具有高效的性能和靈活的配置選項(xiàng)。本篇文章對Linux 2.6調(diào)度器的架構(gòu)、優(yōu)化和實(shí)現(xiàn)細(xì)節(jié)進(jìn)行了深入的介紹。相信這些知識可以幫助讀者更好地理解和掌握Linux操作系統(tǒng)和調(diào)度器的運(yùn)行原理。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!
linux調(diào)度器模擬器有哪幾種好上手的啊,哪位大神給介紹下
LinSched
LinSched 是駐留在用戶空間中的 Linux 調(diào)度器模擬器。它隔離 Linux 調(diào)度器子系統(tǒng)并圍繞它構(gòu)建足夠的內(nèi)核環(huán)境,從而可以在用戶空間內(nèi)執(zhí)行該模擬器。它還將圍繞其構(gòu)建一歲手吵系列應(yīng)用程序編薯姿程接口(Application Programming Interfaces,APIs)以提供必要的來驗(yàn)證調(diào)度工作負(fù)荷并收集足夠的相關(guān)數(shù)據(jù)來了解其行為.
schedsim模擬器
Schedsim模擬器是由Martin Migasiewicz用java語言開發(fā)的一種開源調(diào)度模擬器。該模擬器具有支持多種調(diào)度算法、多種調(diào)度模式及多處理乎侍器架構(gòu);以及具有良好的擴(kuò)展性、友好的用戶界面等優(yōu)點(diǎn)
linux環(huán)境下的進(jìn)程調(diào)度算法有哪些?
之一部分: 實(shí)時調(diào)度算法介紹
對于什么是實(shí)時系統(tǒng),POSIX 1003.b作了這樣的定義:指系統(tǒng)能夠在限定的響應(yīng)時間內(nèi)提供所需水平的服務(wù)。而一個由Donald Gillies提出的更加為大家接受的定義是:一個實(shí)時系統(tǒng)是指計算的正確性不僅取決于程序的邏輯正確性,也取決于結(jié)果產(chǎn)生的時間,如果系統(tǒng)的時間約束條件得不到滿足,將會發(fā)生系統(tǒng)出錯。
實(shí)時系統(tǒng)根據(jù)其對于實(shí)時性要求的不同,可以分為軟實(shí)時和硬實(shí)時兩種類型。硬實(shí)時系統(tǒng)指系統(tǒng)要有確保的最壞情況下的服務(wù)時間,即對于事件的響應(yīng)時間的截止期限是無論如何都必須得到滿足。比如航天中的宇宙飛船的控制等就是現(xiàn)實(shí)中這樣的系統(tǒng)。其他的所有有實(shí)時特性的系統(tǒng)都可以稱之為軟實(shí)時系統(tǒng)。如果明確地來說,軟實(shí)時系統(tǒng)就是那些從統(tǒng)計的角度來說,一個任務(wù)(在下面的論述中,我們將對任務(wù)和進(jìn)程不作區(qū)分)能夠得到有確保的處理時間,到達(dá)系統(tǒng)的事件也能夠在截止期限到來之前得到處理,但違反截止期限并不會帶來致命的錯誤,像實(shí)時多媒體系統(tǒng)就是一種軟實(shí)時系統(tǒng)。
一個計算機(jī)系統(tǒng)為了提供對于實(shí)時性的支持,它的操作系統(tǒng)必須對于CPU和其他資源進(jìn)行有效的調(diào)度和管理。在多任務(wù)實(shí)時系統(tǒng)中,資源的調(diào)度和管理更加復(fù)雜。本文下面將先從分類的角度對各種實(shí)時任務(wù)調(diào)度算法進(jìn)行討論,然后研究普通的 Linux操作系統(tǒng)的進(jìn)程調(diào)度以及各種實(shí)時Linux系統(tǒng)為了支持實(shí)時特性對普通Linux系統(tǒng)所做的改進(jìn)。最后分析了將雹檔鉛Linux操作系統(tǒng)應(yīng)用于實(shí)時領(lǐng)域中時所出現(xiàn)的一些問題,并總結(jié)了各種實(shí)時Linux是如何解決這些問題的。
1. 實(shí)時CPU調(diào)度算法分類
各種實(shí)時操作系統(tǒng)的實(shí)時調(diào)度算法可以分為如下三種類別:基于優(yōu)先級的調(diào)度算法(Priority-driven scheng-PD)、基于CPU使用比例的共享式的調(diào)度算法(Share-driven scheng-SD)、以及基于時間的進(jìn)程調(diào)度算法(Time-driven scheng-TD),下面對這三種調(diào)度算法逐一進(jìn)行介紹。
1.1. 基于優(yōu)先級的調(diào)度算法
基于優(yōu)先級的調(diào)度算法給每個進(jìn)程分配一個優(yōu)先級,在每次進(jìn)程調(diào)度時,調(diào)度器總是調(diào)度那個具有更高優(yōu)先級的任務(wù)來執(zhí)行。根據(jù)不同的優(yōu)先級分配方法,基于優(yōu)先級的調(diào)度算法可以分為如下兩種類型:
靜態(tài)優(yōu)先級調(diào)度算法:
這種調(diào)度算法給那些系統(tǒng)中得到運(yùn)行的所有進(jìn)程都靜態(tài)地分配一個優(yōu)先級。靜態(tài)優(yōu)先級的分配可以根據(jù)應(yīng)用的屬性來進(jìn)行,比如任務(wù)的周期,用戶優(yōu)先級,或者其它的預(yù)先確定的策略。RM(Rate-Monotonic)調(diào)度算法是一種典型的靜態(tài)優(yōu)先級調(diào)度算法,它根據(jù)任務(wù)的執(zhí)行周期的長短來決定調(diào)度優(yōu)先級,那些具有小的執(zhí)行周期的源好任務(wù)具有較高的優(yōu)先級。
動態(tài)優(yōu)先級調(diào)度算法:
這種調(diào)度算法根據(jù)任務(wù)的資源需求來動態(tài)地分配任務(wù)的優(yōu)先級,其目的就是在資源分配和調(diào)度時有更大的靈活性。非實(shí)時系統(tǒng)中就有很多這種調(diào)度算法,比如短作業(yè)優(yōu)先的調(diào)度算法。在實(shí)時調(diào)度算法中蠢掘, EDF算法是使用最多的一種動態(tài)優(yōu)先級調(diào)度算法,該算法給就緒隊(duì)列中的各個任務(wù)根據(jù)它們的截止期限(Deadline)來分配優(yōu)先級,具有最近的截止期限的任務(wù)具有更高的優(yōu)先級。
1.2. 基于比例共享調(diào)度算法
雖然基于優(yōu)先級的調(diào)度算法簡單而有效,但這種調(diào)度算法提供的是一種硬實(shí)時的調(diào)度,在很多情況下并不適合使用這種調(diào)度算法:比如象實(shí)時多媒體會議系統(tǒng)這樣的軟實(shí)時應(yīng)用。對于這種軟實(shí)時應(yīng)用,使用一種比例共享式的資源調(diào)度算法(SD算法)更為適合。
比例共享調(diào)度算法指基于CPU使用比例的共享式的調(diào)度算法,其基本思想就是按照一定的權(quán)重(比例)對一組需要調(diào)度的任務(wù)進(jìn)行調(diào)度,讓它們的執(zhí)行時間與它們的權(quán)重完全成正比。
我們可以通過兩種方法來實(shí)現(xiàn)比例共享調(diào)度算法:之一種方法是調(diào)節(jié)各個就緒進(jìn)程出現(xiàn)在調(diào)度隊(duì)列隊(duì)首的頻率,并調(diào)度隊(duì)首的進(jìn)程執(zhí)行;第二種做法就是逐次調(diào)度就緒隊(duì)列中的各個進(jìn)程投入運(yùn)行,但根據(jù)分配的權(quán)重調(diào)節(jié)分配個每個進(jìn)程的運(yùn)行時間片。
比例共享調(diào)度算法可以分為以下幾個類別:輪轉(zhuǎn)法、公平共享、公平隊(duì)列、彩票調(diào)度法(Lottery)等。
比例共享調(diào)度算法的一個問題就是它沒有定義任何優(yōu)先級的概念;所有的任務(wù)都根據(jù)它們申請的比例共享CPU資源,當(dāng)系統(tǒng)處于過載狀態(tài)時,所有的任務(wù)的執(zhí)行都會按比例地變慢。所以為了保證系統(tǒng)中實(shí)時進(jìn)程能夠獲得一定的CPU處理時間,一般采用一種動態(tài)調(diào)節(jié)進(jìn)程權(quán)重的方法。
1.3. 基于時間的進(jìn)程調(diào)度算法
對于那些具有穩(wěn)定、已知輸入的簡單系統(tǒng),可以使用時間驅(qū)動(Time-driven:TD)的調(diào)度算法,它能夠?yàn)閿?shù)據(jù)處理提供很好的預(yù)測性。這種調(diào)度算法本質(zhì)上是一種設(shè)計時就確定下來的離線的靜態(tài)調(diào)度方法。在系統(tǒng)的設(shè)計階段,在明確系統(tǒng)中所有的處理情況下,對于各個任務(wù)的開始、切換、以及結(jié)束時間等就事先做出明確的安排和設(shè)計。這種調(diào)度算法適合于那些很小的嵌入式系統(tǒng)、自控系統(tǒng)、傳感器等應(yīng)用環(huán)境。
這種調(diào)度算法的優(yōu)點(diǎn)是任務(wù)的執(zhí)行有很好的可預(yù)測性,但更大的缺點(diǎn)是缺乏靈活性,并且會出現(xiàn)有任務(wù)需要被執(zhí)行而CPU卻保持空閑的情況。
2. 通用Linux系統(tǒng)中的CPU調(diào)度
通用Linux系統(tǒng)支持實(shí)時和非實(shí)時兩種進(jìn)程,實(shí)時進(jìn)程相對于普通進(jìn)程具有絕對的優(yōu)先級。對應(yīng)地,實(shí)時進(jìn)程采用SCHED_FIFO或者SCHED_RR調(diào)度策略,普通的進(jìn)程采用SCHED_OTHER調(diào)度策略。
在調(diào)度算法的實(shí)現(xiàn)上,Linux中的每個任務(wù)有四個與調(diào)度相關(guān)的參數(shù),它們是rt_priority、policy、priority(nice)、counter。調(diào)度程序根據(jù)這四個參數(shù)進(jìn)行進(jìn)程調(diào)度。
在SCHED_OTHER 調(diào)度策略中,調(diào)度器總是選擇那個priority+counter值更大的進(jìn)程來調(diào)度執(zhí)行。從邏輯上分析,SCHED_OTHER調(diào)度策略存在著調(diào)度周期(epoch),在每一個調(diào)度周期中,一個進(jìn)程的priority和counter值的大小影響了當(dāng)前時刻應(yīng)該調(diào)度哪一個進(jìn)程來執(zhí)行,其中 priority是一個固定不變的值,在進(jìn)程創(chuàng)建時就已經(jīng)確定,它代表了該進(jìn)程的優(yōu)先級,也代表這該進(jìn)程在每一個調(diào)度周期中能夠得到的時間片的多少; counter是一個動態(tài)變化的值,它反映了一個進(jìn)程在當(dāng)前的調(diào)度周期中還剩下的時間片。在每一個調(diào)度周期的開始,priority的值被賦給 counter,然后每次該進(jìn)程被調(diào)度執(zhí)行時,counter值都減少。當(dāng)counter值為零時,該進(jìn)程用完自己在本調(diào)度周期中的時間片,不再參與本調(diào)度周期的進(jìn)程調(diào)度。當(dāng)所有進(jìn)程的時間片都用完時,一個調(diào)度周期結(jié)束,然后周而復(fù)始。另外可以看出Linux系統(tǒng)中的調(diào)度周期不是靜態(tài)的,它是一個動態(tài)變化的量,比如處于可運(yùn)行狀態(tài)的進(jìn)程的多少和它們priority值都可以影響一個epoch的長短。值得注意的一點(diǎn)是,在2.4以上的內(nèi)核中, priority被nice所取代,但二者作用類似。
可見SCHED_OTHER調(diào)度策略本質(zhì)上是一種比例共享的調(diào)度策略,它的這種設(shè)計方法能夠保證進(jìn)程調(diào)度時的公平性–一個低優(yōu)先級的進(jìn)程在每一個epoch中也會得到自己應(yīng)得的那些CPU執(zhí)行時間,另外它也提供了不同進(jìn)程的優(yōu)先級區(qū)分,具有高priority值的進(jìn)程能夠獲得更多的執(zhí)行時間。
對于實(shí)時進(jìn)程來說,它們使用的是基于實(shí)時優(yōu)先級rt_priority的優(yōu)先級調(diào)度策略,但根據(jù)不同的調(diào)度策略,同一實(shí)時優(yōu)先級的進(jìn)程之間的調(diào)度方法有所不同:
SCHED_FIFO:不同的進(jìn)程根據(jù)靜態(tài)優(yōu)先級進(jìn)行排隊(duì),然后在同一優(yōu)先級的隊(duì)列中,誰先準(zhǔn)備好運(yùn)行就先調(diào)度誰,并且正在運(yùn)行的進(jìn)程不會被終止直到以下情況發(fā)生:1.被有更高優(yōu)先級的進(jìn)程所強(qiáng)占CPU;2.自己因?yàn)橘Y源請求而阻塞;3.自己主動放棄CPU(調(diào)用sched_yield);
SCHED_RR:這種調(diào)度策略跟上面的SCHED_FIFO一模一樣,除了它給每個進(jìn)程分配一個時間片,時間片到了正在執(zhí)行的進(jìn)程就放棄執(zhí)行;時間片的長度可以通過sched_rr_get_interval調(diào)用得到;
由于Linux系統(tǒng)本身是一個面向桌面的系統(tǒng),所以將它應(yīng)用于實(shí)時應(yīng)用中時存在如下的一些問題:
Linux系統(tǒng)中的調(diào)度單位為10ms,所以它不能夠提供精確的定時;
當(dāng)一個進(jìn)程調(diào)用系統(tǒng)調(diào)用進(jìn)入內(nèi)核態(tài)運(yùn)行時,它是不可被搶占的;
Linux內(nèi)核實(shí)現(xiàn)中使用了大量的封中斷操作會造成中斷的丟失;
由于使用虛擬內(nèi)存技術(shù),當(dāng)發(fā)生頁出錯時,需要從硬盤中讀取交換數(shù)據(jù),但硬盤讀寫由于存儲位置的隨機(jī)性會導(dǎo)致隨機(jī)的讀寫時間,這在某些情況下會影響一些實(shí)時任務(wù)的截止期限;
雖然Linux進(jìn)程調(diào)度也支持實(shí)時優(yōu)先級,但缺乏有效的實(shí)時任務(wù)的調(diào)度機(jī)制和調(diào)度算法;它的網(wǎng)絡(luò)子系統(tǒng)的協(xié)議處理和其它設(shè)備的中斷處理都沒有與它對應(yīng)的進(jìn)程的調(diào)度關(guān)聯(lián)起來,并且它們自身也沒有明確的調(diào)度機(jī)制;
3. 各種實(shí)時Linux系統(tǒng)
3.1. RT-Linux和RTAI
RT -Linux是新墨西哥科技大學(xué)(New Mexico Institute of Technology)的研究成果。它的基本思想是,為了在Linux系統(tǒng)中提供對于硬實(shí)時的支持,它實(shí)現(xiàn)了一個微內(nèi)核的小的實(shí)時操作系統(tǒng)(我們也稱之為RT-Linux的實(shí)時子系統(tǒng)),而將普通Linux系統(tǒng)作為一個該操作系統(tǒng)中的一個低優(yōu)先級的任務(wù)來運(yùn)行。另外普通Linux系統(tǒng)中的任務(wù)可以通過FIFO和實(shí)時任務(wù)進(jìn)行通信。RT-Linux的框架如圖 1所示:
圖 1 RT-Linux結(jié)構(gòu)
RT -Linux的關(guān)鍵技術(shù)是通過軟件來模擬硬件的中斷控制器。當(dāng)Linux系統(tǒng)要封鎖CPU的中斷時時,RT-Linux中的實(shí)時子系統(tǒng)會截取到這個請求,把它記錄下來,而實(shí)際上并不真正封鎖硬件中斷,這樣就避免了由于封中斷所造成的系統(tǒng)在一段時間沒有響應(yīng)的情況,從而提高了實(shí)時性。當(dāng)有硬件中斷到來時, RT-Linux截取該中斷,并判斷是否有實(shí)時子系統(tǒng)中的中斷例程來處理還是傳遞給普通的Linux內(nèi)核進(jìn)行處理。另外,普通Linux系統(tǒng)中的最小定時精度由系統(tǒng)中的實(shí)時時鐘的頻率決定,一般Linux系統(tǒng)將該時鐘設(shè)置為每秒來100個時鐘中斷,所以Linux系統(tǒng)中一般的定時精度為 10ms,即時鐘周期是10ms,而RT-Linux通過將系統(tǒng)的實(shí)時時鐘設(shè)置為單次觸發(fā)狀態(tài),可以提供十幾個微秒級的調(diào)度粒度。
RT-Linux實(shí)時子系統(tǒng)中的任務(wù)調(diào)度可以采用RM、EDF等優(yōu)先級驅(qū)動的算法,也可以采用其他調(diào)度算法。
RT -Linux對于那些在重負(fù)荷下工作的專有系統(tǒng)來說,確實(shí)是一個不錯的選擇,但他僅僅提供了對于CPU資源的調(diào)度;并且實(shí)時系統(tǒng)和普通Linux系統(tǒng)關(guān)系不是十分密切,這樣的話,開發(fā)人員不能充分利用Linux系統(tǒng)中已經(jīng)實(shí)現(xiàn)的功能,如協(xié)議棧等。所以RT-Linux適合與工業(yè)控制等實(shí)時任務(wù)功能簡單,并且有硬實(shí)時要求的環(huán)境中,但如果要應(yīng)用與多媒體處理中還需要做大量的工作。
意大利的RTAI( Real-Time Application Interface )源于RT-Linux,它在設(shè)計思想上和RT-Linux完全相同。它當(dāng)初設(shè)計目的是為了解決RT-Linux難于在不同Linux版本之間難于移植的問題,為此,RTAI在 Linux 上定義了一個實(shí)時硬件抽象層,實(shí)時任務(wù)通過這個抽象層提供的接口和Linux系統(tǒng)進(jìn)行交互,這樣在給Linux內(nèi)核中增加實(shí)時支持時可以盡可能少地修改 Linux的內(nèi)核源代碼。
3.2. Kurt-Linux
Kurt -Linux由Kansas大學(xué)開發(fā),它可以提供微秒級的實(shí)時精度 。不同于RT-Linux單獨(dú)實(shí)現(xiàn)一個實(shí)時內(nèi)核的做法,Kurt -Linux是在通用Linux系統(tǒng)的基礎(chǔ)上實(shí)現(xiàn)的,它也是之一個可以使用普通Linux系統(tǒng)調(diào)用的基于Linux的實(shí)時系統(tǒng)。
Kurt-Linux將系統(tǒng)分為三種狀態(tài):正常態(tài)、實(shí)時態(tài)和混合態(tài),在正常態(tài)時它采用普通的Linux的調(diào)度策略,在實(shí)時態(tài)只運(yùn)行實(shí)時任務(wù),在混合態(tài)實(shí)時和非實(shí)時任務(wù)都可以執(zhí)行;實(shí)時態(tài)可以用于對于實(shí)時性要求比較嚴(yán)格的情況。
為了提高Linux系統(tǒng)的實(shí)時特性,必須提高系統(tǒng)所支持的時鐘精度。但如果僅僅簡單地提高時鐘頻率,會引起調(diào)度負(fù)載的增加,從而嚴(yán)重降低系統(tǒng)的性能。為了解決這個矛盾, Kurt-Linux采用UTIME所使用的提高Linux系統(tǒng)中的時鐘精度的方法:它將時鐘芯片設(shè)置為單次觸發(fā)狀態(tài)(One shot mode),即每次給時鐘芯片設(shè)置一個超時時間,然后到該超時事件發(fā)生時在時鐘中斷處理程序中再次根據(jù)需要給時鐘芯片設(shè)置一個超時時間。它的基本思想是一個精確的定時意味著我們需要時鐘中斷在我們需要的一個比較精確的時間發(fā)生,但并非一定需要系統(tǒng)時鐘頻率達(dá)到此精度。它利用CPU的時鐘計數(shù)器TSC (Time Stamp Counter)來提供精度可達(dá)CPU主頻的時間精度。
對于實(shí)時任務(wù)的調(diào)度,Kurt-Linux采用基于時間(TD)的靜態(tài)的實(shí)時CPU調(diào)度算法。實(shí)時任務(wù)在設(shè)計階段就需要明確地說明它們實(shí)時事件要發(fā)生的時間。這種調(diào)度算法對于那些循環(huán)執(zhí)行的任務(wù)能夠取得較好的調(diào)度效果。
Kurt -Linux相對于RT-Linux的一個優(yōu)點(diǎn)就是可以使用Linux系統(tǒng)自身的系統(tǒng)調(diào)用,它本來被設(shè)計用于提供對硬實(shí)時的支持,但由于它在實(shí)現(xiàn)上只是簡單的將Linux調(diào)度器用一個簡單的時間驅(qū)動的調(diào)度器所取代,所以它的實(shí)時進(jìn)程的調(diào)度很容易受到其它非實(shí)時任務(wù)的影響,從而在有的情況下會發(fā)生實(shí)時任務(wù)的截止期限不能滿足的情況,所以也被稱作嚴(yán)格實(shí)時系統(tǒng)(Firm Real-time)。目前基于Kurt-Linux的應(yīng)用有:ARTS(ATM Reference Traffic System)、多媒體播放軟件等。另外Kurt-Linux所采用的這種方法需要頻繁地對時鐘芯片進(jìn)行編程設(shè)置。
3.3. RED-Linux
RED -Linux是加州大學(xué)Irvine分校開發(fā)的實(shí)時Linux系統(tǒng),它將對實(shí)時調(diào)度的支持和Linux很好地實(shí)現(xiàn)在同一個操作系統(tǒng)內(nèi)核中。它同時支持三種類型的調(diào)度算法,即:Time-Driven、 Priority-Dirven、Share-Driven。
為了提高系統(tǒng)的調(diào)度粒度,RED-Linux從RT-Linux那兒借鑒了軟件模擬中斷管理器的機(jī)制,并且提高了時鐘中斷頻率。當(dāng)有硬件中斷到來時,RED-Linux的中斷模擬程序僅僅是簡單地將到來的中斷放到一個隊(duì)列中進(jìn)行排隊(duì),并不執(zhí)行真正的中斷處理程序。
另外為了解決Linux進(jìn)程在內(nèi)核態(tài)不能被搶占的問題, RED-Linux在Linux內(nèi)核的很多函數(shù)中插入了搶占點(diǎn)原語,使得進(jìn)程在內(nèi)核態(tài)時,也可以在一定程度上被搶占。通過這種方法提高了內(nèi)核的實(shí)時特性。
RED-Linux的設(shè)計目標(biāo)就是提供一個可以支持各種調(diào)度算法的通用的調(diào)度框架,該系統(tǒng)給每個任務(wù)增加了如下幾項(xiàng)屬性,并將它們作為進(jìn)程調(diào)度的依據(jù):
Priority:作業(yè)的優(yōu)先級;
Start-Time:作業(yè)的開始時間;
Finish-Time:作業(yè)的結(jié)束時間;
Budget:作業(yè)在運(yùn)行期間所要使用的資源的多少;
linux 2.6 調(diào)度器的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux 2.6 調(diào)度器,深入解析Linux 2.6調(diào)度器的優(yōu)化和實(shí)現(xiàn),linux調(diào)度器模擬器有哪幾種好上手的啊,哪位大神給介紹下,linux環(huán)境下的進(jìn)程調(diào)度算法有哪些?的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)-老牌IDC、云計算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計算服務(wù)、IT信息化、AI算力租賃平臺(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220
網(wǎng)站標(biāo)題:深入解析Linux2.6調(diào)度器的優(yōu)化和實(shí)現(xiàn)(linux2.6調(diào)度器)
瀏覽地址:http://m.fisionsoft.com.cn/article/djogeei.html


咨詢
建站咨詢
