操作系统(9) 单处理器调度

1.处理器调度的类型

1.1 调度类型简介

长程调度:新作业提交时,决定是否将其送入内存,成为一个进程。也称为作业调度
短程调度:决定将CPU分配给哪个就绪进程(CPU资源分配)
中程调度:决定把哪些进程在内存与磁盘间交换
在这里插入图片描述
从这个图理解一下处理器调度的过程:首先是作业输入到磁盘的输入井(后备作业队列中),然后此时会发生长程调度,长程调度的任务是从输入井中的作业挑选,挑选作业送入内存,送入内存后作业就变成进程了。
然后在内存中,会发生短程调度,意思是变成进程后,进程需要运行,需要CPU资源,这时候短程调度会为他们分配资源,在这个过程中,进程会在运行、就绪、阻塞三种状态间来回切换
然后在内存和硬盘之间,会发生中程调度,中程调度的任务是将在内存中的进程换入到硬盘中,也有从硬盘中的处于就绪挂起/阻塞挂起/态的进程换入到内存中的。

1.2 调度进程状态切换

经过1.1的知识分析,首先一个作业被输入到输入井,处于新建作业状态,此时该作业经过长程调度变成进程,但是该进程可能存在硬盘也可能存在内存中,如果存在硬盘中,那就是就绪/挂起态的进程,如果存在内存中,那就是就绪态的进程。
然后阻塞挂起态的进程经过中程调度可以变成阻塞态,反之亦然。
就绪态的进程经过短程调度就可以变成运行态。
在这里插入图片描述

1.3 长程调度

在批处理系统或者OS的批处理部分中,新提交的作业放在磁盘的后备作业队列中,长程调度选择某些作业送入内存并创建进程。

  • 长程调度的时机:根据系统并发度(即多道程序度,内存中的进程个数)决定,当老进程结束CPU空闲超过阈值,启动长程调度。当调度不频繁(秒、分钟级),执行速度可以较慢。
  • 长程调度的选择:先来先服务、优先级、预计执行时间、组合CPU密集型、和I/O密集型、组合不同I/O需求的作业等

在分时系统中,是不需要长程调度的,OS总是立即接收用户的请求并立即处理请求并创建进程,直到系统饱和。

1.4 中程调度

系统并发度决定中程调度的时机
要考虑换入进程和换出进程的内存空间长度

1.5 短程调度

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

问题:I/O密集型进程和CPU密集型进程,谁的CPU调度优先级应该更高?
答:I/O密集型进程:该进程需要进行大量的I/O,可能需要大量的CPU调度,CPU密集型进程:需要占用大量的CPU时间片,当一个CPU密集型进程获得高优先级时,其他许多低优先级的进程可能导致饥饿,而当一个I/O密集型进程获得高优先级时,由于其绝大多数时间都处于I/O,CPU可以轮换,此时,其他许多低优先级的进程有机会可以获得CPU资源,不容易导致饥饿。因此I/O密集型进程的CPU调度优先级应该更高

2. 调度算法

2.1 短程调度算法

  • 优先级的使用,每个进程都有一个优先级(用优先数来表示)。UNIX SVR3,FreeBSD,Linux优先数越小,优先级越高。而在Windows下,优先数大者,优先级高
  • 在现代的OS中,一般设置一组优先级递减的就绪队列:其中RQ0的优先级是最高的
    在这里插入图片描述
  • 调度程序总是优先选择最高优先级队列中的就绪进程执行。
  • 优先级高的进程先执行的机制的一个基本问题就是,低优先级的进程可能会饥饿。

2.2 短程调度准则

面向用户的性能指标:对每个进程计算的指标

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

2.3 选择策略调度

两种调度方式:

  • 非抢占式:当前进程一直运行,直至其终止或阻塞时,才再次分配CPU
  • 抢占式:当其时间片结束或有更高级进程就绪时,将正运行进程转为就绪,再次分配CPU

2.3.1 先来先服务(FirstComeFirstService)

调度最先进入后备队列/就绪队列的作业/进程,直至运行完或阻塞时,再重新调度
FCFS通常与优先级策略相结合,如每个优先级一条队列,每条队列中的调度基于FCFS原则
FCFS利于长进程或CPU密集型的进程,不利于短进程或I/O密集型的进程

2.3.2 轮转策略(Round Robin)

各进程按提交顺序排成就绪队列,然后依次占用处理机,运行某一时间片(通常10-200ms),时间片用完就排入就绪队列尾

  • 关键参数:时间片长度q
    时间片太长,则轮转算法退化为FCFS,响应太慢]
    时间片太短,则上下文切换频繁,开销大
    时间片应略大于一次典型的交互所需要的时间
    在这里插入图片描述

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

  • 由于解除阻塞的进程被排入就绪队列尾部,轮转法不适合I/O密集型进程(上次的剩余时间片被浪费)

  • 公平性优于轮转法的虚拟轮转法:

    • 解除阻塞的进程被送入一个FCFS辅助队列
    • 辅助队列的优先级高于就绪队列
    • 辅助队列的进程被调度时,它的运行时间不长于基本时间片-它自从上一次在就绪队列中被选择运行的总时间,即运行上次剩余的时间片

时间片轮转法,设时间片长度q =100ms,每次上下文切换时间需要 5ms,则用于上下文切换的开销比例是多少?
一个完整的运行时间片包括时间片的基本长度+每次上下文的切换时间
∴用于上下文切换的开销比例是5/(100+5) = 4.8%

2.3.3 最短进程优先(Shortest Process Next)

最短进程优先(SPN):调度CPU执行时间预期最短的进程,直至运行完或阻塞时,再重新调度。
利于短进程;不利于长进程及紧迫任务。
通常,进程是“CPU执行和I/O”不断交替的过程,SPN的困难在于:如何预测下一CPU用时长度
一种解决方案是:通过指数平均法 预测(用以前的CPU用时长度估计下一CPU用时长度)
在这里插入图片描述

2.3.4 最短剩余时间(Shortest Remaining Time)

最短剩余时间优先(SRT):新进程到达时,若新进程的预计运行时间比当前进程的剩余运行时间更短,则抢占当前进程。

2.3.5 最高响应比优先(Highest Response Ratio Next)

最高响应比优先算法:综合了FCFS和SPN算法

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

2.3.6 反馈(多级反馈队列)Multilevel Feedback

  • 基于时间片的抢占+动态优先级调度。
  • 设立多个就绪队列,优先级越高的队列,其时间片越小
  • 同一队列内进程按FCFS调度,但末级队列按轮转法调度
  • 当进程在一个时间片内未运行完,则降到下一级队列末尾
  • 当上级队列均无进程就绪时,才调度本级队列内进程
  • 实用,能较好地满足交互型进程、短进程、长进程的要求

2.3.7 优先权调度

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

2.4 性能比较

  • 先来先服务FCFS:简单,偏向长进程,平均周转时间长。
  • 轮转RR:公平
  • 最短进程优先SPN:优于轮转。
  • 最短剩余时间SRT:由于抢占,效率优于SPN。
  • 最高响应比优先HRRN:性能介于FCFS和SPN之间
  • 反馈FB:短进程带权周转/等待时间短。
    在这里插入图片描述

2.5 公平共享调度

一个用户组(group)可以由多个用户组成,一个用户的应用程序可以由多个进程(或线程)组成,
基于进程组的调度称为公平共享调度。调度时考虑相关进程组及每个进程的执行历史。

  • 每个用户具有权值,规定了该用户能够使用系统资源的比例。如用户A权值是用户B权值的两倍,则A能占用的资源是B的两倍(或者说,A能完成的工作量应该是B的两倍)。
  • 每个进程具有优先级,起初分配一个基本优先级,之后该进程优先级随着进程使用CPU的时间、以及进程所属组使用CPU的时间增加而降低。

3. 传统的UNIX调度

保证前台交互用户的响应时间短,且低优先级的后台作业不会饥饿。多级反馈,每个优先级队列中轮转调度。

  • 1秒抢占:若一个运行进程在1秒内未运行完或阻塞,它将被抢占,调度下一就绪进程。
  • 每秒计算一次所有进程的优先数 P(i)。小者优先权高。
  • cpu(i):被调度运行时,进程使用CPU时间的计数,每次时钟中断(滴答tick)时加1。
  • cpu(i) = cpu(i-1)/2 ,即:未被调度时,进程在第 i 秒 的CPU时间计数是它第 i-1秒的CPU时间数的一半。
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
处理器系统的进程调度 1.实验目的 加深对进程概念的理解,明确进程和程序的区别; 深入了解系统如何组织进程、创建进程; 进一步认识如何实现处理器调度。 2.实验预备知识 进程的概念; 进程的组织方式; 进程的创建; 进程的调度。 3.实验内容 编写程序完成处理机系统中的进程调度,要求采用时间片轮转调度算法。实验具体包括:首先确定进程控制块的内容,进程控制块的组成方式;然后完成进程创建原语和进程调度原语;最后编写主函数对所作工作进程测试。 4.提示与讲解 这个实验主要要考虑三个问题:如何组织进程、如何创建进程和如何实现处理器调度。 考虑如何组织进程,首先就要设定进程控制块的内容。进程控制块PCB记录各个进程执行时的情况。不同的操作系统,进程控制块记录的信息内容不一样。操作系统功能越强,软件也越庞大,进程控制块记录的内容也就越多。这里的实验只使用了必不可少的信息。一般操作系统中,无论进程控制块中信息量多少,信息都可以大致分为以下四类: ① 标识信息 每个进程都要有一个惟一的标识符,用来标识进程的存在和区别于其他进程。这个标识符是必不可少的,可以用符号或编号实现,它必须是操作系统分配的。在后面给出的参考程序中,采用编号方式,也就是为每个进程依次分配一个不相同的正整数。 ② 说明信息 用于记录进程的基本情况,例如进程的状态、等待原因、进程程序存放位置、进程数据存放位置等等。实验中,因为进程没有数据和程序,仅使用进程控制块模拟进程,所以这部分内容仅包括进程状态。 ③ 现场信息 现场信息记录各个寄存器的内容。当进程由于某种原因让出处理器时,需要将现场信息记录在进程控制块中,当进行进程调度时,从选中进程的进程控制块中读取现场信息进行现场恢复。现场信息就是处理器的相关寄存器内容,包括通用寄存器、程序计数器和程序状态字寄存器等。在实验中,可选取几个寄存器作为代表。用大写的全局变量AX、BX、CX、DX模拟通用寄存器、大写的全局变量PC模拟程序计数器、大写的全局变量PSW模拟程序状态字寄存器。 ④ 管理信息 管理信息记录进程管理和调度的信息。例如进程优先数、进程队列指针等。实验中,仅包括队列指针。
实现了如下四种调度算法的模拟: (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 等数据进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值