进程调度及调度策略

来源:互联网 发布:php 函数 变量='' 编辑:程序博客网 时间:2024/05/20 07:36
进程调度负责动态的将CPU分配给各个进程。主要功能如下:
       (1)记住进程状态。
       (2)决定哪个进程,什么时候获取CPU及其占用多长时间。
       (3)把CPU分配给进程,即将选中进程的PCB中有关进程的相关信息,如程序状态寄存器、通用寄存器等内容送入CPU的相应的寄存器中,从而让该进程占用CPU去运行。
       (4)收回CPU。
   启动进程调度程序的各种时机
       (1)在一次外部中断之后,该中断改变了某个进程的状态。
       (2)在一次信息调用之后,而该调用使现行进程暂时不能继续运行。
       (3)在一次错误处理之后,使现行进程在错误处理时被封锁。

    调度策略
       (1)分时系统调用策略
           在分时系统中为了提高对交互作用的响应速度,使各进程在较短时间间隔内都有机会占用CPU,则需要比较频繁地对CPU进行调度。这种调度方式增加了系统的开销,降低了CPU实际使用效率。  如:为了保证及时响应,采用轮转算法分配CPU,即以循环方式依次给每个用户服务请求一个时间片,这也是“分时”的由来。这样做的作用是防止用户计算时间长的任务时垄断CPU,妨碍对其他用户服务请求的响应。使用平均的是使用CPU,但这时如果时间片过大,相应的平均响应时间增长;若时间片过短,则会增大个服务请求循环排队的次数,因而也会增加平均响应时间,而且由于频繁切换,系统开销也增大了。因此,考虑到系统分时的主要目的。 应在满足某种交互作用的响应速度前提下提高系统资源的使用效率。
       (2)批处理系统调度策略
           1.先来先服务算法:
               先来先服务算法体现用户公平。调度策略按照优先数分配CPU。优先数按照所有进程来到的时间戳确定。它优先考虑在系统中等待时间最长的线程,而不管该进程运行时间的长短。这种算法一般是非抢占式调度算法,也就是说,进程  一旦分配CPU,就直至运行结束。
           2.最短作业优先调度算法:
               这种算法总是优先调度要求运行时间最短的进程作为下一次服务的对象。它可以达到系统最大吞吐量。它的主要缺点是只照顾短进程。因此有可能一个进程进入系统后,由于不断有比它更短的进程进入系统而使该进程一直得不到时机运行。
           3.响应比高者优先调度算法:
               这种算法每次调度时,计算后备进度表中各进程的响应比,然后挑选响应比最高者投入运行。因此在系统中的进程只要等待足够长的时间就有机会运行。该算法考虑到等待时间又兼顾了短作业进程优先,是上述两种算法的折中。缺点是算法比较复杂,每次调度都要计算一次后备进程队列中各个进程的响应比。
       (3)实时系统调度策略
           对于实时系统要求CPU能及时响应,它主要用于实现特定的控制和服务功能。为每一个进程设置一个优先数,CPU调度时每次选择就绪进程中优先数最大者,让它占用CPU运行。
       (4)通用系统调度策略
           1.优先数算法。
           2.轮转发。
           3.时间片可变轮转发与多队列轮转法。