实时&并发系统分析及实现

来源:互联网 发布:瑞合信led软件下载 编辑:程序博客网 时间:2024/04/28 17:08

1.实时系统

所谓实时系统即对时间有要求的系统,比如说运动控制系统,必须在一个采样周期内完成采样、计算、输出 任务,显然采样周期取的越小,或者说cpu运算速度越低,对与软件设计的要求就苛刻。对于桌面软件设计一般不会存在这个问题。

2.并发系统

什么是并发系统?就是在同一时间(宏观上)必须同时进行的任务,cpu在同一时刻只能执行一条指令,也就是说要想用软件实现并发,无非3种方法:

1.将需要并发的任务的代码穿插起来,让cpu顺序执行。(其实很多基于前后台系统的单片机程序都是这种)
2.采用多cpu或者多核的分布式系统。
3.采用单cpu,分时共享cpu。
在写桌面应用软件的时候同样不存在这个问题,因为应用程序总是基于某种操作系统开发的,在有操作系统的情况下应用程序是在虚拟机上跑的,至于程序什么时候使用,使用哪个真正的pc资源对于程序员来说是透明的。
但是如果在没有操作系统的情况下程序员必须考虑如何实现并发。
以前我对操作系统的理解是:多任务就需要操作系统,对于单任务或者任务比较少的应用就没有必要使用操作系统。显然这个理解是不准确的,比如想让cpu完成100个任务,但是这100个任务都是顺序执行的,那么一个批处理程序就搞定了(当然看你怎么理解操作系统的概念,因为批处理程序也可以看成一个简单的操作系统)。所以是否需要使用操作系统是取决于你的应用中是否有并发,当系统中有并发的时候设计和实现起来比设计顺序执行的程序要困难的多(所以做桌面应用软件开发的人是幸福的,他们只需要专注于自己的应用,而不需要考虑当他们的程序在跑的时候,pc上还有其他的应用程序也在跑),因为必须要考虑并发的任务如何共享系统资源,包括cpu,内存,乃至计时器等等。

当并发的任务少的时候还好,一旦超过了3个实现稳定的系统就很困难了。这个时候可以考虑使用操作系统。
商业实时操作系统有很多,ucos,vxworks等等,在成本及资源(操作系统需要占用额外的资源)可以承受的情况下选择移植一个是比较高效的解决方案,但如果你的要求非常的苛刻,或者说出于成本考虑,或者你的系统比较简单,那么自己实现一个也不错。这里以运动控制系统为例,说明如何实现简单的实时并发系统。

系统需求:用一块dsp实现两轴独立控制(并发来了),每个轴需实现加减速控制,PID位置闭环控制。
平台:单片TI 2407 DSP

简单的方案用2个dsp,一个dsp控制一个轴,互不干涉。但需求说明只能用一块,可以考虑设计一个简单的操作系统,先确定规格。其实操作系统就是解决一个问题:决策如何共享资源,是分时还是分空。
1.两个任务同时(宏观的)共享1个cpu,只能分时共享。
2.2407上有好几个计时器(大于2个),分空
3.2407上有好几路pwm(大于2个),分空
4.2407上有好几个信号捕捉器,分空。。

to be continue。。

原创粉丝点击