操作系统3:CPU调度别再闹了

用“主要业务逻辑”做在哪里来区分。

schedule:调度。scheduler是具有重业务逻辑的,也就是调度算法。例如,linuxkernel从中断出来后,会切入到schedulerroutine,因为这里面的逻辑很多(CFS,RR,FIFO等调度算法),所以叫做调度。

dispatch:分发、派发。dispatcher是轻业务逻辑或者没有业务逻辑,纯粹简单的转发、派发。例如,负载均衡的dispatcher收到请求后,通过哈希表找到responseserver,直接将请求派发下去,本身并不做业务逻辑。

有的操作系统scheduler和dispatcher是分开的,有的是合二为一的,例如后面要讲的linux版本中就是

调度器调度的时机举例:

非抢占式:进程自愿交出CPU资源引起的调度

分配延时应该尽可能减少

两种策略对比:

但是也不是完全不能预估,只不过就是要基于概率模型了,也就是有预估错误的可能性:

HRN是大于等于1的,基准值是1

在PCB中加一个优先数

可以使用堆来每次获得优先级最高的进程

优先权法的一个问题:

举一个例子:

如何设计一个多层反馈队列:

希望调度要很及时,但是不同任务的及时性的要求是不一样的

但是这一点是很难的,特别是通用性的操作系统,几乎不可能实现及时性(因为不同的进程要求不一样,用统一的调度方法当然不可能完全合适)

要设计评估方法,尽量在早期就能对调度算法进行评估,不能依赖实际测试(因为开发周期长),所以下图中的第三种方案一般不靠谱。由于实际情况是非常复杂的,要确定和理论计算非常难,所以确定模型法也一般不靠谱

这种方法的效果还是不错的,理论难度也比较低,是一种偏工程性的方法

内存空间有4G,其中3G是用户空间,1G是内核空间

这是Linux较为早期时候的调度算法

prev指向调度前的进程的PCB,next是将要调度给的进程的PCB,p是一个中间变量

tmp:用于优化用,没有实际含义

this_cpu:当前进程使用的是哪个CPU

c:临时变量,保存进程的优先权

轮转法:

default处理其他状态的情况,从就绪队列中删除,不再继续执行

TASK_INTERRUPTABLE这个是怎么回事呢?它是为了处理这样一种特殊情况:

看算法,就是一次遍历

recalculate:

>>1表示右移一位,也就是除2

由此可见,schedule函数其实还做了dispatch的工作

什么是实时进程

![image-20200204114839692.png](file:///E:/%E7%9F%A5%E8%AF%86%E7%82%B9%E5%A4%8D%E4%B9%A0/Knowledge/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F3%EF%BC%9ACPU%E8%B0%83%E5%BA%A6%20-%20%E5%88%AB%E5%86%8D%E9%97%B9%E4%BA%86%20-%20%E5%8D%9A%E5%AE%A2%E5%9B%AD_files/image-20200204114839692.png)

out是什么呢:

mm是进程中管理内存的数据结构

但是有更好的:

创建一个链表数组,数组的每个位置代表一个优先级,就绪状态的进程直接挂到数组的对应位置上。然后设置一个字节,表示当前有进程的最高的优先级是多少,这样调度的时候直接去找就好了。这种方法的复杂度是O(1)的

但是这其实也不是十全十美的,例如它还有公平性的问题:有的应用程序可以开多进程从而有较大的可能性被调度执行,之后版本的Linux在此有了优化

THE END
1.什么是事件驱动,“实时”有多快?如果将这个场景转换为软件系统,那么你关注的一切都和时间有关:响应时间、完成时间、访问时间、启动时间等。 这些时间由用户或访问应用程序定义。 备注 在实时系统中,各项任务应在规定的期限内执行其功能。 你还应时刻注意系统内的运行状况。 因此,请务必关注显而易见的事项,即所设置时间的日志记录、监视和测量。 https://docs.microsoft.com/zh-cn/training/modules/deploy-real-time-event-driven-app/2-event-driven-example
2.最高响应比的计算方法详解(最高响应比如何计算)问题:最高响应比如何计算 答案: 最高响应比是一种在计算机调度算法中常用的评估指标,尤其在进程调度中,它能够帮助系统更公平、高效地分配资源。以下是最高响应比计算方法的详细解析。 首先,我们需要明确什么是响应比。响应比是衡量进程等待时间与估计的执行时间的比值,通常用来评估进程的优先级。其计算公式为: 响应比https://www.zaixianjisuan.com/jisuanzixun/zuigaoxiangyingbidejisuanfangfaxiangjie.html
3.最高响应比优先算法相对于SJF算法和SRT算法,则更注重等待时间和服务时间之间的平衡,从而避免出现长任务对系统的影响。 4. HRRN的应用场景 HRRN算法适用于各种应用场景,特别是在要求系统响应快速的场合,如操作系统、网络通信、实时控制等领域。在这些场景下,通过使用HRRN算法可以提高系统的响应速度,减少任务的响应时间。http://kaoshi.educity.cn/rk/htjizkfkc8.html
4.智能报警系统:实时预警和快速响应智能报警系统是一种基于大数据、人工智能和计算机科学技术的系统,它的主要目的是实时预警和快速响应。在现代社会,智能报警系统已经广泛应用于各个领域,例如安全监控、交通管理、气候变化监测、金融风险预警等。智能报警系统可以帮助人们更快速地发现问题,并采取措施进行处理,从而提高工作效率和降低风险。 https://blog.csdn.net/universsky2015/article/details/135809157
5.在实时操作系统里面随便怎么写代码都能硬实时吗?众所周知,硬实时的概念,其核心并非追求速度的极致,而是确保系统能在预定的、可重复的时间范围内给予确定的响应。这意味着,实时系统的正确性不仅在于计算逻辑的正确,更在于结果的产生时间是否符合预期。以汽车为例,当发生碰撞时,安全气囊必须在极短的时间内弹开,否则可能无法起到应有的保护作用。 https://cloud.tencent.com/developer/article/2411178
6.实时调度算法:高效应对实时系统的挑战新闻动态最早截止时间优先(Earliest Deadline First,EDF)算法是最常见的实时调度算法之一。它根据任务的截止时间来决定任务的执行顺序,优先选择截止时间最早的未完成任务进行执行。 EDF算法的优点是简单易懂,能够保证系统在任何时刻都能满足所有任务的截止时间要求。然而,EDF算法也存在一些缺点。首先,它可能会导致任务的响应时间较http://xacbs88.com/post/6113.html
7.响应比计算公式计算响应比可以帮助我们评估系统的执行效率,了解任务在系统中的调度情况,以及优化系统性能。 响应比的计算公式如下: 响应比 = (等待时间 + 服务时间)/ 服务时间 其中,等待时间是指一个任务在系统中等待服务的时间,而服务时间是指任务实际获得服务的时间。 为了更好地理解响应比的意义,我们可以通过一个生动的例子来https://wenku.baidu.com/view/5af773017cd5360cba1aa8114431b90d6c858996.html
8.实时调度算法开源通宝实时调度算法 对于什么是实时系统,POSIX 1003.b作了这样的定义:指系统能够在限定的响应时间内提供所需水平的服务。而一个由Donald Gillies提出的更加为大家接受的定义是:一个实时系统是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间,如果系统的时间约束条件得不到满足,将会发生系统出错。http://blog.chinaunix.net/uid-24549279-id-262087.html
9.Java性能权威指南学习笔记临渊羡鱼不如退而结网3.GC算法及响应时间测试 快速小结 1.衡量标准是响应时间或吞吐量,在Throughput收集器和Concurrent收集器之间做选择的依据主要是有多少空闲CPU资源能用于运行后台的并发线程。 2.通常情况下,Throughput收集器的平均响应时间比Concurrent收集器要差,但是在90%响应时间或99%响应时间这几项指标上,Throughput收集器比Concurrenthttps://www.iteye.com/blog/bsr1983-2357030
10.程序员不得不会的计算机科班知识——操作系统篇(上)操作系统是实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应。 调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点。 https://article.juejin.cn/post/7221142199391043643
11.liblfzncnn回声消除回声消除的英文NSAF算法 MATLAB代码实现 房间脉冲响应 近端语音信号 远端语音信号 麦克风信号 频域自适应滤波器(FDAF) 回声回波增强(ERLE) 不同步长值的影响 回声回波损耗增强比较 使用分区减少延迟 开源的音频处理库 Speex:开源语音编解码器 Opus互动音频编解码器 WebRTC(实时通信) https://blog.51cto.com/u_16213645/10934104
12.位置式PID算法和增量式PID算法的差异位置式PID算法与增量式PID算法在计算方式、系统响应、控制效果等方面存在明显差异。两种算法各有优势,应根据具体的控制需求选择合适的算法。位置式PID算法适用于快速响应和实时性要求高的系统,而增量式PID算法则更适用于对稳定性和抗干扰能力要求高的系统。https://m.eefocus.com/e/1713067.html
13.流域治理视角下,构建弹性城市排水系统实时控制策略借鉴国外相关经验,按照系统实际控制(管理)的范围,将实时控制系统分成局部响应控制、全局优化控制和流域联合调度三种级别。 ①局部响应控制:定位于单个汇水分区,实现本区域厂-网就地响应控制,只利用本地或相邻传感器的实时监测数据,通过内置的控制算法计算出控制动作,进而通过执行器实现对受控过程的控制。这种控制方式一般适https://www.h2o-china.com/news/313406.html
14.实时算法(精选十篇)文献[7]采用Surfacelet变换和隐马尔科夫树模型(HTM)相结合的方法,考虑时间域和空间域的多种特征,建立烟雾三维的HTM模型,并用SVM进行训练检测,此算法复杂度较高,实时性较差。 LBP纹理特征[8]越来越多地被利用来检测目标。Yuan[9]利用LBP和LBPV检测烟雾,然而这种方法不能很好适应光照变化,并且LBP特征向量长255,计算https://www.360wenmi.com/f/cnkeyip6p1f5.html
15.杭州市总工会借助“数字化”手段,打通医保、卫健大数据,AI算法自动计算补助金额,线上“一站式”解决在职职工医疗互助补助申请、审核发放,实现医疗补助应补尽补。上线8天,已累计办理3886人次,发放补助183.4万余元。 窗口到“指尖”的实时响应 “线上补助太方便了!只要动动手指就可以,没想到速度这么快。”来自北干街道企业女职工https://www.hzgh.org/newsview101503.htm
16.实时算法论文范文9篇(全文)实时预警的架构是将预警系统建立在实时数据库之上, 即对生产过程进行连续监视。因此实时预警涉及生产数据采集方面的压缩和解压缩算法, 数据进入预警引擎之前的、以提高数据有效性为目的的预处理算法, 以及预警引擎中的规则推理算法。限于篇幅, 本文讨论数据预处理过程中的几个典型算法。 https://www.99xueshu.com/w/ikeylbaxbqaw.html
17.虚拟电厂,豹变前夜从市场机制看,我国电力交易市场尚处于试点起,虚拟电厂的运营仍以邀约制下的需求侧响应为主要模式,因此当前情况下更接近于美国模式。欧洲虚拟电厂利用软件算法设定电力现货市场的竞价策略,实现交易收益的最大化。但我国电力市场处于起步阶段,目前仅有广东省对电力现货交易实行了试点,当电力供给出现缺口或存在调峰调频需求时https://wallstreetcn.com/articles/3664491
18.基于文件分时索引的大规模流量实时IoT终端识别算法实验中, 在不损失IoT终端识别算法精度条件下, 仅消耗少量磁盘, 可将内存消耗降低92%. 实验结果表明, 该技术能够用于实时IoT终端识别框架中.关键词: 物联网(IoT) IoT终端识别 异常检测 网络流量 Real-Time IoT Terminal Identification Algorithm for Large-Scale Flow Based on Time-Sharing Index of Fileshttps://c-s-a.org.cn/html/2021/2/7785.html
19.基于五Ⅰ算法的模糊系统的响应能力期刊[6]李洪兴,尤飞,彭家寅,等.基于某些模糊蕴涵算子的模糊控制器及其响应函数[J].自然科学进展.2003,(10).DOI:10.3321/j.issn:1002-008X.2003.10.011. [7]王国俊.模糊推理的全蕴涵三I算法[J].中国科学(E辑).1999,(1).43. [8]潘海玉,裴道武,陈仪香.基于三Ⅰ算法的模糊系统的响应能力[J].控制理论与应用.https://d.wanfangdata.com.cn/periodical/gcsxxb201901002