操作系统:中断与处理器调度

news2025/2/27 23:00:27

目录

1、中断与中断系统

中断概念:

中断装置:

中断相关概念:

中断优先级别与中断屏蔽

2、处理机(CPU)调度

调度相关参数:P62

调度算法:

 处理机调度时机

 处理机调度过程

3、调度级别与多级调度 

调度级别

交换与中级调度

作业与高级调度

4、实时调度

 实时任务:

 实时调度:

 最早截至优先算法EDF(可剥夺)P76:

 单调速率调度RMS(不可剥夺)P76:


1、中断与中断系统

中断概念:

        定义:处理机在运行过程中,出现了某一事件,必须中止正在运行的程序,转去处理这个事件,然后再返回原来运行的程序,这一过程称为中断。 

        实现中断需要中断系统,中断系统由软硬件两部分组成,硬件部分叫中断装置、软件部分叫中断处理程序。 

中断装置:

中断系统的硬件部分,职能是发现并响应中断,其工作过程包括以下步骤:

        1、识别中断源:当有多个中断源时,按优先级别排队;    

        2、保存现场:将正在执行的程序的程序状态字PSW指令计数器PC压入系统栈 ;

        3、引出中断处理程序:处理中断事件。

中断相关概念:

中断源:

引起中断的事件。

中断字:

        中断寄存器的内容。协助中断处理程序进一步分析触发中断的原因并采取相应的处理措施。中断寄存器是用于保存与中断事件相关信息的寄存器。

中断类型

强迫性中断(运行程序不期望的):无法预知

        例如:时钟中断、IO中断、控制台中断、硬件故障中断( power failure,内存校验错 )程序错误中断(越界,越权,缺页 、溢出,除0 ,非法指令)

自愿性中断(运行程序期望的):要求系统提供服务,发生必然,且位置确定。

        例如:系统调用 ( fd=open(fname,mode) )

                   访管指令 (准备参数 svc n 取返回值)    

中断向量:

        中断处理程序的运行环境(PSW)与入口地址(PC),发生中断事件,中断装置会将PSW和PC分别送入程序状态字和指令计数器中,如此便可以执行对应的中断处理程序。因而PSW和PC被称为中断向量

        每类中断事件有一个中断向量, 中断向量的存放位置是由硬件规定的,存放在内存的固定单元处。中断向量的内容是OS在系统初始化时设置好的。

 中断嵌套与系统栈:

        中断嵌套:高优先级打断低优先级,因为现场保护和现场恢复次序相反,所以采用系统栈的形式来保存现场信息。

 

        系统栈:它除了保存基本的现场信息外,还有传送操作系统子程序之间相互调用的参数、返回值以及返回地址。 

中断优先级别与中断屏蔽

中断优先级:硬件规定的中断响应次序,依据: 紧迫程度, 处理时间。

中断屏蔽:屏蔽高优先级的中断事件,禁止打断。

 中断处理逻辑:

        这里有两个现场,一个是中断现场(嵌套中断时,保存),另一个是进程切换现场(涉及等待和剥夺),中断现场保存在系统栈中,进程切换现场相当于调度另一个进程,其保存在进程控制块PCB中,二者皆处于核心态(管态)

2、处理机(CPU)调度

调度相关参数:P62

        周转时间:作业等待时间和处理时间之和,即作业进入系统时间和完成时间之差。

        平均周转时间:所有作业周转时间的平均值。

        带权周转时间:作业周转时间和作业运行时间之比。

        平均带权周转时间:所有作业带权周转时间的平均值。

调度算法:

1、先到先服务算法FCFS(非剥夺)P63

        操作系统按进入就绪态的进程的先后次序来分配CPU。

2、最短作业优先SJF(非剥夺)P64

        操作系统按CPU阵发时间的大小(相当于完成这个任务所需的CPU时间,从小到大排列)来分配CPU,同样其也受进入就绪态的次序影响(还没进入就绪态的进程哪有资格给CPU处理呢)。

3、最短剩余时间优先SRTN(可剥夺)P65

         操作系统每次都选择剩余CPU阵法时间最短的进程或线程来分配CPU。比如:当前进程A还需要CPU处理30ms,而新到的进程B只需要CPU处理20ms,这时进程B就可以剥夺进程A,CPU会优先处理进程B。

4、最高优先数算法HPNF(可剥夺或不可剥夺)P66

        优先数相当于优先级,分为两种一种是静态优先数,另一种是动态优先数。

        静态优先数:进程进入系统时,被赋予的一个优先数,是固定不变的。

        动态优先数:进程进入系统时,被赋予的一个优先数,是动态变化的。

        非剥夺式的不可被剥夺,会一直运行下去,直到运行完成或因为某种事件而等待

        剥夺式的低优先数的进程会被高优选数的进程剥夺,保证了CPU运行的都是当前最高优先数的进程。 

5、循环轮转算法RR(不可剥夺)P67

        给所有到达的进程规定一个时间片,所有进程按照时间片的长短轮流进行,所有就绪进程构成就绪队列,用完时间片,但还未处理完成的进程将其放在队尾,重新分配时间片,新到的进程也放队尾,为其分配时间片。

        基本轮转:时间片大小固定等长。

        改进轮转:根据进程的不同特性,分配不等长的时间片,时间片长度是可变的。

6、分类排队算法

        该算法是以多个就绪进程队列为特征的,按照某种原则对进程分类到相应的就绪队列。

7、反馈排队算法

         该算法是以多个就绪进程队列为特征的,与前一个区别是进程可以在不同队列间移动。

8、最高响应比算法(不可剥夺)

        对于同时到达的进程根据响应比计算公式计算的响应比大小来分配CPU,响应比大的先处理,响应比小的后处理。

        响应比=(等待时间+CPU阵发时间)/CPU阵发时间 

 处理机调度时机

        进程切换:如果在时刻T1进程P1在运行,在时刻T2进程P2在运行,且P1不等于P2,则在T1和T2之间发生了进程切换,并将P1称为下降进程,P2称为上升进程。       

        何时会发生进程切换,当进程中断时,会进入管态,并运行处理器调度程序(这是显式地调用),从而引起进程切换,也就是说中断是进程切换的前提,操作系统是靠中断驱动的

以下是中断发生是否产生进程切换的情况。 

 处理机调度过程

1、保存下降进程的现场:下降线程现场信息写入进程控制块PCB

2、选择要运行的进程:按处理机调度的算法

3、恢复上升进程现场:从PCB里取出恢复到相应寄存器

3、调度级别与多级调度 

调度级别

低级调度:处理器调度

中级调度:交换调度

高级调度:作业调度

三者构成了多级调度,实际调度以中级和高级为主。

交换与中级调度

        交换是进程在内存和外存之间的调度,目的在于缓解内存空间资源紧张的问题,减小并发度以降低系统开销。

        中级调度(中程调度)是系统控制并发程度的一个调度级别。当系统并发度高的时,将内存中的某些进程交换到外存,待其并发度低的时候,再交换回来。

作业与高级调度

        高级调度(作业调度、长程调度、长期调度),将作业由输入井或外存调入内存,并为其建立内存,使其有运行资格。以下是作业状态转换关系图

4、实时调度

 实时任务:

定义: 具有明确时间约束的计算任务。

分类:

   按其发生规律划分:

        1、周期性实时任务:每隔固定时间发生一次。

        2、随机性实时任务:由随机事件触发,其发生时刻不确定。

    按时间约束强弱划分:

        1、硬实时 :必须满足任务截止期要求。

        2、软实时 :期望满足截止期要求 。

 实时调度:

定义:合理安排就绪实时任务的执行次序,满足每个实时任务时间约束条件的调度。

 最早截至优先算法EDF(可剥夺)P76:

假定给定多个周期性实时任务,其可调度的必要条件公式如下:

        令Ci为任务Pi处理时间,Ti为任务Pi的发生周期,则任务P1,…,Pm可调度的必要条件为: 

        首先所有周期任务必须满足可调度的必要条件,然后才能使用该算法调度。该算法会优先选择截止期最早的实时任务,完成截至期等同于发生周期

单调速率调度RMS(不可剥夺)P76:

假定给定多个周期性实时任务,其可调度的必要条件公式如下:

        令n为周期性任务个数,Ci为任务Pi处理时间,Ti为任务Pi的发生周期,则任务P1,…,Pm可调度的必要条件为: 

以下是对应不同n值,RMS的上限值的变化,可以发现限制趋向0.693 

    首先所有周期任务必须满足可调度的必要条件,然后才能使用该算法调度。该算法会优先选择发生周期短的任务,也就是发生频率高的任务,完成截至期等同于发生周期

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

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

相关文章

【推荐算法】单目标精排模型——FiBiNET

key word: 学术论文 Motivation: 传统的Embedding&MLP算法是通过内积和Hadamard product实现特征交互的,这篇文章的作者提出了采用SENET实现动态学习特征的重要性;作者认为简单的内积和Hadamard product无法有效对稀疏特征进行特征交互&a…

AndroidStudio配置aar包的依赖方式

创建本地仓库文件夹和aar文件夹 创建本地仓库文件夹LocalRepo,文件夹名称可以自定义。在LocalRepo文件夹下为每一个aar单独创建文件夹,如下所示。aar包就放在各自的文件夹下。请注意一个aar文件夹下只能放置一个aar。 配置build.gradle文件 在aar文件…

unity 让文字变形

效果: using TMPro; using UnityEngine; using NaughtyAttributes;[ExecuteInEditMode] public class TMTextPerpective : MonoBehaviour {[OnValueChanged("DoPerspective")][Range(-1f, 1f)]public float CenterBias 0f;[OnValueChanged("DoPers…

关于SpringBoot项目创建后构建总是失败的问题

第一个问题:IDEA创建项目总是失败 原因:创建项目的时候默认使用的是https://start.spring.io,这个是一个外国网站,众所周知的就是国内访问总是出现不稳定的现象,这就是导致项目创建失败的最终原因。 解决方法&#x…

个人IP建设:简易指南

许多个体创业者面临的一个关键挑战是如何为其企业创造稳定的需求。 作为个体创业者,您无法使用营销团队,因此许多人通过推荐和他们的网络来产生需求。因此,扩大您的网络是发展您的业务和产生持续需求的最佳策略。 这就是个人IP和品牌发挥作…

LLM对话过程的DDD

终于抽出时间调整了一下DDD的结构,感觉这套设计虽然有些不是很原教旨,但已经能很好的支持至少一年的业务迭代了。直接给结论,直接抄也不会有什么错。 整体方案脱胎自openai的assistant api Entity Thread,对话过程。由Message构…

IO进程 学习笔记

……接上文 fputs(输入字符串) int fputs(const char *s, FILE *stream);功能:向指定文件中输入一串字符参数:s:输入字符串的首地址stream:文件流指针返回值:成功返回输出字符个数失败返回EOF文件指针偏移函…

【Linux】系统安装内核后重启发现进不去系统

问题现象1 系统安装内核后重启发现进不去系统 问题排查步骤 进入pe模式或者livecd模式 使用mount挂载原系统/分区 chroot 刚挂载的/分区目录进入原系统 查询到发现内核存在安装失败 挂载/分区 在pe模式执行mount /分区 /mnt 使用 chroot 切换到你的环境: sudo …

重视猫艾滋:宠物健康的隐秘挑战

猫艾滋,全称为猫获得性免疫缺陷综合征(Feline Acquired Immunodeficiency Syndrome),是由猫免疫缺陷病毒(FIV)感染引起的一种严重危害猫类健康的疾病。虽然其名称与人类艾滋病相似,但猫艾滋仅在…

python学习笔记—5—标识符和运算符

1. 标识符 &#xff08;1&#xff09;定义 用户在编程时所使用的一系列名字&#xff0c;用于给变量、类、方法等命名 &#xff08;2&#xff09;标识符命名规则 <1>内容限定 标识符的命名中只能由数字、英文、中文、下划线组成&#xff0c;其他都不被允许使用…

东方资产管理校招笔试测评题型题目深入解读

东方资管作为四大资产AMC公司之一&#xff0c;其薪资待遇还是不错的&#xff0c;现在为数不多还可以投递简历的金融央企。东方资产管理校招笔试一般在简历投递截止后的周末&#xff0c;总部和子公司、分公司需要分别做笔试。 东方资管笔试大概2h&#xff0c;线上双机位&#x…

Linux---对缓冲区的简单理解--第一个系统程序

前序&#xff1a; 首先先理解一下什么是回车与换行&#xff1b;回车和换行是两个概念&#xff0c;它们不是一个东西&#xff1b; 回车:光标回到开始&#xff1b;换行:换到下一行&#xff1b; 如下图&#xff1a; 行缓冲区 如何理解缓冲区问题&#xff1f; 可以认为&#xff0…

一文掌握 OpenGL 几何着色器的使用

学习本文需要具备 OpenGL ES 编程基础,如果看起来比较费劲,可以先看入门文章 OpenGL ES 3.0 从入门到精通系统性学习教程 。 什么是几何着色器 几何着色器(Geometry Shader) OpenGL 管线中的可选着色器阶段,位于顶点着色器(Vertex Shader) 和光栅化阶段 之间。 其核心…

Java-22 深入浅出 MyBatis - 手写ORM框架3 手写SqlSession、Executor 工作原理

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…

vite5+vue3+Ts5 开源图片预览器上线

images-viewer-vue3&#xff1a;一款Vue3的轻量级图像查看器&#xff0c;它基于Flip动画技术&#xff0c;支持PC和h5移动网页预览照片&#xff0c;如果它是Vue3开发的产品。 npm开源地址:https://www.npmjs.com/package/images-viewer-vue3?activeTabreadme Flip 动画 < …

再用RNN神经网络架构设计生成式语言模型

上一篇&#xff1a;《用谷歌经典ML方法方法来设计生成式人工智能语言模型》 序言&#xff1a;市场上所谓的开源大语言模型并不完全开源&#xff0c;通常只提供权重和少量工具&#xff0c;而架构、训练数据集、训练方法及代码等关键内容并未公开。因此&#xff0c;要真正掌握人…

阿里云轻量应用服务器开放端口,图文教程分享

阿里云轻量应用服务器如何开放端口&#xff1f;在轻量服务器管理控制台的防火墙中添加规则即可开通端口&#xff0c;开通80端口就填80&#xff0c;开通443就填443端口&#xff0c;开通3306端口就填3306。阿里云百科网aliyunbaike.com整理阿里云轻量应用服务器端口号开通图文教程…

微服务网关SpringCloudGateway、Kong比较

网关产品 1. Spring Cloud Gateway 基本信息 Spring Cloud Gateway是Spring Cloud生态系统中的一个组件&#xff0c;基于Spring 5、Project Reactor和Spring Boot 2构建。它旨在为微服务架构提供一种简单而有效的API网关解决方案。 功能特点 路由功能强大&#xff1a;使用Rou…

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题②

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题② 模块A 基础设施设置与安全加固(200分)A-1 登录安全加固&#xff08;Windows, Linux&#xff09;A-2 Nginx安全策略&#xff08;Linux&#xff09;A-3日志监控&#xff08;Windows&#xff09;A-4中间件…

运维实战:K8s 上的 Doris 高可用集群最佳实践

今天我们将深入探讨&#xff1a;&#xff1a;如何在 K8s 集群上部署 Compute storage coupled&#xff08;存算耦合&#xff09; 模式的 Doris 高可用集群&#xff1f; 本文&#xff0c;我将为您提供一份全面的实战指南&#xff0c;逐步引导您完成以下关键任务&#xff1a; 配…