女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]Linux的內(nèi)核開(kāi)發(fā)是一個(gè)漫長(zhǎng)的過(guò)程,自2001年11月開(kāi)發(fā)出2.5.0以來(lái),Linux內(nèi)核的發(fā)展十分迅速,作了很多重大的改進(jìn),性能也有了很大的提高。內(nèi)核調(diào)度器的改進(jìn)是最主要的進(jìn)步之

Linux的內(nèi)核開(kāi)發(fā)是一個(gè)漫長(zhǎng)的過(guò)程,自2001年11月開(kāi)發(fā)出2.5.0以來(lái),Linux內(nèi)核的發(fā)展十分迅速,作了很多重大的改進(jìn),性能也有了很大的提高。內(nèi)核調(diào)度器的改進(jìn)是最主要的進(jìn)步之一,本文對(duì)比研究了Linux2.4和Linux2.6的調(diào)度器,全面剖析了Linux2.6對(duì)調(diào)度器的改進(jìn)。

一個(gè)成功的調(diào)度器的基本要求可以概括為以下三點(diǎn):

(1)減少花在調(diào)度上的時(shí)間,以增加花在執(zhí)行程序上的時(shí)間;

(2)在多處理器系統(tǒng)上,保持處理器的負(fù)載平衡;

(3)對(duì)交互式應(yīng)用有良好的響應(yīng)速度。

但是,一個(gè)成功的調(diào)度器是很難設(shè)計(jì)好的,因?yàn)橐粋€(gè)真正投入運(yùn)行的系統(tǒng)受到很多因素的制約。相對(duì)于Linux2.6,Linux2.4的調(diào)度器有很多的不足之處,2.6版本的Linux內(nèi)核使用了新的調(diào)度器算法,稱為0(1)算法,它在高負(fù)載的情況下執(zhí)行得極其出色,并且當(dāng)有很多處理器時(shí)也可以很好地?cái)U(kuò)展。

O(n)算法,O代表order,括號(hào)里的數(shù)字代表最壞情況下算法效率的上限取決于算法涉及到的元素的個(gè)數(shù),O(1)說(shuō)明是一個(gè)常數(shù),在這種情況下,每次調(diào)度的效率是一樣的,與涉及的元素的多少?zèng)]有關(guān)系,O(n)表示算法效率取決于算法涉及元素的個(gè)數(shù)。

1 Linux2.4的調(diào)度機(jī)制

Linux2.4的調(diào)度機(jī)制可以用下面的算法來(lái)描述,示意圖如圖1所示。

 

 

所有的就緒進(jìn)程都在一個(gè)全局的就緒進(jìn)程隊(duì)列中,這個(gè)隊(duì)列沒(méi)有任何有意義的排序;時(shí)間片重算算法是在所有的進(jìn)程都用盡它們的時(shí)間片以后才重新計(jì)算。整個(gè)隊(duì)列由一個(gè)讀/寫自旋鎖(read/write spinlock)保護(hù)著,這樣多個(gè)處理器可以并行訪問(wèn),但同時(shí)提供寫操作的互斥訪問(wèn)。

由算法可以看出,Linux2.4的調(diào)度算法可以說(shuō)是一個(gè)O(n)算法,因?yàn)檎{(diào)度器挑選執(zhí)行進(jìn)程的開(kāi)銷是隨系統(tǒng)中就緒進(jìn)程 的增長(zhǎng)而線性增長(zhǎng)的。同時(shí),當(dāng)系統(tǒng)中有多個(gè)處理器時(shí),訪問(wèn)就緒進(jìn)程隊(duì)列就成了瓶頸,性能也會(huì)顯著的下降。因而有很多的缺點(diǎn):

(1)每次調(diào)度時(shí),調(diào)度器都要線性遍歷這個(gè)隊(duì)列,以找出最值得運(yùn)行的進(jìn)程執(zhí)行:當(dāng)系統(tǒng)負(fù)載很高的時(shí)候??蓤?zhí)行進(jìn)程隊(duì)列會(huì)很長(zhǎng),線性搜索的時(shí)間是線性增長(zhǎng)的,這個(gè)時(shí)間會(huì)很長(zhǎng),當(dāng)這個(gè)時(shí)間足夠長(zhǎng)的時(shí)候,有可能出現(xiàn)多個(gè)處理器選擇了同一個(gè)進(jìn)程的情況,這樣,有些處理器會(huì)發(fā)現(xiàn),他選擇的進(jìn)程已經(jīng)分配了其他的處理器,而不得不重新選擇,甚至出現(xiàn)選擇運(yùn)行進(jìn)程的時(shí)間比實(shí)際執(zhí)行進(jìn)程的時(shí)間還要長(zhǎng)的情況。

(2)當(dāng)大多數(shù)的就緒進(jìn)程的時(shí)間片都用完而又還投有重新分配時(shí)間片的時(shí)候,SMP系統(tǒng)中有些處理器處于空閑狀態(tài),這將影響SMP的效率。

(3)當(dāng)空閑的處理器開(kāi)始執(zhí)行那些時(shí)間片尚未用盡而處于等待狀態(tài)的進(jìn)程(如果它們自己的處理器忙)時(shí),會(huì)導(dǎo)致進(jìn)程開(kāi)始在處理器之間“跳躍”,實(shí)時(shí)進(jìn)程或者占用內(nèi)存大的進(jìn)程在處理器之間跳躍會(huì)嚴(yán)重影響系統(tǒng)的性能。

(4)在一個(gè)有很多處理器的系統(tǒng)中,當(dāng)進(jìn)程用完它們的時(shí)間片以后需等待重算,以得到新的時(shí)間片,從而導(dǎo)致大部分的處理器處于空閑狀態(tài);這將影響SMP的效率。

因此,不難看出當(dāng)系統(tǒng)中有大量的可執(zhí)行進(jìn)程時(shí),選擇一個(gè)進(jìn)程去執(zhí)行可能要花費(fèi)較長(zhǎng)的時(shí)間,系統(tǒng)中有多個(gè)處理器的時(shí)候,難度就更大了,這種調(diào)度,在多處理器或者系統(tǒng)負(fù)載比較高的情況下,性能受到影響。

2 Linux2.4調(diào)度器性能低下的原因

從上面的分析可以看出,造成Linux2.4調(diào)度器性能低下的主要原因如下:

(1)系統(tǒng)中調(diào)度算法屬于O(n),開(kāi)銷是線性增長(zhǎng)的;

(2)只有一個(gè)全局的就緒進(jìn)程隊(duì)列,對(duì)多處理器的伸縮性支持不好;

(3)處理器的親和性不好,容易導(dǎo)致進(jìn)程在處理器之間“跳躍”;

(4)時(shí)間片的重算循環(huán)制約了多處理器的效率。

Linux2.6做了很大的改進(jìn),它采用O(1)算法,它在高負(fù)載的情況下執(zhí)行得極其出色,并且當(dāng)有很多處理器時(shí)也可以很好地?cái)U(kuò)展,不但大大改善了對(duì)SMP的支持,同時(shí)也兼顧了單CPU或者雙CPU系統(tǒng)的要求。

3 Linux2.6調(diào)度器的改進(jìn)目標(biāo)

為了改善Linux2.4的上述不足,Linux2.6的調(diào)度器可以通過(guò)提供下列新的特性來(lái)改善調(diào)度器的性能:

(1)提供完全的O(1)調(diào)度算法,也就是說(shuō),不管系統(tǒng)中進(jìn)程數(shù)量的多少,調(diào)度器中所有的算法都必須在常數(shù)時(shí)間內(nèi)完成。

(2)應(yīng)該對(duì)SMP有良好的可伸縮性,理想情況下,每個(gè)處理器應(yīng)該有獨(dú)立的可執(zhí)行進(jìn)程隊(duì)列和鎖機(jī)制。

(3)應(yīng)該提高SMP的處理器親和性,但是同時(shí)也應(yīng)該有在負(fù)載不平衡的時(shí)候在處理器間遷移進(jìn)程的能力。

4 Linux2.6的調(diào)度機(jī)制

新的調(diào)度器都實(shí)現(xiàn)了這些目標(biāo),具體方法是?;诿總€(gè)CPU來(lái)分布時(shí)間片,并且取消了全局同步和重算循環(huán)。

每個(gè)進(jìn)程有兩個(gè)數(shù)組,活動(dòng)就緒進(jìn)程隊(duì)列數(shù)組和不活躍就緒進(jìn)程隊(duì)列數(shù)組。每個(gè)數(shù)組中有140個(gè)就緒進(jìn)程隊(duì)列(runqueue),每個(gè)隊(duì)列對(duì)應(yīng)于 140個(gè)優(yōu)先級(jí)的某一個(gè)。由一個(gè)位圖來(lái)指示哪些隊(duì)列是空的,哪些不是空的,每個(gè)隊(duì)列都是先進(jìn)先出的(FIFO)。這樣,在挑選進(jìn)程的時(shí)候,只要通過(guò) find_first_bit找到第一個(gè)不為空的隊(duì)列,并取隊(duì)首的進(jìn)程就可以了。

如果一個(gè)進(jìn)程消耗完了它的“時(shí)間片”,就進(jìn)入不活躍就緒進(jìn)程數(shù)組的相應(yīng)隊(duì)列的隊(duì)尾。當(dāng)所有的進(jìn)程都“耗盡”了它的“時(shí)間片”后,交換活躍與不活躍就緒進(jìn)程隊(duì)列數(shù)組的指針就可以了,不需要任何其他的開(kāi)銷。

這樣,不管隊(duì)列中有多少個(gè)就緒進(jìn)程,挑選就緒程的速度是一定的,所以稱為0(1)算法,該算法可描述如下,示意圖如圖2所示。

 

這個(gè)算法有很多的優(yōu)點(diǎn),簡(jiǎn)述如下:

(1)每個(gè)處理器都有獨(dú)立的就緒進(jìn)程隊(duì)列,各個(gè)處理器可以并行地運(yùn)行Scheduler程序來(lái)挑選進(jìn)程運(yùn)行,不同處理器上的進(jìn)程可以完全并行地休眠、喚醒和上下文切換。[!--empirenews.page--]

(2)進(jìn)程只映射到一個(gè)處理器的就緒進(jìn)程隊(duì)列中,不會(huì)被其他的處理器選中,因而也就不會(huì)在不同的處理器之間跳躍。

當(dāng)然,處理器有時(shí)確實(shí)需要在處理器之間遷移進(jìn)程,例如負(fù)載不平衡的時(shí)候,每個(gè)處理器每200ms檢查一次其他的處理器是不是處在負(fù)載不平衡的狀況下,就緒進(jìn)程隊(duì)列為空的處理器會(huì)每lms檢查一次。

但是這種情況并不是頻繁的發(fā)生,所以處理器的親和性基本能得到保證。

新的調(diào)度器的性能確實(shí)有很大提高,一個(gè)服務(wù)器在多個(gè)處理器間傳送大量的消息的測(cè)試結(jié)果如表1所示。

 

從表中可以看出,使用新的調(diào)度器,在同樣的時(shí)間內(nèi)系統(tǒng)能作更多的事情。

5 Linux2.6調(diào)度器的不足

新的調(diào)度算法在以下幾個(gè)方面有待改進(jìn)。

首先,盡管處理器的速度在很快的發(fā)展,但是存儲(chǔ)體系的速度發(fā)展卻是相對(duì)比較緩慢,對(duì)存儲(chǔ)器的操作時(shí)間往往形成瓶頸。

調(diào)度器給處理器分配進(jìn)程的時(shí)候應(yīng)該考慮進(jìn)程的相關(guān)性??紤]這樣的一種情況:兩個(gè)進(jìn)程頻繁的通過(guò)管道或者共享內(nèi)存通信,測(cè)試表明,它們?cè)谕粋€(gè)處理器上工作會(huì)更好,因?yàn)椴挥蒙婕暗桨褦?shù)據(jù)從一個(gè)處理器的caehe里拷貝到另一個(gè)處理器的cache里。而目前的調(diào)度器不能保證將這樣有著密切聯(lián)系的進(jìn)程分配到同一個(gè)處理器上。同樣的問(wèn)題也存在于設(shè)備的相關(guān)性。

其次,仍是進(jìn)程遷移問(wèn)題,因?yàn)樵谔幚砥鏖g遷移不同進(jìn)程的代價(jià)是不盡相同的,所以在遷移進(jìn)程的時(shí)候,應(yīng)該適當(dāng)考慮進(jìn)程的特點(diǎn)。

遷移進(jìn)程的時(shí)應(yīng)考慮進(jìn)程的大小(這里是指占有內(nèi)存資源的大小),遷移進(jìn)程的時(shí)候,并設(shè)有考慮到進(jìn)程占用內(nèi)存的大小,遷移大的進(jìn)程到其他的處理器會(huì)較嚴(yán)重的影響系統(tǒng)的性能。試想出現(xiàn)這樣情況:處理器A把它惟一的大進(jìn)程遷移到了處理器B,而處理器B上的所有進(jìn)程都是大進(jìn)程,存儲(chǔ)資源原本就緊張,這樣一來(lái),處理器A上的進(jìn)程存儲(chǔ)資源就很豐富。而處理器B則更加槽糕。目前,Linux2.6調(diào)度器在遷移進(jìn)程的時(shí)候還沒(méi)有考慮進(jìn)程的大小。

最后,當(dāng)系統(tǒng)檢測(cè)到需要遷移進(jìn)程以平衡負(fù)載的時(shí)候,是不是真的非平衡負(fù)載不可呢?當(dāng)系統(tǒng)的負(fù)載不平衡且很輕微的時(shí)候,是不一定需要平衡負(fù)載的。假設(shè)有這樣情況:有六個(gè)進(jìn)程要求同時(shí)執(zhí)行完畢,但是系統(tǒng)中只有四個(gè)處理器。這樣,總有兩個(gè)處理器有兩個(gè)進(jìn)程,而其他兩個(gè)處理器只有一個(gè)進(jìn)程。這就出現(xiàn)問(wèn)題,因?yàn)橄到y(tǒng)總是不平衡的,導(dǎo)致總有進(jìn)程在同處理器間遷移,這也就形成了跳躍。

6 對(duì)Linux2.6調(diào)度器的幾點(diǎn)改進(jìn)建議

同一個(gè)任務(wù)隊(duì)列的進(jìn)程和同一家族的進(jìn)程盡量映射到同一個(gè)處理器上,因?yàn)檫@些進(jìn)程之間需要頻繁通信的可能性是最大的;還可以動(dòng)態(tài)地調(diào)整進(jìn)程與處理器的映射,當(dāng)監(jiān)測(cè)出兩個(gè)處在不同的處理器上的進(jìn)程頻繁通信的時(shí)候,就利用每200ms檢查負(fù)載平衡的計(jì)劃將它們調(diào)整到同一個(gè)處理器上。

可以在每個(gè)進(jìn)程的就緒進(jìn)程位圖中存儲(chǔ)一些大進(jìn)程的標(biāo)志信息,跟本處理器中大進(jìn)程占的比重來(lái)遷出或者遷入大進(jìn)程。

設(shè)置一個(gè)調(diào)節(jié)負(fù)載平衡的處理器負(fù)載閾值load_threshold,在load_balance函數(shù)中檢查系統(tǒng)欲調(diào)節(jié)負(fù)載的處理器的實(shí)際負(fù)載,沒(méi)有超過(guò)事先給定的threshold,就不對(duì)這個(gè)處理器作真正意義上的負(fù)載平衡調(diào)節(jié)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉