操作系统--进程管理2--进程调度

1.评价调度算法的主要指标

  周转时间:进程进入就绪队列直到进程执行结束所用的时间。

  响应时间:进程进入就绪队列后被到被CPU调度所用的时间。

2.常见的调度算法

  FIFO:先来先服务算法--基本思想按照作业进入就绪队列的顺序,选择先到的作业被CPU调度。假如作业的长度比较平均,效果不错,但是

        如果长作业比较多先到就绪队列就会导致响应时间、周转时间比较长。属于非抢占策略

  优点:实现简单;缺点:效果不怎样好。

  SJF:短作业优先算法;在就绪队列中按照作业长短排序,选出最短的作业执行,存在非抢占和抢占的两种,对于非抢占的

      在长作业执行情况下,后到的短作业不能抢占,周转时间依旧很长。对于抢占的,新来的短作业可以和现在的作业的剩余时间比较

      如果执行时间短,就可以得到CPU的执行权。周转时间就会减小。

  RR:轮转法--出现的原因是随着计算机的发展,人机交互越来越重要,对于响应时间的要求越高,所以出现了轮转法调度。

      该算的思想:设置一个时间片,按照就绪队列中顺序,每个作业有一个时间片,轮流执行队列中的作业。时间片到达是由

      时钟中断控制,时间到了切换到内核态由,OS调度下一个作业执行。周转时间会比SJF长。

  优点:保证响应时间比较短。注意:时间片大小的选择很关键;时间片过小,容易造成作业的频繁切换,时间浪费周转时间也长

     时间片过长:该算法就退化成FIFO--先来先服务。

  多优先级反馈队列:通常前面介绍的算法效果对于周转时间和响应时间是相互矛盾的,现在想设计一个策略兼顾轮转法和SJF抢占型

       能够在响应时间和周转时间之间达到一个平衡。算法实现比较复杂。

  具体实现:OS维护多个优先级不同的队列;每队列队列内部采用轮转法调度。进程创建完成后,通用放在高优先级的队列中,根据一次执行的结果

  调整进程的优先级;假如:分配的时间片都被一直是CPU操作,则可以判断出该进程是CPU绑定的进程,对响应时间不敏感;可以降低其优先级;

  放入优先级低的队列,假如分给的时间片没用完就放弃CPU,则说明进程是IO绑定的,对响应时间敏感,所以优先级不变。

  注意:这个过程一种是动态的,因为进程某段时间可能就在IO操作,后面可能一直是CPU操作,只要是用完CPU时间片,就要降级处理。

       

  
 
 
 
 
 
 
 
  
  
  
 
 
  
原文地址:https://www.cnblogs.com/sun1993/p/7778571.html