处理机调度

处理机调度   

    调度的实质是资源的分配

    调度算法: 指根据系统的资源分配策略所规定的资源分配算法。

        包括:

             –先来先服务调度算法

             –短作业(进程)优先调度算法

             –高优先权优先调度算法

             –基于时间片的轮转调度算法

一.先来先服务(    FCFS, First Come First Service)

    –按照作业提交或进程变为就绪状态的先后次序,分派CPU

     –当前作业或进程占用CPU直到执行完或阻塞,才出让CPU(非抢占方式)。

     –在作业或进程被唤醒后(如I/O完成),并不立即恢复执行,通常等到当前作业或进程出让CPU

    特点:

        –简单、易于实现、服务质量不佳

        –取决于作业(进程)提交顺序

        –较有利于长作业(进程)或CPU繁忙型的作业

        –不利于短作业(进程)或I/O繁忙型作业 。

    调度方式:

        非抢占调度方式

    用途:

        –既可用于作业调度,也可用于进程调度。

        –很少作为进程调度的主算法,但常作为辅助调度算法。



二.短作业/进程优先(SJ(P)F, Shortest Job First)

    –预计执行时间短的作业(进程)优先分派处理机。通常后来的短作业不抢先正在执行的作业。

    特点:

             –能显著改善作业的平均周转时间

             –在降低作业的平均等待时间同时,提高系统的吞吐量

             – 对长作业非常不利(饥饿)

             – 未考虑作业的紧迫程度

             – 不一定能真正做到短作业优先调度(欺诈)

    调度方式:

                 –可采用非抢占调度方式也可采用抢占调度方式

    用途:

                –可分别用于作业调度和进程调度。

                –很少作为进程调度的主算法,但常作为辅助调度算法。



下图为FCFS算法和SJF算法的比较:


处理机调度_第1张图片

三.高优先权优先调度算法

                 基本思想:为作业或进程设置优先级,调度时按优先级的高低进行调度。

        应用范围:用于批处理系统中的作业调度算法、多种操作系统及实时系统中的进程调度算法。

        作业调度:从后备队列中选择若干个优先权最高的作业调入内存。

        进程调度:是把处理机分配给就绪队列中具有最高优先权的进程。


1、优先权调度算法的类型

        按调度方式分类:

            –非抢占式优先权算法:处理机分配给就绪队列优先权最高的进程后,该进程就一直执行下去,直至完成;或因发生某事件使该进程放弃处理机时,才进行CPU的重新分配。 •应用范围:批处理系统、实时性要求不严的实时系统。

            –抢占式优先权调度算法:处理机分配给就绪队列优先权最高的进程后,只要出现另一个优先权更高的进程时,便停止原来执行进程,把处理机分配给新出现的优先权最高的进程。 •应用范围:实时性要求比较严格的实时系统、对性能要求较高的批处理和分时系统中。


2、优先权的类型

    静态优先权:      

                –进程优先权在创建进程时确定,整个运行期不变。

       –确定优先权依据

                 •进程类型

                 •进程对资源的需求;

                 •根据用户需求。

       –特点:简单,但低优先权作业可能长期不被调度。


    •动态优先权:

        –进程创建时赋予的优先权可以随时间而改变,以便获得更好的调度性。
        –如:优先权随执行时间而下降,随等待时间而升高。
        –优点:长短兼顾     缺点:需计算Rp

3、高响应比优先调度算法


是一种动态优先权调度算法

        调度规则:在当前进程完成或被阻塞时,选择RP值最大的就绪进程。

        特点:照顾了短作业;先来先服务,等待时间越短,RP越小;

                    –不会使长作业长时间得不到服务,因为随着等待时间的增的, RP也在增大,从而获得处理机。

    缺点:增加系统开销。因为每次调度时,都要进行响应比RP的计算

example;

处理机调度_第2张图片

处理机调度_第3张图片

四.时间片轮转(RR)调度算法

        将系统中所有的就绪进程按照FCFS原则,排成一个队列。
        每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。
        在一个时间片结束时,发生时钟中断。
        调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前的队首进程。
        进程可以未使用完一个时间片,就出让CPU(如阻塞)

        RR调度算法的优缺点:
                有利于短作业,公平
                长作业的上下文切换的总时间增长

        时间片长度的影响因素
            太大:响应时间受影响
            无穷大:退化为FCFS算法
            太小:吞吐量受影响

        时间片的实际选择举例

            –最初,UNIX时间片是设为1秒钟

            •只有一两个人使用时运转很好

             •当有三个汇编程序都在运行呢?对每个击键的反应需要3秒钟

         实际上需要平衡短作业的性能和长作业的吞吐量:

                    •现在典型的时间片长度为10毫秒—100毫秒

                    •典型的上下文开销为0.1毫秒—1毫秒

                    •粗略地计算一下,上下文切换的开销大约为1%

    对响应时间的要求

         –T(响应时间)= N(进程数目)×q(时间片)

                时间片长度的确定:

                        –就绪进程的数目:数目越多,时间片越小(当响应时间一定时)

                        –系统的处理能力:应当使用户输入通常在一个时间片内能处理完,否则使响应时间,平均周转时间和平均带权周转时间延长。

example:

处理机调度_第4张图片

你可能感兴趣的:(处理机调度)