概念:在合适的时候以一定策略选择一个就绪进程运行

 

原则:

  1.响应速度尽可能快

  2,进程处理时间尽可能短

  3,系统吞吐量尽可能大

  4.资源利用率尽可能高

  5.对所有进程要公平

  6.避免饥饿

  7.避免死锁

  //以上原则之间存在矛盾

 

进程调度目标:

  1.周转时间/平均周转周期:

    周转时间:进程提交给计算机到最后完成所花费的时间:

    t = tc-ts  //意义说明进程在系统中停留时间的长短

    平均周转时间:

    t = (t1+t2+t3+....tn)/n   

    意义:平均周转时间越短,意味着这些进程在系统内停留的时间越短,因此系统吞吐量就越大,资源利用率也就越高,

  2.带权周转时间/平均带权周转时间:

     

 

 

典型调度算法:

  1.先来先到服务:

    算法:按照作业进入系统的时间先来后到挑选作业,先进入系统的作业优先被运行

    特点:1.容易实现但是效率不高

       2.只考虑作业的等候时间,而没考虑运行时间的长短。因此一个晚来但是作业短的作业可能需要等待很长时间才能运行,不利于短作业。

  2.短作业优先调度算法:

    算法:参考运行时间,选取运行时间最短的作业投入运行。

    特点:易于实现,效率不高

       忽视了作业等待时间,容易出现资源饥饿现象。

  3.响应比高者优先调度算法:

    响应比定义:

      作业的相应时间和与运行时间的比值。

    响应比 = 响应时间/运行时间

        = (等待时间+运行时间)/运行时间

        = 1 + 等待时间/.运行时间

    算法:计算每个作业的响应比,选择响应比最高的作业优先投入运行

    如果作业等待时间相同,则运行时间短的先,

    如果运行时间相同,等待时间长的先

    如果运行世界长的可以随着等待时间增加而增加

  4.优先数调度算法

    算法: 

      根据进程优先数,把CPU分配给最高的进程

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

    静态优先数:

      进程创建时确定,在整个进程运行期间不再改变

    动态优先数:

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

    静态优先数的确定:

      基于进程所需的资源多少

      基于进程运行时间的长短

      基于进程的类型(IO/CPU,前台/后台,核心/用户)

    动态优先数:

      当使用CPU超过一定时长时

      在进行I/O操作后

      当进程等待超过一定时长时

  5.循环轮转调度算法(Round-Robin)

    概念:把所有就绪进程按先进先出的原则排成队列。新来进程加到队列末尾。进程以时间片q为单位轮流使用CPU,刚刚运行一个时间片的进程排到队列末尾,等待下一轮运行。

    优点:

      公平性:每个就绪进程都有平等机会获得CPU

      交互性:每个进程等待(N-1)*q的时间就可以重新获得CPU

    时间片q的大小:

      q太大:交互性差

          甚至于退化成FCFS调度算法

      q太小:进程切换频繁,系统开销增加。

    改进:

      时间片的大小可变。

      组织多个就绪队列,

  6.可变时间片轮转调度法

  7.多重时间片循环调度法