操作系统复习笔记 06 CPU Scheduling CPU调度

2023-11-19

CPU的三级调度:
1.高级调度(Long-term):作业调度,从外存进内存
2.低级调度(Short-term):进程调度,分配处理机
3.中级调度(Medium-term):对换
通过多道程序设计得到CPU的最高使用率。
CPU-IO脉冲周期:进程的执行包括进程CPU上执行和等待IO。
进程的执行以CPU脉冲开始,其后跟着IO脉冲。进程的执行就是在这两个状态之间切换。


CPU调度可能发生以下情况:
1.从运行转到等待
2.从运行转到就绪
3.从等待转到就绪
4.中止运行


其中1、4情况下的调度为非抢占式调度,所有其他情况下发生的调度成为抢占式调度。
非抢占式调度:把处理机分配给某进程后,让其一直执行,知道该进程完成或发生某事件被阻塞时,才把处理机分配给其他进程,不允许其他进程抢占已经分配出去的处理及。
抢占方式:允许调度程序根据某个原则,去停止某个正在执行的进程,将处理及重新分配给另一个进程。
抢占的原则:
1.时间片原则
2.优先权原则
3.短作业优先原则


分派程序负责将对CPU的控制权转交给进程调度选择的进程,
包括:切换上下文、切换到用户态、跳转到用户程序的适当位置并重新执行。 


分派延迟:分派程序种植一个进程的运行并启动另一个进程所花费的时间。


调度准则:
1.CPU利用率(CPU utilization):使CPU尽可能忙碌。
2.吞吐量(Throughput):单位时间内运行完的进程数。
3.周转时间(Turnaround time):进程从提交到运行结束的全部时间。
4.等待时间(Waiting time):进程在就绪队列中等待调度的时间片总和。
5.响应时间(Response time):从进程提出请求到首次被相应的时间段。注意:在分时系统环境下不是输出完整结果的时间
6.带权周转时间:周转时间/实际运行时间


调度算法影响的是等待时间,而不能影响真正使用CPU的时间和IO时间。


调度算法:
1.先来先服务(FCFS)
——属于非抢占式调度,一旦一个进程占有处理及,它就一直运行下去,知道该进程完成或者因为等待某事件而不能继续运行时才释放处理机。
——有利于长作业不利于短作业,有利于CPU型作业,不利于IO型作业。


2.短作业优先(SJF):SJF是最优的,对一组指定的进程而言,它给出了最短的平均等待时间。
——有两种调度形式:
(1)非抢占式调度(nonpreemptive):一旦进程拥有CPU,它的使用权小只能等待该CPU脉冲结束后才让出。
(2)抢占式调度(Preemptive):发生在有比当前进程剩余时间片更短的进程到达时,也称为最短剩余时间优先调度。
预测CPU脉冲长度:T(n+1) = a*t(n) + (1-a)*T(n) 其中t(n)是实际运行时间,T(n)是预测时间。
——采用SJF有利于系统减少平均周转时间,提高系统吞吐量。


3.优先权调度(Priority Scheduling)
——同样有两种调度形式:
(1)非抢占式调度(nonpreemptive)
(2)抢占式调度(Preemptive)
——CPU分配给最高优先级的进程[嘉定最小整数=最高的优先级]
——SJF是以下一次CPU脉冲长度为优先数的优先级调度。
——静态优先权:在进程创建时确定,而且在整个生命期中保持不变。
——静态优先权可能会出现饥饿问题。解决方案:老化(视进程等待时间的延长提高其优先数)。
——动态优先权:进程的优先权可以随进程的推进而改变。改变优先权的因素:进程的等待时间、已使用处理机的时间、资源使用情况。


4.时间片轮转(Round Robin)
——每个进程将得到小单位的CPU时间,通常为10-100ms。时间片用完后,该进程将被抢占并插入就绪队列的末尾。
——一般来说,RR的平均周转时间比SJF长,但响应时间要短一些。
——时间片长度对于切换上下文的时间而言应足够长,否则将导致系统开销过大。
——一组进程的平均周转时间并不一定随着时间片的增大而降低。一般来说,如果大多数(80%)进程能在一个时间片内完成,就会改善平均周转时间




5.多级队列调度(Multilevel Queue)
——按进程的属性来分类,每个进程固定地处于某一个队列,每个队列有自己的调度算法,调度需要在队列间进行。
——给定时间片调度,即每个队列得到一定的CPU时间,进程在给定时间内执行;如,80%的时间执行前台的RR调度,20%的时间执行后台的FCFS调度。






6.多级反馈队列调度(Multilevel Feedback Queue)
——存在多个就绪队列,具有不同的优先级,各自按时间片轮转法调度。
——允许进程在队列之间移动。
——各个就绪队列中时间片的大小各不相同,优先级越高的队列时间片越小。


——当一个进程执行完一个完整的时间片后被抢占处理器,被抢占的进程优先级降低一级而进入下级就绪队列,如此继续,直至降到进程的基本优先级。


——而一个进程从阻塞态变为就绪态时要提高优先级。
——最后会将I/O型和交互式进程留在较高优先级队列

——多级反馈队列调度程序由以下参数定义:
——队列数、每一队列的调度算法、决定进程升级的方法、决定进程降级的方法、决定需要服务的进程将进入哪个队列的方法。


7.高响应比优先调度算法(Highest Response Ratio Next)
RP = 1 + 已等待时间/要求运行时间
HRRN算法实际上是FCFS算法和SJF算法的折衷。
优点:等待时间相同则SJF,要求服务时间相同,则FCFS。长作业优先级随着等待时间的增加而提高,不会出现长时间得不到相应的情况。
缺点:作业调度程序要统计作业的等待时间,做浮点运算浪费大量的计算时间。




Dispatch Latency 分派延迟
优先级倒置:如果较高优先级的进程需读或修改正在被另一个低优先级进程所访问的内核数据,高优先级进程需要等待低优先级的进程完成。
优先级继承:(正在访问高优先级进程所需资源的)低优先级进程继承高优先级,直到相关资源处理完毕,它们的优先级再返回原来的值。


Thread Scheduling 线程调度
1.用户级线程需要运行的话,需通过LWP映射到某个内核级线程。
2.局部调度(Local Scheduling):线程怎样决定将那个线程列入有效的轻量级线程。
3.全局调度(Global Scheduling):内核怎样决定下一个运行的内核线程。
4.Solaris scheduling 采用基于优先级的进程调度。
5.Windows XP采用基于优先级的,可抢占的调度算法,线程按时间片来使用CPU。
——优先级相同的进程按RR调度
——非实时优先级是动态调整的,实时优先级是固定不变的。
6.Linux提供2种进程调度算法
——分时:实现进程间公平可抢占调度。
——实时:按优先级调度。
——linux支持SMP,每个CPU有自己的runqueue,并独自进行调度。
——每个runqueue有两组优先级:Active 和 Expired
——调度程序从Active array中选取优先级最高的进程使用CPU,当所有进程都用尽了自己的时间片,交换Active array与expired array。
7.JVM使用的是抢占式的、基于优先级的调度算法。


多道程序的道指的是同一时刻能进内存的进程数量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统复习笔记 06 CPU Scheduling CPU调度 的相关文章

  • Android实现裁剪

    Android自定义View实现图片缩放旋转移动裁剪 灰信网 软件开发博客聚合 freesion com SuppressLint AppCompatCustomView public class CorpToView extends Im
  • java前后端传递日期类型不一致的转换问题

    今天在做学生信息的展示时发现展示的日期和数据库中日期不同 本来最开始是用SimpleDateFormat进行转换的 但是转换之后的是字符串类型的 与date类型对不上 所以就上网查了一下 发现可以用 DateTimeFormat和 Json
  • 牛顿法

    牛顿法被称为牛顿 拉夫逊 Newton Raphson 方法 牛顿在17世纪提出用来求解方程的根 假设点x 位函数f x 的根 则f x 0 将函数f x 在点处进行一阶泰勒展开有 假设点为函数f x 的根 则有 那么可以得到 牛顿法通过迭
  • STM8的ADC的五种工作模式

    STM8的ADC的五种工作模式 STM8的ADC是10位的逐次比较型模拟数字转换器 多达16个多功能的输入通道 拥有5种转换模式 转换结束可产生中断 STM8 ADC的初始化顺序如下 1 AD输入通道对应的IO设置为上拉输入 2 配置AD参
  • JVM学习笔记(二)------Java代码编译和执行的整个过程

    http blog csdn net cutesource article details 5904542 Java代码编译是由Java源码编译器来完成 流程图如下所示 Java字节码的执行是由JVM执行引擎来完成 流程图如下所示 Java
  • JAVA实现二叉树的前、中、后序遍历(递归与非递归)

    最近在面试中遇到过问到二叉树后序遍历非递归实现的方法 之前以为会递归的解决就OK 看来还是太心存侥幸 在下一次面试之前 特地整理一下这个问题 首先二叉树的结构定义 java代码如下 public class Node private int
  • 花式获取ssl证书有效期

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pem是什么 二 读取pem证书有效期 1 命令读取 2 C C 读取 3 具体分析 总结 前言 在网络通信过程中 为了数据在传输过程中保持私密 就要用到
  • 数据结构与算法学习指南,可能是最适合新手的了!

    文章目录 先来聊聊学习数据结构与算法 数据结构与算法 听起来就难得不要不要的 数据结构与算法 到底该怎么学 通用性建议 如何学习编程知识 1 你需要的不是一个参考 2 不要钻牛角尖 3 一定要多交流 4 你得多动手 不是让你找人打架 那么针
  • 【java poi】向已存在的excel中追加数据

    1 Maven依赖
  • Mkdocs 存在任意文件读取漏洞

    文章目录 Mkdocs 存在任意文件读取漏洞 1 Mkdocs简介 2 漏洞描述 3 影响版本 4 fofa 查询语句 5 漏洞复现 6 POC EXP 7 整改意见 8 往期回顾 Mkdocs 存在任意文件读取漏洞 1 Mkdocs简介
  • java面向对象程序设计第三版耿祥义pdf_java基础知识干货——封装

    很多java初学者 在学到Java面向对象方面的知识点的时候 会觉得这块的知识点真的蛮绕的 一个知识点一个知识点的往外冒 对于初学者来说区分构造器和方法就花费了一整天的时间 现在小编带大家重新过一遍知识点 先背下来一个理念 面向对象程序设计
  • String格式问题:将String格式请求方法时,String格式突然转化为对象的问题

    String格式问题 将String格式请求方法时 String格式突然转化为对象的问题 如上图所示 在使用队列调用方法时传递的参数为 xxxxxx 但是在方法中接收到的参数为 id msg xxxxxx name java lang St
  • 【投资界学堂】创业者如何远程管理异地团队

    转自 http pe pedaily cn 201106 20110627214254 all shtml p1 摘要投资界6月27日消息 美国商业网站Under30CEO近日刊载文章 如何成功的远程管理团队 文章选摘了青年创业理事会提供的
  • MQTT通信在JS中的实现

    MQTT协议 Message Queuing Telemetry Transport 消息队列遥测传输是由 IBM 发布的一种基于发布 订阅范式的 轻量级 消息协议 工作于TCP IP协议族之上 它是一种低开销 低带宽占用的即时通讯协议 可
  • 系统架构设计说明书

    目录 修订历史 文档审批信息 1 简介 1 1 目的 1 2 面向读者 1 3 文档组织 1 4 设计限定 1 5 术语说明 1 6 参考文献 2 项目建设目标和预期成果 2 1 建设目标 2 2 主要预期成果 3 系统非功能需求分析 3
  • 网络安全人才缺口超百万,如今的就业情况怎样?

    2022年9月7日 国家网络安全宣传周准时开始 本次网络安全宣传周和以前一样 主要目的都是为了普及网络安全知识 提高网络安全的防护技能 提升对电信网络诈骗的防范意识 在今年的主题论坛上 工信部发布并解读了 2022年网络安全产业人才发展报告
  • 【Vue】笔记四:浅析Vue三种开发模式:MVC、MVP、MVVM

    首先明确一点 开发模式 设计模式 开发模式 一个开发项目的方式或标准 RMVC 比较常见的三种开发模式 MVC MVP MVVM 1 MVC 个人感觉重点在View MVC全名是Model View Controller 是模型 model
  • 析构函数的注意问题以及用new开出来的空间用free释放会怎样

    大学学了越来越多的算法技术 但却不能忽略本源 编程语言是一切的基础 回过头来看依旧存在许多知识漏洞 返濮方能归真 前几天翻看别人的面经 发现了一个很有意思的问题 用new开出来的空间用free释放会怎样 借此机会 复习一下析构函数 并写了一
  • 接口测试理论

    了解接口测试https www cnblogs com houzhizhe p 6825457 html 什么是接口测试 测试人员通常所说的 接口测试 是针对系统各组件之间接口的一种测试 它属于功能测试 接口能测出普通界面操作难以发现的问题
  • 两个页面之间通过url地址栏进行传值

    第一个页面中有两个图片 当点击的时候能在第二个页面中获得它的属性值 通过location assign在第一个页面进行传值 location href在第二个页面进行接受值 一开始不会传值问题 但对于不知道怎么传值的人来说刚开始摸索 觉得好

随机推荐

  • useEffect详情用法

    1 为什么要使用useEffect 想必大家都是用过vue吧 在vue框架所写的项目中 我们通过在与后端进行数据交互的过程中 通常都是会在生命周期中进行数据的请求 然后将数据返回给页面进行渲染 在React中我们也是这样 但是在函数式组件中
  • Ubuntu18.04下SLEUTH 城市扩张模型编译与使用

    SLEUTH是CA模型的一种实现 由美国加州大学克拉克教授开发 可以模拟城市空间增长与土地利用变化 SLEUTH在Cygwin环境下可以运行 但是我尝试了很久都没有成功 于是我就尝试在Ubuntu系统下运行 编译与使用都非常简单 第一步 下
  • python爬虫系列7--动态网页爬取 selenium phantomjs chromedriver

    selenium phantomjs Selenium Selenium可以根据我们的指令 让浏览器自动加载页面 获取需要的数据 甚至页面截屏 或者判断网站上某些动作是否发生 Selenium自己不带浏览器 不支持浏览器的功能 它需要与第三
  • Android WiFi开发教程(二)——WiFi的搜索和连接

    在上一篇中我们介绍了WiFi热点的创建和关闭 如果你还没阅读过 建议先阅读上一篇文章Android WiFi开发教程 一 WiFi热点的创建与关闭 本章节主要继续介绍WiFi的搜索和连接 WiFi的搜索 搜索wifi热点 private v
  • python知识点

    0 1 python 语法基本知识点 注释 单行注释 这是使用三个单引号的多行注释 标识符 第一个字符必须是字母表中字母或下划线 标识符的其他的部分由字母 数字和下划线组成 标识符对大小写敏感 python保留字 False None Tr
  • python 小知识之 - simple http服务

    python3 9 windows 10 dos python一行命令搭建文件系统 cd d E Software python m http server 8090 浏览器访问 http localhost 8090 即可访问 E Sof
  • php知识点滴

    进度条的简单实现 echo ob flush flush 写日志文件 function mylog logthis file put contents myDebugLog log logthis r n FILE APPEND LOCK
  • EI会议——移动互联网、云计算和信息安全国际学术会议

    移动互联网 云计算和信息安全国际学术会议 International Conference on Mobile Internet Cloud Computing and Information Security 火热征稿中 大会官网 htt
  • PostgreSQL实用示例

    PostgreSQL实用示例 参考PostgreSQL 参考pass 创建表 CREATE TABLE bd peak index song feature lib id int8 NOT NULL features l decimal N
  • qpython3ll使用教程_Python3+Flask安装使用教程详解

    一 Flask安装环境配置 当前我的开发环境是Miniconda3 PyCharm 开发环境其实无所谓 自己使用Python3 Nodepad都可以 安装Flask库 pip install Flask 二 第一个Flask应用程序 将以下
  • 写时拷贝技术(copy-on-write)

    传统的fork 系统调用直接把所有的资源复制给新创建的进程 这种实现过于简单并且效率低下 因为它拷贝的数据也许并不共享 更糟的情况是 如果新进程打算立即执行一个新的映像 那么所有的拷贝都将前功尽弃 Linux的fork 使用写时拷贝 cop
  • Gartner:新型交付模式所引发的中国数字业务蝴蝶效应

    我们说无数字化无未来 数字化经济能够让企业的业务流程更灵活 更敏捷 达到中长期设定的目标 Gartner把数字化的业务定义为人 物 事全部的互联 这是未来所有数字化业务的一个基础 在数字化的基础上我们要好好谈一谈 交付 交付是生活中无时无刻
  • Meteasploit技术

    在使用Kali操作系统是应注意即使更新源 就像平时及时更新手机APP更新命令如下 apt get update 只更新软件包的索引源 作用 同步源的软件包的索引信息 从而进行软件更新 Apt get upgrade 升级系统上安装的所有软件
  • 力扣OJ(0401-600)

    目录 404 左叶子之和 412 Fizz Buzz 416 分割等和子集 419 甲板上的战舰 421 数组中两个数的最大异或值 426 将二叉搜索树转化为排序的双向链表 429 N叉树的层序遍历 431 将 N 叉树编码为二叉树 438
  • 基于springboot的课程作业管理系统

    随着科学技术的飞速发展 社会的方方面面 各行各业都在努力与现代的先进技术接轨 通过科技手段来提高自身的优势 课程作业管理系统当然也不能排除在外 课程作业管理系统是以实际运用为开发背景 运用软件工程原理和开发方法 采用springboot框架
  • ubuntu小技巧7--ubuntu如何安装flashplayer

    ubuntu小技巧7 ubuntu如何安装flashplayer 安装Ubuntu的时候经常会用大视频播放 可是默认情况下Ubuntu并未安装flashplayer插件 导致浏览器无法播放视频 因此安装flashplayer将是一个必备技能
  • C语言打印金字塔,菱形,V形图案

    文章目录 目录 文章目录 前言 一 打印金字塔 等腰三角形 1 图案 2 代码 二 打印菱形 两个三角形拼在一起 1 图案 2 代码 三 打印V形 1 图案 2 代码 四 打印 倒着的 V 1 图案 2 代码 总结 前言 使用C语言打印图形
  • 苹果ID不能登陆:The action could not be completed. Try again

    终端输入以下命令修复 sudo mkdir p Users Shared sudo chown root wheel Users Shared sudo chmod R 1777 Users Shared
  • VTD — 智能驾驶复杂交通场景仿真工具

    德国VIRES 公司开发的复杂交通场景视景仿真工具VTD Virtual Test Drive 可应用于汽车主动安全 无人车半实物测试的实时复杂交通场景生成 含雷达 红外 摄像头等传感器成像 及汽车驾驶模拟器开发中的交通视景展示 也应用于工
  • 操作系统复习笔记 06 CPU Scheduling CPU调度

    CPU的三级调度 1 高级调度 Long term 作业调度 从外存进内存 2 低级调度 Short term 进程调度 分配处理机 3 中级调度 Medium term 对换 通过多道程序设计得到CPU的最高使用率 CPU IO脉冲周期