pkzd之进程设计策略之进程调度
本文主要讨论单处理器上的进程调度算法,在讨论具体的算法之前先假设存在一个具体的操作系统比如pkzd。 假设该系统pkzd并不存在抢占进程调度,然后我们考虑接下来的情况: 假设在内存中同时存在进程p1, p2, p3(此处为了方便不讨论进程换出的情况), p1, p2, p3的运行时间分别为10ms, 100ms, 1000ms, 如果系统依次运行进程,那么平均的等待时间约为40ms, 如果进程达到的顺序为p3, p2, p1,那么平均的等待时间约为370ms。进程的平均等待时间因为进程达到的顺序而存在巨大的差距,更有甚者,如果存在一个进程的运行时间为无穷,那么它将占用所有的cpu时间,这明显是不合理的,所以必须引入一种机制来保证公平调度。注: 非抢占式系统存在很多的调度算法,有的算法能缩小因为进程达到顺序不同而造成的平均等待时间之间的差距,但是有的算法实现并非很简单,比如SJF算法。另外所有的非抢占式系统都无法很好的处理永远不会终止的进程(比如系统中存在很多的死循环)。 单处理器中进程调度所要达到的目标就是让所有的进程公平的分配cpu时间,我们先来讨论其中一种比较古老又简单质朴的办法: RR算法,该算法主要的想法是给所有的进程分配一个时间片,一个进程至多占用一个时间片,一旦时间片用完就必须调用其他的进程。可以用链表实现该算法(当然这不是最好的实现办法, 也不一定是最简单的