调度事件处理的操作如下:
•事件计数器减1。某一等待调度的事件处理即将执行,故事件计数器的内容应减
•预置正常执行时限计数器。正常执行时限计数器的值置成对应于该事件处理的执行时长的容许值,每当时钟中断插入时计数器减1,这样可以检查事件处理的执行时长是否超过一定限度而陷入异常情况。
•作业类型置成“事件处理运行七作业类型反映了当前正在执行的作业的类型,目前即将调度事件处理,故应置成“事件处理运行”:ACTUJOB一TYPE-EVHDL
•事件标志表中对应的事件标志复位。
•中断控制块指针(ICB-PTR)指向事件处理所用的ICB」CB_PTR总是指向当前调度的程序所用的ICB,以便一旦发生中断时立即可在ICB中保存被中断的程序的环境。
•该事件处理在事件标志表中的索引号存入RUN_JOB(运行作业)。
•0S_COUNTER一EV_HDLR_DSPTCH(事件处理调度计数器)加lo
•转换中断屏蔽字。
•调用PMC_DISPATCH一SSM,设置SSM堆栈,通过PMC_DOMAIN-TABLE,可得到相应的事件处理的环境,以实现该事件处理的调度。
•事件处理执行完毕,恢复OSN中断屏蔽字和OSN作业类型,再去检查事件标志表是否还有要调度的事件处理。
检查作业状态字
为便于进程调度,设置了16b的作业状态字(JOBSTATUSWORD-JSW),如图5・29所示。

前已述及,准备发送到进程的消息分为8级,编成8个队列,称为就绪队列(ReadyQueue)o此外,每一级还有一个ICB,用来在发生中断时保护被中断的进程的现场环境。
对照图5.29,JSW的16个比特分属于8级,每级2个比特:ICB比特和消息队列比特,含义如下:


图5.29中,每级的2个比特是从右到左按级别次序0〜7排列的;而在每一级中,ICB比特又排在消息队列比特的右面。在搜查时,是从右到左依次检查各个比特的值;这就保证了前述的进程调度策略的实现。如果发现某一级的ICB比特置位:可用该ICB比特所对应的优先级号码查ICB指针表(ICB-PTR-TABL),以得到该ICB的起始地址。ICB指针表有8行,存放有对应于8级进程的ICB的地址。得到ICB的地址后,转到“ICB处理”的入口,以恢复被中断的进程的执行。