操作系统(3.1)--处理机调度和作业

news2024/11/13 11:21:49

目录

一、处理机调度层次

1.高级调度(High Level Scheduling)

2.低级调度(Low Level Scheduling)

3.中级调度(Intermediate Scheduling)

二、处理机调度算法的目标

1.处理机调度算法的共同目标

2.批处理系统的目标

3.分时系统的目标

三、批处理系统中的作业

1.作业和作业步

2.作业控制块JCB (Job Control Block)

3.作业运行的三个阶段和三种状态

四、作业调度的主要内容

(1)接纳多少个作业

(2)接纳哪些作业

五、先来先服务和短作业(进程)优先算法

1.先来先服务调度算法

2.短作业(进程)优先调度算法


一、处理机调度层次

1.高级调度(High Level Scheduling)

高级调度又称长程调度或作业调度,它的调度对象是作业。其主要功能是根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存,为它们创建进程、分配必要的资源,并将它们放入就绪队列。

主要用于多道批处理系统中,而在分时和实时系统中不设置高级调度。

2.低级调度(Low Level Scheduling)

低级调度又称为进程调度或短程调度,其所调度的对象是进程(或内核级线程)。其主要功能是,根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。进程调度是最基本的一种调度,在多道批处理、分时和实时三种类型的OS中,都必须配置这级调度。

3.中级调度(Intermediate Scheduling)

引入中级调度的主要目的是为了提高内存利用率和系统吞吐量。

使那些暂时不能运行的进程不再占用宝贵的内存资源,而将它们调至外存上去等待,把此时的进程状态称为就绪驻外存状态或挂起状态。

当这些进程重又具备运行条件且内存又稍有空闲时,由中级调度来决定把外存上的那些又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待进程调度。

二、处理机调度算法的目标

1.处理机调度算法的共同目标

(1)资源利用率

CPU的利用率=(CPU有效工作时间) / (CPU有效工作时间+CPU空闲等待时间)

(2)公平性

使诸进程都获得合理的CPU时间,不会发生进程饥饿现象。

(3)平衡性

尽可能保持系统资源使用的平衡性

(4)策略强制执行

2.批处理系统的目标

(1)平均周转时间短

周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔(称为作业周转时间)。

它包括四部分时间

  • ①作业在外存后备队列上等待(作业)调度的时间,
  • ②进程在就绪队列上等待进程调度的时间,
  • ③进程在CPU上执行的时间,以及
  • ④进程等待I/O操作完成的时间

平均周转时间:

带权周转时间是作业的周转时间T与系统为它提供服务的时间Ts之比,即T/Ts。

平均带权周转时间:

对用户而言,总希望自己作业的周转时间尽可能的少;对系统而言,则希望作业的平均周转时间尽可能的少。每个系统在选择作业调度算法时,既应考虑用户的要求,又能确保系统具有较高的效率。

(2)系统吞吐量高

吞吐量是指在单位时间内系统所完成的作业数,因而它与批处理作业的平均长度具有密切关系。尽量多的选择短作业运行。

(3)处理机利用率高

对于大、中型多用户系统,由于CPU价格十分昂贵,致使处理机的利用率成为衡量系统性能的十分重要的指标。尽量选择计算量大的作业运行。

3.分时系统的目标

(1)响应时间快

所谓响应时间,是从用户通过键盘提交一个请求开始,直至系统首次产生响应为止的时间,或者说,直到屏幕上显示出结果为止的一段时间间隔。

它包括三部分时间:

  • ①从键盘输入的请求信息传送到处理机的时间,
  • ②处理机对请求信息进行处理的时间,以及
  • ③将所形成的响应信息回送到终端显示器的时间。

(2)均衡性

是指系统响应时间的快慢应与用户所请求服务的复杂性相适应。

4.实时系统的目标

(1)截止时间的保证

所谓截止时间,是指某任务必须开始执行的最迟时间,或必须完成的最迟时间。对于严格的实时系统,其调度方式和调度算法必须能保证这一点,否则将可能造成难以预料的后果。

(2)可预测性

在实时系统中,可预测性显得非常重要。

三、批处理系统中的作业

1.作业和作业步

(1)作业(Job)。包含了通常的程序和数据,而且还应配有一份作业说明书。在批处理系统中,是以作业为基本单位从外存调入内存的。

(2)作业步(Job Step)。每个作业都必须经过若千个相对独立,又相互关联的顺序加工步骤才能得到结果。我们把其中的每一个加工步骤称为一 个作业步,各作业步之间存在着相互联系,往往是上一个作业步的输出作为下一个作业步的输入。例如,一个典型的作业可分成:“编译”作业步,“链接装配”作业步和“运行”作业步。

2.作业控制块JCB (Job Control Block)

JCB是作业在系统中存在的标志,保存了系统对作业进行管理和调度所需的全部信息。

JCB通常应包含的内容有:

  • 作业标识、用户名称、用户帐户、
  • 作业类型(CPU繁忙型、I/O 繁忙型、批量型、终端型)、
  • 作业状态、调度信息(优先级、作业已运行时间)、
  • 资源需求(预计运行时间、要求内存大小、要求I/O设备的类型和数量等)、
  • 进入系统时间、开始处理时间、作业完成时间、作业退出时间、资源使用情况等
  1. 每当作业进入系统时,系统便为每个作业建立一个JCB,根据作业类型将它插入相应的后备队列中,
  2. 作业调度程序依据一定的调度算法来调度它们,被调度到的作业将会装入内存。
  3. 在作业运行期间,系统就按照JCB中的信息对作业进行控制。
  4. 当一个作业执行结束进入完成状态时,系统负责回收分配给它的资源,撤消它的作业控制块。

3.作业运行的三个阶段和三种状态

三个阶段:收容、运行和完成

三种状态:后备状态、运行状态和完成状态

(1)收容阶段:把作业输入到硬盘,再为该作业建立JCB,放入后备队列中。此时的作业状态为“后备状态”

(2)运行阶段:当作业被作业调度选中后,便为它分配必要的资源和建立进程,并将它放入就绪队列。“运行状态”

(3)完成阶段:当作业运行完成、或发生异常情况而提前结束时,作业便进入完成阶段。“ 完成状态”

四、作业调度的主要内容

作业调度的主要功能是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。然后再将新创建的进程插入就绪队列,准备执行。

有时也把作业调度称为接纳调度(Admission Scheduling)。

每次作业调度必须做出如下决定:

(1)接纳多少个作业

作业调度每次要接纳多少个作业进入内存,取决于多道程序度(Degree of Multiprogramming),即允许多少个作业同时在内存中运行。当内存中同时运行的作业数目太多时,可能会影响到系统的服务质量,比如,使周转时间太长。但如果在内存中同时运行作业的数量太少时,又会导致系统的资源利用率和系统吞吐量太低,多道程序度的确定应根据系统的规模和运行速度等情况做适当的折衷。

(2)接纳哪些作业

应将哪些作业从外存调入内存,这将取决于所采用的调度算法。最简单的是先来先服务调度算法,这是指将最早进入外存的作业最先调入内存;较常用的一种算法是短作业优先调度算法,是将外存上最短的作业最先调入内存;另一种较常用的是基于作业优先级的调度算法,该算法是将外存上优先级最高的作业优先调入内存;比较好的一种算法是“响应比高者优先”的调度算法

五、先来先服务和短作业(进程)优先算法

1.先来先服务调度算法

先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。当在进程调度中采用该算法时,每次调度是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。

2.短作业(进程)优先调度算法

短作业(进程)优先调度算法SJ(P)F,是以作业的长短来计算优先级,作业越短,其优先级越高。作业的长短是以作业所要求的运行时间来衡量的。它们可以分别用于作业调度和进程调度。

SJ(P)F调度算法也存在不容忽视的缺点:

(1)必须预知作业的运行时间。

(2)对长作业非常不利。如作业C的周转时间由10增至16,其带权周转时间由2增至3.1。更严重的是,如果有一长作业(进程)进入系统的后备队列(就绪队列),由于调度程序总是优先调度那些(即使是后进来的)短作业(进程),将导致长作业(进程)长期不被调度,出现饥饿现象。

(3)采用SJF算法时,人一机无法实现交互。

(4)该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)会被及时处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/441043.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【k8s完整实战教程3】k8s集群部署kubesphere

系列文章:这个系列已完结,如对您有帮助,求点赞收藏评论。 读者寄语:再小的帆,也能远航! 【k8s完整实战教程0】前言【k8s完整实战教程1】源码管理-Coding【k8s完整实战教程2】腾讯云搭建k8s托管集群【k8s完…

【C++】海量数据面试题

海量数据面试题 文章目录 海量数据面试题一、哈希切割二、位图应用1.给定100亿个整数,设计算法找到只出现一次的整数2.求两个文件交集3.在100亿个整数中找到出现次数不超过2次的所有整数 三、布隆过滤器1.求两文件交集(近似算法)2.求两文件交…

气传导和骨传导耳机哪个好?简单科普这两种蓝牙耳机

在生活中,我们经常会用到耳机,特别是在日常娱乐听歌、运动休闲、户外通勤的时候,一款舒适的耳机是必不可少的。 而最近几年,随着科技的发展,各大品牌也相继推出了各种类型的耳机,其中比较热门的就有气传导…

如何在电脑上使用wink一键高清优化短视频画质

如何在电脑上使用wink一键高清优化短视频画质 文章目录 如何在电脑上使用wink一键高清优化短视频画质1.软件简介1.1痛点1.2解决方案 2.实际操作2.1准备工作2.1.1下载雷电模拟器2.1.2下载wink 2.2.安装软件2.2.1安装雷电模拟器2.2.2在雷电模拟器中安装wink 2.3雷电模拟器基本设置…

软件测试实验:Junit单元测试

目录 前言 实验目的 实验内容 实验要求 实验过程 题目一 题目一测试结果 题目二 题目二实验结果 总结 前言 软件测试是软件开发过程中不可缺少的一个环节,它可以保证软件的质量和功能,发现并修复软件的缺陷和错误。软件测试分为多种类型&…

《数据结构》---术语篇

目录 前言: 一.术语 1.1数据 1.2数据结构 1.3逻辑结构和物理结构 二.数据类型和抽象数据类型 ​​​​​​​ ❤博主CSDN:啊苏要学习 ▶专栏分类:数据结构◀ 学习数据结构是一件有趣的事情,希望读者能在我的博文切实感受到&#xff0c…

Numpy从入门到精通——随机生成数组|特定生成数组|规则生成数组

这个专栏名为《Numpy从入门到精通》,顾名思义,是记录自己学习numpy的学习过程,也方便自己之后复盘!为深度学习的进一步学习奠定基础!希望能给大家带来帮助,爱睡觉的咋祝您生活愉快! 这一篇介绍《…

Qt内存管理及泄露后定位到内存泄漏位置的方法

Qt内存管理机制 Qt使用对象父子关系进行内存管理。在创建类的对象时,为对象指定父对象指针。当父对象在某一时刻被销毁释放时,父对象会先遍历其所有的子对象,并逐个将子对象销毁释放。 Qt内存管理代码示例 QLabel *label new QLabel;这里…

【==是判断相等吗?---错辣】C++和JAVA中判断字符串值相等的区别

文章目录 先上结论C中stringJAVA中String回顾结论 参考文章:这里;这里;这里 先上结论 C中的string类型可以使用和!来判断两个字符串的值是否相等;而JAVA不行,JAVA中和!是用来判断两个字符串的地址是否相同&#xff08…

c++学习之类与对象3

目录 成员变量和函数的存储 this指针 this指针的工作原理 this指针的应用 const修饰的成员函数 友元 友元的语法 1.普通全局函数成为类的友元 2.类的某个成员函数作为另一个类的友元 整个类作为另一个类的友元 运算符重载 1 运算符重载的基本概念 2 重载加号运算符…

MySQL数据库学习笔记之存储引擎

存储引擎 MySQL体系结构 连接层 最上层是一些客户端和连接服务,主要完成一些类似于连接处理、授权认证、以及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 服务层 第二层架构主要完成大多数的核心服务功能,如SQL接口&am…

【JavaScript】6.DOM

文章目录 DOM1. 简介2. 获取元素2.1 根据 ID 获取2.2 根据标签名获取2.3 通过 HTML5 新增的方法获取2.4 特殊元素获取 3. 事件基础3.1 事件概述3.2 事件三要素3.3 执行事件步骤 DOM 1. 简介 文档对象模型(Document Object Model,简称 DOM)&…

web自动化测试框架落地实施全过程-测试环境搭建 (Selenium+Python)

一、什么是web自动化测试? Web自动化测试是指使用自动化工具模拟用户在Web浏览器中执行的操作,通过编写脚本来自动化执行测试用例,以验证Web应用程序的功能、性能和兼容性等方面的质量。其主要目的是降低测试成本和时间,并提高测试效率和准…

LDAP未授权漏洞验证

因为工作需要,这里验证了下LDAP未授权。 以下是收集到的资料,最后是具体使用!!!!! 更新 2)连接ad域有两个地址: ldap://http://XXXXX.com:389 和 ldap://http://XXXXX.…

算法的时间复杂度和空间复杂度(2)

计算斐波那契递归Fib的时间复杂度&#xff1f; long long Fib(size_t N) { if(N < 3) return 1; return Fib(N-1) Fib(N-2); } 因为递归先递推后回归&#xff0c;看起来规律像等比数列&#xff0c;也可以用错位相减法&#xff0c;因为斐波那契数列到第二项就不会再计算了&a…

传输层重点协议之【UDP协议】

1. UDP协议端格式 2. UDP的特点 2.1 无连接 知道对端的IP和端口号就直接传输&#xff0c;不需要建立连接 2.2 不可靠 没有任何的安全机制&#xff0c;发送端发送数据报后&#xff0c;如果因为网络故障数据报无法发送对方&#xff0c;UDP协议层也不会给应用层返回任何错误信…

第六章 Linux实际操作——实用指令

第六章 Linux实际操作——实用指令 6.1 指定运行级别6.2 找回root密码6.3 帮助指令6.3.1 man获得帮助信息6.3.2 help指令6.3.3 搜索引擎帮助更直接 6.4 文件目录类6.4.1 pwd指令6.4.2 ls指令6.4.3 cd指令6.4.4 mkdir 指令6.4.5rmdir指令删除空目录6.4.6 touch 指令6.4.7 cp 指令…

火山引擎边缘云,助力业务敏捷创新

[中国&#xff0c;上海&#xff0c;4 月 18 日]2023 春季火山引擎 FORCE 原动力大会正式举办。大会主论坛&#xff0c;火山引擎总裁谭待围绕云上增长三要素发表了重要演讲。在敏捷迭代专题中&#xff0c;谭待分享了火山引擎边缘云连接与计算无处不在的理念&#xff0c;并于现场…

【fluent udf】定义源项宏时,在迭代计算过程中UDM变量变inf、NAN、发散时如何解决?

一、问题背景 最近做的一个fluent仿真算例里用到源项宏&#xff0c;源项宏里用UDM定义了树脂固化度场。 在迭代计算的过程中&#xff0c;UDM的取值发散成了无穷大inf&#xff08;第一次计算取值是NAN&#xff09;&#xff0c;如下图所示。 由于每一次迭代计算过程中&#xf…

【嵌入式系统与入门】Day01 Arduino开发板

文章目录 1. Arduino概述1.1 是什么&#xff1f;1.2 分类1.3 组成1.4 电源 2. Arduino软件开发流程2.1 明确接口函数2.2 连接板子2.3 打开项目【或者自己编程序】2.4 选择板子类型2.5 选择通讯端口2.6 下载程序2.7. 编写程序代码——程序架构 3. 较常用的封装函数3.1 pinMode(p…