操作系统原理第六章(进程调度)

一、调度/分派结构

      调度:依照完全确定的策略将一批进程进行排序

      分派:从就绪队列中移出一个进程并给它提供处理机的使用权

      调度程序负责将一个进程插入到就绪队列中,并按一定原则保持队列结构;分派程序将进程下从就绪队列中移出并建立该进程执行的机器状态。

二、进程调度的功能和调度准则

      1.进程调度的功能:

                记录和保持系统中所有进程的有关情况和状态特征;

                决定分配策略;

               实施处理机的分配和回收;

         进程调度的时机:

             进程完成其任务时;

              在一次管理程序调用之后,该调用使现行程序暂时不能继续运行时;

             在一次出错陷入之后,该陷入使现行进程在出错处理时被挂起;

             在分时系统中,当进程使用完规定的时间片,时钟中断使该进程让出处理机时;

             在采用可剥夺调度方式的系统中,当具有更优先级的进程要处理机时。

       2.进程调度准则:

                      CPU使用率:40%(轻负荷系统)-----90%(重负荷系统)

                      吞吐量:一个时间单元内所完成的进程数量

                      周转时间:在批处理系统中,从作业进入系统到完成的时间间隔(所有时间段之和)

                      响应时间:从联机用户向计算机发出一个命令到计算机执行完该命令,并将相应执行结果返回给用户所需时间。

                      等待时间:进程在就绪队列中所花费的时间

        3.调度方式:

                      非剥夺方式:若有更高优先级的进程进入就绪队列时,仍然让正在执行的进程继续执行,知道该进程完成或者进入“阻塞”“完成”状态的时候,才把处理机分配给具有更高优先级的进程;

                      可剥夺方式:若有更高优先级的进程进入就绪队列时,立即暂停正在执行的进程,把处理机分配给它;

          可抢占策略:(U,V)标志

                      U=1:该进程可抢占另一进程              U=0:该进程不可抢占另一进程

                      V=1:该进程可被另一进程抢占            V=0:该进程不可被另一进程抢占

  三、典型调度算法:

         1.先来先服务调度:按照作业进入系统的时间先后次序来挑选作业,先进入系统的作业优先被运行

                      容易实现,效率不高

                      只考虑作业的等待时间,没考虑作业的运行时间长短,不利于短作业

          2.短作业优先调度:参考运行时间,选取运行时间最短的作业投入运行

                      容易实现,效率不高

                     忽视了作业的等待时间,一个早来但是长的作业可能在长时间内得不到调度,容易出现资源“饥饿”现象。

           3.响应比高者优先调度:调度作业时计算作业列表中每个作业的响应比,选择响应比高的优先投入运行

                      响应比=响应时间/运行时间 =1+等待时间/运行时间

                       等待时间相同,有利于短作业;运行时间相同,有利于等待时间很长的作业

           4.优先数调度算法:根据进程优先数,将CPU分配给最高的进程

                       进程优先数=静态优先数+动态优先数

                       静态优先数:进程创建时给定,整个进程运行期间不会变动

                       动态优先数:在进程运行期间可以改变

                                   静态优先数的确定:根据进程所需要的资源来计算;

                                                                  基于程序运行时间的估计;

                                                                  基于进程的类型。

                                  动态优先数的确定:当进程使用CPU超过一定数值时,降低优先数;

                                                                 当进程进行IO操作时,增加优先数;

                                                                 当进程等待时间超过一定数值时,增加优先数。

           5.循环轮转调度法:把所有就绪进程按先进先出原则排成队列,新来的进程加到队列末尾;进程以时间片q为单位轮流使用CPU,刚刚运行了一个时间片的进程排到队列末尾,等待下一轮调度;逻辑上是环形的。

                         优点:公平性(每个就绪进程获得CPU的机会均等)

                                    交互性(每个进程等待一定时间后就可以重新获得CPU)

                         若时间片太大,交互性差,甚至退化为先进先出调度算法;

                         若时间片太小,进程切换频繁,系统开销增加。

                         改进:时间片的大小可变(可变时间片轮转调度法)

                                   组织多个就绪队列(多重时间片循环轮转 )








猜你喜欢

转载自blog.csdn.net/xaishujin/article/details/80678866