售前電話
135-3656-7657
售前電話 : 135-3656-7657
調(diào)度事件處理的操作如下:
•事件計(jì)數(shù)器減1。某一等待調(diào)度的事件處理即將執(zhí)行,故事件計(jì)數(shù)器的內(nèi)容應(yīng)減
•預(yù)置正常執(zhí)行時(shí)限計(jì)數(shù)器。正常執(zhí)行時(shí)限計(jì)數(shù)器的值置成對(duì)應(yīng)于該事件處理的執(zhí)行時(shí)長(zhǎng)的容許值,每當(dāng)時(shí)鐘中斷插入時(shí)計(jì)數(shù)器減1,這樣可以檢查事件處理的執(zhí)行時(shí)長(zhǎng)是否超過(guò)一定限度而陷入異常情況。
•作業(yè)類(lèi)型置成“事件處理運(yùn)行七作業(yè)類(lèi)型反映了當(dāng)前正在執(zhí)行的作業(yè)的類(lèi)型,目前即將調(diào)度事件處理,故應(yīng)置成“事件處理運(yùn)行”:ACTUJOB一TYPE-EVHDL
•事件標(biāo)志表中對(duì)應(yīng)的事件標(biāo)志復(fù)位。
•中斷控制塊指針(ICB-PTR)指向事件處理所用的ICB」CB_PTR總是指向當(dāng)前調(diào)度的程序所用的ICB,以便一旦發(fā)生中斷時(shí)立即可在ICB中保存被中斷的程序的環(huán)境。
•該事件處理在事件標(biāo)志表中的索引號(hào)存入RUN_JOB(運(yùn)行作業(yè))。
•0S_COUNTER一EV_HDLR_DSPTCH(事件處理調(diào)度計(jì)數(shù)器)加lo
•轉(zhuǎn)換中斷屏蔽字。
•調(diào)用PMC_DISPATCH一SSM,設(shè)置SSM堆棧,通過(guò)PMC_DOMAIN-TABLE,可得到相應(yīng)的事件處理的環(huán)境,以實(shí)現(xiàn)該事件處理的調(diào)度。
•事件處理執(zhí)行完畢,恢復(fù)OSN中斷屏蔽字和OSN作業(yè)類(lèi)型,再去檢查事件標(biāo)志表是否還有要調(diào)度的事件處理。
檢查作業(yè)狀態(tài)字
為便于進(jìn)程調(diào)度,設(shè)置了16b的作業(yè)狀態(tài)字(JOBSTATUSWORD-JSW),如圖5?29所示。
前已述及,準(zhǔn)備發(fā)送到進(jìn)程的消息分為8級(jí),編成8個(gè)隊(duì)列,稱(chēng)為就緒隊(duì)列(ReadyQueue)o此外,每一級(jí)還有一個(gè)ICB,用來(lái)在發(fā)生中斷時(shí)保護(hù)被中斷的進(jìn)程的現(xiàn)場(chǎng)環(huán)境。
對(duì)照?qǐng)D5.29,JSW的16個(gè)比特分屬于8級(jí),每級(jí)2個(gè)比特:ICB比特和消息隊(duì)列比特,含義如下:
圖5.29中,每級(jí)的2個(gè)比特是從右到左按級(jí)別次序0?7排列的;而在每一級(jí)中,ICB比特又排在消息隊(duì)列比特的右面。在搜查時(shí),是從右到左依次檢查各個(gè)比特的值;這就保證了前述的進(jìn)程調(diào)度策略的實(shí)現(xiàn)。如果發(fā)現(xiàn)某一級(jí)的ICB比特置位:可用該ICB比特所對(duì)應(yīng)的優(yōu)先級(jí)號(hào)碼查ICB指針表(ICB-PTR-TABL),以得到該ICB的起始地址。ICB指針表有8行,存放有對(duì)應(yīng)于8級(jí)進(jìn)程的ICB的地址。得到ICB的地址后,轉(zhuǎn)到“ICB處理”的入口,以恢復(fù)被中斷的進(jìn)程的執(zhí)行。