全部学习汇总: g_unix: UNIX系统学习笔记 (gitee.com)
UNIX的一些思想在嵌入式的软件设计中似乎也有一些可以借鉴或者引发我们思考的地方,当然,这个可能并不能百分百的做借鉴。行业技术的发展其实很多时候会在印证技术方案的合理性,UNIX的方式在实时的控制领域虽然也有QNX这样的应用,但是控制类的期间大部分还并不是这种技术方案。从这样的角度看,至少行业的经验已经弄清楚,UNIX的方案在这个领域并不是百分百的可行。
结合这些描述,整理下我看到的一些嵌入式中看到的问题。
第一点,因为进程创建的代价等带来的单个大软件设计。
这方面,在我接触到的嵌入式里面应该是没有的。但是可能从另一个层面上来看,可能也是存在这种模式的。嵌入式的系统中,集成的创建和销毁在很多领域中跟CS的OS中的使用完全不同。任务创建很多时候都是静态的,因此,这个过程中的资源消耗并不是一个很重要的考虑点。雷同的设计倒是有的,我觉得主要的因素应该还是类似汽车电子领域先天的技术短板。汽车电子上的快速、高容量的通信机制引入时间不久,因此如果想做到与UNIX平台上这样即使是跨设备也能够有浑然一体的效果还是有些难。因此,现在很多软件的复杂度其实是在于控制器之间不好协同,因此,导致了控制器本身的软件复杂度上升。
第二点,进程间的通信可能会采用临时文件等方式做通信。
这个其实在嵌入式里面有这样的问题,但是面临的可能是完全不同的情况。嵌入式软件之间,很多软件的设计采用了全局变量等手段做信息的传递。这样的设计在安全性上差了一些,同时也让软件之间的解耦会差一些。如果是考虑安全机制的一些弥补,或许需要考虑下有什么弥补的方案。
第三点,关于异步IO接口的学习和使用。
这个多少还是没理解,不过在软件设计中会有很多同步或者异步的处理方式,而这个处理一般来说会涉及到一个时间等待或者中断的处理。看到这里,或许还真有方式能够从这些角度看看是否能够通过机制的形式来处理掉。
我没有看到关于多核的处理,也没有理解透多核中的管道等是否跟单核有不同的方式。关于这部分,现在想来其实是可以去深入学习分析下。
小结:
OS的设计其实是提供一个平台化的东西,更加标准化,为更高一级的软件的设计提供一个统一的环境和合理高效的机制。嵌入式软件与此不同,但是不同点应该在于标准,机制层面的分析研究。