进程调度的起因。
这是由于多道程序设计出现后,才出现的问题。在单任务操作系统中,并不存在进程调度。也就是说只有在多任务的操作系统中才会出现进程调度的问题。这是由于系统中同时存在多个处于运行态的进程,而系统中并不能保证为每个进程分配一个CPU,这个时候就要有选择性的确定哪些进程可以运行。
进程调度需要考虑的问题。
1、进程的重要性。负责处理重要工作的进程,需要获得更多的运行机会,甚至于在工作完成前,都不能放弃CPU。这个特点在军事领域特别明显。
2、响应时间。响应时间在任何地方都很重要,在工业、军事等领域,不言自明。而在民用领域,则会影响到用户的使用体验,响应速度慢总会让用户感觉不好,会使用户转为使用其他使用感觉更好的系统。
3、调度的公平性。这不是绝对的公平,而是指在满足重要性原则的情况下,尽量平均分配CPU时间。
常见的调度算法。
1、时间片轮转。将CPU划分为相同的时间段,例如每5ms一段,每隔5ms,系统就执行一次调度,调度就按照先来先服务的顺序,挑选处于等待队列头的进程进入CPU。被换出CPU的进程,就放入等待队列的末尾,等待下一次运行时间。有点,每个进程都可以得到运行时间。缺点。进程响应时间不可控,例如一个等待键盘数据的进程,在键盘有数据后,需要立即运行,如果系统中存在较多的可运行程序,则该进程就需要等待。可能会等待较长的时间。
2、优先级。系统中存在多个等待队列,每个队列有不同的优先级。在调度的时候,从优先级最高的队列开始查找进程,如果存在可运行的进程,则立即将CPU转给找到的CPU。
3、优先数。每个进程有一个优先数,系统根据这个优先数进行调度。这个调度算法的关键是优先数的计算。
4、混合调度。由于单一的调度算法都有其不足的地方,不能满足通用操作系统对于进程调度的要求。因此在实际的应用中,大多是使用混合调度的方式。也就是包含了以上三种调度算法的混合体。这样的调度算法,简单、灵活、高效,而且实现起来并不复杂。
4、其他调度算法。在操作系统发展的过程中,提出过许多算法。但是很多都没有投入到真正的使用当中。或者已经不再使用、或者是仅仅存在于理论中,而实际无法实现。例如先来先服务调度、最短进程优先。
563

被折叠的 条评论
为什么被折叠?



