操作系统-处理机调度

本文介绍处理机调度相关的内容,主要涉及三级调度与调度算法等知识。

三级调度

作业从提交到完成一般需要经历三级调度:作业调度(高级调度)、内存调度(中级调度)和进程调度(低级调度),调度的频率依次递增。

  • 作业调度:作业调度一般是将一个作业从外存调入内存,为其分配内存、外设等资源,使其能够竞争处理机资源。对每个作业来说,每个作业一般只调入一次、调出一次。

  • 内存调度:内存调度是为了提高内存利用率系统吞吐量,一般会将暂时无法运行的进程挂起,当具备运行条件且内存有空闲时,会将这些进程调回,挂在就绪队列上等待调度。

  • 进程调度:最频繁的调度方式,一般从就绪队列中调出一个进程,为它分配处理机资源。

进程调度方式

  • 非剥夺调度方式:当一个进程处于运行状态时,即使有更紧急或优先级更高的进程进入就绪队列,也不会抢占正在运行进程的处理机资源,只有当前运行进程结束运行或进入阻塞状态时才会从就绪队列将更紧迫的进程调出并分配处理机资源。

  • 剥夺调度方式:当有一个更紧急或优先级更高的进程需要使用处理机,当前进程会被暂停,执行更紧迫进程的调度方式。

调度基本准则

  • CPU利用率:当CPU一直处于忙碌状态时,CPU利用率最高。

  • 系统吞吐量:表示单位时间内完成的作业数量,当作业都是短作业时,系统吞吐量会比较大。

  • 周转时间:是作业从提交到完成的时间,包括作业等待、在就绪队列排队、运行、IO操作的时间总和。

  • 平均周转时间:是多个作业的周转时间的平均值。

  • 带权周转时间: 带 权 周 转 时 间 = 作 业 周 转 时 间 作 业 实 际 运 行 时 间 带权周转时间=\frac{作业周转时间作业}{实际运行时间} =

  • 平均带权周转时间:是多个带权周转时间的平均值。

  • 等待时间:进程等待处理机的时间之和。

  • 响应时间:从用户提交到首次响应所花费的时间。

调度算法

调度算法是本文的重点,也是很常见的考点,以下介绍常见的调度算法。

先来先服务(FCFS)调度算法

从名字就可以知道这是一种“先来后到”的调度算法,这种调度算法支持作业调度和进程调度。FCFS调度算法每次挑选队列中最先到达的进程或作业,依次进行调度。
这是一种非剥夺调度算法,直观来看,非常公平,但是还是有缺点的。

特点:算法简单,但效率低,对长作业有利,短作业可能要等待很长时间。有利于CPU密集型作业,不利于IO密集型作业。

短作业/进程优先(SJF/SPF)调度算法

短作业/进程优先算法是一种优先调度短作业(进程)的调度算法,同样也是一种非剥夺调度算法

特点:对短作业有利,对长作业不利,如果一直有短作业进来,可能长作业会一直得不到执行。不考虑作业紧迫程度,有些紧迫的作业可能不能及时处理。有利于IO密集型作业,不利于CPU密集型作业。

优先级调度算法

优先级调度算法既可以用于作业调度也可以用于进程调度。当用于作业调度时,会从后备作业队列中选出一个或多个优先级最高的作业,将它们调入内存中,并分配相应资源;当用于进程调度时,会从就绪队列中选出优先级最高的进程,将处理机分配给这个进程,使它能够运行。

根据高优先级进程能否抢占处理机还可以将这种算法分为非剥夺式优先级调度算法和剥夺式优先级调度算法。

在进程创建后进程优先级能否改变又可以将进程优先级分为静态优先级和动态优先级。

  • 静态优先级。静态优先级是进程在创建时就已经确定好的,在进程运行期间不能改变。

  • 动态优先级。动态优先级是指进程运行期间优先级根据进程实际运行情况动态变化的。

高响应比优先调度算法

高响应比优先调度算法适用于作业调度,是短作业优先调度算法和先来先服务算法的折中。我们先来看一下什么是响应比吧。

响 应 比 = 等 待 时 间 + 要 求 服 务 时 间 要 求 服 务 时 间 响应比=\frac{等待时间+要求服务时间}{要求服务时间} =+

高响应比优先调度算法具有以下特点:

  • 短作业的要求服务时间很短,因此在相同等待时间的情况下,短作业的响应比也更高,会被优先执行。

  • 当要求服务时间相同时,等待时间长的作业会被优先服务。

  • 长作业的要求服务时间比较长,但是随着等待时间的增加,长作业的响应比也会增加,然后可以分配处理机。

时间片轮转调度算法

时间片轮转调度算法一般在分时系统上使用,每个进程被分配固定大小的时间片,当时间片用完以后,无论进程是否执行结束,处理机都将被剥夺给下一个进程。

特点:时间片轮转调度算法的时间片大小选择很讲究,如果时间片过大,该调度算法会退化成为先来先服务调度算法,而时间片设置过小,处理机会频繁切换,进程真正使用处理机的时间减少,系统吞吐量下降。

多级反馈队列调度算法

多级反馈队列调度算法是这些调度算法中最复杂的,也是整合了前面一些调度算法而形成的算法,我们来看一下它的工作过程。

多级反馈队列调度算法

多级反馈队列调度算法工作过程有以下这些特点:

  • 每一级队列从上至下的优先级逐渐递减,优先级越高的队列时间片越小。也就是说,最顶层的队列的时间片最小。

  • 最新的进程进入内存会被放入最上层的队列末尾,当执行到这个进程时,如果能在分配的时间片内完成则会出队列,如果不能在时间片内完成就进入下一级队列末尾,等待处理机资源。

  • 如果高优先级队列有进程存在,则处理机会优先处理上级队列中的进程。如果处理机正在执行某一队列中的进程,此时更高优先级队列中有进程进入,那么当前正在执行的进程会回到当前队列的队尾,处理机执行新进入队列的进程。

最后要提一点,多级反馈队列调度算法兼顾短作业优先的同时,不会让长作业长期处于等待状态最终出现饥饿。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值