推選答案Linux版本的Linux內(nèi)核,使用新的調(diào)度算法,該算法是O(1)調(diào)度算法由Ingo Molnar的開發(fā)。在高負(fù)載的情況下,這是極好的,處理器調(diào)度,具有良好的擴(kuò)展。
預(yù)先包裝的Linux 2.4版本的標(biāo)準(zhǔn)調(diào)度,使用的時(shí)間的切片重新計(jì)算算法。此算法要求已用盡所有進(jìn)程的時(shí)間片后,重新計(jì)算下一次運(yùn)行的時(shí)間片。所以每個(gè)任務(wù)調(diào)度支出不確定的,可能是因?yàn)橛?jì)算比較復(fù)雜,較大的調(diào)度延遲。特別是在多處理器系統(tǒng)中,也可能是由于調(diào)度延遲,導(dǎo)致大部分處理器空閑/>狀態(tài),影響系統(tǒng)的性能。
調(diào)度調(diào)度算法O(1),組的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)的優(yōu)先級(jí)。可以使一組中的優(yōu)先級(jí),每個(gè)優(yōu)先級(jí)都有一個(gè)對(duì)應(yīng)的任務(wù)隊(duì)列,有一個(gè)優(yōu)先級(jí)位圖,位圖中的每一個(gè)優(yōu)先級(jí)對(duì)應(yīng)的位圖,可以快速執(zhí)行最高優(yōu)先級(jí)任務(wù)。由于優(yōu)先級(jí)的數(shù)目是固定的,因此,發(fā)現(xiàn)固定的時(shí)間,未運(yùn)行的任務(wù)數(shù)的影響。
調(diào)度組的優(yōu)先級(jí)為每個(gè)處理器維護(hù)兩個(gè)有效和過(guò)期數(shù)組:數(shù)組。陣列內(nèi)的任務(wù)隊(duì)列進(jìn)程有效運(yùn)行時(shí)間切片;陣列任務(wù)隊(duì)列進(jìn)程的時(shí)間片內(nèi)到期的可被執(zhí)行。當(dāng)一個(gè)進(jìn)程的時(shí)間片用完時(shí),它移動(dòng)到過(guò)期的陣列的有源陣列,和時(shí)間片已被重新計(jì)算。當(dāng)需要重新安排這些任務(wù),只要在有效陣列開關(guān)和過(guò)期數(shù)組就好了。這種交換為O(1)算法。
更多的算法,谷歌!