嵌入式Linux基础知识0(什么是真正的实时操作系统--硬实时 软实时)

需求说明:IPC项目需要Linux系统,知识储备

来自:http://blog.csdn.net/zhourui1982/article/details/5282361

阅读精华整理:


1、根据实际应用,可以选择采用硬实时操作系统或软实时操作系统,硬实时当然比软实时好,但是,如果你的公司正在准备开发一款商用软件,那请你注意了,业界公认比较好的VxWorks(WindRiver开发),会花光你本来就很少的银子,而软实时的操作系统,如某些实时Linux,一般是开源免费的,我们公司本来的产品就是基于VxWorks的,现在业界都在Cost Reduction,为了响应号召,正在调研如何把平台换成免费的嵌入式实时Linux。同学们,如何选择,自己考虑吧:-)


2、硬实时 - 代表产品 VxWorks

举一个经常使用的实例,中高档汽车中使用的气囊。当报告车辆碰撞的传感器中断CPU后,操作系统应快速地分配展开气囊的任务,并且不允许任何其他非实时处理进行干扰,晚一秒钟展开气囊比没有气囊的情况更糟糕,这就是一个典型的必须使用硬实时的系统。

硬实时系统指系统要有确保的最坏情况下的服务时间,即对于事件的响应时间的截止期限是无论如何都必须得到满足。

3、软实时 - 代表产品 软实时Linux

再举一个实例,IPTV数字电视机顶盒,需要实时的处理(解码)视频流,如果丢失了一个或几个视频帧,显然会造成视频的品质更差,但是只要做过简单的抖动处理的系统,丢失几个视频帧就不会对整个系统造成不可挽救的影响。

软实时系统就是那些从统计的角度来说,一个任务能够得到有确保的处理时间,到达系统的事件也能够在截止期限到来之前得到处理,但违反截止期限并不会带来致命的错误。


4、请注意:讲到这里,想花点墨水区分一下实时和嵌入式的概念,因为笔者也长时间把这两者混为一谈。实时操作系统的概念上文已经讲的很清楚了,主要就是要能确定性的满足时间要求。嵌入式系统很难下一个定义,有兴趣的可以百科一下“嵌入式系统”,一般可以认为是板子或芯片上软硬件的总和,嵌入式系统一定要对实时任务有很强的支持能力,所以一般嵌入式系统都会采用实时操作系统,根据不同应用,选择采用硬实时或软实时


5、如何衡量一个实时操作系统的实时性能?

指标1、中断响应时间(可屏蔽中断)

指标2、任务切换时间


6、实时操作系统的核心 - 任务调度(VxWorks)

既然实时性对于实时操作系统如此重要,同学们,我们下面就来学习一下实现实时性的核心模块 - 任务调度。笔者所在的公司花了大把银子购买风河的VxWorks,但是为了实现自己的可控性,除了任务调度模块以外全部重写,包括内存管理、文件管理等其他核心模块,但唯独任务调度模块除外,这可是人家的压箱底法宝:-)

构成应用软件系统的程序集合中,独立的、相互作用的程序单元,在其执行时称之为任务,从系统的角度来看,任务是竞争系统资源的最小运行单元。单个CPU 中,多任务机制制造了一个多个任务同时执行的假象。其实系统只是根据一个多任务调度算法,将内核插入到这些任务中执行。实时系统VxWorks的一个任务可有多种状态,但最基本的状态有以下四种:

1) 就绪态(Ready):任务只等待系统分配CUP资源。

2) 挂起态(Pend):任务需等待某些不可利用的资源而被阻塞。
3) 休眠态(Sleep):如果系统不需要某一个任务工作,则这个任务处于休眠状态。
4) 延迟态(Delay):任务被延迟时所处的状态。


7、任务由系统内核调度运行一段固定长度的时间,称为时间片。调度是指为任务分配资源和时间,使系统满足特定的性能要求。调度算法的目的是在正常情况下,尽可能满足所有任务的时限:在峰值负载条件下,保证强实时任务满足时限。因为时限是区分实时系统和非实时系统的关键因素,因此调度算法是实时系统的基本问题。实时操作系统所具有的运行性能,如吞吐量的大小、周转时间的长短、相应的及时性和可预测性等在很大程度上都取决于实时调度。

进程调度可采用下述两种方式:

1. 非抢占方式。采用这种调度方式,一旦把处理机分配给某进程后,便让该进程一直执行,直到该进程完成或发生某事件而被阻塞,才再把处理机分配给其他进程,决不允许某进程抢占已经分配出去的处理机。显然它难于满足紧急任务的要求,实时系统中不宜采用这种调度方式。

2. 抢占方式。允许调度程序根据某种原则,去停止某个正在执行的进程,将已分配给该进程的处理机,重新分配给另一进程。抢占的原则有:

- 时间片原则。各进程按时间片运行,当一个时间片用完后,便停止该进程的执行而重新进行调度。

- 优先权原则。当一个进程到来时,如果其优先级比正在执行的进程的优先级高,便停止正在执行的进程,将处理机分配给优先级高的进程,使之执行。实时系统中一般采用基于优先级的抢占式调度和轮转调度的进程调度和中程调度相结合的调度策略。因此既可具有较大的灵活性,又能获得极小的调度延迟。


文章原文

做嵌入式系统开发有一段时间了,做过用于手机平台的嵌入式Linux,也接触过用于交换机、媒体网关平台的VxWorks,实际应用后回过头来看理论,才发现自己理解的肤浅,也发现CSDN上好多同学们都对实时、嵌入式这些概念似懂非懂,毕竟如果不做类似的产品,平时接触的机会很少,即使做嵌入式产品开发,基本也是只管调用Platform team封装好的API。所以在此总结一下这些概念,加深自己的理解,同时也给新手入门,欢迎大家拍砖,争取写个连载,本文先总结一下实时的概念,什么是真正的实时操作系统?

1. 首先说一下实时的定义及要求:

参见 Donal Gillies 在 Realtime Computing FAQ 中提出定义:实时系统指系统的计算正确性不仅取决于计算的逻辑正确性,还取决于产生结果的时间。如果未满足系统的时间约束,则认为系统失效。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值