日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
深入解析Linux2.6調(diào)度器的優(yōu)化和實(shí)現(xiàn)(linux2.6調(diào)度器)

介紹

成都創(chuàng)新互聯(lián)公司自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元平果做網(wǎng)站,已為上家服務(wù),為平果各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

Linux操作系統(tǒng)的調(diào)度器是一個(gè)核心組件,它負(fù)責(zé)控制進(jìn)程在CPU上執(zhí)行的時(shí)間片,并決定哪個(gè)進(jìn)程將獲得下一個(gè)時(shí)間片。Linux 2.6是一個(gè)重要版本,它重新實(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),主要由三個(gè)部分組成:運(yùn)行隊(duì)列,調(diào)度策略和進(jìn)程狀態(tài)機(jī)。

運(yùn)行隊(duì)列

運(yùn)行隊(duì)列是調(diào)度器的核心組成部分,它是一個(gè)有優(yōu)先級(jí)的雙向鏈表,按照優(yōu)先級(jí)從高到低排列。每個(gè)優(yōu)先級(jí)都對(duì)應(yīng)一個(gè)運(yùn)行隊(duì)列,可以有多個(gè)進(jìn)程在同一優(yōu)先級(jí)的隊(duì)列中等待運(yùn)行。當(dāng)一個(gè)進(jìn)程的時(shí)間片用完后,它將被放回到相應(yīng)的運(yùn)行隊(duì)列中等待下次調(diào)度。

調(diào)度策略

調(diào)度策略是決定哪個(gè)進(jìn)程將獲得下一個(gè)時(shí)間片的決策方法。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)行但是還沒有獲得時(shí)間片。運(yùn)行狀態(tài)表示進(jìn)程正在運(yùn)行并占用CPU。等待狀態(tài)表示進(jìn)程正在等待某個(gè)事件發(fā)生。退出狀態(tài)表示進(jìn)程已經(jīng)結(jié)束并且需要被回收。

調(diào)度器優(yōu)化

Linux 2.6采用了一系列性能優(yōu)化,包括提高調(diào)度器的平均響應(yīng)時(shí)間、降低延遲和增加并發(fā)度。

菜單式調(diào)度

菜單式調(diào)度是一種新的調(diào)度方法,它將調(diào)度器分成多個(gè)個(gè)體,并交給一個(gè)負(fù)責(zé)運(yùn)行的進(jìn)程來控制。這個(gè)進(jìn)程可以根據(jù)需要選擇合適的調(diào)度策略和運(yùn)行隊(duì)列來完成調(diào)度工作。菜單式調(diào)度可以提高調(diào)度器的并發(fā)度和響應(yīng)時(shí)間。

多級(jí)反饋隊(duì)列

Linux 2.6引入了多級(jí)反饋隊(duì)列調(diào)度器,它可以更好地支持不同種類的進(jìn)程和不同的調(diào)度策略。多級(jí)反饋隊(duì)列調(diào)度器將所有進(jìn)程分為多個(gè)隊(duì)列,每個(gè)隊(duì)列對(duì)應(yīng)一個(gè)優(yōu)先級(jí)。進(jìn)程在各個(gè)隊(duì)列之間移動(dòng),根據(jù)進(jìn)程的歷史執(zhí)行時(shí)間來調(diào)整優(yōu)先級(jí)。如果一個(gè)進(jìn)程一直在等待,在等待隊(duì)列中的等待時(shí)間也會(huì)影響其優(yōu)先級(jí)。

實(shí)時(shí)調(diào)度器

Linux 2.6還引入了實(shí)時(shí)調(diào)度器,它可以更好地支持對(duì)響應(yīng)時(shí)間敏感的應(yīng)用程序。實(shí)時(shí)調(diào)度器有兩個(gè)優(yōu)先級(jí),實(shí)時(shí)優(yōu)先級(jí)和普通優(yōu)先級(jí)。實(shí)時(shí)優(yōu)先級(jí)的進(jìn)程可以打斷普通優(yōu)先級(jí)的進(jìn)程,并在時(shí)間片用完之前立即執(zhí)行。實(shí)時(shí)調(diào)度器也支持多級(jí)隊(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)度器是一個(gè)非常優(yōu)秀的調(diào)度器,它具有高效的性能和靈活的配置選項(xiàng)。本篇文章對(duì)Linux 2.6調(diào)度器的架構(gòu)、優(yōu)化和實(shí)現(xiàn)細(xì)節(jié)進(jìn)行了深入的介紹。相信這些知識(shí)可以幫助讀者更好地理解和掌握Linux操作系統(tǒng)和調(diào)度器的運(yùn)行原理。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(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語(yǔ)言開發(fā)的一種開源調(diào)度模擬器。該模擬器具有支持多種調(diào)度算法、多種調(diào)度模式及多處理乎侍器架構(gòu);以及具有良好的擴(kuò)展性、友好的用戶界面等優(yōu)點(diǎn)

linux環(huán)境下的進(jìn)程調(diào)度算法有哪些?

之一部分: 實(shí)時(shí)調(diào)度算法介紹

對(duì)于什么是實(shí)時(shí)系統(tǒng),POSIX 1003.b作了這樣的定義:指系統(tǒng)能夠在限定的響應(yīng)時(shí)間內(nèi)提供所需水平的服務(wù)。而一個(gè)由Donald Gillies提出的更加為大家接受的定義是:一個(gè)實(shí)時(shí)系統(tǒng)是指計(jì)算的正確性不僅取決于程序的邏輯正確性,也取決于結(jié)果產(chǎn)生的時(shí)間,如果系統(tǒng)的時(shí)間約束條件得不到滿足,將會(huì)發(fā)生系統(tǒng)出錯(cuò)。

實(shí)時(shí)系統(tǒng)根據(jù)其對(duì)于實(shí)時(shí)性要求的不同,可以分為軟實(shí)時(shí)和硬實(shí)時(shí)兩種類型。硬實(shí)時(shí)系統(tǒng)指系統(tǒng)要有確保的最壞情況下的服務(wù)時(shí)間,即對(duì)于事件的響應(yīng)時(shí)間的截止期限是無(wú)論如何都必須得到滿足。比如航天中的宇宙飛船的控制等就是現(xiàn)實(shí)中這樣的系統(tǒng)。其他的所有有實(shí)時(shí)特性的系統(tǒng)都可以稱之為軟實(shí)時(shí)系統(tǒng)。如果明確地來說,軟實(shí)時(shí)系統(tǒng)就是那些從統(tǒng)計(jì)的角度來說,一個(gè)任務(wù)(在下面的論述中,我們將對(duì)任務(wù)和進(jìn)程不作區(qū)分)能夠得到有確保的處理時(shí)間,到達(dá)系統(tǒng)的事件也能夠在截止期限到來之前得到處理,但違反截止期限并不會(huì)帶來致命的錯(cuò)誤,像實(shí)時(shí)多媒體系統(tǒng)就是一種軟實(shí)時(shí)系統(tǒng)。

一個(gè)計(jì)算機(jī)系統(tǒng)為了提供對(duì)于實(shí)時(shí)性的支持,它的操作系統(tǒng)必須對(duì)于CPU和其他資源進(jìn)行有效的調(diào)度和管理。在多任務(wù)實(shí)時(shí)系統(tǒng)中,資源的調(diào)度和管理更加復(fù)雜。本文下面將先從分類的角度對(duì)各種實(shí)時(shí)任務(wù)調(diào)度算法進(jìn)行討論,然后研究普通的 Linux操作系統(tǒng)的進(jìn)程調(diào)度以及各種實(shí)時(shí)Linux系統(tǒng)為了支持實(shí)時(shí)特性對(duì)普通Linux系統(tǒng)所做的改進(jìn)。最后分析了將雹檔鉛Linux操作系統(tǒng)應(yīng)用于實(shí)時(shí)領(lǐng)域中時(shí)所出現(xiàn)的一些問題,并總結(jié)了各種實(shí)時(shí)Linux是如何解決這些問題的。

1. 實(shí)時(shí)CPU調(diào)度算法分類

各種實(shí)時(shí)操作系統(tǒng)的實(shí)時(shí)調(diào)度算法可以分為如下三種類別:基于優(yōu)先級(jí)的調(diào)度算法(Priority-driven scheng-PD)、基于CPU使用比例的共享式的調(diào)度算法(Share-driven scheng-SD)、以及基于時(shí)間的進(jìn)程調(diào)度算法(Time-driven scheng-TD),下面對(duì)這三種調(diào)度算法逐一進(jìn)行介紹。

1.1. 基于優(yōu)先級(jí)的調(diào)度算法

基于優(yōu)先級(jí)的調(diào)度算法給每個(gè)進(jìn)程分配一個(gè)優(yōu)先級(jí),在每次進(jìn)程調(diào)度時(shí),調(diào)度器總是調(diào)度那個(gè)具有更高優(yōu)先級(jí)的任務(wù)來執(zhí)行。根據(jù)不同的優(yōu)先級(jí)分配方法,基于優(yōu)先級(jí)的調(diào)度算法可以分為如下兩種類型:

靜態(tài)優(yōu)先級(jí)調(diào)度算法:

這種調(diào)度算法給那些系統(tǒng)中得到運(yùn)行的所有進(jìn)程都靜態(tài)地分配一個(gè)優(yōu)先級(jí)。靜態(tài)優(yōu)先級(jí)的分配可以根據(jù)應(yīng)用的屬性來進(jìn)行,比如任務(wù)的周期,用戶優(yōu)先級(jí),或者其它的預(yù)先確定的策略。RM(Rate-Monotonic)調(diào)度算法是一種典型的靜態(tài)優(yōu)先級(jí)調(diào)度算法,它根據(jù)任務(wù)的執(zhí)行周期的長(zhǎng)短來決定調(diào)度優(yōu)先級(jí),那些具有小的執(zhí)行周期的源好任務(wù)具有較高的優(yōu)先級(jí)。

動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法:

這種調(diào)度算法根據(jù)任務(wù)的資源需求來動(dòng)態(tài)地分配任務(wù)的優(yōu)先級(jí),其目的就是在資源分配和調(diào)度時(shí)有更大的靈活性。非實(shí)時(shí)系統(tǒng)中就有很多這種調(diào)度算法,比如短作業(yè)優(yōu)先的調(diào)度算法。在實(shí)時(shí)調(diào)度算法中蠢掘, EDF算法是使用最多的一種動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法,該算法給就緒隊(duì)列中的各個(gè)任務(wù)根據(jù)它們的截止期限(Deadline)來分配優(yōu)先級(jí),具有最近的截止期限的任務(wù)具有更高的優(yōu)先級(jí)。

1.2. 基于比例共享調(diào)度算法

雖然基于優(yōu)先級(jí)的調(diào)度算法簡(jiǎn)單而有效,但這種調(diào)度算法提供的是一種硬實(shí)時(shí)的調(diào)度,在很多情況下并不適合使用這種調(diào)度算法:比如象實(shí)時(shí)多媒體會(huì)議系統(tǒng)這樣的軟實(shí)時(shí)應(yīng)用。對(duì)于這種軟實(shí)時(shí)應(yīng)用,使用一種比例共享式的資源調(diào)度算法(SD算法)更為適合。

比例共享調(diào)度算法指基于CPU使用比例的共享式的調(diào)度算法,其基本思想就是按照一定的權(quán)重(比例)對(duì)一組需要調(diào)度的任務(wù)進(jìn)行調(diào)度,讓它們的執(zhí)行時(shí)間與它們的權(quán)重完全成正比。

我們可以通過兩種方法來實(shí)現(xiàn)比例共享調(diào)度算法:之一種方法是調(diào)節(jié)各個(gè)就緒進(jìn)程出現(xiàn)在調(diào)度隊(duì)列隊(duì)首的頻率,并調(diào)度隊(duì)首的進(jìn)程執(zhí)行;第二種做法就是逐次調(diào)度就緒隊(duì)列中的各個(gè)進(jìn)程投入運(yùn)行,但根據(jù)分配的權(quán)重調(diào)節(jié)分配個(gè)每個(gè)進(jìn)程的運(yùn)行時(shí)間片。

比例共享調(diào)度算法可以分為以下幾個(gè)類別:輪轉(zhuǎn)法、公平共享、公平隊(duì)列、彩票調(diào)度法(Lottery)等。

比例共享調(diào)度算法的一個(gè)問題就是它沒有定義任何優(yōu)先級(jí)的概念;所有的任務(wù)都根據(jù)它們申請(qǐng)的比例共享CPU資源,當(dāng)系統(tǒng)處于過載狀態(tài)時(shí),所有的任務(wù)的執(zhí)行都會(huì)按比例地變慢。所以為了保證系統(tǒng)中實(shí)時(shí)進(jìn)程能夠獲得一定的CPU處理時(shí)間,一般采用一種動(dòng)態(tài)調(diào)節(jié)進(jìn)程權(quán)重的方法。

1.3. 基于時(shí)間的進(jìn)程調(diào)度算法

對(duì)于那些具有穩(wěn)定、已知輸入的簡(jiǎn)單系統(tǒng),可以使用時(shí)間驅(qū)動(dòng)(Time-driven:TD)的調(diào)度算法,它能夠?yàn)閿?shù)據(jù)處理提供很好的預(yù)測(cè)性。這種調(diào)度算法本質(zhì)上是一種設(shè)計(jì)時(shí)就確定下來的離線的靜態(tài)調(diào)度方法。在系統(tǒng)的設(shè)計(jì)階段,在明確系統(tǒng)中所有的處理情況下,對(duì)于各個(gè)任務(wù)的開始、切換、以及結(jié)束時(shí)間等就事先做出明確的安排和設(shè)計(jì)。這種調(diào)度算法適合于那些很小的嵌入式系統(tǒng)、自控系統(tǒng)、傳感器等應(yīng)用環(huán)境。

這種調(diào)度算法的優(yōu)點(diǎn)是任務(wù)的執(zhí)行有很好的可預(yù)測(cè)性,但更大的缺點(diǎn)是缺乏靈活性,并且會(huì)出現(xiàn)有任務(wù)需要被執(zhí)行而CPU卻保持空閑的情況。

2. 通用Linux系統(tǒng)中的CPU調(diào)度

通用Linux系統(tǒng)支持實(shí)時(shí)和非實(shí)時(shí)兩種進(jìn)程,實(shí)時(shí)進(jìn)程相對(duì)于普通進(jìn)程具有絕對(duì)的優(yōu)先級(jí)。對(duì)應(yīng)地,實(shí)時(shí)進(jìn)程采用SCHED_FIFO或者SCHED_RR調(diào)度策略,普通的進(jìn)程采用SCHED_OTHER調(diào)度策略。

在調(diào)度算法的實(shí)現(xiàn)上,Linux中的每個(gè)任務(wù)有四個(gè)與調(diào)度相關(guān)的參數(shù),它們是rt_priority、policy、priority(nice)、counter。調(diào)度程序根據(jù)這四個(gè)參數(shù)進(jìn)行進(jìn)程調(diào)度。

在SCHED_OTHER 調(diào)度策略中,調(diào)度器總是選擇那個(gè)priority+counter值更大的進(jìn)程來調(diào)度執(zhí)行。從邏輯上分析,SCHED_OTHER調(diào)度策略存在著調(diào)度周期(epoch),在每一個(gè)調(diào)度周期中,一個(gè)進(jìn)程的priority和counter值的大小影響了當(dāng)前時(shí)刻應(yīng)該調(diào)度哪一個(gè)進(jìn)程來執(zhí)行,其中 priority是一個(gè)固定不變的值,在進(jìn)程創(chuàng)建時(shí)就已經(jīng)確定,它代表了該進(jìn)程的優(yōu)先級(jí),也代表這該進(jìn)程在每一個(gè)調(diào)度周期中能夠得到的時(shí)間片的多少; counter是一個(gè)動(dòng)態(tài)變化的值,它反映了一個(gè)進(jìn)程在當(dāng)前的調(diào)度周期中還剩下的時(shí)間片。在每一個(gè)調(diào)度周期的開始,priority的值被賦給 counter,然后每次該進(jìn)程被調(diào)度執(zhí)行時(shí),counter值都減少。當(dāng)counter值為零時(shí),該進(jìn)程用完自己在本調(diào)度周期中的時(shí)間片,不再參與本調(diào)度周期的進(jìn)程調(diào)度。當(dāng)所有進(jìn)程的時(shí)間片都用完時(shí),一個(gè)調(diào)度周期結(jié)束,然后周而復(fù)始。另外可以看出Linux系統(tǒng)中的調(diào)度周期不是靜態(tài)的,它是一個(gè)動(dòng)態(tài)變化的量,比如處于可運(yùn)行狀態(tài)的進(jìn)程的多少和它們priority值都可以影響一個(gè)epoch的長(zhǎng)短。值得注意的一點(diǎn)是,在2.4以上的內(nèi)核中, priority被nice所取代,但二者作用類似。

可見SCHED_OTHER調(diào)度策略本質(zhì)上是一種比例共享的調(diào)度策略,它的這種設(shè)計(jì)方法能夠保證進(jìn)程調(diào)度時(shí)的公平性–一個(gè)低優(yōu)先級(jí)的進(jìn)程在每一個(gè)epoch中也會(huì)得到自己應(yīng)得的那些CPU執(zhí)行時(shí)間,另外它也提供了不同進(jìn)程的優(yōu)先級(jí)區(qū)分,具有高priority值的進(jìn)程能夠獲得更多的執(zhí)行時(shí)間。

對(duì)于實(shí)時(shí)進(jìn)程來說,它們使用的是基于實(shí)時(shí)優(yōu)先級(jí)rt_priority的優(yōu)先級(jí)調(diào)度策略,但根據(jù)不同的調(diào)度策略,同一實(shí)時(shí)優(yōu)先級(jí)的進(jìn)程之間的調(diào)度方法有所不同:

SCHED_FIFO:不同的進(jìn)程根據(jù)靜態(tài)優(yōu)先級(jí)進(jìn)行排隊(duì),然后在同一優(yōu)先級(jí)的隊(duì)列中,誰(shuí)先準(zhǔn)備好運(yùn)行就先調(diào)度誰(shuí),并且正在運(yùn)行的進(jìn)程不會(huì)被終止直到以下情況發(fā)生:1.被有更高優(yōu)先級(jí)的進(jìn)程所強(qiáng)占CPU;2.自己因?yàn)橘Y源請(qǐng)求而阻塞;3.自己主動(dòng)放棄CPU(調(diào)用sched_yield);

SCHED_RR:這種調(diào)度策略跟上面的SCHED_FIFO一模一樣,除了它給每個(gè)進(jìn)程分配一個(gè)時(shí)間片,時(shí)間片到了正在執(zhí)行的進(jìn)程就放棄執(zhí)行;時(shí)間片的長(zhǎng)度可以通過sched_rr_get_interval調(diào)用得到;

由于Linux系統(tǒng)本身是一個(gè)面向桌面的系統(tǒng),所以將它應(yīng)用于實(shí)時(shí)應(yīng)用中時(shí)存在如下的一些問題:

Linux系統(tǒng)中的調(diào)度單位為10ms,所以它不能夠提供精確的定時(shí);

當(dāng)一個(gè)進(jìn)程調(diào)用系統(tǒng)調(diào)用進(jìn)入內(nèi)核態(tài)運(yùn)行時(shí),它是不可被搶占的;

Linux內(nèi)核實(shí)現(xiàn)中使用了大量的封中斷操作會(huì)造成中斷的丟失;

由于使用虛擬內(nèi)存技術(shù),當(dāng)發(fā)生頁(yè)出錯(cuò)時(shí),需要從硬盤中讀取交換數(shù)據(jù),但硬盤讀寫由于存儲(chǔ)位置的隨機(jī)性會(huì)導(dǎo)致隨機(jī)的讀寫時(shí)間,這在某些情況下會(huì)影響一些實(shí)時(shí)任務(wù)的截止期限;

雖然Linux進(jìn)程調(diào)度也支持實(shí)時(shí)優(yōu)先級(jí),但缺乏有效的實(shí)時(shí)任務(wù)的調(diào)度機(jī)制和調(diào)度算法;它的網(wǎng)絡(luò)子系統(tǒng)的協(xié)議處理和其它設(shè)備的中斷處理都沒有與它對(duì)應(yīng)的進(jìn)程的調(diào)度關(guān)聯(lián)起來,并且它們自身也沒有明確的調(diào)度機(jī)制;

3. 各種實(shí)時(shí)Linux系統(tǒng)

3.1. RT-Linux和RTAI

RT -Linux是新墨西哥科技大學(xué)(New Mexico Institute of Technology)的研究成果。它的基本思想是,為了在Linux系統(tǒng)中提供對(duì)于硬實(shí)時(shí)的支持,它實(shí)現(xiàn)了一個(gè)微內(nèi)核的小的實(shí)時(shí)操作系統(tǒng)(我們也稱之為RT-Linux的實(shí)時(shí)子系統(tǒng)),而將普通Linux系統(tǒng)作為一個(gè)該操作系統(tǒng)中的一個(gè)低優(yōu)先級(jí)的任務(wù)來運(yùn)行。另外普通Linux系統(tǒng)中的任務(wù)可以通過FIFO和實(shí)時(shí)任務(wù)進(jìn)行通信。RT-Linux的框架如圖 1所示:

圖 1 RT-Linux結(jié)構(gòu)

RT -Linux的關(guān)鍵技術(shù)是通過軟件來模擬硬件的中斷控制器。當(dāng)Linux系統(tǒng)要封鎖CPU的中斷時(shí)時(shí),RT-Linux中的實(shí)時(shí)子系統(tǒng)會(huì)截取到這個(gè)請(qǐng)求,把它記錄下來,而實(shí)際上并不真正封鎖硬件中斷,這樣就避免了由于封中斷所造成的系統(tǒng)在一段時(shí)間沒有響應(yīng)的情況,從而提高了實(shí)時(shí)性。當(dāng)有硬件中斷到來時(shí), RT-Linux截取該中斷,并判斷是否有實(shí)時(shí)子系統(tǒng)中的中斷例程來處理還是傳遞給普通的Linux內(nèi)核進(jìn)行處理。另外,普通Linux系統(tǒng)中的最小定時(shí)精度由系統(tǒng)中的實(shí)時(shí)時(shí)鐘的頻率決定,一般Linux系統(tǒng)將該時(shí)鐘設(shè)置為每秒來100個(gè)時(shí)鐘中斷,所以Linux系統(tǒng)中一般的定時(shí)精度為 10ms,即時(shí)鐘周期是10ms,而RT-Linux通過將系統(tǒng)的實(shí)時(shí)時(shí)鐘設(shè)置為單次觸發(fā)狀態(tài),可以提供十幾個(gè)微秒級(jí)的調(diào)度粒度。

RT-Linux實(shí)時(shí)子系統(tǒng)中的任務(wù)調(diào)度可以采用RM、EDF等優(yōu)先級(jí)驅(qū)動(dòng)的算法,也可以采用其他調(diào)度算法。

RT -Linux對(duì)于那些在重負(fù)荷下工作的專有系統(tǒng)來說,確實(shí)是一個(gè)不錯(cuò)的選擇,但他僅僅提供了對(duì)于CPU資源的調(diào)度;并且實(shí)時(shí)系統(tǒng)和普通Linux系統(tǒng)關(guān)系不是十分密切,這樣的話,開發(fā)人員不能充分利用Linux系統(tǒng)中已經(jīng)實(shí)現(xiàn)的功能,如協(xié)議棧等。所以RT-Linux適合與工業(yè)控制等實(shí)時(shí)任務(wù)功能簡(jiǎn)單,并且有硬實(shí)時(shí)要求的環(huán)境中,但如果要應(yīng)用與多媒體處理中還需要做大量的工作。

意大利的RTAI( Real-Time Application Interface )源于RT-Linux,它在設(shè)計(jì)思想上和RT-Linux完全相同。它當(dāng)初設(shè)計(jì)目的是為了解決RT-Linux難于在不同Linux版本之間難于移植的問題,為此,RTAI在 Linux 上定義了一個(gè)實(shí)時(shí)硬件抽象層,實(shí)時(shí)任務(wù)通過這個(gè)抽象層提供的接口和Linux系統(tǒng)進(jìn)行交互,這樣在給Linux內(nèi)核中增加實(shí)時(shí)支持時(shí)可以盡可能少地修改 Linux的內(nèi)核源代碼。

3.2. Kurt-Linux

Kurt -Linux由Kansas大學(xué)開發(fā),它可以提供微秒級(jí)的實(shí)時(shí)精度 。不同于RT-Linux單獨(dú)實(shí)現(xiàn)一個(gè)實(shí)時(shí)內(nèi)核的做法,Kurt -Linux是在通用Linux系統(tǒng)的基礎(chǔ)上實(shí)現(xiàn)的,它也是之一個(gè)可以使用普通Linux系統(tǒng)調(diào)用的基于Linux的實(shí)時(shí)系統(tǒng)。

Kurt-Linux將系統(tǒng)分為三種狀態(tài):正常態(tài)、實(shí)時(shí)態(tài)和混合態(tài),在正常態(tài)時(shí)它采用普通的Linux的調(diào)度策略,在實(shí)時(shí)態(tài)只運(yùn)行實(shí)時(shí)任務(wù),在混合態(tài)實(shí)時(shí)和非實(shí)時(shí)任務(wù)都可以執(zhí)行;實(shí)時(shí)態(tài)可以用于對(duì)于實(shí)時(shí)性要求比較嚴(yán)格的情況。

為了提高Linux系統(tǒng)的實(shí)時(shí)特性,必須提高系統(tǒng)所支持的時(shí)鐘精度。但如果僅僅簡(jiǎn)單地提高時(shí)鐘頻率,會(huì)引起調(diào)度負(fù)載的增加,從而嚴(yán)重降低系統(tǒng)的性能。為了解決這個(gè)矛盾, Kurt-Linux采用UTIME所使用的提高Linux系統(tǒng)中的時(shí)鐘精度的方法:它將時(shí)鐘芯片設(shè)置為單次觸發(fā)狀態(tài)(One shot mode),即每次給時(shí)鐘芯片設(shè)置一個(gè)超時(shí)時(shí)間,然后到該超時(shí)事件發(fā)生時(shí)在時(shí)鐘中斷處理程序中再次根據(jù)需要給時(shí)鐘芯片設(shè)置一個(gè)超時(shí)時(shí)間。它的基本思想是一個(gè)精確的定時(shí)意味著我們需要時(shí)鐘中斷在我們需要的一個(gè)比較精確的時(shí)間發(fā)生,但并非一定需要系統(tǒng)時(shí)鐘頻率達(dá)到此精度。它利用CPU的時(shí)鐘計(jì)數(shù)器TSC (Time Stamp Counter)來提供精度可達(dá)CPU主頻的時(shí)間精度。

對(duì)于實(shí)時(shí)任務(wù)的調(diào)度,Kurt-Linux采用基于時(shí)間(TD)的靜態(tài)的實(shí)時(shí)CPU調(diào)度算法。實(shí)時(shí)任務(wù)在設(shè)計(jì)階段就需要明確地說明它們實(shí)時(shí)事件要發(fā)生的時(shí)間。這種調(diào)度算法對(duì)于那些循環(huán)執(zhí)行的任務(wù)能夠取得較好的調(diào)度效果。

Kurt -Linux相對(duì)于RT-Linux的一個(gè)優(yōu)點(diǎn)就是可以使用Linux系統(tǒng)自身的系統(tǒng)調(diào)用,它本來被設(shè)計(jì)用于提供對(duì)硬實(shí)時(shí)的支持,但由于它在實(shí)現(xiàn)上只是簡(jiǎn)單的將Linux調(diào)度器用一個(gè)簡(jiǎn)單的時(shí)間驅(qū)動(dòng)的調(diào)度器所取代,所以它的實(shí)時(shí)進(jìn)程的調(diào)度很容易受到其它非實(shí)時(shí)任務(wù)的影響,從而在有的情況下會(huì)發(fā)生實(shí)時(shí)任務(wù)的截止期限不能滿足的情況,所以也被稱作嚴(yán)格實(shí)時(shí)系統(tǒng)(Firm Real-time)。目前基于Kurt-Linux的應(yīng)用有:ARTS(ATM Reference Traffic System)、多媒體播放軟件等。另外Kurt-Linux所采用的這種方法需要頻繁地對(duì)時(shí)鐘芯片進(jìn)行編程設(shè)置。

3.3. RED-Linux

RED -Linux是加州大學(xué)Irvine分校開發(fā)的實(shí)時(shí)Linux系統(tǒng),它將對(duì)實(shí)時(shí)調(diào)度的支持和Linux很好地實(shí)現(xiàn)在同一個(gè)操作系統(tǒng)內(nèi)核中。它同時(shí)支持三種類型的調(diào)度算法,即:Time-Driven、 Priority-Dirven、Share-Driven。

為了提高系統(tǒng)的調(diào)度粒度,RED-Linux從RT-Linux那兒借鑒了軟件模擬中斷管理器的機(jī)制,并且提高了時(shí)鐘中斷頻率。當(dāng)有硬件中斷到來時(shí),RED-Linux的中斷模擬程序僅僅是簡(jiǎn)單地將到來的中斷放到一個(gè)隊(duì)列中進(jìn)行排隊(duì),并不執(zhí)行真正的中斷處理程序。

另外為了解決Linux進(jìn)程在內(nèi)核態(tài)不能被搶占的問題, RED-Linux在Linux內(nèi)核的很多函數(shù)中插入了搶占點(diǎn)原語(yǔ),使得進(jìn)程在內(nèi)核態(tài)時(shí),也可以在一定程度上被搶占。通過這種方法提高了內(nèi)核的實(shí)時(shí)特性。

RED-Linux的設(shè)計(jì)目標(biāo)就是提供一個(gè)可以支持各種調(diào)度算法的通用的調(diào)度框架,該系統(tǒng)給每個(gè)任務(wù)增加了如下幾項(xiàng)屬性,并將它們作為進(jìn)程調(diào)度的依據(jù):

Priority:作業(yè)的優(yōu)先級(jí);

Start-Time:作業(yè)的開始時(shí)間;

Finish-Time:作業(yè)的結(jié)束時(shí)間;

Budget:作業(yè)在運(yùn)行期間所要使用的資源的多少;

linux 2.6 調(diào)度器的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(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、云計(jì)算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計(jì)算服務(wù)、IT信息化、AI算力租賃平臺(tái)(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220


本文名稱:深入解析Linux2.6調(diào)度器的優(yōu)化和實(shí)現(xiàn)(linux2.6調(diào)度器)
文章網(wǎng)址:http://www.dlmjj.cn/article/djogeei.html