作业进程调度算法

    xiaoxiao2023-10-20  176

    首先了解什么是调度?

    调度实质是一种资源分配,调度程序从内存中选择一个可执行的进程,为之分配CPU。

    调度的层次? 

    作业从进入系统到后备队列,再从运行到结束退出系统为止,期间经过不同级别的调度:

    高级调度

               高级调度又长程调度或作业调度。是将在外存上处于后备队列中的作业调入内存,为其创建进程、分配资源、放入就绪队列。(外存 ---> 内存)

    中级调度

               中级调度又称内存调度。是将不能运行的进程调到外存等待(挂起状态),当其具备影响条件且内存有空闲时,再调内存。(提高内存利用率,系统吞吐量)

    低级调度

               低级调度又称进程调度。是为就绪队列中的进程分配处理机。(内存 ---> CPU)

    调度算法中涉及概念: 周转时间

           周转时间指作业被提交给系统开始,到作业完成为止的这段时间间隔。

    周转时间Ti = 完成时间 - 到达时间 平均周转时间

            每个用户希望自己作业周转时间最短,而对于系统管理者则希望平均周转时间最短。对应n个作业,及其对应作业周转时间Ti,可得平均周转时间:

                          

    带权周转时间

            带权周转时间,即作业周转时间Ti与系统为它提供服务时间Ts之比:

                          

    平均带权周转时间

            对与n个作业,每个作业带权周转时间为Wi,则平均带权周转时间:

                          

    CPU利用率

            CPU利用率,即作业执行时间Ci 与 周转时间Ti的比率。即:

                          

    响应比

            响应比,即作业响应时间(等待时间+运行时间)与运行时间之比:

                          

     

    常用调度算法:

    先来先服务调度(FCFS)

    特点:

    按作业(进程)先后次序进行调度;非抢占方式。(进程一旦执行,一直到运行结束或阻塞时,才将其退出,处理机分配给其他进程)可以采用队列来实现。

    按FSFS执行,平均作业周转时间较长,不作为主调策略,但适合长作业。

     短作业优先调度(SJF)

    特点:

    作业计算时间越短,优先级越高;可采用抢占式或非抢占式;用于高级调度。

    优点:

          与FCFS相比,提高系统吞吐量。

    缺点:

     需要知道作业运行时间,一般系统会估计作业运行时间,估计时间一般偏长; 对长作业不利,长作业周转时间明显增加,可能得不到服务(饥饿现象); 采用此算法,人-机无法交互; 未考虑作业紧迫程度。 高优先权优先调度(PSA)

    特点:

     按照进程优先级大小进行调度; 相同优先级的按照FCFS顺序调度; 主要用于进程。

    调度算法类型:

    抢占式:处理机分配给优先级最高的进程,但如果在其运行期间有更高优先级的进程时,调度程序就会将处理机分配到新优先级最高的进程;非抢占式:一旦处理机分配给一个进程,则其将一直执行下去,直至运行结束或是阻塞退出。

    优先级类型:

     静态优先级: 是在进程创建时确定,在进程的运行整个期间保持不变。动态优先级:  是在进程创建时分配一个优先级,随着进程的推进或等待时间的增加而改变。

     

    高响应比优先调度(HRRN)

    特点:

     响应比高的先调度; 非抢占策略。

    优点:

     有利于短作业:等待时间相同,服务时间越短,响应比越高; 实现先来先服务:服务时间相同,等待时间越短,响应比越高; 即使是长作业,随着等待时间增加,其响应比也会增加,也有机会被调用。

    缺点:

         由于要计算响应比,所以增加了系统开销。

     

    时间轮转调度(RR)

    特点:

     按进程FCFS策略,组织进程就绪队列; 确定合适大小时间片; 得到时间片的进程即被分配处理机运行,直到时间片结束或程序运行结束; 可抢占策略。

     

    多级反馈队列调度

    特点:

     多个进程就绪队列,每个对应一个调度优先级别,各级不同; 各级就绪队列中进程具有不同时间片,依优先级从高到低成倍增加;各级队列按FIFO原则排序。

    算法实现:

     

    最新回复(0)