操作系统-7——单处理器调度

一、基本概念

  • 长程调度:新作业提交时,决定是否将其送入内存,成为一个进程。
  • 中程调度:决定把哪些进程在内存与磁盘间交换。
  • 短程调度:决定将CPU分配给哪个就绪进程。
    这里写图片描述

三种调度影响进程的状态转换:
这里写图片描述

二、长程调度

  • 批处理系统或OS的批处理部分中,新提交的作业放在磁盘的后备作业队列中,长程调度选择某些作业送入内存并创建。
  • 何时长程调度?根据系统并发度决定当老进程结束或CPU空闲超过阈值时,启动长程调度。
  • 到底哪个作业?根据 先来先服务,优先级,预计时间,组合CPU密集型和I/O密集型、组合不同I/O需求的作业等。
  • 注意:在分时系统中,不需要长程调度。OS总是立即接受用户的交互请求并创建进程,直至系统饱和。

三、中程调度

  • 何时长程调度?与长程调度类似,系统并发度决定中程调度的时机
  • 需要考虑换入进程和换出进程的内存空间长度。

四、短程调度

  • 何时长程调度?当前运行进程的时间片用完、阻塞、被抢占时,启动短程调度。
  • 调度频繁(毫秒级) = 》 执行速度必须很快。

4.1短程调度准则

  • 面向用户的性能指标:对每个进程计算的指标
    • 周转时间从作业提交到完成的时间间隔,包括:服务时间(运行态CPU执行)+等待时间(包括后备态等待进入内存、阻塞态等待资源、就绪态等待CPU)。适合批处理作业。
    • 响应时间:从提交请求到开始响应。适合分时(交互)进程。
    • 最后期限:进程完成的截止期限。适合实时进程。
    • 归一化周转时间(带权周转时间):周转时间/服务时间。≥1
  • 面向系统的性能指标:
    • 吞吐量:单位时间内完成的进程个数。
    • 处理器利用率:CPU忙的时间比例,=工作时间/总运行时间当用户系统和实时系统不看重该指标。

4.2调度方式
- 非抢占式:当前进程一直运行,直至其终止或阻塞时,才再次分配CPU。
- 抢占式:当其时间片结束或有更高级进程就绪时,将正运行进程转为就绪,再次分配CPU。
4.3选择调度策略
本文的调度算法有:先来先服务(FCFS)、轮转(RR)、最短进程优先(SPN)、最短剩余时间优先(SRT)、最高响应比优先(HRRN)、多级反馈。

  • 先来先服务(FCFS)
    调度最先进入后备队列/就绪队列的作业/进程,直至运行完或阻塞时,在重新调度。(非抢占式)
    这里写图片描述

  • 轮转(RR)
    轮转RR:各进程按提交顺序排成就绪队列,然后按次占用处理机,运行某一时间片。时间片完则排入就绪队列尾。(抢占式)(不利于I/O密集型进程)

    • RR的平均周转时间可能较高,但是响应时间更短。

    • 时间片的长度:关键参数

      • 时间片q太大 =》 相当于FIFS,相应慢。
      • 时间片q太小 =》 上下文切换频繁,开销大。
      • 时间片应略大于一次典型的交互所需要的时间。

    这里写图片描述

  • 最短进程优先(SPN)

最短进程优先SPN:调度CPU执行时间预期最短的进程;直至运行完或阻塞时,重新调度。有利于短进程,不利于长进程及紧迫任务。(非抢占式)
通常,进程是“CPU执行和I/O”不断交替的过程,SPN的困难在于:如何预测下一CPU用时长度。(常用:指数平均法)

这里写图片描述

  • 最短剩余时间(SRT)
    新进程到达时,若新进程的预计运行时间比当前进程的剩余运行时间更短,则抢占当前进程。(抢占式)
    这里写图片描述

  • 最高响应比优先
    综合了FCFS和SPN算法。(非抢占式)

    • 当前进程完成或阻塞时发生调度。每次调度前,计算所有就绪进程的响应比,高者优先。
    • 实际上,响应比就是一个进程在某一时刻的“归一化周转时间”(即带权周转时间)。
      这里写图片描述

这里写图片描述

  • 反馈
    • 基于时间片的抢占+动态优先级调度。(抢占式)
    • 同一队列内进程按FCFS调度,但末级队列按轮转法调度。
    • 当上级队列均无进程就绪时,才调度本级队列内进程;
    • 实用,能较好地满足交互型进程、短进程、长进程的要求

这里写图片描述
这里写图片描述

  • 优先权调度
  • 调度优先级高的进程。就绪队列中进程按优先级 递减排列,每次调度高级队列的队首进程。
    • 可抢占:新到达的高级进程立即抢占当前进程。
    • 静态优先权:创建进程时确定优先级,保持不变。
    • 问题:低优先级进程可能饥饿Starvation。
  • 动态优先权:创建进程时赋予进程一个优先权初 值,但随着进程的等待时间延长,其优先级会升高 (称为老化Aging );随着CPU执行时间的延长,其 优先级会降低

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现了如下四种调度算法的模拟: (1)时间片轮转调度 (2)优先数调度 (3)最短进程优先 (4)最短剩余时间优先 模拟过程使用了JProgressBar作为进程状态条,更为直观地观察到每个进程的执行状态。 程序用户说明: 1、在上图标号1处输入要创建随机进程的个数,仅可输入正数,非正数会有相关提示。然后点击标号2处的“创建进程”按钮,随进创建的进程显示在程序界面的中央窗口,如标号3所示。 2、创建好随机进程后,在标号4的选框选择将要模拟执行的调度算法,然后点击标号5处的“开始模拟”,程序开始执行。标号3的列表会显示相应的调度变化。 3、模拟过程中,可以继续添加新的进程,操作同上。 4、 一个算法模拟执行完毕之后,可以点击标号6的“复位”按钮,可以重置列表的内容为程序模拟运行前的内容。复位成功后,可以继续选择其他调度算法进行模拟。 5、标号7显示为程序模拟过程中的时间,从1秒开始累计。 6、点击标号8的“清空”按钮,可以清空类别的进程,以便程序的下次执行。 题目要求: 题目四 处理器系统进程调度 一 、 课 程 设 计 目 的 1. 加深对进程概念的理解, 明确进程和程序的区别。 2. 深入了解系统如何组织进程、 创建进程。 3. 进一步认识如何实现处理器调度。 二 、 课 程 设 计 内 容 编写程序完成处理器系统中的进程调度, 要求实现时间片轮转、 优先数、 最短进程优 先和最短剩余时间优先四种调度算法。 实验具体包括: 首先确定进程控制块的内容, 进程控 制块的组成方式; 然后完成进程创建原语和进程调度原语; 最后编写主函数对所作工作进行 测试。 模拟程序只对你所设置的“ 虚拟 PCB” 进行相应的调度模拟操作, 即每发生“ 调度” 时, 显示出当前运行进程的“ 进程标识符”、“ 优先数”、“ 剩余运行时间” 等, 而不需要对系 统中真正的 PCB 等数据进行修改。
实验内容: 编写一个处理机下的进程调度程序,模拟操作系统对进程的调度。 要求: 能够创建指定数量的进程,每个进程由一个进程控制块表示。 实现先来先服务调度算法:进程到达时间可由进程创建时间表示。 实现短作业优先调度算法:可指定进程要求的运行时间。(说明:对不可剥夺的短作业优先算法,当作业运行时间相等时,优先调度进程号小的进程执行;对可剥夺式的短作业优先算法,即选最短剩余时间的进程进行运行,在剩余时间相同的情况下,选择到达时间早的进程进行运行) 实现时间片轮转调度算法:可指定生成时间片大小。(说明:新进程到来时插入到就绪队列的队尾,当进程P运行完一个时间片时,若同时有进程Q到达,则先在就绪队列队尾插入新到达的进程Q,之后再插入进程P) 实现动态优先级调度算法:可指定进程的初始优先级(优先级与优先数成反比,优先级最高为0),优先级改变遵循下列原则:进程在就绪队列中每停留一个时间片,优先级加1,进程每运行一个时间片,优先级减3。(说明:本算法在优先级相同的情况下,选择到达时间早的进程进行运行) 测试用例格式如下: 输入:调度算法    进程号/到达时间/运行时间/优先级/时间片 输出:调度顺序/进程号/开始运行时间/结束运行时间/优先级 其中调度算法选项为:1----先来先服务,2----短作业优先,3----最短剩余时间优先,4----时间片轮转,5----动态优先级
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值