处理机调度

news2024/11/16 9:31:49

在多道程序环境下,内存中存在着多个进程,进程的数目往往多于处理机的数目。这就要求系统能按某种算法,动态地将处理机分配给一个处于就绪状态的进程,使之执行。分配处理机的任务是由处理机调度程序完成的。

对于大型系统运行时的性能,如系统吞吐量、资源利用率、作业周转时间或响应的及时性等,在很大程度上都取决于处理机调度性能的好坏。因而,处理机调度便成为OS中至关重要的部分。

调度的层次

在多道程序系统中,调度的实质是一种资源分配,处理机调度是对处理机资源进行分配。处理机调度算法是指根据处理机分配策略所规定的处理机分配算法。

在多道批处理系统中,一个作业从提交到获得处理机执行,直至作业运行完毕,可能需要经历多级处理机调度,下面先来了解处理机调度的层次。

高级调度

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

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

低级调度

低级调度又称为进程调度或短程调度,它的调度对象是进程(或内核级线程)。其主要功能是根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。

进程调度是最基本的一种调度,在多道批处理、分时和实时三种类型的OS中,都必须配置这级调度。

中级调度

中级调度又称为内存调度。引入中级调度的主要目的是,提高内存的利用率和系统的吞吐量。为此,应把那些暂时不能运行的进程,调至外存等待,此时进程的状态称为就绪驻外存状态(或挂起状态)。当它们已具备运行条件且内存又稍有空闲时,由中级调度来决定,把外存上的那些已具备运行条件的就绪进程再重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待。

中级调度实际上就是存储器管理中的对换功能(swap),

调度的算法

先来先服务

FCFS(first-come first-served,FCFS,先来先服务调度算法)是最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。

当在作业调度中采用 FCFS 调度算法时,系统将按照作业到达的先后次序来进行调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行时间的长短,从作业的后备队列中选择几个最先进入该队列的作业,将它们调入内存,为它们分配资源和创建进程。然后把它放入就绪队列。

当在进程调度中采用 FCFS 调度算法时,每次调度是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后,进程调度程序才将处理机分配给其它进程。

FCFS 调度算法在单处理机系统中已很少作为主调度算法,但经常把它与其它调度算法相结合使用,形成一种更为有效的调度算法。例如,可以在系统中按进程的优先级设置多个队列,每个优先级一个队列,其中每一个队列的调度都基于 FCFS 调度算法。

短作业优先

由于在实际情况中,短作业(进程)占有很大比例,为了使它们能比长作业优先执行,而产生了短作业优先调度算法(short job first,SJF)。

SJF 调度算法是以作业的长短来计算优先级,作业越短,其优先级越高。作业的长短是以作业所要求的运行时间来衡量的。

SJF 调度算法可以分别用于作业调度和进程调度。在把 SJF 调度算法用于作业调度时,系统将从外存的作业后备队列中选择若干个估计运行时间最短的作业,优先将它们调入内存运行。


SJF 调度算法较之 FCFS 调度算法有了明显的改进,但 SJF 调度算法仍然存在不容忽视的缺点:

  • 必须预知作业的运行时间。在采用这种调度算法时,要先知道每个作业的运行时间。即使是程序员也很难准确估计作业的运行时间,如果估计过低,系统就可能按估计的时间终止作业的运行,但此时作业并未完成,故一般都会偏长估计。
  • 对长作业非常不利,长作业的周转时间会明显地增长。更严重的是,该调度算法完全忽视作业的等待时间,可能使作业等待时间过长,出现饥饿现象。
  • 在采用 FCFS 调度算法时,人机无法实现交互。
  • SJF 调度算法完全未考虑作业的紧迫程度,故不能保证紧迫性作业能得到及时处理。

优先级调度算法

优先级调度算法(priority-scheduling algorithm,PSA)

我们可以这样来看作业的优先级:

  • 对于先来先服务调度算法,作业的等待时间就是作业的优先级,等待时间越长,其优先级越高。
  • 对于短作业优先调度算法,作业的长短就是作业的优先级,作业所需运行的时间越短,其优先级越高。

但上述两种优先级都不能反映作业的紧迫程度。而在优先级调度算法中,则是基于作业的紧迫程度,由外部赋予作业相
应的优先级,调度算法是根据该优先级进行调度的。这样就可以保证紧迫性作业优先运行。

优先级调度算法可以分别用于作业调度和进程调度。当把优先级调度算法用于作业调度时,系统将从外存的作业后备队列中选择若干个优先级最高的作业,优先将它们调入内存运行。

高响应比优先

高响应比优先调度算法(Highest Response Ratio Next,HRRN)

在批处理系统中,FCFS 调度算法所考虑的只是作业的等待时间,而忽视了作业的运行时间。而 SJF 调度算法正好与之相反,只考虑作业的运行时间,而忽视了作业的等待时间。高响应比优先调度算法则是既考虑了作业的等待时间,又考虑了作业运行时间的调度算法,因此既照顾了短作业,又不致使长作业的等待时间过长,从而改善了处理机调度的性能。

高响应比优先调度算法是如何实现的呢?如果我们能为每个作业引入一个动态优先级,即优先级是可以改变的,令它随等待时间延长而增加,这将使长作业的优先级在等待期间不断地增加,等到足够的时间后,必然有机会获得处理机。该优先级的变化规律可描述为:在这里插入图片描述

由于等待时间与服务时间之和就是系统对该作业的响应时间,故该优先级又相当于响应比Rp。据此,优先又可表示为:在这里插入图片描述


由上式可以看出:

  • 如果作业的等待时间相同,则要求服务的时间愈短,其优先权愈高,因而类似于 SJF 算法,有利于短作业。
  • 当要求服务的时间相同时,作业的优先权又决定于其等待时间,因而该算法又类似于 FCFS 算法。
  • 对于长作业的优先级,可以随等待时间的增加而提高,当其等待时间足够长时,也可获得处理机。

因此该调度算法实现了较好的折中。当然在利用该调度算法时,每次要进行调度之前,都需要先做响应比的计算,显然会增加系统开销。

参考资料

《计算机操作系统》(第四版)3.2 作业与作业调度

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

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

相关文章

Vue事件处理@传参

错误写法&#xff1a;将showInfo()函数直接写在vm外面。 <body><div id"root"><h2>欢迎来到{{name}}大学</h2><!--v-on: 当。。。。的时候click 点击事件时候去找showInfo这个函数--><button v-on:click"showInfo">…

图灵学院:用 Explain 查看 SQL 的执行计划

文章目录 一、Explain 概述1.1 Explain 含义及作用1.2 Explain 的基本用法 二、Explain 返回列详解2.1 数据准备2.2 id 列2.3 select_type 列2.3.1 simple2.3.2 primary2.3.3 subquery2.3.4 dependent subquery2.3.5 derived2.3.6 union2.3.7 dependent union2.3.8 union resul…

【保姆级】Redis安装教程(Windows版)

Redis安装教程&#xff08;Windows版&#xff09; 文章目录 Redis安装教程&#xff08;Windows版&#xff09;1.下载安装包2. 安装注意事项3. 注意事项4. 登录Redis客户端5. 停止Redis服务附&#xff1a;详细安装步骤附&#xff1a;RESP&#xff08;Redis桌面管理&#xff09;使…

掌握Tampermonkey,让网页玩出新花样

掌握Tampermonkey&#xff0c;让网页玩出新花样 何为Tampermonkey?Tampermonkey有何神通&#xff1f;操作示例 今天我要向朋友们介绍一个超酷的浏览器插件&#xff0c;Tampermonkey。我把它称之为一根神奇的魔法棒&#xff0c;可以让你对网页的玩法、样式和功能实现自定义。 熟…

windows环境下安装zookeeper

安装 下载地址&#xff1a;Apache Downloads 注意&#xff1a;zookeeper的安装路径不要有中文&#xff0c;建议也不要有空格 文件路径如下&#xff1a; 生成并修改zoo.cfg文件 复制zookeeper的conf目录下的zoo_simple.cfg文件&#xff0c;并重命名为zoo.cfg 修改zoo.cfg文件…

nx.draw报错 ‘_AxesStack‘ object is not callable

文章目录 前言解决办法1、关掉梯子&#xff01;&#xff01;&#xff01;2、更新pip3、更新networkx库和matplotlib库4、再次执行代码画图成功 总结 前言 用Networkx画图时报错&#xff1a; ‘_AxesStack‘ object is not callable。 解决办法 1、关掉梯子&#xff01;&#…

项目计划工具:自动生成项目周期计划的利器,写方案项目计划再也不需要为计算工期而烦恼了

在项目管理中&#xff0c;制定一个合理的项目计划是确保项目顺利进行的关键。然而&#xff0c;对于复杂的项目来说&#xff0c;手动编制项目计划表往往会非常耗时且容易出错。幸运的是&#xff0c;现代项目管理工具的出现解决了这个问题。本文将介绍一种强大的项目计划工具&…

网卡突然自动关闭

故障现象&#xff1a;主机突然不通&#xff0c;登录服务器看网卡的状态是down 解决方案&#xff1a; 1、尝试重启网卡&#xff0c;发现不行&#xff0c;干脆重启服务还是不行 service network restart reboot ifup eth0 #报错如下2、根据报错上网搜了下&#xff0c;猜测网络…

解决bug:Multiple assets emit different content to the same filename index.html

问题描述 同事将他的代码发给我&#xff0c;我下载依赖并用npm run serve运行项目过程中&#xff0c;出现Conflict: Multiple assets emit different content to the same filename index.html的报错 原因分析&#xff1a; 可能是文件在创建打包过程中&#xff0c;文件路径有中…

实现联动滚动

序言 在垂直滑动的过程中可以横向滚动内容。 效果 代码 就一个工具类就行了。可以通过root view向上查找recycleView。自动添加滚动监听。在子view完全显示出来以后&#xff0c;才分发滚动事件。这样用户才能看清楚第一个。 需要一个id资源 <?xml version"1.0&qu…

如何启动Sigrity Power DC直流压降仿真分析工具

如何启动Sigrity Power DC直流压降仿真分析工具 Sigrity Power DC是一款十分强大的直流压降仿真分析工具,用它可以直观和准确的模拟出实际应用场景。 下面介绍如何打开POWER DC 这款工具 首先确保电脑上安装好了Candence打开Candence软件的安装目录

华为手机是如何通过限制风险应用的安装,来保护你的手机的?

你有没有遇到过这种情况&#xff1a;在用手机刷短视频、刷文章的时候&#xff0c;看到感兴趣的广告&#xff0c;点击下载了应用。或者听朋友推荐&#xff0c;在网页上搜索下载了某款应用&#xff0c;结果安装的时候&#xff0c;系统却提示应用有风险无法安装&#xff1f; 为什么…

毕业季,字节跳动面试题拿走不谢!(附答案)

最近有收到一些粉丝不同公司的面试题&#xff0c;像字节跳动、网易、美团等&#xff0c;趁着有时间&#xff0c;给大家梳理下&#xff0c;说不定面试能派上用场&#xff0c;大概给大家从以下几个方面来做了整理&#xff1a; 个人信息&#xff1a;(工作/实习经验&#xff0c;所…

c#调用串口报“连到系统上的设备没有发挥作用”的解决

如下图所示&#xff0c;当C#打开串口报如下错误&#xff1a; 这是因为在Win11上安装了多个驱动造成的&#xff0c;需要切换回旧的驱动。 解决方法&#xff1a; 打开设备管理器&#xff0c;找到串口设备&#xff0c;点击更新驱动程序&#xff1a; 选择浏览我的电脑以查找驱动程…

uview的折叠面板扩展

第一个&#xff1a;首先要安装uview UI框架 &#xff08;已发布如何安装&#xff09; 第二个&#xff1a;使用uview 中的折叠面板&#xff08;Collapse 折叠面板 | uView 2.0 - 全面兼容nvue的uni-app生态框架 - uni-app UI框架&#xff09; 第三点&#xff1a;明白一个插槽使用…

uniapp生命周期全解析

我们学习uniapp的时候会学到uniapp的生命周期&#xff0c;uniapp做到了三端适配&#xff0c;但在学uniapp的时候最好有vue和微信小程序的基础&#xff0c;这样理解起来会非常快。 uniapp 的生命周期和 vue 的生命周期基本相同&#xff0c;但是在 uniapp 中还增加了一些特定的生…

Linux9.进程(下)(僵尸,孤儿,环境变量)

1.僵尸进程 危害 2.孤儿进程 3.进程的优先级 优先级 老的优先级(越小越先被执行) nice值(可以调) 4.几个概念 上下文数据 :一个进程在运行的过程中寄存器中产生的临时数据。 当进程被切下来的时候&#xff0c;需要带走自己的上下文数据&#xff0c;下次回来的时候恢复上去。…

java之路—— 带你了解Struts与其基本的应用

创作不易&#xff0c;各位亲给个免费的呗 文章目录 前言一、什么是Struts&#xff0c;可以用来干嘛二、Struts 与 springmvc三、Struts的开发的基本步骤四、Struts的处理流程 前言 Struts是在2000年由Apache软件基金会首次发布的&#xff0c;自那时以来&#xff0c;它在Java W…

webstorm2022 TS1109: Expression expected.

在使用webstorm2022&#xff0c;加入ESLint&#xff08;已禁用&#xff09;的情况下&#xff0c;编写vue3的typescript代码时&#xff0c;报错&#xff1a; TS1109: Expression expected. 原因&#xff1a;2022版本不支持volar&#xff0c;需升级到2023版本。 官方描述为&am…

二叉树题目:单值二叉树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;单值二叉树 出处&#xff1a;965. 单值二叉树 难度 3 级 题目描述 要求 如果二叉树每个结点都具有相同的值&am…