Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1951317
  • 博文数量: 383
  • 博客积分: 10011
  • 博客等级: 上将
  • 技术积分: 4061
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-24 18:53
文章分类

全部博文(383)

文章存档

2011年(1)

2010年(9)

2009年(276)

2008年(97)

我的朋友

分类: LINUX

2009-03-07 08:45:10

    对于实时任务来说,主线流程的优化尤为重要,主线流程是指任务按照正常流程接受合法消息时,所走的最常调用分支。这些分支效率的高低,将直接影响到整个任务的平均响应速度,所以应该仔细的优化。
应该尽量避免在主线流程中做printf等十分费时的流操作。而主线流程的并且优化完后,要对主线流程的运行效率(或者说一个主线流程的平均处理时间和最坏处理时间)做测试,这个测试数据将做为整个实时系统调度策略设计的基础数据。


    实时的含义是指在规定的时限内能够传递正确的结果,迟到的结果就是错误。实时程序在设计时,必须充分考虑到这一点,必须按照给定的时限和硬件运行速度来设计算法,优化代码,而不是草草设计完了等结果行就行,不行再改。


    对于实时系统的设计来说,实时和分时单元的合理划分,是提高整个系统实时性能的一个重要手段。例如,对于信令处理系统来说,对信令的翻译、解释和转移、传递、应答是实时单元,而对于信令的监视打印、非法信令的打印等则是分时单元。实时单元应该放到实时任务里面去处理,而分时单元的处理应该由实时任务通过消息或者共享内存模式传递数据,启动分时进程的在线或者后台处理。


    对于实时系统的设计,实时任务的划分合理与否,将直接影响整个实时系统的平均响应速度。一般说来,很多时候,我们设计时要考虑将两(多)个逻辑上应该分成两(多)个任务的任务合并为一个任务。例如:有两个任务AB,他们分别做两个优先级没有明显分别的处理,他们通过消息通信,任务A是消息的发送者,任务B是消息的接受者,如果他们之间通信的消息量很大,可能就需要考虑将这两个任务合并。当然前提是从逻辑上讲,这两个任务的合并是可能的。


    对于嵌入式实时软件的设计,要对实时嵌入内核在对应的硬件平台上的的任务切换时间、中断延迟时间有一个准确了解,以便于任务设计和中断处理程序的设计。任务切换时间是实时操作系统将控制权从一个任务的执行中取回,然后交给另外一个任务所需要的时间。它包括保存目前正在执行任务所需要的时间,另外一个任务调入系统执行所需要的时间以及实时操作系统决定下一个调度任务所须的调度时间。中断延时时间是指系统确认中断开始直到执行中断服务程序的第一条指令为止整个处理过程所需要的时间。实时操作系统的中断延迟时间由下列三个因素决定:

        ——
处理器硬件电路的延迟时间,通常这个时间可以忽略。

        ——
实时操作系统处理中断并将控制权转移给相关处理程序所需要的时间。

        ——
实时操作系统的中断禁止时间,这是实时操作系统为了保护重要的系统程序代码暂停接受中断的可能需要的最长时间。


    对于实时任务的实现来说,必须在主循环中调用系统调用诸如psos+tm_wkafte()之类的系统调用,将控制权交还实时操作系统,否则优先级比此任务低的任务将没有机会被调度到。

阅读(1324) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~