【操作系统】进程调度

调度的概念

        确定某种规则决定处理任务的顺序


调度的三个层次:

高级调度(作业调度)

        作业:一个具体的任务(存放在外存的程序,进入内存就成了进程)

        按一定的原则从外存的作业队列中挑选一个作业调入内存,并创建进程每个作业只调入一次(建立PCB),调出一次(撤销PCB)。

中级调度(内存调度)

        内存不足时,将某些进程的数据调到外存。等内存空闲或者进程需要运行时再重新调入内存。

        暂时调到外存等待的进程状态为挂起状态,被挂起的进程PCB被组织成挂起队列

        按照某种策略决定将哪个处于挂起状态的进程重新调入内存一个进程可能多次调入、调出内存频率比高级调度高。

低级调度(进程调度/处理机调度)

        按照某种策略从就绪队列中选取一个进程,将处理机分配给它。

        最基本的调度,频率很高,一半几十毫秒一次。

发生位置发生频率对进程状态影响

高级调度

(作业调度)

外存-->内存

(面向作业)

最低无-->创建态-->就绪态

中级调度

(内存调度)

外存-->内存

(面向进程)

中等挂起态-->就绪态

低级调度

(进程调度)

内存-->CPU最高就绪态-->运行态

进程的挂起态与七状态模型

        挂起状态:暂时调到外存等待的进程状态。

        就绪态-->就绪挂起

        阻塞态-->阻塞挂起

        运行态-->就绪挂起


        创建态-->就绪挂起

        阻塞挂起也可以进入就绪挂起


进程调度的时机、切换与过程、方式

 进程调度时机

        当前运行的进程主动放弃处理机:进行正常终止、发生异常而终止、主动请求阻塞(I/O);

        当前运行的进程被动放弃处理机:时间片用完、有更紧急的事处理(I/O中断)、优先级更高的进程进入就绪队列;

不能进行调度与切换的情况:处理中断的过程中、进程在操作系统内核临界区中、原子操作过程中(原语);

进程调度方式

        非剥夺调度方式(非抢占方式):只允许进程主动放弃处理机

                实现简单、开销小、无法处理紧急任务,适合早期批处理系统。

        剥夺调度方式(抢占方式):若有更重要的进程需要使用处理机,则立即停止正在执行的进程,将处理机分配给更重要的进程。

                适合于分时操作系统、实时操作系统。

进程切换

        狭义的进程调度:从就绪队列中选出一个要运行的进程。

        进程切换:进程让出处理机,由另一个进程占用处理机的过程。(保存原有进程数据、对新进程数据恢复)

        广义的进程调度包含上面两种。


调度器/调度程序

        调度程序决定让谁运行(调度算法)、运行时长(时间片大小)

调度时机

  •         创建新进程
  •         进程退出
  •         运行进程阻塞
  •         I/O中断发生(可能唤醒某些阻塞进程)
  •         非抢占式,运行阻塞或退出
  •         抢占式,每个时钟中断

不支持内核级线程的操作系统,调度程序的处理对象是进程;

支持内核级线程的操作系统,调度程序的处理对象是内核级线程;

闲逛进程(idle)

        没有其他就绪进程时,运行闲逛进程。优先级最低,可以是0地址指令,占一个完整的指令周期,能耗低,指令周期末尾例行检查中断。


评价调度算法的指标   

CPU利用率   

        CPU处于忙碌时间占总时间的比例;

        利用率=忙碌时间/总时间;

系统吞吐量

        单位时间内完成作业的数量

        系统吞吐量=总共完成了多少道作业/总花费时间

周转时间

        作业被提交给系统开始,到作业完成为止的时间间隔。

        包括:高级调度、低级调度时间、在CPU执行时间、等待I/O操作完成的时间。

        作业周转时间=作业完成时间-作业提交时间

        平均周转时间=各作业周转时间之和/作业数

        带权周转时间=作业周转时间/作业实际运行的时间           (>=1)

        平均带权周转时间=各作业带权周转时间之和/作业数

等待时间

        进程/作业处于等待处理机状态时间之和

        进程等待I/O完成的期间不计入等待时间,进程在被服务。

响应时间

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

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

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

相关文章

SurfaceFlinger的硬件Vsync深入分析-千里马android framework车机手机系统开发

背景: 学过或者你看过surfaceflinger相关文章同学都知道,vsync其实都是由surfaceflinger软件层面进行模拟的,但是软件模拟有可能会有误差或偏差,这个时候就需要有个硬件vsync帮忙校准。 故才会在surfaceflinger的systrace出现如下…

C语言从入门到精通之【第一个程序hello world】

编程步骤 通常,我们按照以下步骤进行 确立目标设计程序编写代码编译程序运行程序测试&调试修改维护 输出hello world 每个学编程的人都会从最经典的【输出hello world】开始。 https://lightly.teamcode.com/ 我们可以使用这个在线IDE学习C语言。 代码很简…

Go语言与Python语言的性能比较

目录 一、背景与意义 二、执行速度 三、内存消耗 四、并发性能 五、编译速度与开发效率 六、综合考虑 七、应用场景 八、未来发展趋势 总结 一、背景与意义 在编程世界中,Go语言和Python语言都占有一席之地。Go语言是由Google开发的,其设计初衷…

接口框架第二篇—unittest/pytest 有什么区别

1.用例编写方法 unittest 1)测试文件必须导入unittest包 2)测试类必须继承unittest.TestCase 3)测试类必须有unittest.main()方法 4)测试方法必须要以test_打头 pytest 1)测试文件名要以test_打头,或…

C#WPF嵌套布局实例

本文演示C#WPF嵌套布局实例。演示了不同布局的简单用法,便于快速应用和掌握。 <Windowx:Class="LayoutDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/x…

【机器学习】XGB/LGBM

XGBoost的decision tree用的是pre-sorted based的算法&#xff0c;也就是在tree building之前对各维特征先排序&#xff0c;代表性的算法是SLIQ和SPRINT。SLIQ和SPRINT算法的特点决定了树生长的方式是level-wise(breadth-first)的。 而LightGBM的decision tree是histogram bas…

【JavaEE】JVM 剖析

JVM 1. JVM 的内存划分2. JVM 类加载机制2.1 类加载的大致流程2.2 双亲委派模型2.3 类加载的时机 3. 垃圾回收机制3.1 为什么会存在垃圾回收机制?3.2 垃圾回收, 到底实在做什么?3.3 垃圾回收的两步骤第一步: 判断对象是否是"垃圾"第二步: 如何回收垃圾 1. JVM 的内…

Python爬虫技术系列-04Selenium库的使用

Python爬虫技术系列-04Selenium库的使用 1 Selenium库基本使用1.1 Selenium库安装1.2 Selenium库介绍 2 Selenium库的使用2.1 各个版本的区别2.1.1 Selenium IDE介绍与使用2.1.2 Selenium Grid介绍与使用2.1.3 Selenium RC介绍与使用2.1.4 WebDriver介绍与使用 2.2 WebDriver常…

Gopro hero5运动相机格式化后恢复案例

Gopro运动相机以稳定著称&#xff0c;旗下的Hero系列销售全球。下面我们来看一个Hero5格式化后拍了少量素材的恢复案例。 故障存储:64G MicroSD卡 Exfat文件系统 故障现象: 64G的卡没备份数据时做了格式化操作又拍了一条&#xff0c;发现数据没有备份&#xff0c;客户自行使…

Python教程---Python基础语法

1.程序中的几个基本概念 (1).表达式 表达式就是一个类似于数学公式的东西 比如&#xff1a;10 5 8 - 4 表达式一般仅仅用了计算一些结果&#xff0c;不会对程序产生实质性的影响 如果在交互模式中输入一个表达式&#xff0c;解释器会自动将表达式的结果输出 (2).语句 在程序…

Tomcat安装配置教程

目录 1、安装tomcat1.1、查看JDK版本1.2、 匹配对应的JDK版本1.3、 下载Tomcat1.3.1、 安装包版&#xff08;推荐&#xff0c;不用配环境&#xff09;1.3.2、 压缩包版 2、 运行Tomcat3、 不能运行问题 1、安装tomcat 1.1、查看JDK版本 由于不同版本tomcat对于jdk的版本有要求…

P1144 最短路计数 题解

文章目录 题目描述输入格式输出格式样例样例输入样例输出 数据范围与提示完整代码 题目描述 给出一个 N N N 个顶点 M M M 条边的无向无权图&#xff0c;顶点编号为 1 ∼ N 1\sim N 1∼N。问从顶点 1 1 1 开始&#xff0c;到其他每个点的最短路有几条。 输入格式 第一行…

Websocket @ServerEndpoint不能注入@Autowired

在websocket中使用ServerEndpoint无法注入Autowired、Value 问题分析 Spring管理采用单例模式&#xff08;singleton&#xff09;&#xff0c;而 WebSocket 是多对象的&#xff0c;即每个客户端对应后台的一个 WebSocket 对象&#xff0c;也可以理解成 new 了一个 WebSocket&…

SOEM源码解析——ecx_detect_slaves(初始化从站、检测从站数量)

0 工具准备 1.SOEM-master-1.4.0源码1 ecx_detect_slaves函数总览 /*** @brief 检测从站数量* * @param context 句柄* @return int 从站数量*/ int ecx_detect_slaves(ecx_contextt *context) {uint8 b;uint16 w;int wkc;/* make special pre-init register writes to e…

学习视频剪辑:批量添加srt字幕,让视频更生动

随着社交媒体的普及&#xff0c;视频制作变得越来越重要。无论是记录生活&#xff0c;还是分享知识&#xff0c;视频都是一个非常有力的工具。但是&#xff0c;如何让您的视频更生动、更吸引人呢&#xff1f;通过学习视频剪辑&#xff0c;您可以使您的视频更具有吸引力。而在这…

vtk粗配准及其变换

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码目的&#xff1a;学习与总结 demo解决问题&#xff1a;基于标记点&#xff0c;两个点集在配准后的平均距离最小&#xff0c;要求输入两个点数必须相等&…

【Redis 速通】Redis 在 Linux 上的单机服务快速搭建与部署(附完整流程步骤及命令代码)

Redis 单机版安装与部署 Written By: Xinyao Tian 概述 本文档主要描述了 Redis 的生产环境安装及配置方法。 主要步骤 编译及安装 进入 root 用户并上传 Redis 源码安装包 查看 Redis 源码安装包的上传情况: [rootcentos-host redis]# pwd /opt/redis [root centos-ho…

2023.11.6-分析 Gateway 和 VirtualService

2023.11.6-分析 Gateway 和 VirtualService 目录 本节实战 实战名称 正文 前面我们创建了一个 Gateway 和 VirtualService 对象&#xff0c;用来对外暴露应用&#xff0c;然后我们就可以通过 ingressgateway 来访问 Bookinfo 应用了。那么这两个资源对象是如何实现的呢&…

【0基础学Java第七课】-- 类和对象01

7. 类和对象 7.1 面向对象的初步认知7.1.1 什么是面向对象7.1.2 面向对象与面向过程 7.2 类定义和使用7.2.1 简单认识类7.2.2 类的定义格式7.2.3 定义一个狗类7.2.4 定义一个学生类 7.3 类的实例化7.3.1 什么是实列化7.3.2 引用只能指向对象&#xff0c;且不能同时指向多个对象…

数据库基础面试——索引

1.索引了解吗&#xff1f;简单介绍一下 索引是一种用于快速查询和检索数据的数据结构。 索引的作用 数据库中数据存储在磁盘&#xff0c;磁盘的顺序查询速度是很慢的&#xff0c;所以的顺序查找指的是读取磁盘中的数据⼀条⼀条的进⾏查找。索引就是为了避免顺序查询&#xf…