概述

进程调度方式主要是指具有不同优先级的进程到来时如何分配CPU,调度方式主要有 可剥夺不可剥夺 两种。

可剥夺是当具有更高优先级的进程到来时,会强行的将正在运行进程的CPU资源分配给更高优先级的进程;不可剥夺则是必须等待正在运行的进程自动释放占用的CPU,才会将CPU再次分配。

三级调度

通常在操作系统中,一个作业从提交到完成需要经历三级调度。

  1. 高级调度

    又称为长调度、作业调度、接纳调度。它决定处于输入池中的哪个后备作业可以调入主系统做好运行准备,称为一个或一组就绪进程。在系统中每个作业只需经过一次高级调度

  2. 中级调度

    又称为中程调度、对换调度。它决定处于交换区的哪个就绪进程可以调入内存,直接参与对CPU的竞争;而在内存资源不足时,为了将进程调入内存,则必须将内存中处于阻塞状态的进程调出至交换区,这相当于将处于内存的进程与交换区的进程交换位置。

  3. 低级调度

    又称为短程调度、进程调度。它决定内存中的哪个就绪进程可以占用CPU,低级调度是操作系统中最活跃最核心的调度程序。

调度算法

调度的方式有很多,但主要有下面这几类:

  1. 先来先服务

    这是最简单的方式,即按照作业提交或进程变更为就绪态的次序分配CPU。这种调度方式明显利于需要长作业的情况,但不利于需要频繁中断的作业。主要用于宏观调度。

  2. 时间片轮转

    时间片轮转即每个进程都运行一定时间,它主要用于微观调度,目的是提升资源的利用率。时间片的长度可以从几毫秒到数百毫秒不等,又有固定时间片和可变时间片两种。

  3. 优先级调度

    这种方式要求进程都有一个优先级,系统调度时总选择优先级更高的进程占用CPU,优先级的分配有两种方式:

    • 静态优先级——在创建时就确定进程优先级,直至进程终止优先级也不会发生变化,通常根据三种因素决定:进程类型、资源需求、用户要求。
    • 动态优先级——在创建时也赋予一个优先级,但运行过程中可被改变,以便调度更合理。如在就绪队列中等待越长则优先级将提高,而进程被执行一个时间片后则降低。
  4. 多级反馈调度

    它是时间片轮转及优先级的综合。优点有三:照顾短进程提高系统吞吐量、缩短平均轮转时间;照顾I/O需求较高的进程,提升I/O设备利用率和缩短响应时间;无需估计进程执行耗时,动态调整优先级。

    如下图所示:

    操作系统 进程调度方式概述

    其具体算法如下:

    • 设置多个就绪队列Q1,Q2,,QnQ_1, Q_2, \dots, Q_n,分别对应不同优先级Q1>Q2>>QnQ_1 > Q_2 > \dots > Q_n。每个队列执行时间片的长度不同,规定优先级越低,时间片越长,逐级加倍。
    • 新进程进入内存后,先放入Q1Q_1中,按先来先服务的方式调度,若该进程在Q1Q_1中的一个时间片未能完成,则往下放入Q2Q_2中,同样按照先来先服务的方式调度。直至到QnQ_n中,在QnQ_n中按照时间片轮转方式调度。
    • 仅较高优先级队列为空时才会调度次高优先级队列的进程执行。即如有新进程进入,则会抢先执行新进程。

    进程优先级确定

    进程优先级考虑如下情况:

    1. I/O型进程——让其进入最高优先级队列,以及时响应I/O交互进程。
    2. 计算型进程——每次执行都会降低优先级,以期最终采用较长时间片执行,减少调度次数。
    3. 少数I/O型进程——I/O完成后则应逐渐降低优先级,不应长期处于高优先队列中。

相关文章:

  • 2021-11-22
  • 2021-10-17
  • 2021-07-04
  • 2021-06-28
  • 2021-09-18
  • 2021-06-26
  • 2021-12-23
猜你喜欢
  • 2021-09-04
  • 2021-08-13
  • 2021-08-09
  • 2021-08-12
  • 2021-11-14
  • 2022-01-06
相关资源
相似解决方案