打印
[新手园地]

《嵌入式系统入门》——学习笔记2——软件体系结构

[复制链接]
2058|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gdmgb520|  楼主 | 2012-6-24 16:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对于一个嵌入式系统,系统的响应速度是决定系统的结构的最重要因素,所以我们这里主要从响应速度的角度讨论四种基本的程序结构:
轮转循环结构
带中断的轮转循环结构
函数队列调度结构
实时操作系统结构

1.轮转循环结构
轮转循环结构就是把每个需要处理的任务逐个查询一边,如果需要处理,则对其进行处理,然后查询下一个需要处理的事情。那么最糟糕的情况下,系统的响应时间就是所有任务执行时间的总和,这有可能是不能接受的。
轮转循环结构是一种非常简单的结构。它没有中断、没有共用资料、无需考虑延迟时间,对于能够用该结构解决的问题,应该尽量用该结构解决。但是,这种系统的响应时间难以控制,而且如果其中一个任务的处理时间发生变化,则整个系统的处理时间也随之发生变化,是非常脆弱的。

2.带中断的轮转循环结构
在这种结构中,中断程序处理硬件特别紧急的需求,然后设备标志;主循环轮询这些标志,根据需要进行后续处理。
与轮转循环结构相比,这种结构可对优先顺序做更多的控制。一方面可以设置各个中断的不同优先级控制,另一方面可以通过控制主循环查询相关标志的顺序来控制子程序。
但是存在的问题是,如果某个子程序需要的处理时间很长,则系统的响应速度也响应的变得很长。

3.函数队列调度结构
在这种结构中,中断程序向一个函数指针队列中添加一个函数指针,主程序中该队列中读取相应的指针,并调用该函数即可。
这种结构的优点是主循环可以根据不同的需求,按不同优先顺序方案来调用函数,这样任何需要更快响应的任务程序都可以更早地被执行。
这种结构还是存在两个问题,一方面如果某个低优先级的任务程序占用处理时间太长,则高优先级的任务必须等待低优先级的任务处理完后才能获得CPU时间;另一方面,如果主循环对任务的优先级进行控制,始终先执行优先级高的任务,而如果此时高优先级认为对应的中断持续产生,则低优先级的任务可能得不到CPU时间而不被响应。

4.实时操作系统
与之前的结构相比,最大区别在于实时操作系统可以中断正在执行的低优先级任务转而去执行高优先级的任务,执行完高优先级任务后继续回来执行低优先级任务。所以,即使改变程序代码(改变某个任务的处理时间),程序的响应时间仍然是固定的。

相关帖子

沙发
xyz549040622| | 2012-6-24 22:47 | 只看该作者

使用特权

评论回复
板凳
ycdhonker| | 2014-3-2 18:46 | 只看该作者
学习了 谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:了解新东西才知道自己的不足。 www.elecbench.com

67

主题

452

帖子

1

粉丝