调度算法

文章目录

    • 1.调度的概念
    • 2.进程调度方式
      • 2.1 非剥夺调度式
      • 2.2 剥夺式调度方式
    • 3.调度的基本准则
      • 3.1 CPU利用率
      • 3.2 系统吞吐量
      • 3.3 周转时间
      • 3.4 等待时间
      • 3.5 响应时间
    • 4.调度算法
      • 4.1 调度的层次
      • 4.2 调度算法
        • 1 先来先服务调度(FCFS)
        • 2 短作业优先调度(SJF)
        • 3 优先级调度
        • 4 高响应比调度
        • 5 时间片轮转调度
        • 6 多级反馈队列调度算法(集合了前几种算法的优点)

1.调度的概念

进程的数量往往多于处理机的数量。从就绪队列中,按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程并发地执行。

2.进程调度方式

当某一个进程正在处理机上执行时,若有某个更为重要或紧迫的进程需要处理,即有优先权更高的进程进入就绪队列,此时应如何分配处理机。
通常有两个进程调度方式:

2.1 非剥夺调度式

让进程执行完或者发生某种事件而进入阻塞状态时,再把处理机分配给优先权更高的进程。

2.2 剥夺式调度方式

立即暂停进程,把处理机分配给优先权更高的进程。

3.调度的基本准则

3.1 CPU利用率

CPU在忙碌状态所占的时间比。其实就是你运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况。使用率越高,说明你的机器在这个时间上运行了很多程序,反之较少。使用率的高低与你的CPU强弱有直接关系。现代分时多任务操作系统对 CPU 都是分时间片使用的:比如A进程占用10ms,然后B进程占用30ms,然后空闲60ms,再又是A进程占10ms,B进程占30ms,空闲60ms;如果在一段时间内都是如此,那么这段时间内的占用率为40%。

3.2 系统吞吐量

单位时间内CPU完成作业的数量。

3.3 周转时间

从作业提交到作业完成所尽力的时间

3.4 等待时间

进程处于等待处理机状态时间之和

3.5 响应时间

用户提交请求到系统首次产生响应所用的时间

4.调度算法

回答要点:

  1. 调度的层次
  2. 有哪些调度算法
  3. 依次介绍调度算法的作用、算法思想、特点

4.1 调度的层次

一个作业从提交到完成,要经历作业调度、中级调度、进程调度。

  1. 作业调度:把外存中的作业调度到内存中。
  2. 中级调度:把暂时不能运行的进程,调度到外存等待,此时的进程称为挂起状态。
  3. 进程调度:按照某种算法从就绪队列中选取一个进程,将处理机分配给它。

4.2 调度算法

1 先来先服务调度(FCFS)

  1. 可以用于作业调度,也可以用于进程调度。
  2. 对于作业调度;从后备作业队列中选择一个或几个最先进入该队列的作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
  3. 对于进程调度;从就绪队列中选择最先进入该队列的进程,将处理机分配给它。
  4. 特点:
     属于不可剥夺算法(此处介绍什么是不可剥夺、以及什么是可剥夺,非剥夺优先级调度算法:当某个进程正在处理及上运行时,即使有某个紧迫的进程进入就绪队列,仍然让正在运行的进程继续运行,直到由于其身的原因主动让出处理机(任务完成或等待事件),才把处理机分配给更为重要或紧迫的进程。剥夺式优先级调度算法:当一个进程正在处理机上运行时,若有某个更为重要或紧迫的进程进入就绪队列,则立即暂停正在运行的进程,将处理机分配给更重要或紧迫的进程。)
     算法简单,但效率低;
     对长作业比较有利,但对短作业不利;
     有利于CPU繁忙型作业,而不利于I/O繁忙型作业。

2 短作业优先调度(SJF)

  1. 可以用于作业调度也可以用于进程调度。
  2. 对于作业调度:从后备作业队列中选择一个或几个估计运行时间最短的作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
  3. 对于进程调度:从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它。
  4. 特点:
     对长作业不利;
     不能保证紧迫性作业会被及时处理;
     不一定能真正做到短作业优先调度。

3 优先级调度

  1. 可以用于作业调度,也可以用于进程调度。
  2. 对于作业调度:从后备作业队列中选择优先级最高的一个或几个优先级最高的作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
  3. 对于进程调度:从就绪队列中选择优先级最高的进程,将处理机分配给它。
  4. 特点:
     根据新的更高优先级的进程能否抢占正在执行的进程的处理机,可将调度算法分为:
    非剥夺式算法或剥夺式调度算法;
     根据进程创建后其优先级是否可变,可将优先级分为:
    静态优先级或动态优先级。

4 高响应比调度

  1. 主要用于作业调度
  2. 从后备作业队列中选择响应比最高的一个或几个优先级最高的作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
  3. 响应比=(等待时间+要求服务时间)/(要求服务时间)
  4. 特点:
     等待时间相同时,要求服务时间越短,其响应比越高,有利于短作业;
     要求服务时间相同时,等待时间越长,其响应比越高,因而它实现的是先来先服务;
     对于长作业,即要求服务时间长的作业,作业的响应比可以随等待时间的增加而提高,当其等待时间足够长时,其响应比便可升到很高,从而也可获得处理机。克服了饥饿状态,兼顾了长作业。

5 时间片轮转调度

  1. 主要用于分时系统
  2. 从就绪队列中,先按先来先服务原则选择一个进程,但进程只能运行一个时间片。时间片用完后就返回到就绪队列的末尾重新排队。
  3. 特点:
     时间片的大小对系统性能的影响很大;
     如果时间片足够大,以至于所有进程都能在一个时间片内完成,则变为先来先服务调度算法;

6 多级反馈队列调度算法(集合了前几种算法的优点)

可以动态调整进程优先级和时间片大小;

实现思想:
 设置多个就绪队列,并为每个队列赋予不同的优先级和时间片大小;第1级队列优先级最高,第2级次之。优先级越高的队列,时间片就越小。
 一个新进程进入内存后,首先将它放入第1级队列的末尾,按先来先服务原则等待调度;当轮到该进程时,如果能在一个时间片内完成,便可准备撤离系统;如果不能完成,则放入第2级队列末尾。其他级别的队列方法相同。
 当第1级队列为空时,才调度第2级队列中的进程;其他级别的队列方法相同。
 如果处理机正在执行第i级队列中的进程时,有进程进入到1至i-1级队列中,则新进程将抢占处理机。并将正在执行的进程放入第i级队列的末尾。

优点:
终端型作业用户:短作业优先;
(对于终端型作业,通常只需经过进程调度即可获得处理机)
短批处理作业用户:周转时间较短;
(批处理作业:在作业队列中,有一堆的作业需要执行,每一个作业都完全独立于其他的作业)
长批处理作业用户:经过前面几个队列得到部分执行,不会长期得不到处理。

你可能感兴趣的:(操作系統)