进程的调度算法

来源:互联网 发布:服装销售软件免费版 编辑:程序博客网 时间:2024/04/29 19:30

一.先来先服务(First Come First Service,FCFS)调度算法按照进程进入就绪队列的先后顺序选择可以占用处理器的进程。这是一种不可抢占方式的调度算法,优点是实现简单,缺点是后来的进程等待CPU的时间较长。它现今主要用作辅助调度算法;例如结合在优先级调度算法中使用,当有两个最高优先级的进程时,则谁先来,谁就先被调度。

二. 短执行进程优先算法(Shortest Process First,SPF)就是从就绪队列中选择一个CPU执行时间预期最短的进程,将处理器分配给它。虽然较公平,但实现难度较大,因为要准确预期下一个进程的CPU执行周期是很困难的。

三.最高优先级优先(Highest Priority First,HPF)调度算法的核心是确定进程的优先级。首先,系统或用户按某种原则为进程指定一个优先级来表示该进程所享有的调度优先权。确定优先级的方法较多,一般可分为两类,即静态法动态法。静态法根据进程的静态特性,在进程开始执行之前就确定它们的优先级,一旦开始执行之后就不能改变。动态法则不然,它把进程的静态特性和动态特性结合起来确定进程的优先级,随着进程的执行过程,其优先级不断变化。 

        进程的静态优先级确定最基本的方法是按照进程的类型给予不同的优先级。例如,在有些系统中,进程被划分为系统进程和用户进程。系统进程享有比用户进程高的优先级; 对于用户进程来说,则可以分为:I/O繁忙的进程、CPU繁忙的进程、I/O与CPU均衡的进程和其他进程等。
        对系统进程,也可以根据其所要完成的功能划分为不同的类型。例如,调度进程、I/O进程、中断处理进程、存储管理进程等。这些进程还可进一步划分为不同类型并赋予不同的优先级。例如,在操作系统中,对于键盘中断的处理优先级和对于电源掉电中断的处理优先级是不相同的。
        基于静态优先级的调度算法实现简单,系统开销小,但由于静态优先级一旦确定之后,直到执行结束为止始终保持不变,从而系统效率较低,调度性能不高。现在的操作系统中,如果使用优先级调度的话,则大多采用动态优先级的调度策略。
        进程的动态优先级一般可以根据以下两个方面来确定:

       (1)根据进程占有CPU时间的长短来决定。一个进程占有处理机的时间愈长,则在被阻塞之后再次获得调度的优先级就越低。反之,其获得调度的可能性就会越大。

       (2)根据就绪进程等待CPU的时间长短来决定。一个就绪进程在就绪队列中等待的时间越长,则它获得调度选中的优先级就越高。

四. 时间片轮转(Round Robin,RR)法的基本思路是让每个进程在就绪队列中的等待时间与享受服务的时间成比例。在时间片轮转法中,需要将CPU的处理时间分成固定大小的时间片,例如,几十毫秒至几百毫秒。如果一个进程在被调度选中之后用完了系统规定的时间片,但又未完成要求的任务,则它自行释放自己所占有的CPU而排到就绪队列的末尾,等待下一次调度。同时,进程调度程序又去调度当前就绪队列中的第一个进程。
         在轮转法中,时间片长度的选取非常重要。时间片长度的选择会直接影响到系统的开销和响应时间。时间片长度的选择是根据系统对响应时间的要求和就绪队列中所允许最大的进程数来确定的。
        在轮转法中,加入到就绪队列的进程有3种情况,一种是分给它的时间片用完,但进程还未完成,回到就绪队列的末尾等待下次调度去继续执行。另一种情况是分给该进程的时间片并未用完,只是因为请求I/O或由于进程的互斥与同步关系而被阻塞。当阻塞解除之后再回到就绪队列。第三种情况就是新创建进程进入就绪队列。


0 0
原创粉丝点击