策略和机制

到目前为止,我们隐含地假设系统中所有进程分属不同的用户,并且,进程间相互竞争CPU。通常情况下确实如此,但有时也有这样的情况:一个进程有许多子进程并在其控制下运行。例如,一个数据库管理系统可能有许多子进程,每一个子进程可能处理不同的请求,或每一个子进程实现不同的功能(如请求分析,磁盘访问等)。主进程完全可能掌握哪一个子进程最重要(或最紧迫)而哪一个最不重要。但是,以上讨论的调度算法中没有一个算法从用户进程接收有关的调度决策信息,这就导致了调度程序很少能够做出最优的选择。

解决问题的方法是将调度机制(scheduling mechanism)与调度策略(scheduling policy)分离,也就是将调度算法以某种形式参数化,而参数可以由用户进程填写。看一下数据库的例子。假设内核使用优先级调度算法,但提供一条可供进程设置(并改变)优先级的系统调用。这样,尽管父进程本身并不参与调度,但它可以控制如何调度子进程的细节。在这里,调度机制位于内核,而调度策略则由用户进程决定。

猜你喜欢

转载自blog.csdn.net/qq_22238021/article/details/80172027