調(diào)度程序的功能是調(diào)度任務(wù)的執(zhí)行順序,非調(diào)度實(shí)體的存在卻會(huì)導(dǎo)致調(diào)度程序的效率下降,為時(shí)限調(diào)度程序而設(shè)計(jì)的系統(tǒng)總是盡可能地減少非調(diào)度實(shí)體的數(shù)量以及這些實(shí)體所占用的CPU時(shí)間,本文介紹嵌入式系統(tǒng)設(shè)計(jì)過程中任務(wù)優(yōu)先級(jí)調(diào)度的策略。在過去的幾年里,固定優(yōu)先級(jí)調(diào)度技術(shù)的發(fā)展迅速。分時(shí)系統(tǒng)和一些實(shí)時(shí)系統(tǒng),要求所有的任務(wù)要同時(shí)運(yùn)行。它賦予每個(gè)任務(wù)一個(gè)有效的優(yōu)先級(jí),并且該優(yōu)先級(jí)在任務(wù)等候執(zhí)行的過程中逐步遞增。最后每一個(gè)
調(diào)度程序的功能是調(diào)度任務(wù)的執(zhí)行順序,非調(diào)度實(shí)體的存在卻會(huì)導(dǎo)致調(diào)度程序的效率下降,為時(shí)限調(diào)度程序而設(shè)計(jì)的系統(tǒng)總是盡可能地減少非調(diào)度實(shí)體的數(shù)量以及這些實(shí)體所占用的
CPU時(shí)間,本文介紹嵌入式系統(tǒng)設(shè)計(jì)過程中任務(wù)優(yōu)先級(jí)調(diào)度的策略。
在過去的幾年里,固定優(yōu)先級(jí)調(diào)度技術(shù)的發(fā)展迅速。分時(shí)系統(tǒng)和一些實(shí)時(shí)系統(tǒng),要求所有的任務(wù)要同時(shí)運(yùn)行。它賦予每個(gè)任務(wù)一個(gè)有效的優(yōu)先級(jí),并且該優(yōu)先級(jí)在任務(wù)等候執(zhí)行的過程中逐步遞增。最后每一個(gè)任務(wù)都將獲得一個(gè)有效的優(yōu)先級(jí),該優(yōu)先級(jí)將確保該任務(wù)至少會(huì)獲得一個(gè)短暫的CPU執(zhí)行時(shí)間。
一個(gè)高優(yōu)先級(jí)的任務(wù)可能會(huì)發(fā)現(xiàn)自己正在等待一個(gè)低優(yōu)先級(jí)的任務(wù)釋放資源。這樣將高優(yōu)先級(jí)任務(wù)的有效優(yōu)先級(jí)下降到了低優(yōu)先級(jí)任務(wù)的有效優(yōu)先級(jí)以下。這種技術(shù)可以實(shí)現(xiàn),但是對(duì)于調(diào)試卻是有害的。優(yōu)先級(jí)繼承以及優(yōu)先級(jí)限制協(xié)議就是專為解決這樣的問題而發(fā)明的。該技術(shù)推進(jìn)了低優(yōu)先級(jí)任務(wù)的優(yōu)先級(jí),與此同時(shí)保留了一定的資源確保高優(yōu)先級(jí)的任務(wù)在需要時(shí)可以使用。
實(shí)際上,絕大多數(shù)的實(shí)時(shí)操作系統(tǒng)都采用靜態(tài)優(yōu)先級(jí)調(diào)度方式,本文介紹如何通過時(shí)限調(diào)度(deadline scheduling)來保證系統(tǒng)的實(shí)時(shí)性。
速率單調(diào)分析
速率單調(diào)性分析(rate monotonic analysis)證明,如果一個(gè)固定優(yōu)先級(jí)搶占系統(tǒng)在執(zhí)行的一系列彼此獨(dú)立的周期性任務(wù),那么不存在為周期性任務(wù)靜態(tài)分配優(yōu)先級(jí)的算法,而為這樣的任務(wù)分配較短的時(shí)間來獲得較高的優(yōu)先級(jí)卻更容易找到辦法。
為此,人們研發(fā)了RMA調(diào)度,RMA的一個(gè)重要特征是可以分析系統(tǒng)的可實(shí)現(xiàn)性(feasibility)。采用RMA,結(jié)構(gòu)設(shè)計(jì)人員可以收集系統(tǒng)的情況,然后分析系統(tǒng)的可實(shí)現(xiàn)性,從而獲得“調(diào)度程序正是如此工作”或者是“固定優(yōu)先級(jí)調(diào)度程序不能進(jìn)行這樣的調(diào)度”等分析結(jié)果。
簡(jiǎn)單、通用版本的RMA使用超出
69%的CPU時(shí)間,這將構(gòu)成實(shí)際系統(tǒng)的可實(shí)現(xiàn)性方面的問題。如果結(jié)構(gòu)設(shè)計(jì)工程師退回到老式的時(shí)間線分析,RMA甚至要占用
100%的CPU時(shí)間,問題是我們采用的是單調(diào)乏味的手工仿真,而不是高等的代數(shù)運(yùn)算。
在某些系統(tǒng)中,幾乎所有的事件都是周期性的,但是大多數(shù)的系統(tǒng)中都存在大量的非周期**件,現(xiàn)實(shí)就是如此�?梢栽谝粋(gè)周期嚴(yán)格的系統(tǒng)中處理非周期**件,通常是將它們分配到一個(gè)周期性調(diào)度的時(shí)隙中,由于需要實(shí)現(xiàn)這種時(shí)隙的輪詢,所以會(huì)極大地降低系統(tǒng)的性能。系統(tǒng)設(shè)計(jì)工程師也必須決定輪詢這些非周期**件的頻度,以及處理這些事件允許的時(shí)間長(zhǎng)度。
然后,要考慮軟實(shí)時(shí)方面的問題。通過彈出一個(gè)任務(wù)的優(yōu)先級(jí)使之高于該時(shí)段指示的優(yōu)先級(jí)水平,從而在RMA中可以對(duì)重要性進(jìn)行度量。這樣就會(huì)造成那些沒有施加優(yōu)先級(jí)彈出的任務(wù)出現(xiàn)問題,這種情況正好與RMA的整體設(shè)想相反。程序?qū)⒎治隹蓪?shí)現(xiàn)性,然后確保系統(tǒng)的成功。RMA不是為不可實(shí)現(xiàn)的系統(tǒng)而設(shè)計(jì)的。
固定優(yōu)先級(jí)調(diào)度
固定優(yōu)先級(jí)調(diào)度最大的問題是對(duì)時(shí)限的要求具有易忘性,也就是說這種優(yōu)先級(jí)調(diào)度對(duì)硬實(shí)時(shí)不敏感。這就像是一個(gè)基于
定時(shí)器的交通燈,沒有任何的交通
流量傳感器。如圖1所示。上面的時(shí)間線(H)表示一個(gè)高優(yōu)先級(jí)的任務(wù),下面的時(shí)間線(L)表示一個(gè)低優(yōu)先級(jí)的任務(wù)。調(diào)度程序會(huì)首先執(zhí)行高優(yōu)先級(jí)的任務(wù),這樣就容易在該任務(wù)的時(shí)限內(nèi)完成該任務(wù)。任務(wù)H完成后,調(diào)度程序就切換到任務(wù)L,然而在任務(wù)L的時(shí)限內(nèi)可能沒有足夠的時(shí)間來完成任務(wù)L。如果調(diào)度程序?qū)@些時(shí)限的情況很了解,那么調(diào)度程序就有可能在任務(wù)H之前先運(yùn)行任務(wù)L,這樣可能能夠滿足兩個(gè)任務(wù)所有的時(shí)限要求。