计算机操作系统-进程(5)调度_计算机操作系统调度执行时间-程序员宅基地

技术标签: 操作系统  

调度

  • 基本概念

当有一堆任务要处理时,由于资源有限,很多事情没有办法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是调度研究的问题。

在多道程序系统中,进程的数量往往大于处理机的个数,这样不可能同时并行地处理各个进程。处理机调度,就是从就绪队列中按照一定的算法选择一个进程并将处理机分配给他运行,以实现进程的并发执行

 

  • 调度的三个层次

高级调度(作业调度)

由于内存空间有限,有时无法将用户提交的作业全部放入内存,因此就需要确定某种规则来决定将作业调入内存的顺序

高级调度是指按照一定的原则,从外存中处于后备队列的作业中挑选一个或多个作业,给他们分配内存等必要的资源,并建立相应的进程(PCB),以使他们获得竞争处理机的权利。高级调度是面向作业的

高级调度是外存与内存之间的调度。每个作业只调入一次。作业调入时会建立相应的PCB,作业调出时才撤销PCB。所以高级调度主要指的是调入的问题,因为只有调入的时机需要操作系统来决定,但调出的时机是作业运行结束后就调出

对进程状态的影响:无→创建态→就绪态

中级调度(内存调度)

引入虚拟存储技术之后,可将暂时不能运行的进程调至外存等待。等他重新具备了运行条件且内存稍有空闲时,可重新调入内存。这么做的目的是为了提高内存利用率和系统吞吐量。中级调度是面向进程的

暂时调到外存等待的进程的状态为挂起状态。值得注意的是,PCB并不会一起调到外存,而是会常驻内存。因为PCB中记录着进程数据在外存中的存放位置、进程状态等信息,是要供操作系统使用的。操作系统通过内存中的PCB来保持对各个进程的监控、管理。被挂起的进程PCB会被放到挂起队列中

中级调度,就是要决定将哪个挂起状态的进程重新调入内存。一个进程可能会被多次调出、调入内存,因此中级调度发生的频率要比高级调度更高

对进程状态的影响:挂起态→就绪态

低级调度(进程调度)

低级调度的主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给他。

进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次

对进程状态的影响:就绪态→运行态

补充:进程的挂起态

暂时调到外存等待的进程状态为挂起状态(挂起态suspend)。其中挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态。由此五状态模型 → 七状态模型

注意:

“挂起”和“阻塞”的区别。两种状态都是暂时不能获得CPU的服务,但挂起态是将进程映像调到外存去了,而阻塞态下进程映像还在内存中

有的操作系统会把就绪挂起、阻塞挂起分为两个挂起队列,甚至会根据阻塞原因不同再把阻塞挂起进程进一步分为多个队列

 

  • 进程调度的时机

进程调度,即低级调度。其目的是为了进程的切换

需要进行进程调度与切换的情况

  1. 当前运行的进程主动放弃处理机
  2. 当前运行的进程被动放弃处理机

不能进行进程调度与切换的情况

  1. 处理中断的过程中
  2. 进程在操作系统内核程序临界区
  3. 在原子操作过程中

 

  • 进程调度的方式

非剥夺调度方式

又称非抢占方式。即只允许进程主动放弃处理机。在运行过程中即使有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。所以此方式实现简单,系统开销小但是无法及时处理紧急任务,适合于早期的批处理系统

剥夺调度方式

又称抢占方式。当一个进程正在处理机上执行时,如果有一个更重要或者更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。所以此方式可以优先处理更紧急的进程,也可实现让各进程按时间片轮流执行的功能(通过时钟中断),适合于分时操作系统、实时操作系统

 

  • 进程的切换与过程

“狭义的进程调度”与”进程切换”的区别,以及“广义的进程调度”

  • 狭义的进程调度指的是从就绪队列中选择一个要运行的进程。这个进程可能是刚刚被暂停的进程,也可能是另一个进程。而若是后一种情况,则需要进行进程切换
  • 进程切换则是指一个进程让出处理机,由另一个进程占有处理机的过程
  • 广义的进程调度包含了选择一个进程和进程切换两个步骤

进程切换

进程切换的过程主要完成了:

  1. 对原来运行进程各种数据的保存
  2. 对新的进程各种数据的恢复,例如程序计数器、程序状态字、各种数据寄存器等处理机现场信息。这些信息一般保存在进程控制块

注意,进程切换是有代价的,因此如果过于频繁地进行进程调度、切换,必然会使得整个系统的效率降低,使系统大部分时间都花在了进程切换上,而真正用于执行进程的时间减少

 

  • 调度算法的评价指标

CPU利用率

指CPU“忙碌”的时间占总时间的比例

系统吞吐量

对于计算机来说,希望能用尽可能少的时间完成尽可能多的作业。所以系统吞吐量为单位时间内完成作业的数量

周转时间

指从作业被提交给系统开始,到作业完成位为止的这段时间间隔

等待时间

指进程/作业处于等待处理机状态时间之和,等待时间越长,用户满意度越低

响应时间

指从用户提交请求到首次产生响应所用的时间

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39721347/article/details/86521866

智能推荐

Shuffle 工作机制_shuffle阶段是干什么的-程序员宅基地

文章浏览阅读265次。本章详细介绍了shuffle工作机制(自用)_shuffle阶段是干什么的

Andriod studio格式化代码_android studio 代码格式化-程序员宅基地

文章浏览阅读778次。使用快捷键:默认情况下,可以使用快捷键Ctrl + Alt + L (在Windows和Linux下) 或者 Command + Option + L (在Mac OS下) 来格式化选定的代码块或整个文件。使用自动保存功能:可以在Android Studio的设置中启用"Editor | General | Auto Save"选项,这样当你修改代码时,代码会在一定时间内自动格式化。无论使用哪种方式,Android Studio都会根据你的代码风格设置自动为你格式化代码,保持统一的代码风格和可读性。_android studio 代码格式化

300套Java微信小程序项目实战-程序员宅基地

文章浏览阅读531次,点赞23次,收藏6次。博主介绍:程序员陈师兄、8年大厂程序员经历。csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 精彩专栏推荐订阅 不然下次找不到哟。

Linux与Gvim常用命令_gvim grep命令-程序员宅基地

文章浏览阅读1.1k次。一、LINUX常用命令文件管理类命令:pwd 打印当前目录 cd 改变目录 cd / 转到根目录 cd ~ 转到用户目录 cd /XX/XX 转到绝对路径 cd XX 转到当前目录下的相对路径 ls 查看目录内容 ls -a 列举全部文件,包括隐藏文件 ls -l 列举目录中的细节(权限,所有者等) ls -l XX 列举某一文件信息 ls -R 递归列举该目录所有子目录内容 ls -s 按文件大小排序 cat XX 显示..._gvim grep命令

LNK1179: 无效或损坏的文件: 重复的 COMDAT "_IID_IDispatchEx"_无效或损坏的文件:重复的comdat-程序员宅基地

文章浏览阅读2.6k次。fatal error LNK1179: invalid or corrupt file: duplicate comdat "XXX" 解决方法,找到(ocx和dll都是类似的)#import "Flash.ocx" named_guids改为#import "Flash.ocx" named_guids, exclude("IFlashObject_无效或损坏的文件:重复的comdat

Word Search(C++单词搜索)_c++ccc word hunt-程序员宅基地

文章浏览阅读300次。Word Search(C++单词搜索)_c++ccc word hunt

随便推点

别再说你不会 ElasticSearch 调优了,都给你整理好了_es修改请求体大小-程序员宅基地

文章浏览阅读550次。第一部分:调优索引速度第二部分:调优搜索速度第三部分:通用的一些建议英文原文:https://www.elastic.co/guide/en/elasticsearch/reference/current/how-to.htmlES发布时带有的默认值,可为es的开箱即用带来很好的体验。全文搜索、高亮、聚合、索引文档 等功能无需用户修改即可使用,当你更清楚的知道你想如何使用es后,你可以作很多的优化以提高你的用例的性能,下面的内容告诉你 你应该/不应该 修改哪些配置第一部分:调优索引速度._es修改请求体大小

计算机毕业设计Java酒店管理系统设计与实现(源码+系统+mysql数据库+lw文档)_基于若依的酒店管理系统-程序员宅基地

文章浏览阅读573次。计算机毕业设计Java酒店管理系统设计与实现(源码+系统+mysql数据库+lw文档)本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:idea eclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数 据 库:MySQL5.7/8.0源码地址:https://pan.baidu.com/s/1_XjDjfBkWvupjZzv3z5kzw?pwd=0tai最新计算机专业原创开发毕业设计源码+数据库是近期作品_基于若依的酒店管理系统

使用计时器延迟页面显示,以保证页面加载完ajax数据也请求完成_jquery计时器会比页面晚出现-程序员宅基地

文章浏览阅读363次。<script type="text/javascript"> window.onload = function(){ // 刚跳转到该页面时,使其暂时隐藏 $(".body").hide(); setTimeout(function(){ // 加载完成后显示页面 $(".body").show(); $.ajax({ url: 'http:/..._jquery计时器会比页面晚出现

msvcp140_codecvt_ids.dll缺失修复方法,分析msvcp140_codecvt_ids.dll文件_由于找不到msvcp140 codecvt ids.dii,无法继续执行代码。重新安装程 序可能-程序员宅基地

文章浏览阅读1k次,点赞19次,收藏19次。在日常使用电脑的过程中,我们可能偶尔会遇到一些技术挑战,其中包括与运行在后台的动态链接库(dll)文件相关的问题。msvcp140_codecvt_ids.dll是一个这样的关键 dll 文件,它默默地在系统底层发挥作用,为各种应用程序提供支持,确保操作系统的稳定运行。但如果这个文件发生故障或丢失,它的重要性将迅速变得非常明显。接下来,我们将探讨如何解决 msvcp140_codecvt_ids.dll缺失的问题。_由于找不到msvcp140 codecvt ids.dii,无法继续执行代码。重新安装程 序可能

如何解决vscode检测到#include错误,请更新includePath。_vcode 检测到#include错误-程序员宅基地

文章浏览阅读3.9w次,点赞40次,收藏66次。如何解决vscode检测到#include错误,请更新includePath。终端输入gcc -v -E -x c -打开vscode 按ctrl+shift+p 。搜索c/c++:Edit Configurations(JSON)3将刚才的路径粘贴到这里的“IncludePath”这样就完成了配置,可以使用头文件。..._vcode 检测到#include错误

Keras的模块结构-程序员宅基地

文章浏览阅读786次。_keras的模块结构

推荐文章

热门文章

相关标签