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

概述

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

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

三级调度

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

  1. 高级调度

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

  2. 中级调度

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

  3. 低级调度

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

调度算法

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

  1. 先来先服务

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

  2. 时间片轮转

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

  3. 优先级调度

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

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

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

    如下图所示:

    Multi Level Dispatch

    其具体算法如下:

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

    进程优先级确定

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值