專利名稱:多媒體計算機操作系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明一般性地涉及計算機操作系統(tǒng),更準確地說是涉及適合于多任務(wù)工作的那些計算機操作系統(tǒng),特別是在需要硬的、實時結(jié)果的環(huán)境,例如流行在多媒體計算機系統(tǒng)的應(yīng)用。
硬的,實時任務(wù)執(zhí)行的調(diào)度已經(jīng)是許多研究報告及論文的研究對象。在這些研究論文中,下面幾篇有廣泛代表性,它們描述了所面臨的一般問題V.Gafni,“硬實時系統(tǒng)運行的一種模式”,PP.69-74,IFAC實時程序設(shè)計國際會議,巴倫西牙,西班牙。1988年版。
Henn,“硬、實時環(huán)境下可行的處理器分配”,實時系統(tǒng)期刊(TheJournalofReal-TimeSystems)Vol.1,PP.77~93,1989年版,Kluwer研究院出版公司。
XuandParnas,“具有釋放時間,截止時間,優(yōu)先規(guī)定,以及互斥關(guān)系的調(diào)度技術(shù)”,IEEE軟件工程會刊,Vol.16,No,3,1990年3月,pp.360-369Chettoandthetto,”對分布式硬實時系統(tǒng)中調(diào)度任務(wù)的可行性測試”,APⅡ,Vol.24,1990年,PP.239-252,AFCET1990年版。
在硬,實時操作環(huán)境下,任何任務(wù)執(zhí)行的保用結(jié)果都必須通過一個固定的或“硬”的截止時間來得到,否則需要任務(wù)結(jié)果的應(yīng)用就將失敗,和/或其他等待執(zhí)行的任務(wù)就可能受到不利影響。為了解決這個問題,每當一個作為多任務(wù)系統(tǒng)活動任務(wù)的新任務(wù)被調(diào)用時,通常采用諸如上述幾篇論文中所提到的調(diào)度算法實現(xiàn)任務(wù)執(zhí)行調(diào)度。一般的作法是每當一個任務(wù)的到達時間或起動時間或調(diào)用時間發(fā)生時,將所要執(zhí)行的任務(wù)送到執(zhí)行隊列或調(diào)度表中,同時正執(zhí)行或在等待執(zhí)行機會的其他任務(wù)一起,根據(jù)每個任務(wù)的優(yōu)先級,將任務(wù)重新排隊。這種方法相當于實施一個“N”階排序程序,其中所需的最壞情況的排序重復(fù)數(shù)取決于執(zhí)行隊列中當前的任務(wù)數(shù)。
一般人們所熟悉和推薦的方法是在硬的、實時計算機系統(tǒng)中,任務(wù)調(diào)度最好根據(jù)各個任務(wù)的相對完成截止時間,通過對當前活動任務(wù)排隊來進行,具有最早完成截止時間的就具有最高優(yōu)先級。(參見IIenn,Xu等或Chetto等前面所引用過的論文)。然而,已經(jīng)證明,完成這樣一種方法的實際系統(tǒng)的建立是非常困難的?,F(xiàn)執(zhí)行任務(wù)中斷的可能性以及在任務(wù)轉(zhuǎn)換和執(zhí)行調(diào)度表重新排序時的額外開銷(overhead)的處理器資源的消耗都可能變成起抑制作用的部分。如Xu等人提到的那樣,對于有些任務(wù)或部分任務(wù)可能是可剝奪的而有些任務(wù)是不可剝奪的這類更普遍的問題,存在許多未公布的解決方法。Xu等人提出的解決方法是采用“最早截止時間優(yōu)先”的策略,但仍然存在很復(fù)雜的分支和受限的重新排序過程,不適用于實時按優(yōu)先級重排隊。
在硬的實時環(huán)境下,當現(xiàn)執(zhí)行任務(wù)的剝奪(中斷)被批準時,已按優(yōu)先級排序的任務(wù)的實時重新排隊必須以有效的方式處理,否則,應(yīng)付臨界執(zhí)行截止時間的能力就會由于在調(diào)度方法中調(diào)用的額外開銷處理而喪失。Gafni(西班牙)提出了一種叫做“ReactiveSystemsExecutive”(RSEX)的方法。這種方法采用最早截止時間準則在單處理機系統(tǒng)上進行優(yōu)先級排隊,但必須保持對所經(jīng)過時間的跟蹤,修改每個等待執(zhí)行任務(wù)的剩余時間(P.72)并且還必須根據(jù)增加新的調(diào)用任務(wù)來修改任務(wù)表。這種方法改變優(yōu)先級順序并會導(dǎo)致已被中斷的任務(wù)由于被新調(diào)用的、有較高優(yōu)先級的任務(wù)占去了優(yōu)先權(quán)而被中止。在動態(tài)改變?nèi)蝿?wù)組合時(例如在多媒體應(yīng)用中所遇到的),這種作法就會導(dǎo)致不必要的處理,而且,或許還會在新調(diào)用的任務(wù)中有最高優(yōu)先級,而它的執(zhí)行周期要用掉的剩余時間多到使調(diào)度表中的其它任務(wù)不能完成時,導(dǎo)致完成截止時間的實際丟失。換句話說,具有最早所需的完成截止時間的中斷任務(wù)可能獲得執(zhí)行的優(yōu)先級,并用去很多剩余時間,以致使另一個任務(wù),例如在中斷發(fā)生前正在運行的那個任務(wù),在高優(yōu)先級中斷任務(wù)已經(jīng)運行完成以后,不能留下足夠的時間來完成調(diào)度。
在多媒體環(huán)境下,硬的實時任務(wù)往往周期性地重復(fù)出現(xiàn)。而且,由于應(yīng)用或任務(wù)需要隨機組合,任務(wù)的到達時間也將是周期性地同時發(fā)生。這樣,根據(jù)規(guī)律,對系統(tǒng)中每個任務(wù)活動的調(diào)度將在任何任務(wù)開始執(zhí)行之前完成。由于周期性重復(fù)的特性以及任務(wù)調(diào)度活動的集中,對系統(tǒng)調(diào)度給定任務(wù)組的能力產(chǎn)生很大影響。如上述現(xiàn)有技術(shù)所述,如果隊列中有另一個任務(wù)具有更高優(yōu)先級的話,調(diào)度活動可能導(dǎo)致任何現(xiàn)運行的當前任務(wù)的阻塞執(zhí)行或者導(dǎo)致增加到任務(wù)交換時間的阻塞執(zhí)行。計算機處理器資源,即實際任務(wù)執(zhí)行(不是任務(wù)調(diào)度)可得到的處理器周期數(shù),也由此受到不良影響。在硬的實時系統(tǒng)中,每個任務(wù)必須具有足夠的可利用處理器周期資源剩余,以便執(zhí)行并運行,完成它的每個重復(fù)執(zhí)行周期,否則,請求任務(wù)的應(yīng)用就將發(fā)生故障。另外,具有最短執(zhí)行迭代或循環(huán)周期的任務(wù)變成用于確定一給定任務(wù)組是否能夠全部調(diào)度的一個限制因素。
當開始調(diào)度隊列為空時,所檢測的最壞情況“調(diào)度額外開銷”,作為可得到的處理器資源的一部分,由常用調(diào)度算法產(chǎn)生,這種高度算法在任務(wù)的到達時間或調(diào)用時間把任務(wù)調(diào)度到優(yōu)先級隊列中,等式1給出最壞情況調(diào)度額外開銷等式1Overheadconv=Σi=1Ni·CschedTs=(N)(N+1)Csched2Ts]]>式中Csched=執(zhí)行調(diào)度代碼的一個迭代的時間N=所要調(diào)度的任務(wù)數(shù)Ts=所調(diào)度任務(wù)組中的最短執(zhí)行周期正如從等式1中可以看到的那樣,由周期性重復(fù)任務(wù)的隨機組合造成的調(diào)度額外開銷與系統(tǒng)中現(xiàn)活動任務(wù)的最短執(zhí)行周期成反比。與具有較短執(zhí)行周期的任務(wù)不同,這對有長執(zhí)行周期的任務(wù)是不公正的,這正是本發(fā)明所解決的一個問題。
本發(fā)明的目的是提供一種用于多任務(wù)計算機環(huán)境的改進的操作系統(tǒng),采用改進的任務(wù)調(diào)度系統(tǒng)和方法,減少任務(wù)調(diào)度處理器周期額外開銷需用量。
本發(fā)明的另一個目的是提供多媒體計算機系統(tǒng)操作方法和設(shè)備,適用于具有可變執(zhí)行周期的周期性重復(fù)任務(wù)隨機組合的調(diào)度。
本發(fā)明涉及前述內(nèi)容還有其它一些沒有具體列舉的目的,建立包括多任務(wù)系統(tǒng)中所有調(diào)用的當前活動任務(wù)的執(zhí)行隊列或表,而不管其當前狀態(tài)(即,在等待起動時間或現(xiàn)執(zhí)行狀態(tài))。任務(wù)在隊列中的順序由優(yōu)先級確定。任務(wù)的優(yōu)先級又是由它們相對的所需執(zhí)行截止時間在任務(wù)完成時間確定的。這種按優(yōu)先級排隊法與先有技術(shù)的關(guān)鍵的差別在于它不是單獨根據(jù)任務(wù)起動時間或結(jié)束時間僅在任務(wù)的到達時間進行優(yōu)先級排隊的調(diào)度表。另外在多任務(wù)系統(tǒng)中,每當一個任務(wù)執(zhí)行完成,或者當一個新任務(wù)加到或撤離現(xiàn)活動任務(wù)的隊列時,就要根據(jù)任務(wù)的相對優(yōu)先級來檢查和重新排列所要執(zhí)行任務(wù)的調(diào)度表的順序??梢员砻?,本發(fā)明的調(diào)度過程和技術(shù)所產(chǎn)生的處理器額外開銷的減少得到50~100%的改善(或更多),這取決于具有寬范圍變化的重復(fù)迭代頻率的任務(wù)隨機發(fā)生選擇的恰當組合。這種改進在多媒體應(yīng)用中是關(guān)鍵性的,多媒體應(yīng)用中,較大量的硬的,實時的,隨結(jié)果而定的用戶應(yīng)用可能同時運行。機器人應(yīng)用也有類似的要求,運動以及跟蹤系統(tǒng)反饋信號的復(fù)雜性必須進行管理,有類似要求的還有各種其他應(yīng)用環(huán)境,都必須運行許多要提供硬的、實時傳送方式結(jié)果的各不相同的任務(wù),以達到用戶應(yīng)用的目標。
下面將根據(jù)附圖所示的最佳實施例,對本發(fā)明作進一步詳細說明和描述,在附圖中。
圖1表示計算機操作系統(tǒng)中作為控制代碼及數(shù)據(jù)功能塊的單元的排列以及數(shù)據(jù)流和控制流之間的相互關(guān)系。
圖2由圖2A圖2B組成,表示了調(diào)度技術(shù)的邏輯過程的流程圖,這部分涉及將已調(diào)用任務(wù)加到包含現(xiàn)備用的已調(diào)用任務(wù)的備用表或隊列中。
圖3由圖3A和圖3B組成,是圖2所開始的過程的繼續(xù),但描述的是在建立任務(wù)執(zhí)行優(yōu)先級隊列時采用的過程步驟。
圖4包括圖4A和4B,如圖4的布置簡圖所示。
圖4A是圖3任務(wù)執(zhí)行隊列進程的繼續(xù),詳細說明了對所要執(zhí)行任務(wù)隊列或調(diào)度表的掃描。
圖4B說明任務(wù)執(zhí)行隊列管理進程這部分,一給定任務(wù)或具有相同完成截止時間的任務(wù)組可能被啟動執(zhí)行。
圖5為中斷處理進程,說明它對備用任務(wù)表的管理以及同活動任務(wù)執(zhí)行隊列相互配合的影響。
圖6由圖6A和圖6B組成,說明了在多中斷系統(tǒng)中,恰在調(diào)用該任務(wù)或任務(wù)組之前調(diào)整(如果需要的話)任務(wù)執(zhí)行隊列中的登記項的進程流程。
圖7按照本發(fā)明的最佳實施例,以簡圖形式說明對循環(huán)任務(wù),根據(jù)它們執(zhí)行結(jié)束所需截止時間進行調(diào)度的情況。
首先,描述在多媒體應(yīng)用計算機系統(tǒng)范圍內(nèi),本發(fā)明的最佳實施例。這樣一種系統(tǒng)通常包括用來運行各種“多媒體”類型的用戶應(yīng)用的主機(例如個人計算機)、用來完成特定的多媒體應(yīng)用支持任務(wù)的數(shù)字信號處理器以及數(shù)據(jù)和檢測制光換器,例如訪問和控制數(shù)字信號處理機和主機之間的相互聯(lián)系的DMA。這樣一種系統(tǒng)在我的申請?zhí)枮?71761534的中共同未決專利中有詳細的表示和說明。在U.S專利4,794,517可以看到本發(fā)明用做操作系統(tǒng)的信號處理機的例子。
簡要地說,本發(fā)明的操作系統(tǒng)在U.S專利4,794,517中所示的數(shù)字信號處理機上得以實現(xiàn),它是一種流水線信號處理機,具有一個帶分離指令,數(shù)據(jù)存貯器及有關(guān)總線的實際的Harvard結(jié)構(gòu),一個運算器(ALV),一個乘法器/累加器,及適用于快速實現(xiàn)重復(fù)信號采樣處理算法(諸如在多媒體環(huán)境下的一些應(yīng)用中所流行的)的其它部件。上文所引用的專利在這里只是作為參考提出,作為本操作系統(tǒng)可以插入使用的一種適用的信號處理機的體系結(jié)構(gòu)說明。很快就會明顯地看到,本發(fā)明并不限于數(shù)字信號處理機范圍,而是可以同樣適用于大型計算機系統(tǒng)或者中型計算機系統(tǒng),這些系統(tǒng)必須完成多任務(wù)的和/或硬的、實時算法周期重復(fù)任務(wù)的多動態(tài)可變組合。
如上面簡要描述,用于實時操作系統(tǒng)的典型調(diào)度方法在任務(wù)到達或者請求開始時完成任務(wù)執(zhí)行調(diào)度。在這種系統(tǒng)中,當任務(wù)開始或到達時,根據(jù)該任務(wù)的優(yōu)先級與系統(tǒng)中其它現(xiàn)運行任務(wù)或等待轉(zhuǎn)入運行的任務(wù)相比較,將它放入執(zhí)行隊列中。這就需要執(zhí)行N階排序程序,迭代次數(shù)則取決于隊列中現(xiàn)有任務(wù)數(shù)。由于在多媒體環(huán)境中特有的任務(wù)調(diào)用的周期性或重復(fù)性,任何隨機的一批任務(wù)的任務(wù)到達或調(diào)用時間也會并將周期性地同時發(fā)生。因此,根據(jù)規(guī)律的重復(fù)性,對駐留在系統(tǒng)中的每個任務(wù)的調(diào)度必須在任何任務(wù)開始執(zhí)行前完成。調(diào)度活動這樣周期重復(fù)集中就會嚴重影響到處理系統(tǒng)調(diào)度給定的批任務(wù)或執(zhí)行批任務(wù)的能力。在硬的,實時系統(tǒng)中,必須保證每個任務(wù)在和它們的重復(fù)周期相同的執(zhí)行周期中的每一個周期結(jié)束之前都有足夠的處理器周期資源以便執(zhí)行完成。具有最短執(zhí)行周期的任務(wù)就變成確定一給定批任務(wù)能否全部有效地調(diào)度的限制因素。
對已描述的慣用的調(diào)度過程來說,任務(wù)調(diào)度在它們的到達或調(diào)用時間進行是造成為完成任務(wù)必需的處理器“額外開銷”或處理器資源的要求量的原因。這一點由上面的等式1得以證明。
在本發(fā)明中,調(diào)度過程是在任務(wù)執(zhí)行結(jié)束或完成時間(而不是任務(wù)到達成開始時間)完成任務(wù)調(diào)度。任務(wù)完成時間決不會完全相同(而任務(wù)到達或開始時間就有可能),因為在任何給定時刻處理器中實際執(zhí)行的任務(wù)只有一個,因此調(diào)度額外開銷周期性集中的問題由本發(fā)明得以解決。重要的是,對任何給定任務(wù)的調(diào)度不需要在其它某個任務(wù)可能執(zhí)行之前完成。例如,本發(fā)明中,如果一個優(yōu)先級較高的任務(wù)到達或開始時,一個優(yōu)先級較低的任務(wù)正在調(diào)度,較低優(yōu)先級任務(wù)(任務(wù)B)的調(diào)度可以暫時掛起,而較高優(yōu)先級任務(wù)A被實際調(diào)用,運行到完成,任務(wù)A完成之后,任務(wù)A在它規(guī)律性的重復(fù)或周期性循環(huán)間隔內(nèi)重新排隊,并且任務(wù)B的調(diào)度被取回,或任務(wù)B將完成,如果它是要運行的駐留和就緒的最高優(yōu)先級任務(wù)的話。
在本發(fā)明中,由于調(diào)度任務(wù)是在任務(wù)執(zhí)行實時時間而不是任務(wù)開始或到達時間完成,常用的任務(wù)執(zhí)行隊列用一個隊列或表來代替,它包括在所有時間的全部任務(wù),不管它們當前的活動狀態(tài)如何。在本發(fā)明最佳具體實施中,這個表叫做“Schedule”(“調(diào)度表”)。調(diào)度表相當于一個排序的,按優(yōu)先級排隊的表,對應(yīng)著已經(jīng)被調(diào)用執(zhí)行的所有任務(wù),不管它們的執(zhí)行狀態(tài)是正在執(zhí)行或是等待執(zhí)行狀態(tài)。當任務(wù)運行完成并對它們下一個有規(guī)律重復(fù)的執(zhí)行時間重新調(diào)度或當有任務(wù)被加到系統(tǒng)中或刪去時,調(diào)度表就動態(tài)地重新排隊和調(diào)整。
用程序設(shè)計術(shù)語來說,調(diào)度表是一個雙鏈表,表中一個登記項有一指針指向下一條登記項地址,在那里存有下一個優(yōu)先級順序的登記項;第二條登記項有指針返回到第一條登記項并向前指向下一條優(yōu)先級登記項,等等。本發(fā)明中的調(diào)度表的登記項不是任務(wù)本身,而是“位置保持器”,為了對系統(tǒng)中所有任務(wù)調(diào)用各種固定頻率的循環(huán)任務(wù)處理碼,它們可以共有相同的循環(huán)任務(wù)重復(fù)周期或頻率。本發(fā)明中,這些位置保持器叫做“幀管理者”(framemanager)。幀管理者是調(diào)度表或隊列中雙鏈表的登記項,對應(yīng)著與要執(zhí)行的任務(wù)有關(guān)的排好序的優(yōu)先級表。
幀管理者在隊列中或調(diào)度表中的次序是根據(jù)幀管理者被調(diào)用時的循環(huán)間隔上結(jié)束時間即任務(wù)完成截止時間確定的。最早的任務(wù)完成截止時間或結(jié)束時間是第一優(yōu)先級登記項,其它幀管理者根據(jù)它們的結(jié)束時間按優(yōu)先級排序連在后面,次最早結(jié)束時間是第二登記項,等等。一旦有二個或二個以上的幀管理者具有相同的結(jié)束時間(正如在重復(fù)周期形成相互關(guān)聯(lián)處可能出現(xiàn)的那樣),具有相等任務(wù)截止完成時間的幀管理者可以按其開始時間在雙鏈表作進一步排序或按先級排隊,具有最早開始時間任務(wù)的幀管理者最優(yōu)先。在雙鏈表中,選擇作為調(diào)度表中第一幀管理者登記項的是個稱作“調(diào)度表頂”的虛設(shè)的幀管理者,它是指向駐留著現(xiàn)最高優(yōu)先級幀管理者的內(nèi)存首地址的指針的位置保持器。雙鏈表中最后的幀管理者登記項總是分配給非實時幀管理者,它被用來調(diào)用非實時任務(wù),例如內(nèi)務(wù)處理任務(wù),它可以駐留在系統(tǒng)中,但只有在所有的硬、實時任務(wù)都已完成之后才執(zhí)行它。
在本具體實施例中,還有一個備用幀管理者表或備用任務(wù)隊列。它包括所有備用幀管理者(即對當前時間已經(jīng)完成其執(zhí)行,正等待其下一次循環(huán)開始時間的那些幀管理者)的排序表。備用表表目對應(yīng)于各種中斷源的優(yōu)先級被進一步排列,中斷源的每個優(yōu)先級都有一個單獨的表。幀管理者備用表也是個雙鏈表,包含幀管理者指示項,等待其下一個執(zhí)行開始或調(diào)用時間到來。本發(fā)明中的中斷處理器是獨立的,并保持對備用表中對應(yīng)于中斷級的幀管理者的跟蹤,給定任務(wù)或幀管理者駐留在備用表中。備用表中的幀管理者按它們的開始時間而不是任務(wù)完成或結(jié)束時間來進行排序或排隊,最早開始的為優(yōu)先。當二個或二個以上幀管理者碰巧具有相同開始時間時,只在備用幀管理者表中保存那個有最早結(jié)束時間的幀管理者。
對幀管理者的任務(wù)執(zhí)行隊列,備用幀管理者表成隊列以及用到的控制碼和控制數(shù)據(jù)各部分的更為詳盡的說明都將參照圖1作進一步描述。不過,為了能理解本發(fā)明操作系統(tǒng)根據(jù)任務(wù)完成截止時間對執(zhí)行任務(wù)的隊列進行優(yōu)先級排隊的優(yōu)越性,下面再作進一步解釋。
對本發(fā)明,調(diào)度額外開銷對可得到的處理器資源的加載由下等式2給出。
等式2OverhcadIspos=Σi=1NNioCschedTi]]>式中Csched=執(zhí)行調(diào)度碼一個循環(huán)的時間N=所要調(diào)度的任務(wù)數(shù)Ti=任務(wù)i的執(zhí)行周期本發(fā)明中,執(zhí)行隊列中所有任務(wù)的調(diào)度,不管該任務(wù)的活動現(xiàn)狀態(tài)如何,只產(chǎn)生最低限度的微小損失??梢宰⒁獾降仁?的分子上的N表明在最壞情況下,每個任務(wù)都將相對系統(tǒng)中所有其它任務(wù)來分級。然而優(yōu)點則是Ts不再象等式1中的那樣作為公共分母。為了能達到將兩種調(diào)度過程的額外開銷負載作比較的目的,等式1可以用頻率域表示,如等式3所示。
等式3Overheadconv=Σi=1Ni·CschedFmax=(N)(N+1)CschedFmax2]]>式中Fm a x = 1/(T5) =具有最短執(zhí)行周期任務(wù)的調(diào)度頻率此外,等式2也可用頻率域表示,如下面的等式4A所示等式4AOverheadISPOS=Σi=1Ni·CschedFi=N·CschedΣi=1NF]]>式中Fi= 1/(T5) 任務(wù)i的調(diào)度頻率每個給定批任務(wù)在頻域的調(diào)度頻率的平均值由下面的等式4B給出等式4BFavg=1NΣi=1NFi]]>等式4B也可以用任務(wù)調(diào)度頻率的均值寫成如等式5所示。
等式5OverheadISPOS=N·N·Csched Favg式中Favg=任務(wù)調(diào)度頻率的均值最后,若假定操作系統(tǒng)執(zhí)行調(diào)度過程的一個循環(huán)所需的時間Csched,在給定的任務(wù)數(shù)相同時,對任務(wù)調(diào)度算法都近似相等,比較就可以簡化。這個假設(shè)是合理的,因為所有的算法基本都需要某種排序循環(huán)以便將任務(wù)送入執(zhí)行隊列中。給出這個假設(shè)后,本操作系統(tǒng)調(diào)度技術(shù)的效率是按下面等式6所示與慣用的調(diào)度技術(shù)來比較的等式6E F FI S P O S=( N ) ( N + 1 ) Cs c h e dFm a x2N · N ·Cs c h e dFa v g]]>等式6可以簡化成等式7如下所示等式7E F FI S P O S=( N + 1 )2 NFm a xFa v g]]>等式7清楚地表明本發(fā)明操作系統(tǒng)的調(diào)度技術(shù)的損失和優(yōu)點。因子N+1/2N是損失。整個有效范圍的分布從1(當N=1時)到最低1/2(當N=∞)。最高頻率與平均頻率之比給出本技術(shù)調(diào)度的優(yōu)點之度量,因為這個因子總是大于1的,除非當最高頻率等于平均頻率時,它才精確地等于1??傊?,當任務(wù)循環(huán)的最高頻率大于或等于任務(wù)循環(huán)的平均頻率的二倍左右時,本調(diào)度過程比慣用的調(diào)度算法要有效的多。
在多媒體應(yīng)用系統(tǒng)中,循環(huán)任務(wù)的最高頻率遠遠大于循環(huán)任務(wù)平均頻率的概率是相當高的。在諸如本發(fā)明這樣的多任務(wù)操作系統(tǒng)中,涉及到在幾種不同的數(shù)據(jù)采樣率下的任務(wù)運行,每個都有專門的要求,很可能每個任務(wù)的最佳調(diào)度頻率完全不同。例如,典型的通訊調(diào)制解調(diào)器任務(wù)對它調(diào)用的子任務(wù)需要4種不同的調(diào)度頻率。換句話說,一種任務(wù)必須以16.216Hz頻率執(zhí)行,另一種是204.255Hz,另一種是600Hz,還有一種是1378.125Hz。對這個的調(diào)制解調(diào)器來說,N=4,最高頻率等于1378.125Hz,平均頻率等于549.649Hz,調(diào)度過程的效率按等式7計算等于1.567。
包括DTMF按鈕式譯碼,頻率合成應(yīng)用或用于語音響應(yīng)等任務(wù)的電話應(yīng)答需要六個以不同循環(huán)頻率運行的不同子任務(wù),這里N=6,F(xiàn)max=1378.125Hz,F(xiàn)avg=534.783Hz,從等式7計算出效率等于1.503。盡管在所給的二個例子中,任務(wù)的最高頻率和平均調(diào)度頻率之偏差都沒有達到極端寬,按照調(diào)度過程額外開銷的減少來算,調(diào)度改善還在50%以上。在頻率和任務(wù)適當組合時,甚至會有超過100%的更大改善。例如,有一批任務(wù),假定4個任務(wù)的調(diào)度頻率為15Hz,40Hz,100Hz,和1378.125Hz,得到N=4,F(xiàn)max=1378.125Hz,F(xiàn)avg=383.281Hz,效率為2.247。這表示調(diào)度過程的效率改善在124%以上,必然減少了系統(tǒng)中調(diào)度任務(wù)時的處理器資源的額外開銷。本發(fā)明的另一個優(yōu)點是該調(diào)度技術(shù)減少了任務(wù)阻塞時間和任務(wù)交換時間,因為調(diào)度過程不是在到達時間完成,就不會變成任務(wù)阻塞或交換的等待時間。
現(xiàn)在再回過來更詳細地描述前文的最佳實施例,可以注意到任務(wù)本身并不被調(diào)度或重新排隊。而是在隊列中插入稱作“幀管理者”的位置保持器,它對應(yīng)著用來調(diào)用公共任務(wù)處理代碼的標志符。事實上,幀管理者本身是一個特殊的任務(wù)并執(zhí)行一組共用的、周期性循環(huán)的任務(wù),其循環(huán)周期與任務(wù)和幀管理者相關(guān)聯(lián)的任務(wù)的循環(huán)周期相一致。幀管理者執(zhí)行分配給它的、具有相同任務(wù)完成截止時間的所有任務(wù),并當它完成所有分配給它的任務(wù)之后就返回操作系統(tǒng),以在隊列中重新排隊。
操作系統(tǒng)提供系統(tǒng)中所有幀管理者共享的幀管理者代碼。每個幀管理者需要它自己的數(shù)據(jù)結(jié)構(gòu),叫做幀控制塊(FCB),它在幀管理者被操作系統(tǒng)激活之前要先預(yù)置初始值。幀控制塊管理著幀管理者的執(zhí)行。具有共同執(zhí)行周期的任務(wù)被組合在一起并聯(lián)合在一起連到共同的幀管理者,這是它們在執(zhí)行隊列中的位置保持器。這樣,在任何給定時間,系統(tǒng)隊列中駐留的每個幀管理者都有一個幀控制塊。對于上面所給的例子中有四個或六個不同的調(diào)度頻率;就會有四個或六個不同的幀管理者連同它們的幀控制塊。
幀控制塊由主系統(tǒng)建立并被輸?shù)綌?shù)字信號處理器中作為控制數(shù)據(jù)存貯起來、幀控制塊是個包含本發(fā)明操作系統(tǒng)所需要的所有信息的數(shù)據(jù)結(jié)構(gòu),以便它調(diào)度幀管理者進入執(zhí)行隊列或表中。它還包括指定存貯區(qū)或地址,當任務(wù)轉(zhuǎn)換被執(zhí)行時,數(shù)字處理器中的處理器寄存器就保存在此處。FCB還包括為任何與幀管理有關(guān)的處理任務(wù)對數(shù)字信號處理器存貯區(qū)域存貯器的地址標記以及具有相同任務(wù)完成截止周期或時間的子任務(wù)的幀管理者鏈表的開始的識別啟動地址。典型幀控制塊在幀管理者被激活之前必須按下面表1進行初始化。
表1幀控制塊名稱偏移量要求的初始值PIFM'0000'X0NIFM'0002'X0ALARM'0004'X0LNTLINK'0006'X指向中斷處理器的數(shù)據(jù)結(jié)構(gòu)的指針PSFM'0008'XNSFM'000A'XETH'000C'XST'000E'X0INTFLG'0010'X0FRAME'0012'X幀的大小FRAMEH'0014'X幀時間的高16位OSRTN'0016'X標號SCHEDLER的指令地址FIRSTTCB'0018'X0
ISADDR'001A'X標號FM的指令地址SILR'001C'X0SRO'001E'X0SR1'0020'X0SR2'0022'X0SR3'0024'X0SR4'0026'X0SR5'0028'X0SR6'002A'X0SR7'002C'X0SR2L'002E'X0SR6L'0030'X0SRMH'0032'X0SRML'0034'X0SMCRH'0036'X0SPSRH'0038'X0SRCDB'003A'X0PRESENTH'003C'X0SCYCLCNT'003E'X0SDSPTR'0040'X0SYSTMP0'0042'X0
SYSTMP1'0044'X0SYSTMP2'0046'X0SYSTMP3'0048'X0SYSTMP4'004A'X0FCB的建立是由主處理器連同DSP完成的,這并不特別地做為本發(fā)明的一部分。因此表中所示只是幀控制塊的最終結(jié)構(gòu)和存儲信息。表1中,頭二條登記項是指向備用幀管理者表的開頭與結(jié)尾的指針,備用表同各個中斷級一起作為控制數(shù)據(jù)保存起來。第三條登記項是報警或啟動時間指示器,第四項登記項是中斷鏈指針,指向與給定FCB有關(guān)的中斷處理器數(shù)據(jù)結(jié)構(gòu)。第五項和第六項登記項是指向幀管理者調(diào)度表或任務(wù)執(zhí)行優(yōu)先級隊列的前地址和未地址的指針登記項。
登記項第15項至38項是存貯器地址,當發(fā)生幀管理剝奪時,數(shù)據(jù)信號處理器當前工作狀態(tài)現(xiàn)場就保存在這里。
在激活一給定幀管理者之前必須由主機預(yù)置的數(shù)據(jù),由主機設(shè)置到幀控制塊,再輸?shù)綌?shù)據(jù)信號處理器。
根據(jù)表1的名稱,下面對數(shù)字信號處理器一給定幀管理者激活之前,必須預(yù)置的數(shù)字作更詳細地描述。
INTLINK-該登記項包含一指針,即存貯器地址,駐留著與一特定用戶有關(guān)聯(lián)的合適的中斷處理數(shù)據(jù)結(jié)構(gòu),用戶硬件(即,調(diào)制解調(diào)器,激光唱機,視頻顯示器等)與一給定的幀管理者相關(guān)聯(lián)。
FRAME-保持幀尺寸,為數(shù)字采樣時間數(shù),這是由任務(wù)周期或循環(huán)任務(wù)間隔所覆蓋的時間。時間幀以“采樣時間”度量,由有關(guān)聯(lián)的用戶硬件以“采樣時間”對數(shù)字信號處理器進行采樣。例如,用戶硬件的給定采樣頻率和采樣時間,每經(jīng)過N倍的采樣時間,幀尺寸為N的任務(wù)就執(zhí)行一次。
FRAMEH-是表示幀管理者的實際幀時間的16位的數(shù),其中的16個位是根據(jù)每個幀時間的中斷數(shù)目乘以中斷源的中斷周期計算所得數(shù)的高16位。
ISADDR-該登記表保持一個指向數(shù)字信號處理器存貯器中幀管理者數(shù)據(jù)結(jié)構(gòu)的指針。
OSRTH-該登記表保持幀管理者指令的返回地址。
FIRSTTCB-該登記表是所要執(zhí)行任務(wù)的幀管理者鏈表的始地址,該任務(wù)由那個幀管理者在臨近或在其規(guī)定的截止時間發(fā)生之前,按其循環(huán)頻率執(zhí)行。該單元通常用來指示分配給幀管理者的第一個任務(wù)的任務(wù)控制塊(TCB)。然而,為了允許幀管理者在沒有任何任務(wù)連到它時也能啟動,該表目可以預(yù)置為0,一旦這個表目保持為0,幀管理者就只能返回進行重新排隊。FCB中的其它數(shù)據(jù)單元用來寄存調(diào)度和任務(wù)轉(zhuǎn)換,下面作簡要描述。
PIFM是前一個備用幀管理者。這是一個指向備用幀管理者表中前一個幀管理者的后向指針。
NIFM-下一個備用幀管理者。這是一個指向備用幀管理者表中下一個幀管理者的前向指針。
Alarm-保持幀管理起動時間,它相對于由幀管理者中斷處理代碼所保存的采樣時鐘度量。中斷處理代碼利用報警(Alarm)存貯內(nèi)容和SCLOCK來確定幀管理者起動時間何時到達。
PSFM-前一個被調(diào)度的幀管理者。這是一個指向幀管理者執(zhí)行隊列或調(diào)度表中前位幀管理者的后向指針。
NSFM-下一個被調(diào)度的幀管理者是指向按優(yōu)先級排隊的幀管理者執(zhí)行隊列或調(diào)度表中下一個幀管理者的前向指針。
ETH-結(jié)束時間高位。該登記項保持幀管理者現(xiàn)結(jié)束時間的高16位。
ST-這是開始時間。它保持幀管理者當前所指定的開始時間。開始時間以幀管理者中斷處理代碼所保持的采樣時鐘為基準來度量并用來確定是否已經(jīng)到達“就緒運行”狀態(tài)。
INTFLG-中斷標記。它用來指示幀管理者是被中斷還是執(zhí)行狀態(tài),或者指示它是處于閑置或等待開始時間的等待狀態(tài)。一旦幀管理者到達它的執(zhí)行時間開始,中斷標志為0時,幀管理者是閑置的并且執(zhí)行將從幀管理者代碼的第一項開始。如果中斷標記位等于1,幀管理者先被中斷而后必須保存機器現(xiàn)場,執(zhí)行從中斷發(fā)生處重新開始。
登記項SILR到SRCBD是每當幀管理者在執(zhí)行中被中斷或者由更高優(yōu)先級幀管理者開始執(zhí)行而被剝奪時,用來保存機器狀態(tài)和內(nèi)容的單元。
PRESENTH-現(xiàn)行高位包含現(xiàn)任務(wù)的剩余分配周期記數(shù)的高16位。
SCYCLCNT-保存周期記數(shù)。它用來保持幀管理者被中斷和/或被更高優(yōu)先級幀管理者剝奪時周期記數(shù)寄存器的內(nèi)容。周期記數(shù)寄存器包含現(xiàn)任務(wù)的剩余執(zhí)行周期記數(shù)的低16位。
SDSPTR-系統(tǒng)數(shù)據(jù)存儲指針用來保存數(shù)據(jù)存貯區(qū)地址指針(當幀管理者被剝奪時)并保持指向現(xiàn)執(zhí)行任務(wù)的指針。
SYSTMP0到SYSTMP4是為任務(wù)保留的,用作絕對數(shù)據(jù)中間存貯區(qū)的數(shù)據(jù)單元。放在這些單元的數(shù)據(jù)只在任務(wù)現(xiàn)執(zhí)行期間有效。任務(wù)不能設(shè)想放在這些單元的數(shù)據(jù)從一個執(zhí)行周期到下一個周期是有效的。
下面簡要介紹中斷處理數(shù)據(jù)結(jié)構(gòu)。從表2看出,中斷處理數(shù)據(jù)結(jié)構(gòu)包括軟件時鐘,備用幀管理表開始和結(jié)束表登記項及調(diào)度所需要的所有中斷特定數(shù)據(jù)。
表2中斷處理器數(shù)據(jù)結(jié)構(gòu)名稱偏移量說明LIFM'0000'X指向最未個后備幀管理者的指針FIFM'0002'X指向第一個后備幀管理者的指針CLOCKH'0004'X實時硬件時鐘的高16位SCLOCK'0006'X采樣時鐘
IPERIODH'0008'X中斷周期的高16位IPERIODL'000A'X中斷周期的低16位INTFREQ'000C'X中斷頻率SPERINT'000E'X每個中斷周期的采樣時間數(shù)中斷處理數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)同樣由主處理器置初始值。它不屬于本發(fā)明的特殊部分,但為了理解本發(fā)明操作系統(tǒng)的工作情況,在這仍予以介紹。
LIFM-最末個備用幀管理者。這是指向備用幀管理者雙鏈表結(jié)尾的一個指針或地址。當雙鏈表為空時,它指向本身。
FIFM-第一個備用幀管理者。這是指向備用幀管理者雙鏈表的始地址的一個指針。當雙鏈表為空時,F(xiàn)IFM指向LIFM。
CLDCKH-時鐘高位。它保持最近中斷的實時,當與給定任務(wù)相關(guān)聯(lián)的數(shù)字信號處理機收到一批采樣進行處理時,就根據(jù)記錄當前時間的時間記錄寄存器對之修改。
SCLOCK-采樣時鐘。它保持所測試的相對采樣時間作為在每個中斷周期為執(zhí)行用戶任務(wù)硬件系統(tǒng)的采樣時間數(shù),在每個中斷時間,中斷處理代碼遞增SCLOCK另一個寄存器SPERINT中保持的,每個中斷的采樣總數(shù)并測試在用戶硬件設(shè)備的采樣時間內(nèi)的采樣數(shù),它將被建立并用于每個中斷周期。
IPERIODH-中斷周期位保持正比于用戶硬件設(shè)備的實際中斷頻率的數(shù)值的高16位。
IPERIODL-中斷周期低位保持正比于用戶硬件設(shè)備的實際中斷頻率數(shù)的低16位。
INTEREQ-中斷頻率保持正比于實際中斷頻率數(shù)(Hz)。
調(diào)度表中幀管理者的執(zhí)行調(diào)度和排序由與每個幀管理者相關(guān)聯(lián)的開始時間和結(jié)束時間和相互關(guān)系來確定。一般來說,具有最早結(jié)束截止時間或結(jié)束時間的幀管理者優(yōu)先執(zhí)行。然而,由于幀管理者只在到達它的開始時間之后才被允許執(zhí)行,當一具有較早結(jié)束時間的給定幀管理者在等待它的開始時間時,具有較晚結(jié)束時間但有較早開始時間的幀管理者可以執(zhí)行。較早結(jié)束時間的幀管理者的開始時間一到,較晚結(jié)束時間的幀管理者就被剝奪而它的狀態(tài)必須保存起來。本發(fā)明的操作系統(tǒng)管理幀管理者開始時間和結(jié)束時間之間的相互關(guān)系并通過采用調(diào)度表,在一給定時間系統(tǒng)中存在的所有幀管理者按優(yōu)先級排隊的排序表來確定哪個幀管理者應(yīng)該執(zhí)行。它還使用與每個中斷級相關(guān)聯(lián)的多后備幀管理者表(僅后備幀管理者的排序表)。這包含幀管理者在它們當前幀循環(huán)時間已經(jīng)完成執(zhí)行正在等待它們下一個循環(huán)開始時間的標記。數(shù)據(jù)存貯器中優(yōu)先級寄存器區(qū)用來保持當前正在執(zhí)行的幀管理者結(jié)束時間的拷貝。
簡要地說,舉個例子,在主機的用戶可以調(diào)用若干用戶多媒體任務(wù)。任務(wù)可能是運行調(diào)制解調(diào)器,用CD唱機播放伴音,從壓縮視頻信號完成視頻顯示等。調(diào)用這些任務(wù)的用戶將按要求把它們送到主系統(tǒng)(要建立幀控制塊)并把它們輸入到數(shù)字信號處理器,就駐留在內(nèi)存中了。如果需要的話,主系統(tǒng)還向數(shù)字信號處理器內(nèi)存裝入特定的任務(wù)執(zhí)行程序以支持用戶所調(diào)用的應(yīng)用。主系統(tǒng)還將建立任務(wù)控制塊送到數(shù)字信號處理器,在那它們駐留在內(nèi)存中以設(shè)置和讀取特定的任務(wù)執(zhí)行碼代碼。一旦主處理機需要初始化和調(diào)度幀控制塊,數(shù)字信號處理器操作系統(tǒng)進行控制并開始工作,如圖1的總流程簡圖所示。
參考圖1,操作系統(tǒng)首先訪問內(nèi)存中控制代碼塊1中所包含的幀管理者調(diào)度代碼。圖2和圖3詳細描述了這個過程。操作系統(tǒng)掃描與正調(diào)用的給定硬件或任務(wù)相關(guān)聯(lián)的備用表2。然后把正調(diào)用的特定幀管理者的標記符插入到后備表中,如圖2和圖3所詳細描述的那樣。操作系統(tǒng)又掃描幀管理者按優(yōu)先級排隊的執(zhí)行調(diào)度表3,它作為控制數(shù)據(jù)駐留在內(nèi)存中,根據(jù)任務(wù)或幀管理者結(jié)束時間找到合適的開始點。操作系統(tǒng)掃描控制數(shù)據(jù)存貯器中的幀管理者優(yōu)先級執(zhí)行調(diào)度表,根據(jù)要調(diào)用的FCB的結(jié)束時間相對于調(diào)度表中現(xiàn)有的任何其它FCB的結(jié)束時間找到插入給定FCB的合適起動點。操作系統(tǒng)插入一地址指針到內(nèi)存中的控制代碼的幀管理者FCB中。
接著,圖1中的操作系統(tǒng)調(diào)度表掃描器4為要執(zhí)行的下一個幀管理者掃描幀管理者按優(yōu)先級排隊的執(zhí)行調(diào)度表3。它訪問幀管理者的幀控制塊,并找到那個幀管理者準備運行的下一個任務(wù)。調(diào)度表掃描器4送幀管理者的FCB到幀管理者啟動控制5,它檢查給定的幀管理者在中斷之后是繼續(xù)還是開始新的循環(huán)。幀管理者6受幀管理啟動塊5的啟動并從與給定幀控塊相關(guān)聯(lián)的任務(wù)中調(diào)用要執(zhí)行的下一個任務(wù),啟動控制塊5從FCB的字符獲得從何處開始或繼續(xù)已中斷任務(wù)的信息。
如果一個同步編程的、規(guī)則發(fā)生的中斷在執(zhí)行中發(fā)生的話,幀管理者6就停止,分支到與正在中斷的中斷級相關(guān)聯(lián)的中斷處理器代碼(在塊7)并等待。塊7中的中斷處理器代碼遞增相應(yīng)的塊8,然后檢查它的相關(guān)的備用表2查看對任何FCB與該中斷級相關(guān)聯(lián)的任何起動時間是否發(fā)生??梢宰⒁獾剑谶@一點,中斷級相當于正調(diào)用的某種應(yīng)用的用戶硬件所要求的任務(wù)重復(fù)或循環(huán)的周期。例如,典型頻率是每秒9600個循環(huán),每秒8000次,每秒1380次(在備32個采樣的數(shù)據(jù)塊中處理CD機采樣的速率)等等。
如果任何開始時間到達,就從后備幀管理者表2中除去開始時間已經(jīng)到達的幀管理者(但它們還留在按優(yōu)先級排隊的幀管理者執(zhí)行調(diào)度表3中),并檢查優(yōu)先級指示器9確定從后備表中除去的給定幀管理者比現(xiàn)執(zhí)行任務(wù)的優(yōu)先級高還是低。由此,系統(tǒng)或是中斷現(xiàn)執(zhí)行任務(wù)、保存其狀態(tài),或是允許現(xiàn)執(zhí)行任務(wù)繼續(xù)。
正如圖1所示,數(shù)字信號處理器存貯器中有四個主要的控制代碼部分(和五個控制數(shù)據(jù)部分)。圖1中二者之間的區(qū)別是用重黑框圍的表示存貯器中的控制代碼,相反用較細框圍的表示控制數(shù)據(jù)項。數(shù)據(jù)流和控制信號流用帶雙箭頭的雙線表示雙向作用,而帶單箭頭的單實線則表示單向作用??刂拼a流則用帶雙箭頭或單箭頭的虛線來表示各部分之間的雙向或單向控制代碼流。必須清楚地理解,為了“流動”,處理器(未表示出)必須訪問相應(yīng)的控制代碼并執(zhí)行由它確定的那個操作,由此選擇控制數(shù)據(jù),從存貯器的一個區(qū)到另一區(qū)完成流程圖中的各種操作,這將在以后做更詳細描述。
為了詳細說明最佳具體實施的工作情況,我們假設(shè)一個簡單的典型的用戶在主處理機上調(diào)用的應(yīng)用,例如用戶選擇高保真CD機播放“所錄的音樂”。正如一般所理解的,激光盤存貯數(shù)字信號,再現(xiàn)伴音信號連同錯誤恢復(fù)碼位,跟蹤碼以及其它控制信息。為了處理從激光盤上讀出的數(shù)字信號,CD機必須執(zhí)行二個任務(wù)。第一個任務(wù)具有32D到A或A到D按CD機的采樣率(通常為每秒44,1004采樣)的采樣時間的執(zhí)行周期。第二個任務(wù)必須完成的是讀取數(shù)據(jù)采樣送到數(shù)字信號處理機進行反壓縮,錯誤修正等,必須以48個采樣為一個執(zhí)行周期進行工作。為了完成這個任務(wù),主處理機建立二個幀控制塊(其參數(shù)對應(yīng)于用戶調(diào)用應(yīng)用所需要的執(zhí)行周數(shù))并將幀控制塊裝入DSP數(shù)據(jù)存貯器。主處理機還建立二個任務(wù)控制塊(取決于CD機功能所要完成的任務(wù)或子任務(wù))并把它們裝入DSP數(shù)據(jù)存貯器。然后它要求DSP操作系統(tǒng)開始調(diào)度幀控制塊完成這些任務(wù)。
本發(fā)明的DSP操作系統(tǒng)給幀控制塊的某些信息并不由主處理機提供。它們的各稱是幀控制塊中的ALARM,ST,及ETH。這幾個信息是根據(jù)圖1中與上面表2的內(nèi)容相同的中斷處理器數(shù)據(jù)結(jié)構(gòu)7中時鐘的當前內(nèi)容來裝入的。然后制作系統(tǒng)設(shè)置圖1中塊10的FMPTR等于幀控制塊1。這樣,“FMPTR”將保持幀控制塊1裝入到存貯器中的地址。操作系統(tǒng)然后將掃描幀管理者按優(yōu)先級排隊的執(zhí)行調(diào)度表3并插入幀控制塊到調(diào)度表適當?shù)奈恢?,是通過調(diào)度對應(yīng)于FCB1的幀管理者FM1到調(diào)度表的合適位置上完成。完成這些工作是由操作系統(tǒng)執(zhí)行幀管理者調(diào)度過程,通常由圖1中塊1的代碼來控制,接著執(zhí)行圖2和圖3的詳細過程。
一開始,為簡單起見可以假設(shè)上面提到的時鐘的當前內(nèi)容為0。給定這樣的初始值后,圖1中塊1的控制碼所控制的活動在圖2和圖3中有詳細描述。
圖2中,過程以塊11開始。塊11中,設(shè)置當前幀管理者等于從FCB來的幀管理者指針。塊12計算這個特定幀管理者的新的開始時間和結(jié)束時間。新的開始時間是舊的開始時間加上來自FCB的幀數(shù)。在目前的例子里幀是32個采樣、新的結(jié)束時間是按將舊的結(jié)束時間加上FCB中的幀時間高位H,這里是64Kt,Kt是正比于用戶任務(wù)所要求用來支持的給定硬件的采樣時間的常數(shù)。這樣,在信號處理器內(nèi)測得的時間就與外部主設(shè)備CD機的各個采樣時間,間隔以及時鐘頻率有關(guān),以此類推。
塊13中,新的報警條件是按舊報警加上幀數(shù),在本例中,幀數(shù)為32。
然后,圖2的過程前進到后備任務(wù)表(圖1塊2中的),向上掃描找到后備表中合適的位置插入幀控制塊指針。這個表里的指針又按報警時間進行排序,最早報警時間在前。圖2中塊14說明設(shè)置要指向完成這個的備用表底部的備用表指針。由于圖1中備用表2在本例中當前為空,表的頂部就被找到,幀管理者1的幀控制塊指示器,就將放在表的頂部,作為這些表的唯一登記項。在這之前,必須要執(zhí)行圖2中的塊15,啟動中斷保護,防止發(fā)生錯誤,如果在備用表正修改過程有任何中斷應(yīng)該發(fā)生的話。
塊16中,設(shè)置下一個幀管理者的指示器等于來自指令表的PIFM,進入塊17確定下一個幀管理者是否在備用表的頂端,如果不是,則根據(jù)它的報警時間,利用塊18,19,20諸步驟將幀管理者插到合適的位置上。如果下一個幀管理者已經(jīng)在備用表的頂部,后面的這幾塊就可以跳過,由塊17的輸出直接到塊24的輸入。如果塊18的測試表明下一個幀管理者的報警小于當前幀管理者報警,就必須做進一步測試,確定幀管理者報警是否等于當前報警,這示于圖2的塊21。如果回答為(yes)是則,二個幀管理者的結(jié)束時間進行比較(塊22),備用表重新排序,如果需要的話,如塊23所示。在另一種選擇下,如果在表中找到的下一個幀管理者不等于當前幀管理者報警,就進入塊24,在下一個幀管理者和指令表指針地址之間把幀管理者插入備用幀管理表中,然后表2在標記A處退出,指向圖3中標記A處的入口。
圖3中,開始了對按優(yōu)先級排隊的幀管理者執(zhí)行調(diào)度表重新排序的進程,設(shè)置一個非實時幀管理者NRTM在表的底部,方法是給定它的結(jié)束時間大于當前幀管理者的結(jié)束時間(按FCB1所控制的)。在本例中,我們已經(jīng)假定NRTM的結(jié)束時間等于64Kt+1,因此NRTM比現(xiàn)有的唯一的其它幀管理者(就是FM1)按其結(jié)束時間至少要晚1個時鐘數(shù)。這在塊25到28作了說明,這些塊都是自身說明問題的。
其次,操作系統(tǒng)掃描圖1中的幀管理者調(diào)度表3,以圖3的塊30為各步驟的開始。掃描按結(jié)束時間進行,這是對幀管理者按優(yōu)先級排隊的執(zhí)行調(diào)度表進行優(yōu)先級列表的方式。執(zhí)行掃描以找到插入幀管理者FM1的正確位置。由于在我們的例子中假定幀管理者調(diào)度開始為空,在調(diào)度表或隊列3中除了非實時幀管理者以外FM1將是唯一的幀管理者。然后,將新的開始時間和結(jié)束時間寫入FCB1,F(xiàn)CB1的中斷標記設(shè)置為0(沒有在運行),圖1中的中斷寄存器9設(shè)置成優(yōu)先級隊列或調(diào)度表3中的下一個幀管理者的結(jié)束時間。這示出圖3中塊31-40,特別是在塊39。
然后,操作系統(tǒng)控制圖1中塊4的調(diào)度表掃描進程。這個代碼為尋找其它準備要執(zhí)行的幀管理者搜索塊3中的調(diào)度表。在目前的例子中沒有其它幀管理者,因此非實時幀管理者在表的底端被找到,它的標記由圖1、塊4的掃描器送到圖1、塊5的幀管理者啟動代碼。
根據(jù)幀管理指鐘找到的NRTM代碼由處理器運行,圖1中塊9的優(yōu)先級設(shè)置成NRTM幀管理者的優(yōu)先級,本例中就是64Kt+1。NRTM代碼將作為第二幀管理者插入存貯器中的調(diào)度表中,方法與上面所描述的FM1的插入方法完全一樣。其結(jié)果是在這個調(diào)度表3中FM1后面跟著FM2。對第二個幀管理者又從圖1,塊1開始,重復(fù)執(zhí)行圖2、圖3所描述的工作。
再回到圖2,計算這個幀管理者的新的開始時間和結(jié)束時間以及新的報警時間。FM2(由我們假想的用戶為了CD播放調(diào)用的第二個任務(wù))的開始時間為48,報警時間為48,結(jié)束時間為96Kt。圖2中,將檢查備用表,從底部開始,向上搜索以找到插入FM2的指示器在表中的合適位置。由于FM2將有比FM1更晚的ALARM時間(即相對來說,48比32更晚),在圖1的備用幀管理者表2中,F(xiàn)M2將放在FM1后面。
轉(zhuǎn)到圖3來,將再次搜索圖1的幀管理者調(diào)度表3,F(xiàn)M2將放在調(diào)度優(yōu)先級表或隊列的正確位置上。由于FM2的結(jié)束時間比FM1晚,所以FM2在隊列3的調(diào)度優(yōu)先級表中,排在FM1后面。在這點上,非實時幀管理者結(jié)束時間設(shè)置為96Kt+1,過程繼續(xù)進行到圖1中的塊4,在這里進行調(diào)度表掃描工作,從幀管理者原先的調(diào)度表位置開始,對任何其他要執(zhí)行的幀管理者掃描。由于調(diào)度表3現(xiàn)在是幀管理者以隊列形式的排序表并且包含F(xiàn)M1,后面跟著FM2,再后面跟著非實時管理者,所以通過圖1中塊4的幀管理者啟動代碼找到非實時幀管理者,非實時幀管理者將再次執(zhí)行。圖1的塊9優(yōu)先級指示器將設(shè)置為96Kt+1。
由于本例中沒有另外的幀管理者加到調(diào)度表里,非實時幀管理者代碼將完成各個實用功能直到它被表示來自備用表的,對FM1或FM2的報警已經(jīng)發(fā)生的,周期性產(chǎn)生的中斷流中斷時為止。當這種中斷發(fā)生時,操作系統(tǒng)的代碼執(zhí)行流向圖1塊7里中斷給定級的中斷處理代碼,然后將運行圖5所示的中斷處理。
圖5中塊1的中斷處理器代碼按塊58所示修正它的時鐘。修改時鐘的數(shù)據(jù)包含在表2的中斷處理器數(shù)據(jù)結(jié)構(gòu)中(見前面)。中斷處理器代碼檢查它的配對的,有關(guān)聯(lián)的中斷級備用表2中的備用表。在目前的情況下,將找到FM1。它的報警時間等于32采樣時間,并對照著SCLOCK(圖1中塊8)所表示的當前時間(等于1)進行校準。由于當前報警32不等于SCLOCK的內(nèi)容,執(zhí)行將從它被中斷處重新開始。
中斷以這種方式即時反應(yīng)直到最后SCLOCK數(shù)(它是每次遞增1)等于報警數(shù)為止,即它將表示FM1的開始時間已經(jīng)到來。這時,F(xiàn)M1將從備用表中除去,通過使備用表的頂指到表中下一個幀管理者(現(xiàn)在情況下即為FM2)。然后將優(yōu)先級(即FM1的結(jié)束時間)對照著圖1中優(yōu)先級寄存器9進行比較。幀管理者1的優(yōu)先級就是FCB1中的結(jié)束時間,為64Kt。但是優(yōu)先級寄存器9的內(nèi)容來自NRTM幀管理者,為96Kt+1,因此FM1由于它的結(jié)束時間比NRTM代碼的幀管理者更早而具有更高的優(yōu)先級。這在圖5中從塊59到64表示。在塊64,圖1的優(yōu)先級寄存器9將設(shè)置為64Kt,這是FM1的結(jié)束時間。因為非實時管理者的FCB的各個字段中的這種中斷,數(shù)字信號處理器中的內(nèi)容,即所有操作寄存器的當前狀態(tài)將被保存,進程將繼續(xù)至圖6。
在圖6中將檢查圖1中塊3的調(diào)度表以確保調(diào)度表中在FM1之前沒有任何其他具有相同結(jié)束時間(即“相同優(yōu)先級”)的幀管理者。這種現(xiàn)象只出現(xiàn)在多級中斷系統(tǒng)中并且只出現(xiàn)在所討論的幀管理者具有相同的或近似相同的執(zhí)行周期的情況。如果出現(xiàn)這種情況的話,就要調(diào)整調(diào)度表3的幀管理者,以使要執(zhí)行的幀管理者優(yōu)先于所有其它具有相同結(jié)束時間的幀管理者。也就是說,具有相同截止時間或完成時間的幀管理者中,取具有最早實際開始時間的幀管理者優(yōu)先。在目前的例子中,沒有其它的幀管理者優(yōu)先于FM1,因此執(zhí)行將繼續(xù),如圖4所示,標記D在圖4B塊56進入。在這一點塊10的幀管理者指針設(shè)置成指向FM1的FCB1,同時FM1被執(zhí)行。
當FM1完成執(zhí)行之后,它就返回操作系統(tǒng)重新排隊,操作系統(tǒng)又開始如圖2所示的新的進程,計算新的開始時間,結(jié)束時間和報警。在本例中,將開始時間重新計算為64,報警為64,結(jié)束時間為96Kt。然后從底向上搜索備用表,在備用表中將碰到FCB2的幀管理者,并找到它的報警時間為48。因此,F(xiàn)M1將在備用表中放在FM2之后,因為現(xiàn)在它的開始時間比FM2的晚。進程繼續(xù)進行到圖3,在這里,找到的非實時幀管理者的結(jié)束時間比FM1的結(jié)束時間還晚,因此NRTM幀管理者的結(jié)束時間就不改變。圖1中幀管理者調(diào)度表現(xiàn)在將由圖1中塊4的掃描器從FM1的幀管理者調(diào)度表3的當前位置開始搜索。下一次將找到FM2,由于FM2的結(jié)束時間等于FM1的結(jié)束時間,將繞過FM2。接著FM2的是非實時幀管理者,它的結(jié)束時間大于FM1的結(jié)束時間,因此FM1將重新插入調(diào)度表中FM2和非實時管理者之間。這樣,幀管理者調(diào)度表3或隊列現(xiàn)在已重新排序,包含作為調(diào)度表頂端的標志,F(xiàn)M2,F(xiàn)M1最后是非實時幀管理者。
FM1的新的結(jié)束時間和開始時間寫入它的FCB1中,優(yōu)先級寄存器9設(shè)置成下一個幀管理者(FM2)的結(jié)束時間,因而設(shè)置為96Kt,重新排隊的進程繼續(xù)進行如圖4A,標記B所示。在那,幀管理者調(diào)度表被掃描,從幀管理者2在調(diào)度表隊列中原來的位置開始,以便可以找到所要執(zhí)行的下一個幀管理者。FM2在調(diào)度表3中原來跟在FM1之后,因此搜索操作從FM2開始,這意味著FM2是下一個要檢查的候選者。
現(xiàn)在我們假定,恰好在這特殊時刻,F(xiàn)M2的開始時間來到,即相應(yīng)于FM2的開始時間報警的中斷發(fā)生。正如前面所述,圖5中的中斷處理代碼(它是在圖1中的中斷處理器塊7中)將確定FM2的ALARM是否已經(jīng)發(fā)生以及FM2是否要從備用表級(對應(yīng)于該中斷所在的中斷級)中移走。然而這時幀管理者2的結(jié)束時間不小于優(yōu)先級寄存器9所包含的時間,因此執(zhí)行將從它被中斷處繼續(xù)進行。執(zhí)行是在圖4A標記B點被中斷的,因此就從這一點重新開始,F(xiàn)M2是執(zhí)行候選者,它的開始時間在塊44中與它的中斷源的SCLOCK內(nèi)容相比較。在本例中將發(fā)現(xiàn)它們是相等的,因此圖1中優(yōu)先級寄存器塊9被設(shè)置為FM2的結(jié)束時間,現(xiàn)在FM2就是由圖1、塊5的幀管理者啟動代碼啟動的幀管理者,詳見圖4B的圖示說明。
在圖4B,首先FM2的啟動標志被測試,查看該幀管理者是否處于中斷狀態(tài)。發(fā)現(xiàn)中斷標志為0,表明FM2不處于中斷狀態(tài)而是從開始要執(zhí)行的就緒狀態(tài)。圖1中塊10的幀管理者指針將被設(shè)置成指向存貯器中的FCB2,表示FM2現(xiàn)在將要執(zhí)行。FM2中斷標志將被設(shè)置為1。表示如果FM2接著被中斷,或被更高優(yōu)先級幀管理者剝奪的話,它的狀態(tài)需要恢復(fù),幀管理者2將被執(zhí)行。這以自說明方式塊51-57中表示。
盡管前面的過程看起來復(fù)雜,但它很容易執(zhí)行且只發(fā)生在幾個機器循環(huán)中。進程將無限地繼續(xù),F(xiàn)M1和FM2不斷地重新排隊,直至執(zhí)行完成為止。根據(jù)它們當前的、分別計算的下一次結(jié)束時間,不斷地重新安排它的在幀管理者調(diào)度表中的位置,并且當它的從活動狀態(tài)轉(zhuǎn)到閑置狀態(tài)或從閑置轉(zhuǎn)到活動狀態(tài)時,將不斷地把它們放到備用表中或從中移走。重新排隊過程是可中斷的,正如我們在整個描述過程中所指出的,執(zhí)行著的幀管理者在執(zhí)行過程中可以被中斷和剝奪。如果出現(xiàn)這種情況,數(shù)字信號處理器的設(shè)備狀態(tài)被保存在上面提到的FCB中所指定的特定字段里。當檢測最終又返回到被中斷的幀管理者時,重新排隊又正常繼續(xù)下去就象沒有中斷發(fā)生過。
為了詳細描述圖2和圖3的進程,要涉及已編號的塊以及下面的描述。圖2中的塊11完成指向活動幀管理者的FCB指針的復(fù)雜,表示幀管理者正在圖1的按優(yōu)先級排隊的隊列3中重新排隊。塊12中,進程必須根據(jù)程序計算新的開始時間和結(jié)束時間,“新開始”時間等于“舊開始”時間加上來自FCB的“FRAME”,“新結(jié)束”時間等于“舊結(jié)束”時間加上FCB的“FRAMEH”。塊13中,必須計算新的報警時間,在FCB中設(shè)置等于新的開始時間。塊14中,系統(tǒng)必須將指針恢復(fù)到圖1中備用幀管理者表2的底端。這來自中斷處理器數(shù)據(jù)結(jié)構(gòu)(在前面的表2中所示)。
塊15中,任何中斷都被屏蔽以防止在隨后的各步中發(fā)生中斷。塊16中,指向所要檢查的下一個幀管理者的FCB的指針被復(fù)雜,這里所要檢查的下一個幀管理者就是在備用幀管理者表中所指的前一個幀管理者。在塊17中,檢查備用幀管理者的頂,如果找到頂,操作進行到塊24。
在塊18,所作檢查是確定下一個幀管理者的報警是否小于活動幀管理者的報警;若為真,進程繼續(xù)到塊21。塊19中,備用表指針設(shè)置到備用幀管理者表中的前一個幀管理者。也就是說,備用表指針在備用幀管理者表中上移一個表目。
在塊20中,使中斷無屏蔽,這樣任何掛著的中斷可以運行,然后系統(tǒng)又進到塊15。若沒有中斷發(fā)生的話,系統(tǒng)流程通過塊15、16,等等。
在塊21,檢查確定下一個幀管理者的報警是否等于活動幀管理者的報警。如果是,操作進行到塊22,但若不是,則進行到塊24。
如果在塊21中,發(fā)現(xiàn)下一個幀管理者的報警等于活動幀管理者的報警,那么這二個幀管理者中只需要一個保留在備用幀管理者表中,進入塊22,檢查確定下一個幀管理者的結(jié)束時間是否小于或等于活動幀管理者的結(jié)束時間,如果是,活動幀管理者就不需要放在備用幀管理者表中,備用幀管理者表的掃描和插入進程就已經(jīng)完成了。
塊23中,假定塊22中進程沒有完成,下一個幀管理者在備用幀管理者表中被活動幀管理者替代。也就是說,下一個幀管理者從表中移走而當前活動幀管理者被放在它的位置上。備用幀管理者表的掃描和插入進程就已經(jīng)完成。
在塊24進行的是將活動幀管理者插在備用幀管理者表中,下一個幀管理者如備用表指針之間,(對適合這個的條件下)也就是說,活動幀管理者將跟在下一個幀管理者后,在備用表指針所指的幀管理者之前。備用表掃描和插入進程完成。
圖2表示了程序上的各步驟,能夠保持一個執(zhí)行已經(jīng)完成,正在等待新的開始時間(在它們的周期性重復(fù)的任務(wù)中斷調(diào)度表中)的幀管理者隊列或表。備用幀管理者表代表每當現(xiàn)待用幀管理者的開始時間來到時使操作系統(tǒng)處于“警戒”狀態(tài)的裝置。就允許操作系統(tǒng)檢查執(zhí)行調(diào)度表或隊列,以確定當前就緒-運行的幀管理者的優(yōu)先級是高于已經(jīng)在執(zhí)行的幀管理者的優(yōu)先級的話,現(xiàn)執(zhí)行幀管理者就應(yīng)該被剝奪。
圖3詳細地說明了幀管理者按優(yōu)先級排隊的執(zhí)行隊列或調(diào)度表掃描和插入過程,由圖1的塊1和塊4中的控制代碼完成。在圖3中,進程從塊25開始,使任何中斷無屏蔽,允許掛著的中斷運行。塊26中,調(diào)度表指針最初設(shè)置在活動幀管理者指向正在執(zhí)行的現(xiàn)活動幀管理者的幀管控制塊。塊27檢查確定非實時管理者的結(jié)束時間是否晚于(即更大于)活動幀管理者的結(jié)束時間。如果是,進程繼續(xù)到塊29。如果不是,進程繼續(xù)至塊28,在那里設(shè)置非實時幀管理者的結(jié)束時間等于活動幀管理者結(jié)束時間+1。這樣非實時幀管理者的結(jié)束時間將比當前調(diào)度表中的任何幀管理者的結(jié)束時間都晚,也就是說,NRTM幀管理者作為幀管理者隊列或調(diào)度表的結(jié)束符,調(diào)度表則是根據(jù)幀管理者的結(jié)束時間排序的。
在塊29,中斷又被屏蔽以防止它以后的過程中有中斷發(fā)生,在塊30,跟在調(diào)度指針后面確定下一個要調(diào)度的幀管理者。這意味著在幀管理者調(diào)度表中的當前指針就是下一個幀管理者的指示器。在塊31,檢查確定下一個幀管理者的結(jié)束時間是否不小于或等于活動幀管理者的結(jié)束時間。那么就已經(jīng)找到活動幀管理者的合適新位置,進程可以繼續(xù)到塊34,否則過程進行到塊32。在塊32,調(diào)度表指針被設(shè)立,指向跟著當前調(diào)度表指針之后的下一個調(diào)度的幀管理者,即指針在幀管理者調(diào)度表中下移一個位置。在塊33,使中斷無屏蔽,以允許任何掛起的中斷運行,然后進程繼續(xù)到塊29。
在塊34,確定調(diào)度表指針指向當前緊跟著活動幀管理者之后的幀管理者。在塊35,將活動幀管理者從幀管理者調(diào)度表中除去。在塊36,將活動幀管理者重新插入調(diào)度表跟在“下一個幀管理者”之后。在塊37,將新的開始時間和結(jié)束時間寫入活動幀管理者的FCB中。而在塊38,活動幀管理者的中斷標志設(shè)置為0,表示活動幀管理者不是在中斷(即在運行但被中止)狀態(tài)。在塊39,對圖1-塊9確定系統(tǒng)優(yōu)先級為當前調(diào)度表指針所指的幀管理者結(jié)束時間。這就是在幀管理者調(diào)度隊列3中原來跟在活動幀管理者之后的幀管理者。在塊40,使中斷無屏蔽,以允許任何掛著的中斷執(zhí)行。幀管理者掃描和插入過程已經(jīng)完成。
從前面所述可以看到圖3所說明的過程為對應(yīng)于所要執(zhí)行的用戶任務(wù)建立幀管理者按優(yōu)先級排隊的隊列,并根據(jù)最早幀管理者截止時間或結(jié)束時間進行管理。任何具有相同重復(fù)頻率以及所要求結(jié)果可得到的相同截止時間的用戶任務(wù)在其執(zhí)行周期必須由這個幀管理者處理。每當幀管理者結(jié)束時間到達或由于執(zhí)行實時幀管理者碼而插入一個新幀管理者或者由此而刪去一個幀管理者時,幀管理者按其優(yōu)先級排序的表或隊列被分類和重新排隊如所示。
圖4A說明的是由圖1塊4所完成的幀管理者調(diào)度表掃描過程。在塊41,調(diào)度表指針所指的幀管理者確定為執(zhí)行候選者。塊42在隨后的過程實行中斷屏蔽。塊43得到對候選幀管理者相連的中斷源在塊7中相關(guān)聯(lián)的中斷數(shù)據(jù)結(jié)構(gòu)中的采樣時鐘SCLOCK的內(nèi)容,即對控制FCB和幀管理者的中斷級的計時器。在塊44,如果候選幀管理者開始時間已經(jīng)到達(或者甚至已經(jīng)通過),那么起動時間將小于或等于SCLOCK,現(xiàn)幀管理者可以執(zhí)行。進程繼續(xù)到塊48。如果候選幀管理者開始時間還沒有到來,它不能執(zhí)行而必須走旁路,這樣進程將繼續(xù)到塊45。要注意的是,非實時幀管理者以這樣的方式被預(yù)置,以致它的開始時間似乎總是已經(jīng)到來,因此一旦它被送到表中,非實時幀管理者總能被執(zhí)行。
在塊45,確定圖1塊9的優(yōu)先級等于候選幀管理者的結(jié)束時間加1。在塊46,確定新的候選者為幀管理者調(diào)度表中跟在當前候選者后的幀管理者。塊47中,使中斷無屏蔽以允許任何掛起的中斷運行,然后操作繼續(xù)到塊42。
塊48中,系統(tǒng)確定圖1塊9的優(yōu)先級為候選幀管理者的結(jié)束時間。在塊49,系統(tǒng)確定候選幀管理者為要啟動(即要執(zhí)行)的幀管理者。在塊50,系統(tǒng)使中斷無屏蔽以允許任何掛起的中斷運行。調(diào)度表掃描過程已經(jīng)完成,下一個要執(zhí)行的幀管理者也已經(jīng)找到。
圖4B的過程說明幀管理者啟動(即執(zhí)行)是如何開始的。塊51,如果啟動的幀管理者的中斷標志等于0,它不再處于被中斷狀態(tài),應(yīng)該從它的開始處執(zhí)行,因此過程進行到塊56。但如果中斷標志被設(shè)置為1,則幀管理者在先已被中斷,執(zhí)行應(yīng)該從它被中斷時它所在之處的狀態(tài)重新開始。這意味著必須要恢復(fù)所保存的現(xiàn)場,進程進行到塊52,將中斷屏蔽。在塊53,機器在中斷發(fā)生時的現(xiàn)場,根據(jù)幀管理者的FCB中保存現(xiàn)場區(qū)進行恢復(fù)(參見前文)。塊54中確定幀管理者指針指向啟動的幀管理者,啟動的幀管理者變成要執(zhí)行的活動幀管理者。在塊55,使中斷無屏蔽,整個重新排隊過程已經(jīng)完成,因此,被中斷的幀管理者可以繼續(xù)執(zhí)行了。
在塊56,從塊51進入,或從圖6塊71進入,所要啟動的幀管理者將要從它的開始處被啟動。因此確定幀管理者指針等于啟動的幀管理者,啟動候選者變成活動幀管理者。在塊57,啟動幀管理者的中斷設(shè)置為1。表示如果啟動要被任何其他幀管理者中斷和剝奪的話,它的現(xiàn)場需要保存以便恢復(fù),執(zhí)行必須從中斷點重新開始。這完成整個重新排隊過程,新的活動幀管理者已經(jīng)開始執(zhí)行。
塊7的中斷處理代碼在圖5作了詳述。在塊58,時鐘以表2所示的中斷處理器數(shù)據(jù)結(jié)構(gòu)進行修改。塊59中,與該中斷級相關(guān)的中斷處理器備用幀管理者表中的第一個幀管理者被訪問。如果備用表2是空的,正如塊60所示,這意味著在這個中斷級當前沒有駐留幀管理者,系統(tǒng)返回被中斷進程。在塊61,如果幀管理者備用表有幀管理者并且已經(jīng)到達該表的頂,即開始時間已經(jīng)來到,則過程進行到塊62,否則的話,它就返回被中斷的進程。在塊62,從備用幀管理表中移走第一個幀管理者,因為它現(xiàn)在已經(jīng)變成活動的或者已經(jīng)經(jīng)過了它的開始時間。在塊63,如果幀管理者的結(jié)束時間小于圖1中優(yōu)先級塊9中當前所指示的,那么它就必須被執(zhí)行,因此進程進行至塊64。否則的話,進程返回到被中斷的進程。在塊64,優(yōu)先級被重新設(shè)置為當前幀管理者的結(jié)束時間表示申請中斷的幀管理者有優(yōu)先權(quán)。在塊65,申請中斷的幀管理者確定為要啟動(即要執(zhí)行)的幀管理者。在塊66,機器當前現(xiàn)場被保存在被剝奪的幀管理者的保存現(xiàn)場區(qū)。塊67,結(jié)束中斷保護,以允許任何后來的中斷被運行。這完成中斷過程。流程繼續(xù),操作系統(tǒng)對多級中斷調(diào)度表的調(diào)整示于圖6,以塊68開始。
在圖6中,在諸如圖1所示的多級中斷級系統(tǒng)中,必須要建立調(diào)度表指針(是被啟動幀管理者理者的)即,它必須指向所要執(zhí)行的幀管理者。塊69中,幀管理者的頂,這是虛擬FCB用作幀管理者調(diào)度表的開始時間,其結(jié)束時間必須不等于被啟動的幀管理者的結(jié)束時間,這樣防止在過了隊列中幀管理者調(diào)度表的頂之后繼續(xù)向上搜索。在塊70,確定在當前調(diào)度表指針之前的幀管理者作為“前一個幀管理者”。在塊71,如果結(jié)束時間或前一個幀管理者不等于被啟動幀管理者的結(jié)束時間,那么不需要調(diào)度表調(diào)整。進程可以繼續(xù)到圖4B,塊56,執(zhí)行被啟動幀管理者。否則的話,過程進行到塊72。
在塊72,系統(tǒng)確定前一個幀管理者為調(diào)度表指針,并在幀管理者調(diào)度表中將幀管理者上移一個表格,在塊73,如果“前一個幀管理者”的結(jié)束時間等于被啟動幀管理者的結(jié)束時間,那么掃描還沒有找到具有與啟動不同的結(jié)束時間的在前的幀處理器,因此過程必須進行至塊72。否則的話,過程則進行到塊75。在塊75,中斷被屏蔽。塊76中,被啟動幀管理者先從幀管理者調(diào)度表中移走而后再把它插入幀管理者調(diào)度表中跟在前一個幀管理者后的那個位置上。在塊78,使中斷無屏蔽以允許任何掛起的中斷運行。幀管理者調(diào)度表的調(diào)整,其目的是使被啟動幀管理者放在所有具有與啟動結(jié)束時間相同的結(jié)束時間的幀管理者之前,已以完成。過程可以繼續(xù)到圖4B、塊56。
在幀管理者執(zhí)行的調(diào)度、重新排隊、中斷及恢復(fù)中,操作系統(tǒng)的所有操作都在圖7中用圖解法表示出來。在圖7中,說明三個示范性的幀管理者,用符號FM11,F(xiàn)M5和FM3表示,時間軸以中斷數(shù)為基準。幀管理者11,5和3的執(zhí)行幀分別為11,5和3中斷時間。也就是說,幀管理者將具有在每11,5與3個中斷時間上有規(guī)律地出現(xiàn)的開始時間和結(jié)束時間。幀管理者可能會都連到同一個硬件中斷源上,如本例為簡便起見即如此。沿幀管理者11,5和3的時間軸上的方塊表示幀管理者實際執(zhí)行的時間周期。人為地標記各個中斷為0,1,2,等等并從0起動。那么進程進行如下幀管理者11,5和3都具有在中斷開始(中斷0)的開始時間。根據(jù)結(jié)束時間執(zhí)行調(diào)度表的順序?qū)⑹菐芾碚?,后面是幀管理者5,再后面是11。幀管理者3是執(zhí)行調(diào)度表中的第一個幀管理者,它將在中斷0處開始執(zhí)行。在中斷1之后的某一時間,表示完成對幀管理者3的任務(wù)的執(zhí)行,并且將在中斷3處重新開始執(zhí)行該任務(wù),而在中斷6處具有一個新的結(jié)束時間?,F(xiàn)在調(diào)度表的新的執(zhí)行次序是幀管理者5,之后是幀管理者3,最后是幀管理者11。接下來將開始執(zhí)行幀管理者5,因為它已經(jīng)到達了開始時間,并且它在執(zhí)行調(diào)度表中處于第一位,幀管理者3已經(jīng)執(zhí)行。在中斷2已經(jīng)到達之后的某一時間,將完成幀管理者5的執(zhí)行,并且重新調(diào)度到一個在中斷5開始的新的開始時間,在中斷10具有一個新的結(jié)束時間。現(xiàn)在調(diào)度表的新的執(zhí)行次序是幀管理者3,5和11。然而,在這一時刻,恰好在中斷2之后,幀管理者3和5在執(zhí)行調(diào)度表中位于幀管理者11之前,但它們的開始時間還沒有到來。這樣繞過了幀管理者3和5,而實際開始執(zhí)行幀管理者11。
在中斷3,發(fā)生幀管理者3的第二次重復(fù)的開始時間,但幀管理者11沒有完成它的執(zhí)行。幀管理者3在執(zhí)行調(diào)度中領(lǐng)先于幀管理者11,因而有較高的優(yōu)先級。因此,幀管理者11被剝奪,即被中斷(它的現(xiàn)行處理狀態(tài)被保存在它的FCB中),而幀管理者3開始了它的執(zhí)行的第二次重復(fù)。當幀管理者3完成執(zhí)行,用在中斷點6處的新的開始時間和中斷9處的新的結(jié)束時間重新調(diào)度它。
現(xiàn)在調(diào)度表的新的執(zhí)行次序是FM3,F(xiàn)M5和FM11。在這一時刻點,幀管理者3和5領(lǐng)先于幀管理者11,但它們的開始時間還沒有到來或重新到來,因此,在FM11開始執(zhí)行的同時(從中斷中重新恢復(fù))被繞過。
在中斷5時,幀管理者5的開始時間到來,為它的第二次重復(fù)。幀管理者5優(yōu)先于幀管理者11,這樣它具有較高的優(yōu)先級(在執(zhí)行調(diào)度表隊列中),因此幀管理者11再次被剝奪(中斷),幀管理者5開始它的第二次執(zhí)行周期。在中斷6,幀管理者的開始時間復(fù)現(xiàn),但幀管理者5尚未完成執(zhí)行,因此被中斷。
幀管理者3優(yōu)先于幀管理者5,因此幀管理者5被剝奪(中斷),而幀管理者3開始它的第三次執(zhí)行周期。幀管理者3有時將在中斷1到達之后完成,重新排隊,具有新的開始時間在中斷9,新的結(jié)束時間在中斷12。
現(xiàn)在新的執(zhí)行順序是幀管理5,幀管理者11和幀管理者3。因為幀管理者5在調(diào)度表中優(yōu)先,它的執(zhí)行將從它被中斷之處重新開始,運行到完成,將重新排隊因此它的新開始時間在中斷10,新的結(jié)束時間在中斷15。
幀管理者調(diào)度表或優(yōu)先級隊列的新的執(zhí)行順序現(xiàn)在是幀管理者11,幀管理者3和幀管理者5。幀管理者11的執(zhí)行(現(xiàn)在已被中斷過幾次)重新開始。幀管理者3的開始時間在中斷9發(fā)生,但幀管理者3未開始執(zhí)行,因為在新的執(zhí)行調(diào)度表中它的優(yōu)先級低于幀管理者11。在中斷10,幀管理者5的開始時間來到,但幀管理者5也未開始執(zhí)行,因為在新的調(diào)度表中幀管理者11的優(yōu)先級高于幀管理者5。這樣幀管理者11將完成執(zhí)行將重新排隊,新的開始時間在中斷11,新的結(jié)束時間在中斷22。在調(diào)度表中執(zhí)行的優(yōu)先級新的順序?qū)⑹菐芾碚?,幀管理者5,幀管理者11。幀管理者3的開始時間已經(jīng)發(fā)生了,因此幀管理者3立即開始執(zhí)行。在中斷11幀管理者11的開始時間將來到,但幀管理者11未開始執(zhí)行,因為在新的執(zhí)行調(diào)度表中幀管理者3的優(yōu)先級高于幀管理者11的優(yōu)先級。幀管理者3完成執(zhí)行,有時在中斷11之后,重新排隊,新的開始時間在中斷12,新的結(jié)束時間在中斷15。
在執(zhí)行調(diào)度表或隊列中執(zhí)行優(yōu)先級的新的排序是幀管理者5,幀管理者3,后面是幀管理者11。幀管理者5將開始執(zhí)行,因為它的開始時間已經(jīng)到來并且由于在執(zhí)行優(yōu)先級隊列中它優(yōu)先于幀管理者3和11。在中斷12,幀管理者3的開始時間將到來,但是由于幀管理者3的優(yōu)先級沒有幀管理者5高,所以幀管理者3不能開始執(zhí)行。這樣幀管理者5將在中斷12之后的某一時間完成執(zhí)行,并重新排隊以具有新的開始時間在中斷15,而新的結(jié)束時間在中斷20。優(yōu)先級隊列的新的執(zhí)行順序為幀管理者3,跟著是幀管理者5和幀管理者11。幀管理者將開始其第4次執(zhí)行,因為它的起動時間已經(jīng)發(fā)生,它的優(yōu)先級高于幀管理者5和11。
前面的過程將繼續(xù)經(jīng)過幾個重復(fù)到中斷18,當幀管理者11將又完成執(zhí)行時,這時幀管理者3,5和11對其當前幀而言都已經(jīng)完成執(zhí)行,而它們的開始時間尚未出現(xiàn);當這種狀態(tài)發(fā)生時,可以允許非實時幀管理者任務(wù)執(zhí)行。最后中斷20發(fā)生,幀管理者5的開始時間到來,非實時任務(wù)幀管理者將被中斷,幀管理者5將按上面所描述的重新開始執(zhí)行。
從上述內(nèi)容,很容易理解所確定的新的操作系統(tǒng)和方法適合于所選擇的與硬的實時相關(guān)的任務(wù)(例如在多媒體,機器人以及其他類似的復(fù)雜人機對話或用戶系統(tǒng)環(huán)境下所遇到的那些任務(wù))的隨機發(fā)生的組合。對特殊處理器,例如為說明最佳實施例而用到的數(shù)字信號處理器沒有什么特別地依存性,因為該操作系統(tǒng)和方法完全能夠適應(yīng)或安裝在任何通用計算機上。對操作系統(tǒng)(包括任務(wù)執(zhí)行,根據(jù)重新發(fā)生任務(wù)完成或結(jié)束時間的優(yōu)先級排隊和調(diào)度),針對最佳實施例做了詳細描述,但對本領(lǐng)域的技術(shù)人員來說,在特定的程序流程中做許多修改而不改變它的功能和內(nèi)容是完全容易做到的。因此,在權(quán)利要求書中所描述的和想要得到專利保護的內(nèi)容只是以一種說明的方式而不是以一種限制的方式提出來的。
權(quán)利要求
1.在多任務(wù)計算機系統(tǒng)中,控制執(zhí)行計算機的隨機變化的一組一個或多個重復(fù)的、硬的、實時完成截止時間關(guān)鍵的計算機任務(wù)的方法,其特點在于包括以下步驟在上述的計算機系統(tǒng)中裝入需要啟動的一個或更多上述任務(wù);建立排序的任務(wù)執(zhí)行優(yōu)先級隊列,根據(jù)上述任務(wù)需要的完成截止時間,該隊列對應(yīng)所有上述任務(wù)均具有一條登記項,上述這些登記項依據(jù)上述任務(wù)的完成截止時間按優(yōu)先級排序;具有最早的上述完成截止時間的所述任務(wù)具有最高優(yōu)先級;從上述隊列中被發(fā)現(xiàn)準備開始執(zhí)行的上述具有最高優(yōu)先級的登記項開始,執(zhí)行上述任務(wù)。
2.根據(jù)權(quán)利要求1的方法,其特征在于下列步驟當上述隊列中的一條登記項的執(zhí)行完成時,在該隊列的登記項要重新排序。
3.根據(jù)權(quán)利要求1的方法,其特征在于下列步驟當一個登記項執(zhí)行完成時,就從上述隊列中移動該登記項;并且插入該登記項在上述隊列的某個位置上,對應(yīng)于新的完成截止時間等于上述循環(huán)任務(wù)的完成截止時間周期。
4.根據(jù)權(quán)利要求2的方法,其特征在于下列步驟當一個登記項完成執(zhí)行時,從上述隊列中移走它;并且插入該登記項在上述隊列的某個位置上,對應(yīng)于新的完成截止時間等于上述循環(huán)任務(wù)的完成截止時間周期。
5.根據(jù)權(quán)利要求1的方法,其特征在于下列步驟對具有相同完成截止時間的上述任務(wù)排序,根據(jù)對應(yīng)于上述登記項的任務(wù)的開始時間,上述開始時間最早的在具有相同完成截止時間的上述登記項中是最高優(yōu)先級的登記項。
6.根據(jù)權(quán)利要求2的方法,其特征在于下列步驟對具有相等完成截止時間的上述任務(wù)排序,根據(jù)對應(yīng)于上述登記項的任務(wù)和開始時間,上述開始時間最早的在具有相同完成截止時間的上述登記項中是最高優(yōu)先級的登記項。
7.根據(jù)權(quán)利要求3的方法,其特征在于下列步驟對具有相等完成截止時間的上述任務(wù)排序,根據(jù)對應(yīng)于上述登記項的任務(wù)和開始時間,上述開始時間最早的在具有相同完成截止時間的上述登記項中是最高優(yōu)先級的登記項。
8.根據(jù)權(quán)利要求1的方法,其特征在于下列步驟對應(yīng)于至少一個不同時間的,非實時循環(huán)任務(wù),插入一最低優(yōu)先級登記項在上述隊列中。
9.根據(jù)權(quán)利要求2的方法,其特征在于下列步驟插入一最低優(yōu)先級登記項在上述隊列中,對應(yīng)于至少一個時間不同的,非實時循環(huán)任務(wù)。
10.根據(jù)權(quán)利要求3的方法,其特征在于包括下列步驟插入一最低優(yōu)先級登記項在上述隊列中,對應(yīng)于至少一個時間不同的,非實時循環(huán)任務(wù)。
11.根據(jù)權(quán)利要求4的方法,其特征在于下列步驟插入一最低優(yōu)先級登記項在上述隊列中,對應(yīng)于至少一個時間不同的,非實時循環(huán)任務(wù)。
12.根據(jù)權(quán)利要求5的方法,其特征在于下列步驟插入一最低優(yōu)先級登記項在上述隊列中,對應(yīng)于至少一個時間不同的,非實時循環(huán)任務(wù)。
13.根據(jù)權(quán)利要求1-12中任何一種的控制計算機中執(zhí)行的方法,其特征在于包括下列步驟建立另一個上述的排序的登記項隊列,該登記項對應(yīng)于已完成的上述執(zhí)行任務(wù),這些任務(wù)正等待它的下一次循環(huán)執(zhí)行的開始時間,這個隊列是以優(yōu)先級排序,最高優(yōu)先級指定給上述開始時間最早的登記項。
14.根據(jù)權(quán)利要求1-12中任何一種的控制計算機中執(zhí)行的方法,其特征在于包括下列步驟在上述隊列中的每個上述任務(wù)都包括具有與上述相對應(yīng)的上述截止時間相等的執(zhí)行完成截止時間的所有上述任務(wù)。
15.權(quán)利要求14的方法,其特征在于包括下列步驟建立另一個上述的排序的登記項隊列,該登記項對應(yīng)完成的上述執(zhí)行任務(wù),這些任務(wù)正等待它們的下一循環(huán)執(zhí)行的開始時間,這個隊列是以優(yōu)先級排序,最高優(yōu)先級指定給上述開始時間最早的登記項。
16.在多項任務(wù)計算機系統(tǒng)中,周期重復(fù)的硬的實時完成截止時間任務(wù)和各不相同的隨機組合在計算機中控制執(zhí)行所用的操作系統(tǒng),其特征在于包括根據(jù)所有上述任務(wù)所需要的任務(wù)執(zhí)行完成截止時間建立排序的任務(wù)執(zhí)行優(yōu)先級隊列的裝置,在該隊列中具有最高優(yōu)先級的上述登記項對應(yīng)于最早的上述任務(wù)執(zhí)行完成截止時間;掃描上述隊列以便找到具有最高優(yōu)先級的上述登記項的裝置,上述登記項具有被確定為準備開始執(zhí)行的任務(wù);以及導(dǎo)致確定為準備執(zhí)行的任何上述任務(wù)開始執(zhí)行的裝置。
17.權(quán)利要求16的系統(tǒng),其特征在于包括當上述隊列中的登記項執(zhí)行完成時,重新排序該隊列中的登記項的裝置。
18.權(quán)利要求16的系統(tǒng),其特征在于包括一旦一個登記項執(zhí)行完成,即從上述隊列中移走上述登記項的裝置,以及重新將上述登記項插入到上述隊列中的某個位置的裝置,其對應(yīng)著等于上述循環(huán)任務(wù)和完成截止時間周期的新的完成截止時間。
19.權(quán)利要求17的系統(tǒng),其特征在于包括一旦一個登記項執(zhí)行完成,即從上述隊列中移走上述登記項的裝置,以及重新將上述登記項插入到上述隊列中的某個位置的裝置,其對應(yīng)著等于上述循環(huán)任務(wù)和完成截止時間周期的新的完成截止時間。
20.權(quán)利要求16的系統(tǒng),其特征在于包括根據(jù)上述任務(wù)的開始時間,對具有相等完成截止時間的上述登記項,對應(yīng)于上述登記項排序的裝置,具有最早開始時間的登記項在上述具有相等完成截止時間的登記項中是具有最高優(yōu)先級的登記項。
21.權(quán)利要求17的系統(tǒng),其特征在于包括根據(jù)上述任務(wù)的開始時間,對具有相等完成截止時間的上述登記項,對應(yīng)于上述登記項排序的裝置,具有最早開始時間的登記項在上述具有相等完成截止時間的登記項中是具有最高優(yōu)先級的登記項。
22.權(quán)利要求18的系統(tǒng),其特征在于包括根據(jù)上述任務(wù)的開始時間,對具有相等完成截止時間的上述登記項,對應(yīng)于上述登記項排序的裝置,具有最早開始時間的登記項在上述具有相等完成截止時間的登記項中是具有最高優(yōu)先級的登記項。
23.權(quán)利要求16的系統(tǒng),其特征在于包括對應(yīng)于至少一個時間不同的、非實時循環(huán)任務(wù),將一最低優(yōu)先級登記項插入在上述隊列中的裝置。
24.權(quán)利要求17的系統(tǒng),其特征在于包括對應(yīng)于至少一個時間不同的、非實時循環(huán)任務(wù),將一最低優(yōu)先級登記項插入在上述隊列中的裝置。
25.權(quán)利要求18的系統(tǒng),其特征在于包括對應(yīng)于至少一個時間不同的、非實時循環(huán)任務(wù),將一最低優(yōu)先級登記項插入在上述隊列中的裝置。
26.權(quán)利要求19的系統(tǒng),其特征在于包括對應(yīng)于至少一個時間不同的、非實時循環(huán)任務(wù),將一最低優(yōu)先級登記項插入在上述隊列中的裝置。
27.權(quán)利要求20的系統(tǒng),其特征在于包括對應(yīng)于至少一個時間不同的、非實時循環(huán)任務(wù),將一最低優(yōu)先級登記項插入在上述隊列中的裝置。
28.根據(jù)權(quán)利要求16-27中任何一個在計算機中用于控制執(zhí)行的系統(tǒng),其特征在于包括建立另一個上述排序的登記項隊列的裝置,這些登記項對應(yīng)于完成的上述執(zhí)行任務(wù),當上述任務(wù)在等待它們的下一個循環(huán)執(zhí)行開始時間,該隊列按最早發(fā)生的上述開始時間具有最高優(yōu)先級進行排序。
29.根據(jù)權(quán)利要求16-27中任何一個在計算機中用于控制執(zhí)行的系統(tǒng),其特征在于包括在上述隊列中的每一條上述登記項包括具有與該登記項對應(yīng)的上述截止時間相等的執(zhí)行完成截止時間的所有上述任務(wù)。
30.根據(jù)權(quán)利要求29的系統(tǒng),其特征在于包括建立另一個上述排序的登記項隊列的裝置,這些登記項對應(yīng)于完成的上述執(zhí)行任務(wù),這些任務(wù)在等待它們的下一個循環(huán)執(zhí)行開始時間,該隊列按最早發(fā)生的上述開始時間具有最高優(yōu)先級進行排序。
全文摘要
一種調(diào)度執(zhí)行多媒體計算機系統(tǒng)中遇到的周期循環(huán)硬的、實時任務(wù)隨機組合的操作系統(tǒng),這在多任務(wù)計算機工作環(huán)境是有用的。具有相當短的執(zhí)行周期的循環(huán)出現(xiàn)的計算機任務(wù)可以被有效地進行調(diào)度,減少了處理器資源,其方法是將所有活動的循環(huán)任務(wù)都放到執(zhí)行隊列中,每當一給定任務(wù)執(zhí)行完,就對隊列中任務(wù)的執(zhí)行順序重新排列,如果用調(diào)度任務(wù)時處理器所消耗的任務(wù)調(diào)度額外開銷的減少量來衡量的話,本發(fā)明與先有技術(shù)相比,改善了50—100%。
文檔編號G06F9/48GK1075021SQ9211498
公開日1993年8月4日 申請日期1992年12月26日 優(yōu)先權(quán)日1992年1月31日
發(fā)明者唐納德·E·卡蒙 申請人:國際商業(yè)機器公司