在多进程的操作系统中,进程调度是一个全局性的、关键性的问题,它对系统的总体设计、系统的实现、功能设置以及各个方面的性能都有着决定性的影响。根据调度结果所做的进程切换的速度,也是衡量一个操作系统性能的重要指标。进程调度机制的设计,还对系统复杂性有着极大的影响,常常会由于实现的复杂程度而在功能与性能方面做出必要的权限和让步。一个好的系统的进程调度机制,要兼顾三种不同应用的需要:
- 交互式应用。在这种应用中,着重于系统的响应速度,使共用一个系统的各个用户(以及各个应用程序)都能感觉自己是独立地占用一个系统。特别是,当系统中有大量进程共享时,仍要能保证每个用户都有可以接受的响应速度而并不感到明显的延迟。根据测定,当这种延迟超过150毫秒时,使用者就会明显地感觉到。
- 批处理应用。批处理应用往往是作为后台作业运行的,所以对响应速度并无要求,但是完成一个作业所需的时间仍是一个重要的因素,考虑的是平均速度。
- 实时应用。这是时间性最强的应用,不但要考虑进程执行的平均速度,还要考虑即时速度;不但要考虑响应速度(即从某个时间发生到系统对此作出反应并开始执行有关程序之间所需的时间),还要考虑有关程序(常常在用户空间)能否在规定时间内执行完。在实时应用中,注重的是对程序执行的可预测性。
领完,进程调度的机制还要考虑到公正性,让系统中的所有进程都有机会向前推进,尽管其进度各有不同,并最终受到CPU速度和负载的影响。更重要的是,还要防止死锁的发生,以及防止对CPU能力的不合理使用,也就是说要防止CPU尚有能力且有进程等着执行,却由于某种原因而长时间得不到执行的情况。一旦这些情况发生时,调度机制还应能识别与化解。可以说,有感进程调度的研究是整个操作系统理论的核心。不过,本系列的博客的目的在于对linux内核的剖析和解释,而不在于理论方面的深入探讨,有兴趣的读者可以阅读操作系统方面的专著。
。。。。。。
|