專利名稱:實(shí)施由一個(gè)實(shí)時(shí)操作系統(tǒng)控制的實(shí)時(shí)計(jì)算機(jī)系統(tǒng)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是一種實(shí)施由一個(gè)實(shí)時(shí)操作系統(tǒng)控制的實(shí)時(shí)計(jì)算機(jī)系統(tǒng)的方法,該實(shí)時(shí)計(jì)算機(jī)系統(tǒng)處理一個(gè)技術(shù)進(jìn)程的中斷信號(hào)。
這樣的方法用于例如在公用和專用網(wǎng)絡(luò)的遠(yuǎn)程通信組件中使用的實(shí)時(shí)計(jì)算機(jī)系統(tǒng)。一個(gè)實(shí)時(shí)計(jì)算機(jī)系統(tǒng)的特征是,可以在一個(gè)已知限制的時(shí)間區(qū)間內(nèi)中斷一個(gè)程序-例如作為對(duì)一個(gè)中斷信號(hào)反應(yīng)而激活的程序-的處理,使得對(duì)該程序的繼續(xù)處理僅在具有更高優(yōu)先級(jí)的程序處理完才可能。當(dāng)在遠(yuǎn)程通信組件中處理一個(gè)程序時(shí),每秒鐘可能發(fā)生例如大約到50000個(gè)中斷信號(hào),它們每次都中斷一個(gè)正在被處理的程序,并且要求對(duì)中斷信號(hào)做出反應(yīng)。
已知的實(shí)時(shí)計(jì)算機(jī)系統(tǒng)在一個(gè)規(guī)定的時(shí)間段內(nèi)禁止接收另外的中斷信號(hào),以致不再考慮在該時(shí)間段到來(lái)的中斷信號(hào),因此可能丟失信息。后面把該時(shí)間段稱為中斷禁止時(shí)間。中斷禁止時(shí)間是需要的,以便微處理器能夠通過(guò)處理一個(gè)中斷子例程保護(hù)其寄存器,至少部分地對(duì)中斷信號(hào)作出反應(yīng),并且最后重新更新寄存器,以便能夠繼續(xù)運(yùn)行中斷的程序。中斷禁止時(shí)間越長(zhǎng),不考慮到來(lái)的中斷信號(hào)越多。若有一個(gè)改進(jìn)了的實(shí)施實(shí)時(shí)計(jì)算機(jī)系統(tǒng)的方法,使中斷禁止時(shí)間縮短,那么這種方法將具有很大優(yōu)越性。
因此本發(fā)明的任務(wù)是開(kāi)發(fā)一個(gè)實(shí)時(shí)操作系統(tǒng)部件,它允許在每一時(shí)間單元采集盡可能大數(shù)目出現(xiàn)的中斷信號(hào),并作出反應(yīng)。
該任務(wù)通過(guò)下述處理步驟而解決在一個(gè)中斷信號(hào)出現(xiàn)時(shí)。實(shí)時(shí)計(jì)算機(jī)系統(tǒng)中斷一個(gè)正在處理的程序;禁止接收其它的中斷信號(hào)并調(diào)用一個(gè)屬于該中斷信號(hào)的中斷子例程;在處理該中斷子例程時(shí)臨時(shí)存儲(chǔ)在中斷信號(hào)出現(xiàn)時(shí)被中斷程序的第一部分程序參量;在一個(gè)中斷存儲(chǔ)器中至少存儲(chǔ)一個(gè)關(guān)于該中斷信號(hào)的數(shù)據(jù);從中斷子例程轉(zhuǎn)向一個(gè)中斷管理子例程,在這種情況下在處理中斷管理子例程時(shí)重新開(kāi)放對(duì)其它中斷信號(hào)的接收;在處理完中斷管理子例程后清除在中斷存儲(chǔ)器中屬于中斷信號(hào)的數(shù)據(jù);臨時(shí)存儲(chǔ)中斷信號(hào)出現(xiàn)時(shí)被中斷程序的剩余部分程序參量;根據(jù)中斷存儲(chǔ)器中關(guān)于中斷信號(hào)的數(shù)據(jù)至少激活一個(gè)屬于該中斷信號(hào)的反應(yīng)子例程并在可能的情況下接入該實(shí)時(shí)操作系統(tǒng)下處理;在處理完中斷管理子例程后實(shí)時(shí)操作系統(tǒng)使用臨時(shí)存儲(chǔ)的程序參量返回中斷信號(hào)出現(xiàn)時(shí)被中斷的程序。
本發(fā)明的出發(fā)點(diǎn)是考慮為能夠處理盡可能多的中斷信號(hào)而縮短中斷禁止時(shí)間。如果把到目前為止必需的指令執(zhí)行過(guò)程-它們?cè)谝阎姆椒ㄖ新淙胫袛嘟箷r(shí)間內(nèi)-從一個(gè)中斷子例程轉(zhuǎn)移出去,就可以縮短中斷禁止時(shí)間。本發(fā)明為屬于單個(gè)中斷子例程的反應(yīng)子例程設(shè)計(jì)一個(gè)中斷管理子例程,每一個(gè)為處理中斷信號(hào)的動(dòng)作都由該所屬中斷子例程移到該中斷管理子例程,這些動(dòng)作在中斷信號(hào)出現(xiàn)時(shí)不必?zé)o條件地立即執(zhí)行。屬于這種動(dòng)作的例如有保存微處理器存儲(chǔ)器部分?jǐn)?shù)據(jù),大部分到現(xiàn)在為止在中斷子例程中執(zhí)行的對(duì)中斷信號(hào)的反應(yīng)步驟和恢復(fù)在中斷信號(hào)出現(xiàn)時(shí)不必立刻保存的微處理器寄存器的那一部分?jǐn)?shù)據(jù)。
下面把在中斷信號(hào)出現(xiàn)時(shí)必須保存的那部分微處理器寄存器數(shù)據(jù)稱為中斷信號(hào)出現(xiàn)時(shí)被中斷程序的程序參量的第一部分(上下文(Kontext)I),它可以例如是該微處理器的標(biāo)志寄存器的內(nèi)容。剩下的要保存的數(shù)據(jù)稱為中斷信號(hào)出現(xiàn)時(shí)被中斷程序的程序參量的剩余部分(上下文II和III)。
因?yàn)樵谔幚碇袛喙芾碜永虝r(shí)重新開(kāi)放接收另外的中斷信號(hào),相對(duì)于已知的方法來(lái)說(shuō)顯著縮短了中斷禁止時(shí)間,因此僅丟失較少的中斷信號(hào)以及在中斷信號(hào)出現(xiàn)時(shí)僅在短時(shí)期內(nèi)可用的數(shù)據(jù)。
按照本發(fā)明的方法的一個(gè)優(yōu)選的實(shí)施例在于,在中斷管理子例程開(kāi)始處恢復(fù)接收其它中斷信號(hào)。通過(guò)盡早開(kāi)放接收其它的中斷信號(hào)達(dá)到,中斷禁止時(shí)間僅由一個(gè)絕對(duì)必需的時(shí)間區(qū)間確定,因此最大地縮短。
本發(fā)明的一個(gè)優(yōu)選的改進(jìn)在于,在中斷信號(hào)出現(xiàn)時(shí)被中斷程序的程序參量的剩余部分(上下文II)部分暫存在一個(gè)為程序參量分配給被中斷程序的第一堆棧存儲(chǔ)器中,而部分暫存在一個(gè)為程序參量(上下文III)分配給中斷管理子例程的第二堆棧存儲(chǔ)器中。通過(guò)這種辦法達(dá)到節(jié)省存儲(chǔ)空間,因?yàn)樵诘诙褩4鎯?chǔ)器中存儲(chǔ)的程序參量不必另外為每一個(gè)被中斷程序存儲(chǔ)。
下面根據(jù)附圖敘述具有幾種適當(dāng)安排的本發(fā)明的一個(gè)實(shí)施例,其中
圖1表示在一個(gè)中斷信號(hào)出現(xiàn)時(shí)處理步驟的流程圖;和圖2a、2b、2c表示在處理中斷管理子例程的框架中執(zhí)行的處理步驟的流程圖。
附圖中,用雙箭頭表示禁止接收中斷信號(hào)的處理步驟。與此相對(duì),單箭頭表示開(kāi)放接收另外的中斷信號(hào)的處理步驟。
圖1表示一個(gè)中斷信號(hào)出現(xiàn)時(shí)(步驟10)按照本發(fā)明的處理步驟的流程圖。在中斷信號(hào)出現(xiàn)時(shí)立刻由實(shí)時(shí)計(jì)算機(jī)系統(tǒng)禁止接收其它的中斷信號(hào)。為使微處理器能在晚些時(shí)刻繼續(xù)處理由中斷信號(hào)中斷了的程序,必須在執(zhí)行處理出現(xiàn)的中斷信號(hào)的步驟之前存儲(chǔ)其寄存器的狀態(tài)。如同已經(jīng)說(shuō)明的,在中斷信號(hào)出現(xiàn)后必須立刻存儲(chǔ)或保存(retten)的那部分被中斷程序的程序參量表示為上下文I。這種保存是在一個(gè)中斷禁止生效后實(shí)行的(步驟12),這樣,程序參量以預(yù)先給定的順序存儲(chǔ)在一個(gè)堆棧存儲(chǔ)器中。
在微處理器保存寄存器數(shù)據(jù)后現(xiàn)在重新允許改變寄存器內(nèi)容時(shí),它就能夠?qū)?lái)自實(shí)時(shí)計(jì)算機(jī)系統(tǒng)的其它組成部分,例如中斷接收的電路的中斷信號(hào)進(jìn)行確認(rèn)了(步驟14)。處理步驟12到14在已知的方法中在中斷子例程內(nèi)執(zhí)行,因此在這里也應(yīng)該視為一個(gè)中斷子例程的組成部分。
為能夠在晚些時(shí)候處理中斷信號(hào),微處理器在一個(gè)中斷存儲(chǔ)器中存儲(chǔ)一個(gè)指向該中斷信號(hào)的數(shù)據(jù)(步驟16)。這個(gè)中斷存儲(chǔ)器可以例如是一個(gè)指向聯(lián)合為一個(gè)存儲(chǔ)器字的多位存儲(chǔ)器單元,其中根據(jù)出現(xiàn)的中斷信號(hào)的類型將一個(gè)確定的位置位,以便后來(lái)可以確定出現(xiàn)過(guò)哪一個(gè)中斷信號(hào)。后面說(shuō)明這種可能性。
微處理器接著檢驗(yàn)在中斷信號(hào)出現(xiàn)的時(shí)刻實(shí)時(shí)計(jì)算機(jī)系統(tǒng)是否在處理時(shí)間緊要因而是不允許中斷的程序子例程(步驟18)。這種不可中斷的程序的數(shù)目由微處理器存儲(chǔ)在一個(gè)存儲(chǔ)單元中,例如一個(gè)帶規(guī)定起始值的封鎖計(jì)數(shù)器中。該封鎖計(jì)數(shù)器在每次調(diào)用一個(gè)不可中斷程序時(shí)升值,并在處理完一個(gè)不可中斷程序后相應(yīng)降低。因此微處理器能夠在處理步驟18時(shí)確定,是否在當(dāng)前時(shí)刻在處理一個(gè)不可中斷程序。如果不是這樣,也就是說(shuō)封鎖計(jì)數(shù)器的存儲(chǔ)單元中存有規(guī)定的起始值,則微處理器通過(guò)詢問(wèn)一個(gè)存儲(chǔ)中斷管理子例程的狀態(tài)的狀態(tài)存儲(chǔ)器單元檢驗(yàn),是否已經(jīng)激活一個(gè)中斷管理子例程(IVR)(步驟20)。如果中斷管理子例程未激活,則調(diào)用它(步驟22)。下面根據(jù)圖2a、2b、2c繼續(xù)說(shuō)明在中斷管理子例程中要執(zhí)行的處理步驟。
如果在處理步驟18時(shí)確定,封鎖計(jì)數(shù)器的內(nèi)容偏離它的起始值,因此激活了一個(gè)不可中斷程序子例程,或者在處理步驟20時(shí)根據(jù)狀態(tài)存儲(chǔ)器單元確定,中斷管理子例程已經(jīng)激活,則向中斷子例程跳轉(zhuǎn)(步驟24)。在中斷子例程中,通過(guò)從堆棧寄存器中以逆存儲(chǔ)順序重新讀出處理器寄存器需要的數(shù)據(jù)(步驟26),恢復(fù)上下文I。之后開(kāi)放接收其它的中斷信號(hào),并且返回到中斷出現(xiàn)時(shí)被中斷的程序,以便繼續(xù)處理它(步驟28)。
圖1中所有的處理步驟直到最后的處理步驟28在中斷封鎖生效下都被執(zhí)行,所以到目前為止在中斷禁止時(shí)間方面與現(xiàn)有技術(shù)狀態(tài)相比尚未有任何重要的優(yōu)點(diǎn)出現(xiàn)。中斷禁止時(shí)間的節(jié)省僅在根據(jù)圖2a、2b、2c的處理步驟下才明顯,因?yàn)樵谀抢镲@示的處理流圖中大部分處理步驟是在開(kāi)放接收其它的中斷信號(hào)下執(zhí)行的。
圖2a、2b和2c表示中斷管理子例程的處理步驟的流程圖。在中斷管理子例程在處理步驟22被調(diào)用之后,微處理器開(kāi)始處理中斷管理子例程的處理步驟(步驟40)。
之后,狀態(tài)存儲(chǔ)器單元置位(步驟42)。以此可以在其它的中斷信號(hào)出現(xiàn)時(shí)在處理步驟20確定,中斷管理子例程是否已經(jīng)激活,因?yàn)樗诹鞒陶?zhí)行時(shí)只可以激活一次。
為使中斷禁止時(shí)間相對(duì)于已知的方法最大可能地縮短,立刻開(kāi)放接收其它的中斷禁止信號(hào)(步驟44)。于是在處理完處理步驟44以后能夠接收其它的中斷信號(hào)并處理。這些其它的中斷信號(hào)由微處理器在處理步驟16作為數(shù)據(jù)以置位的形式在中斷存儲(chǔ)器登錄。在中斷管理子例程中接著繼續(xù)處理其它的處理步驟時(shí)能夠顧及到這些另外的中斷信號(hào)。
在中斷信號(hào)出現(xiàn)時(shí)被中斷程序尚未作為上下文I在處理步驟12保存的那些程序參量將分為兩組。一組由程序參量建立,其保存即臨時(shí)存儲(chǔ)在一個(gè)為程序參量分配給被中斷程序的堆棧寄存器中,這一程序參量組下面稱為上下文II。另外的剩余程序參量組臨時(shí)存儲(chǔ)在一個(gè)為程序參量分配給中斷管理子例程的堆棧寄存器中,下面稱為上下文III。
通過(guò)這種對(duì)剩余的程序參量的劃分能夠顯著節(jié)省存儲(chǔ)器空間,因?yàn)樯舷挛腎II不必每次在被中斷程序的堆棧存儲(chǔ)器中存儲(chǔ),而僅在中斷管理子例程的堆棧存儲(chǔ)器中臨時(shí)存儲(chǔ)。
如同已經(jīng)提到的,上下文II保存在一個(gè)分配給被中斷程序的堆棧存儲(chǔ)器中(步驟46)。然后中斷管理子例程的堆棧存儲(chǔ)器激活(步驟48)并接著把上下文III保存在該堆棧存儲(chǔ)器中(步驟50)。通過(guò)存儲(chǔ)程序參量,可以在后來(lái)繼續(xù)在中斷信號(hào)出現(xiàn)時(shí)被中斷的程序。接著在步驟52復(fù)位中斷存儲(chǔ)器中分配給中斷信號(hào)的位,它們是在中斷信號(hào)出現(xiàn)時(shí)在處理步驟16置位的。由此可以重新接收和利用由中斷管理子例程正在處理的同一中斷信號(hào)。
現(xiàn)在在所有為處理中斷信號(hào)而調(diào)用一個(gè)子例程的準(zhǔn)備工作結(jié)束后,調(diào)用相應(yīng)于該中斷信號(hào)的處理子例程(步驟54)。在處理處理子例程期間已能接收已經(jīng)在處理步驟16中通過(guò)將中斷存儲(chǔ)器中相應(yīng)的位置位而進(jìn)行標(biāo)記的其它的中斷信號(hào)。中斷存儲(chǔ)器在處理完處理子例程后在處理步驟54由微處理器詢問(wèn)置位的位(步驟56)。如果中斷存儲(chǔ)器中這些位已置位,則流程在處理步驟52繼續(xù)。因此流程處在一個(gè)由處理步驟52到56構(gòu)成的一個(gè)循環(huán)中。在處理該處理循環(huán)時(shí),可以接收通過(guò)中斷管理子例程的存儲(chǔ)器發(fā)出信號(hào)并且在處理步驟56詢問(wèn)時(shí)顧及到的另外的中斷信號(hào)。由于中斷信號(hào)的處理相對(duì)于已知的方法是在允許進(jìn)行中斷情況下進(jìn)行的,因此可以顯著縮短中斷封鎖時(shí)間。
在處理步驟56詢問(wèn)中斷存儲(chǔ)器中置位的位時(shí)考慮被接收的中斷信號(hào)的優(yōu)先級(jí)是有利的。這樣可以相應(yīng)于在中斷存儲(chǔ)器的存儲(chǔ)器字中的優(yōu)先次序,例如每次從右向左,詢問(wèn)中斷存儲(chǔ)器的單個(gè)位,由此確定單個(gè)位的優(yōu)先級(jí),其從右向左接收在存儲(chǔ)器字中。
當(dāng)中斷存儲(chǔ)器中所有置位的位復(fù)位(參照處理步驟52)和相應(yīng)的處理子例程處理完(參照處理步驟54)后,流程以在圖2b中的處理步驟繼續(xù)。接著,通過(guò)從分配給中斷管理子例程的堆棧存儲(chǔ)器中按照與存儲(chǔ)時(shí)的反順序重新讀出上下文III,恢復(fù)上下文III(步驟58)。
為調(diào)用中斷管理子例程,有兩種不同的可能。第一種已經(jīng)敘述的可能是根據(jù)處理步驟22的調(diào)用。在這種情況下,對(duì)步驟24到28不做處理。作為第二種可能,如果在中斷信號(hào)出現(xiàn)時(shí)正在處理不可中斷程序并由此封鎖計(jì)數(shù)器在處理步驟18置位,則通過(guò)實(shí)時(shí)操作系統(tǒng)調(diào)用中斷管理子例程。像上面已經(jīng)敘述的那樣,處理步驟24到28在調(diào)用中斷管理子例程之前由實(shí)時(shí)操作系統(tǒng)執(zhí)行,因此不會(huì)在中斷管理子例程內(nèi)再次執(zhí)行。
可以以下述方式由實(shí)時(shí)操作系統(tǒng)調(diào)用中斷管理子例程在處理完一個(gè)不可中斷程序和在降低了封鎖計(jì)數(shù)器后,檢驗(yàn)封鎖計(jì)數(shù)器是否有起始值和在中斷存儲(chǔ)器中是否至少有一個(gè)分配給中斷信號(hào)的位置位。如果這兩個(gè)條件滿足,則調(diào)用中斷管理子例程。
為能夠區(qū)別這兩種可能并做相應(yīng)處理,可以在處理步驟58恢復(fù)上下文Ⅲ之后,激活一個(gè)分配給中斷管理子例程的程序堆棧存儲(chǔ)器,同時(shí)將被中斷程序的堆棧存儲(chǔ)器的地址加載到微處理器的堆棧寄存器,(步驟60)。程序管理子例程是實(shí)時(shí)操作系統(tǒng)的組成部分,并通過(guò)標(biāo)記要處理的程序和以一個(gè)預(yù)先給定的順序起動(dòng)它的處理來(lái)協(xié)調(diào)程序處理。
之后提升封鎖計(jì)數(shù)器的值(步驟62),因?yàn)楹罄m(xù)的處理步驟64和66不能中斷。接著,例如通過(guò)將狀態(tài)寄存器單元置零表明中斷管理子例程不在激活狀態(tài)(步驟64),以便能夠再次處理該中斷管理子例程。
之后調(diào)用程序管理子例程(步驟66),它可能啟動(dòng)一個(gè)另外的程序。程序結(jié)束后,程序管理子例程返回中斷管理子例程并封鎖接收其它的中斷信號(hào)(步驟68)。
因?yàn)樵谔幚硖幚聿襟E56到68期間可以接收在處理步驟16將中斷存儲(chǔ)器中分配的位置位的那些中斷信號(hào),因此在處理完中斷管理子例程后離開(kāi)之前再次詢問(wèn),是否在中斷存儲(chǔ)器中還有置位的位(步驟70)。如果是,則不離開(kāi)中斷管理子例程,而通過(guò)相應(yīng)的狀態(tài)存儲(chǔ)器單元重新置為動(dòng)作狀態(tài)(步驟72),并重新開(kāi)放接收其它的中斷信號(hào)(步驟74)。然后流程在處理步驟48繼續(xù)。中斷管理子例程現(xiàn)在處于由處理步驟48到74組成的另一工作循環(huán)中。這一工作循環(huán)只能當(dāng)中斷存儲(chǔ)器中的所有位已經(jīng)復(fù)位后在處理步驟70離開(kāi)。在這種情況下,通過(guò)將封鎖計(jì)數(shù)器的值相應(yīng)降低而復(fù)位封鎖計(jì)數(shù)器(步驟76)。
接著,通過(guò)換接到中斷信號(hào)出現(xiàn)時(shí)被中斷程序的堆棧存儲(chǔ)器并以與存儲(chǔ)相反的順序讀出那里存儲(chǔ)的程序參量而恢復(fù)上下文II(步驟78)。
在步驟80,返回中斷子例程,在其中恢復(fù)上下文I(步驟82)。接著返回中斷信號(hào)出現(xiàn)時(shí)被中斷的程序(步驟84)。以此結(jié)束中斷管理子例程。
權(quán)利要求
1.實(shí)施一個(gè)由實(shí)時(shí)操作系統(tǒng)控制的實(shí)時(shí)計(jì)算機(jī)系統(tǒng)的方法,它處理一個(gè)技術(shù)進(jìn)程的中斷信號(hào),其中執(zhí)行下述步驟-在中斷信號(hào)出現(xiàn)時(shí)該實(shí)時(shí)計(jì)算機(jī)系統(tǒng)中斷一個(gè)正在處理的程序,禁止接收其它的中斷信號(hào),并調(diào)用一個(gè)屬于該中斷信號(hào)的中斷子例程,-在處理該中斷子例程時(shí)臨時(shí)存儲(chǔ)中斷信號(hào)出現(xiàn)時(shí)被中斷程序的程序參量的第一部分(上下文I),-在一個(gè)中斷存儲(chǔ)器中至少存儲(chǔ)一個(gè)有關(guān)該中斷信號(hào)的數(shù)據(jù),-從該中斷子例程向一個(gè)中斷管理子例程分支,-在處理中斷管理子例程時(shí)開(kāi)放接收其它的中斷信號(hào),-在處理中斷管理子例程時(shí)清除中斷存儲(chǔ)器中屬于該中斷信號(hào)的數(shù)據(jù),-臨時(shí)存儲(chǔ)中斷信號(hào)出現(xiàn)時(shí)被中斷程序的程序參量的剩余部分(上下文II和III),-根據(jù)在中斷存儲(chǔ)器中關(guān)于中斷信號(hào)的數(shù)據(jù),至少激活一個(gè)屬于該中斷信號(hào)的反應(yīng)子例程并在可能的情況下由實(shí)時(shí)操作系統(tǒng)處理,-在處理完中斷管理子例程后實(shí)時(shí)操作系統(tǒng)使用臨時(shí)存儲(chǔ)的程序參量(上下文I到III)返回到中斷信號(hào)出現(xiàn)時(shí)被中斷的程序。
2.根據(jù)權(quán)利要求1的方法,其特征在于,在中斷管理子例程開(kāi)始時(shí)開(kāi)放接收其它中斷信號(hào)。
3.根據(jù)權(quán)利要求1或2中任何一個(gè)權(quán)利要求的方法,其特征在于,程序參量的第一部分(上下文I)包括在一個(gè)由實(shí)時(shí)操作系統(tǒng)控制的微處理器被中斷時(shí)刻的處理器寄存器的內(nèi)容。
4.根據(jù)權(quán)利要求1到3中任何一個(gè)權(quán)利要求的方法,其特征在于,在處理中斷管理子例程時(shí)臨時(shí)存儲(chǔ)的程序參量的剩余部分(上下文II和III)包括關(guān)于中斷信號(hào)出現(xiàn)時(shí)被中斷程序的狀態(tài)信息以及在晚些時(shí)候繼續(xù)恢復(fù)被中斷程序必須的信息。
5.根據(jù)權(quán)利要求1到4的方法,其特征在于,中斷信號(hào)出現(xiàn)時(shí)被中斷程序的程序參量的剩余部份(上下文II和III)部分臨時(shí)存儲(chǔ)在一個(gè)分配給被中斷程序用于存儲(chǔ)程序參量(上下文II)的第一堆棧存儲(chǔ)器中,部分臨時(shí)存儲(chǔ)在一個(gè)分配給中斷管理子例程為存儲(chǔ)程序參量(上下文III)的第二堆棧存儲(chǔ)器中。
6.根據(jù)權(quán)利要求1到5中任何一個(gè)權(quán)利要求的方法,其特征在于,在多個(gè)依次出現(xiàn)的中斷信號(hào)的場(chǎng)合,關(guān)于這些中斷信號(hào)的數(shù)據(jù)存儲(chǔ)在中斷存儲(chǔ)器中。
7.根據(jù)權(quán)利要求6的方法,其特征在于,有關(guān)出現(xiàn)的中斷信號(hào)的數(shù)據(jù)按照一個(gè)預(yù)先規(guī)定的順序存儲(chǔ),以及中斷管理子例程根據(jù)這個(gè)順序處理中斷信號(hào)。
8.根據(jù)權(quán)利要求1到7中任何一個(gè)權(quán)利要求的方法,其特征在于,在處理中斷管理子例程時(shí)在中斷存儲(chǔ)器中存儲(chǔ)在此期間出現(xiàn)的其它中斷信號(hào)的數(shù)據(jù)以及僅在中斷存儲(chǔ)器中不再存儲(chǔ)有任何關(guān)于中斷信號(hào)的數(shù)據(jù)時(shí),中斷管理子例程才能結(jié)束。
9.根據(jù)前述權(quán)利要求中任何一個(gè)權(quán)利要求的方法,其特征在于,向中斷管理子例程的分支根據(jù)一個(gè)封鎖計(jì)數(shù)器的值進(jìn)行,它計(jì)數(shù)該實(shí)時(shí)操作系統(tǒng)對(duì)不可中斷子例程的調(diào)用。
10.根據(jù)權(quán)利要求9的方法,其特征在于,在每次調(diào)用一個(gè)不可中斷子例程時(shí),封鎖計(jì)數(shù)器的值升高,而在處理完一個(gè)不可中斷子例程后封鎖計(jì)數(shù)器的值相應(yīng)降低。
11.根據(jù)權(quán)利要求9或10的方法,其特征在于,如果封鎖計(jì)數(shù)器中有一個(gè)不是預(yù)先規(guī)定的起始值,或者中斷管理子例程尚未完全處理完畢,則實(shí)時(shí)操作系統(tǒng)使用臨時(shí)存儲(chǔ)的程序參量(上下文I到III)在中斷管理子例程結(jié)束前分支返回到中斷信號(hào)出現(xiàn)時(shí)被中斷的程序。
12.根據(jù)權(quán)利要求9到11中任何一個(gè)權(quán)利要求的方法,其特征在于,僅在封鎖計(jì)數(shù)器具有預(yù)先規(guī)定的起始值和在中斷存儲(chǔ)器中至少存儲(chǔ)有一個(gè)關(guān)于中斷信號(hào)的數(shù)據(jù)時(shí)才向中斷管理子例程分支。
13.根據(jù)權(quán)利要求5到12中任何一個(gè)權(quán)利要求的方法,其特征在于,僅在中斷存儲(chǔ)器中不存儲(chǔ)有任何數(shù)據(jù)時(shí)才恢復(fù)在分配給中斷管理子例程的第二堆棧存儲(chǔ)器中臨時(shí)存儲(chǔ)的程序參量(上下文III)。
14.根據(jù)權(quán)利要求5到13中任何一個(gè)權(quán)利要求的方法,其特征在于,僅在中斷存儲(chǔ)器中不存儲(chǔ)有任何數(shù)據(jù)時(shí)才恢復(fù)在分配給被中斷程序的第一堆棧存儲(chǔ)器中臨時(shí)存儲(chǔ)的程序參量(上下文I和II)。
全文摘要
說(shuō)明一個(gè)實(shí)施由一個(gè)實(shí)時(shí)操作系統(tǒng)控制的計(jì)算機(jī)系統(tǒng)的方法,該計(jì)算機(jī)系統(tǒng)處理中斷信號(hào)。在中斷信號(hào)出現(xiàn)時(shí),計(jì)算機(jī)系統(tǒng)中斷一個(gè)正在處理的程序。封鎖接收另外的中斷信號(hào)并調(diào)用一個(gè)屬于該中斷信號(hào)的中斷子例程。在處理這個(gè)中斷子例程時(shí),臨時(shí)存儲(chǔ)中斷信號(hào)出現(xiàn)時(shí)被中斷的程序的程序參量的第一部分,并且在一個(gè)中斷存儲(chǔ)器中至少存儲(chǔ)一個(gè)關(guān)于中斷信號(hào)的數(shù)據(jù)。從該中斷子例程向一個(gè)中斷管理子例程(IVR)分支,其中在處理IVR時(shí)重新開(kāi)放接收其它的中斷信號(hào)。
文檔編號(hào)G06F13/20GK1155698SQ9611241
公開(kāi)日1997年7月30日 申請(qǐng)日期1996年9月25日 優(yōu)先權(quán)日1995年9月25日
發(fā)明者F·布蘭克, P·施林斯基, B·施特爾, U·韋辛格 申請(qǐng)人:西門子公司