1
“独立功能”表示进程是面向使用者的定义,它关心的是要做什么?比如,在电脑上我要写一篇文章,打开Word。那么计算机就会创建一个Microsoft Word的进程,如果我想同步写两篇文章,就要再打开一个Word,计算机就又创建一个Microsoft Word的进程。
输入资源:加速踏板传感器,刹车踏板传感器等
输出资源:驱动水泵的PWM模块等
2
“运算调度”,表示线程是面向运算器的,即CPU的。在这个层面上,它只关心CPU一个资源,其它的资源不考虑。
“最小单位”,表示一旦被定义为线程,就不应该再向下分子线程了,如果可以分那么在设计程序时应该先分。比如,某个Thread_10ms(),分析发现当中的某些逻辑执行周期应该是2ms,那么就应该把它拆分成Thread_10ms()和Thread_2ms()
“单一顺序流”,表示一个线程一旦启动,它就应该按顺序从头执行完。如果中间被暂停应该记录暂停点,等恢复后从暂停点继续执行。如果恢复后没有从暂停点继续执行,应该为错误。
“不同的任务”,表示一个任务只能交给一个线程执行。否则的话,会导致非预期的结果。比如,有一个任务Task_Printf(“Hello World”),当把它单独挂在10ms进程里,那么屏幕上每隔10ms输出一个“Hello World”;当把它单独挂在2ms进程里,那么屏幕上每隔2ms输出一个“Hello World”。但是在一个可抢占式操作系统里,如果把它们都挂在2个线程里,2ms任务可能会抢占10ms任务。屏幕上可能会输出“Hello Wo Hello World rld”等奇怪的字符串。
嵌入式系统的功能逐渐强大,越来越接近通用计算机功能,比如智能手机。在汽车电子领域,XCU是发展的方向,一个XCU肯定是多进程的,光定义任务不够,还要定义它属于发动机,或者变速箱。
4
带来安全问题
Boot和App程序要分配独立RAM空间保存各自状态,浪费资源
没有必要,从头开始运行App程序到执行到某个断点也就几十到几百毫秒,保护现场的进程切换节省不了多少时间。
5
版权声明:
已完成
数据加载中