linux实时性 linux如何查看进程
RTlinux标准Linux影响实时性的机制
现有的 Linux操作系统,尽管在提高运行和反应速度方面采用了多种技术,但它本质上并非实时操作系统,因此在嵌入式环境中存在诸多局限。具体表现为:
1.关中断问题。在系统调用时,为了保护临界区资源,Linux系统会将内核置于临界区,并屏蔽中断。这意味着,即使当前进程的优先级较低,也会延迟高优先级的中断请求。在实时应用中,这一情况构成了严重的问题。
2.进程调度问题。Linux采用基于固定时间片的可变优先级调度机制,不可抢占内核。这意味着,即使存在高优先级进程等待运行,Linux也会在某个时间片分配给低优先级进程,这不符合对实时应用中高优先级进程立即抢占CPU的要求。
3.时钟问题。为了提高系统的平均吞吐率,Linux将时钟中断的最小间隔设置为10ms。然而,对于周期性的实时任务,如果需要间隔小于10ms,系统将无法满足此类任务的需求。调整时钟间隔以满足实时任务需要,会导致系统在处理中断时开销增加,大量时间用于进程调度而无法进行正常的处理。
RTLinux的特点在于,它通过在 Linux内核与硬件之间引入一个虚拟层,构建了一个独立的实时内核。这一实时内核具有时间上可预测性,能够满足硬实时任务的需求。同时,RTLinux与 Linux形成一个完整的体系,既能够处理实时部分,也能够支持非实时部分的任务。
RTLinux实现机理包括对 Linux内核的改造和引入特定中断机制。RTLinux内核下设有硬中断和软中断,其中硬中断是实现实时要求的基础。在 Linux内核的下层,RTLinux实现了一个简单的实时内核,而 Linux本身作为实时内核中的最低优先级任务,所有实时任务的优先级都高于 Linux和一般任务。
硬实时实现的关键在于实时任务执行、数据读写过程的无阻塞以及实时数据管道(RTFIFO)的使用。实时有名管道(RTFIFO)结构确保了实时任务在读取和写入数据时不会被阻塞。此外,RTLinux将标准 Linux内核作为简单实时操作系统(RTOS)运行,避开了 Linux内核性能问题。
软实时实现则通过高效、可抢占的实时调度核心接管中断,并将 Linux作为实时核心中的最低优先级进程运行。实时任务优先执行,非实时任务等待。RTLinux引入了虚拟中断机制,确保实时进程与非实时 Linux进程在数据交换时不产生顺序。
在调度策略方面,RTLinux默认采用优先级调度,确保高优先级实时任务迅速调度。同时,它支持其他调度策略,如最短时限最先调度(EDP)和确定周期调度(RM),以适应不同场景的调度需求。RTLinux的任务调度器设计为可装载的内核模块,允许用户根据实际需求定制调度算法。
RTLinux在处理定时机制时,对时间精度和时钟中断处理的时间开销进行了权衡。它采用终端计时中断方式调整定时器定时间隔,既实现了高定时精度,又减小了中断处理的开销。这种折中策略使得 RTLinux能在满足实时性要求的同时,保持较高的系统效率。
综上所述,RTLinux通过一系列技术手段和机制的创新,成功地解决了 Linux在实时应用中的局限,为嵌入式系统提供了更加可靠的实时性能保障。
扩展资料
RTLinux(AReal-Time Linux,亦称作实时Linux)是Linux中的一种实时操作系统。它由新墨西哥矿业及科技学院的V. Yodaiken开发。目前,RTLinux有一个由社区支持的免费版本,称为RTLinux Free,以及一个来自FSMLabs的商业版本,称作RTLinux Pro。
vxworks操作系统如何实现实时性
对你这个话题感兴趣,搜了一下,一起学习:
摘要:本文分析了适用于测控领域的4种实时操作系统,并对比了它们实时性能的重要指标,归纳了实时性设计和实现中的若干问题。
引言
20世纪70年代以来嵌入式系统的硬件和软件技术的飞速进步,使得嵌入式应用得到了蓬勃发展,在这些应用中实时操作系统起着决定性的作用。
在复杂测控应用中,必须使用对实时性要求非常高的实时操作系统。例如在工业控制、交通管理、机器人、航空航天、武器装备等领域,系统事件的响应如果不能准时或超时,就可能导致巨大的损失和灾难。因而,选择操作系统时,对实时性的仔细考虑至关重要。本文从实时性的角度细致的分析对比了适用于此类有苛刻实时性要求的4种操作系统——VxWorks、mC/OS-II、RT-Linux、QNX,为系统选型提供一定参考。
实时性能主要实现技术
实时操作系统的实时性是第一要求,需要调度一切可利用的资源完成实时任务。根据响应时间在微秒、毫秒和秒级的不同,可分为强实时、准实时和弱实时三种。强实时系统必须是对即时的事件作出反应,绝对不能错过事件处理时限。例如测控领域就是要求强或接近强实时系统。在机顶盒、PDA、信息家电等应用领域,系统负荷较重的时候,允许发生错过时限的情况而且不会造成太大的危害,准和弱实时系统就可满足应用。一个强实时的操作系统通常使用以下技术:
●占先式内核
当系统时间响应很重要时,要使用占先式内核。当前最高优先级的任务一旦就绪,总能立即得到CPU的控制权,而CPU的控制权是可知的。使用占先式内核使得任务级响应时间得以最优化。
●调度策略分析
任务调度策略是直接影响实时性能的因素。强实时系统和准实时系统的实现区别主要在选择调度算法上。选择基于优先级调度的算法足以满足准实时系统的要求,而且可以提供高速的响应和大的系统吞吐率。当两个或两个以上任务有同样优先级,通常用时间片轮转法进行调度。对硬实时系统而言,需要使用的算法就应该是调度方式简单,反应速度快的实时调度算法了。尽管调度算法多种多样,但大多由单一比率调度算法(RMS)和最早期限优先算法(EDF)变化而来。前者主要用于静态周期任务的调度,后者主要用于动态调度,在不同的系统状态下两种算法各有优劣。在商业产品中采用的实际策略常常是各种因素的折中。
●任务优先级分配
每个任务都有其优先级。任务越重要,赋予的优先级应越高。应用程序执行过程中诸任务优先级不变,则称之为静态优先级。在静态优先级系统中,诸任务以及它们的时间约束在程序编译时是已知的。反之,应用程序执行过程中,任务的优先级是可变的,则称之为动态优先级。
●时间的可确定性
强实时操作系统的函数调用与服务的执行时间应具有可确定性。系统服务的执行时间不依赖于应用程序任务的多少。系统完成某个确定任务的时间是可预测的。
实时性能重要指标
衡量实时操作系统实时性能的重要指标有:
●任务切换时间
当多任务内核决定运行另外的任务时,它把正在运行任务的当前状态(即CPU寄存器中的全部内容)保存到任务自己的栈区之中。然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行。这个过程就称为任务切换。做任务切换所需要的时间取决于CPU有多少寄存器要入栈。CPU的寄存器越多,额外负荷就越重。
●中断响应时间(可屏蔽中断)
计算机接收到中断信号到操作系统作出响应,并完成切换转入中断服务程序的时间。对于占先式内核,要先调用一个特定的函数,该函数通知内核即将进行中断服务,使得内核可以跟踪中断的嵌套。占先式内核的中断响应时间由下式给出:
中断响应时间=关中断的最长时间
+保护CPU内部寄存器的时间
+进入中断服务函数的执行时间
+开始执行中断服务例程(ISR)的第
一条指令时间
中断响应时间是系统在最坏情况下响应中断的时间,某系统100次中有99次在50ms之内响应中断,只有一次响应中断的时间是250ms,只能认为中断响应时间是250ms。
表2列出了部分体现实时性能重要指标的典型值,它们的测试平台和测试方法不完全相同,影响了数据的可比性,但我们仍可作为参考。
另外,还有系统响应时间(系统发出处理要求到系统给出应答信号的时间)、最长关中断时间、非屏蔽中断响应时间等辅助的衡量指标。
若干问题
虽然当今的实时操作系统已日臻完善,但仍有一些问题存在并干扰着强实时的实现。我们应充分的重视,并通过合理的安排程序减少它们的危害。
●优先级反转
这是实时系统中出现得最多的问题。优先级反转是指一个任务等待比它优先级低的任务释放资源而被阻塞,如果这时有中等优先级的就绪任务,阻塞会进一步恶化。它严重影响了实时任务的完成。
为防止发生优先级反转,一些商业内核(如VxWorks)使用了优先级继承技术,当优先级反转发生时,优先级较低的任务被暂时地提高它的优先级,使得该任务能尽快执行,释放出优先级较高的任务所需要的资源。但它也不能完全避免优先级反转,只能称其减轻了优先级反转的程度,减轻了优先级反转对实时任务完成的影响。
优先权极限是另一种解决方案,系统把每一个临界资源与1个极限优先权相联系,这个极限优先权等于系统此时最高优先权加1。当这个任务退出临界区后,系统立即把它的优先权恢复正常,从而保证系统不会出现优先权反转的情况。采用这种方案的另一个有利之处,是仅仅通过改变某个临界资源的优先级就可以使多个任务共享这个临界资源。
●任务执行时间的抖动
各种实时内核都有将任务延时若干个时钟节拍的功能。优先级的不同、延时请求发生的时间、发出延时请求的任务自身的运行延迟,都会造成被延时任务执行时间不同程度的提前或滞后,称之为任务执行时间的抖动。可能的解决方案有:
a.增加微处理器的时钟频和时钟节拍的频率;b.重新安排任务的优先级;c.避免使用浮点运算等。
强实时系统中,我们必须综合考虑,充分利用各种手段,尽量减少任务执行时间的抖动。
●任务划分
程序在CPU中是以任务的方式在运行,所以我们要将系统的处理框图转化为多任务流程图,对处理进行任务划分。任务划分存在这样一对矛盾:如果任务太多,必然增加系统任务切换的开销;如果任务太少,系统的并行度就降低了,实时性就比较差。在任务划分时要遵循H.Gomma原则:
a. I/O原则:不同的外设执行不同任务;
b.优先级原则:不同优先级处理不同的任务;
c.大量运算:归为一个任务;
d.功能耦合:归为一个任务;
e.偶然耦合:归为一个任务;
f.频率组合:对于周期时间,不同任务处理不同的频率。
如果我们在具体分析一个系统的时候发生原则冲突的话,则要为每一个原则针对具体的系统设定“权重”,必要的时候可以通过计算“权重”来最终确定如何去划分任务。
总结
VxWorks、mC/OS-II、RT-Linux、QNX都是优秀的强实时操作系统,各有特色:VxWorks的衡量指标值最好;mC/OS-II最短小精悍;RT-Linux支持调度策略的改写;QNX支持分布式应用。当我们充分理解和掌握它们实现技术、衡量指标的不同,注意所存在的问题,就能在实时性应用中游刃有余。
来源:[]机电之家·机电行业电子商务平台!
嵌入式系统采用linux系统,怎样保证实时性
并非所有的嵌入式系统都需要实时操作系统,只有在一些特定的场合,对时间比较敏感的应用才会使用实时操作系统。实时操作系统必须及时响应所要求的任务,在限定时间内完成任务。非实时的操作系统,多时间不是很敏感,对所要求的任务只是会保证完成,但在什么时候完成,或用多长的时间完成就不一定了。例如:手机它不需要实时性。我们发短信时,系统对它的处理早1秒或者晚1秒都不会影响到我们的使用。而对于导弹这样的应用必须具有实时性。导弹被发射出去锁定目标后要不断修正飞行方向,以保证击中目标,如果它的实时性不好的话,从传感器传来的信号没有及时响应,即使完了1毫秒的时间,那误差就会很大。用这样的导弹攻打敌方目标的话,目标很可能没有击中,美国大使馆倒是有可能被炸掉。另外一般linux不具有实时性,它是分时操作系统一般是面向用户的,但是因为它的源代码是公开的,它是可以改造成实时系统的,但即使是这样它的实时性也不会很好,毕竟它最初的设计并不是为了实时性。我们在Linux上面同时运行好几个程序,它们会被并发的执行。我们会发现同时多运行几个程序可能会比只允许一个程序慢,这是因为操作系统把处理器按时间片分给了每一个程序。自然会慢一些。而实时操作系统,一般不同的任务会有不同的优先级,他会把拥有最高的优先级的程序一次性执行完毕。然后再执行次一级的程序。这要的系统只适用于控制,不适合一般的应用。