关于内核的可剥夺性
扫描二维码
随时随地手机看文章
尽管是可剥夺型内核,不同的可剥夺型内核还有一个在剥夺一个进程处理器使用杈时的 强硬程度的区别。
前面讲过,实时操作系统的内核必须是可剥夺型。为此,系统中的每个进程都必须有一个 表示其紧急程度的优先级别,以使调度器可根据等待进程的优先级别来决定是否要剥夺当前 进程的处理器使用权。其实,这个优先级别只表示了进程有可能获得处理器使用权的大小,至 于调度器在剥夺时的强硬程度是与操作系统启动调度器的时机相关的。
可以想到,随时的、全然不顾的剥夺一定是最强硬的剥夺。那么在哪个时机可以这样做呢?系统时钟中断!在系统中所有进程都具有各自唯一优先级别的基础上,在系统实时时钟中断服务中启动调度器型调度,可使调度器一旦发现待运行进程中有高于当前进程优先级别的进程存在,就会马上剥夺当前进程的处理器使用权。当然,考虑到诸多问题,这样做是不妥当的。
另一个方法是,在系统中的每个进程各自具有一个唯一优先级别的前提下,把调度的时机 选在进程调用系统服务及用户中断服务的末尾,即放在系统服务程序模块和用户中断服务程 序的尾部。这样就可在不破坏系统服务的原子性前提下,实现了较为强硬的可剥夺型内核。
使内核的剥夺行为更为柔和的一种方法是,按进程任务的紧急程度把系统中的进程分为 若干个组,每个组中的进程都具有同一优先级别,并且把组中的进程按先进先出的方式组成一个队列,再给每一个进程都分配一个占用处理器的时间片。系统在进程把分配给自己的时间 片用完之前启动调度器,调度器按照优先级别选择进程队列,在确定了进程队列之后,在队列中按先来先服务的原则再来确定获得处理器使用权进程。显然,这种调度方法虽然也是剥夺型的调度,但是它允许进程把自己的时间片运行完,所以相对来说,这种剥夺行为显得柔和得多。
上面的叙述只是为了说明一个概念,同是剥夺型内核,但是在调度方法不同时,它们的实时性也是不一样的。因此,在设计和选用实时操作系统时,要根据实际应用的情况综合考虑。
例如,对于硬实时应用来说,操作系统内核的剥夺就要强硬一些;反之,就要柔和一些。
必须说明的是,在以进程的优先级别为基础的进程调度中,在具备条件的情况下会产生一种低优先级别的进程先于高优先级别的进程占用处理器的现象,即优先级反转。这种现象是实时系统不能容忍的。