问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

进程调度的实时系统

发布网友 发布时间:2022-04-22 07:20

我来回答

1个回答

热心网友 时间:2022-06-17 14:29

最简单最直观的进程调度策略是基于优先级的调度,多数实时系统采用基于优先级的调度,每个进程根据它重要程度的不同被赋予不同的优先级,调度器在每次调度时,总选择优先级最高的进程开始执行.
首先要考虑的问题是如何分配优先级,对于进程优先级的分配可以采用静态和动态两种方式,静态优先级调度算法:这种调度算法给那些系统中得到运行的所有进程都静态地分配一个优先级.静态优先级的分配可以根据应用的属性来进行,比如进程的周期,用户优先级,或者其它的预先确定的策略.单调率算法(RM)调度算法是一种典型的静态优先级调度算法,它根据进程的执行周期的长短来决定调度优先级,那些具有小的执行周期的进程具有较高的优先级.动态优先级调度算法:这种调度算法根据进程的资源需求来动态地分配进程的优先级,其目的就是在资源分配和调度时有更大的灵活性.在实时系统中,最早期限优先算法(EDF)算法是使用最多的一种动态优先级调度算法,该算法给就绪队列中的各个进程根据它们的截止期限(Deadline)来分配优先级,具有最近的截止期限的进程具有最高的优先级.
分配好优先级之后下一个要考虑的问题是何时让高优先级进程掌握CPU的使用权,这取决于操作系统的内核,有不可抢占式和可抢占式两种.
不可抢占式内核要求每个进程自我放弃CPU的所有权,各个进程彼此合作共享一个CPU.异步事件还是由中断服务来处理.中断服务可以使一个高优先级的进程由挂起状态变为就绪状态.但中断服务以后控制权还是回到原来被中断了的那个进程,直到该进程主动放弃CPU的使用权时,那个高优先级的进程才能获得CPU的使用权.这就出现了响应时间的问题,高优先级的进程已经进入了就绪状态但不能执行,这样进程的响应时间变得不再确定这与实时系统的要求不符,因此一般的实时操作系统都要求是可抢占式的内核,当一个运行着的进程使一个比它优先级高的进程进入了就绪态,当前进程的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的进程立刻得到了CPU的控制权,如果是中断服务子程序使一个高优先级的进程进入就绪态,中断完成时,中断了的进程被挂起,优先级高的那个进程开始运行.在这种内核设置下,多个进程可能处于并发的状态,这就出现了多个进程共享资源的情况,因此我们需要设置信号量来保证临界资源的正确使用,任何一个想使用临界资源的进程在进入临界区之前必须拥有使用临界资源的信号量,否则不可以执行临界区代码.
这样基于优先级的可抢占式进程调度策略就基本架构完成,但此时仍然有系统崩溃的危险,假设系统中有3个进程,分别为p1,p2和p3. p1的优先权高于p2,而p2的优先权高于p3.恰在此时p1和p2 因某种原因被阻塞,这时候系统调度p3执行.p3执行一段时间后,p1被唤醒.由于采取的是PBP的调度策略,因此p1抢占 p3的CPU, p1执行.p1执行一段时间后要进入临界区,但此时p3占有此临界资源的信号量.因此p1被阻塞,处于等待状态,等待p3 释放此信号量.经过这么一段时间后,p2此时此刻处于就绪状态.因此系统调度p2执行.如果p3在p2的执行期间一直没有能够被调度执行的话,那p1和p3将一直等到p2执行完后才能执行,p1更要等到p3释放它所把持的信号量才能执行;而这段时间完全有可能超出p1的Deadline,使得p1崩溃.我们看到在这个过程中,由于临界资源的使用问题使得优先级低的进程先于优先级高的进程先执行,这就出现了优先级反转的问题,从而造成了系统崩溃,对于这个问题可以采用优先级继承的办法来进行解决.在优先级继承方案中,当高优先级进程在等待低优先级的进程占有的信号量时,让低优先级进程继承高优先级进程的优先级,即把低优先级进程的优先权提高到高优先级进程的优先级;当低优先级进程释放高优先级进程等待的信号量时,立即把其优先权降低到原来的优先权.采用这种方法可以有效地解决上面所述的优先权反转的问题.当高优先级进程p1想要进入临界区时,由于低优先级进程p3占有这个临界资源的信号量,导致p1被阻塞.这时候,系统把p3的优先权升到p1的优先权,此时优先权处于p1和p3之间的进程p2,即使处于就绪状态也不可以被调度执行,因为此时p3的优先权已经高于p2,所以p3此时被调度执行.当p3释放p1需要的信号量时,系统立即把p3的优先权降到原来的高度,来保证p1和p2正常有序执行,有许多实时系统是采用这种方法来防止优先级反转的,如VXWORKS. 对于那些具有稳定,已知输入的简单系统,可以使用时间驱动的调度算法,它能够为数据处理提供很好的预测性.这种调度算法本质上是一种设计时就确定下来的离线的静态调度方法.在系统的设计阶段,在明确系统中所有的处理情况下,对于各个进程的开始,切换,以及结束时间等就事先做出明确的安排和设计.这种调度算法适合于那些很小的嵌入式系统,自控系统,传感器等应用环境.这种调度算法的优点是进程的执行有很好的可预测性,但最大的缺点是缺乏灵活性,并且会出现有进程需要被执行而 CPU 却保持空闲的情况.
对于不同要求下的实时系统可以采用不同的进程调度策略来进行设计,也可以将这些方法进行综合之后得到更适合的调度策略.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...抛物线y=x2-4x+3与x轴交于A、B两点,与y轴交于点C,连AC,将直线AC向右... 抢劫罪的构成要素有哪些 抢劫罪的几个要素 抢劫罪违反了什么法律 转化型抢劫的法律认定 我想问问我的魔兽世界帐号值多少钱? 我的号能卖多少?(魔兽世界) 求评估魔兽世界账号价值,懂得来! 魔兽世界账号问题,我有一个90级的DK,想便宜出售了,直接卖了,想问问大... 魔兽世界号价值评估 作文题目生命的格调, 关于环境被破坏河流被污染的现象 沙发皮子破了个洞,能修补吗? 北京市事业单位举办表演活动是否涉及招投标 目前的铁路调度市场哪种技术是处于主流地位?哪种技... 生命的格调是什么 为何很多人练习洗髓功垂吊会受伤? 向河流倾倒垃圾处罚依据 为什么汽车电瓶没电了。然后把汽车挂入档位往前面... 作文:有一种生命的格调叫谦逊 外推窗打开的时候风太大吹到最外面去了。现在拉不... 找一部穿越到网络世界的电影, 承保大型商业演出的公众责任险,保险的责任范围是... 简述Hadoop的体系架构 小河道污泥产生的原因有哪些 装可怜装好人但是总把我的事情往后面推迟什么心态? 穿越时空电影超搞笑的有那些电影 如何处理河流垃圾? 小时候往前面推就可以跑很远的车叫什么车? 写了一篇名为“生命的格调”的作文,请大家帮忙看一... 恒河的环境污染 关于“生命的格调”为题,写一篇800字作文, 急!!... 形容教师终身学习的代名词 有人往河道里倒进作垃圾 关于人生格调的材料和素材的作文 临河学校在什么前提下,及时清理河道内的垃圾? 主宰命运使然的是生命的格调。这句话是什么意思呢... 河里面一般有什么垃圾 洗髓功的核心步骤是不是都有打坐?垂吊?拉筋? 洗髓功中的吐纳动作有什么好处? 淘宝品牌授权怎么弄? 过年吃鱼的意义是什么! 品牌授权书格式怎么写 春节团圆为什么吃鱼?有什么习俗么? 过年的时候吃鱼的寓意是哪九个字? 微信小商店品牌授权模板需要哪些 为什么过年要吃鱼? 请问《只狼影逝二度》宝鲤之鳞怎么获得? 淘宝品牌授权书怎样交给淘宝? 为什么在年夜饭的桌子上,鱼是必不可少的?