现在的位置: 首页 > 综合 > 正文

论文推荐:论OS架构的二元性

2013年03月07日 ⁄ 综合 ⁄ 共 1364字 ⁄ 字号 评论关闭

看着近年来MTK的手机越来越红火,MTK的手机平台如入无人之境,攻城略地,将一些老牌的手机平台打的毫无招架之力,心里越是觉得不是滋味。那么,如此无敌的一个软件平台是一个什么样子的呢,其只是在一个RTOS(如nucleus)上加上一个用状态机构建起来的应用框架,然后使用这个框架编写了功能非常丰富的应用和独立的组件,将这些东西象揉面团一样整合到一个线程(MMI线程)运行,整个MMI就是一个大的极其复杂的状态机。如此多的应用塞到一个状态机来进行管理,实在是不知某些人脑子里塞了什么东西。不过,如此做法的并不是MTK一家,象展讯、飞利浦(nxp)等也是这样。下面转贴自unsigned-char的这篇文章中对这些有深刻的见解。

一年多以前,我稀里糊涂地参与了一个项目。该项目的宏大目标是拖放式开发:在PC上拖放一些控件,搭一个界面,定义一些行为出来,然后把生成的东西 往手机上面一扔就一切搞定。为了实现这一目标,就得在一个RTOS架构的手机软件系统上建立可以支撑现代GUI应用开发的环境。可这个阶段性目标也很难。 GUI框架本身倒是不麻烦,有很多现成的东西可供抄袭。它本质就是一个同步的多级的事件钩子(“the ultimate hook”),难在concurrency。为了支撑现代的应用开发,线程是必不可少的。而现有的RTOS平台呢,当然是基于消息传递,优先级调度和状态 机的。

在搞可视化编程人看来,用状态机来构建应用简直就是用牙签和镊子去造大桥;在老派的搞RTOS做通讯产品的人眼中,对方是手里拿着面向对象的高级铁 锤和链锯,正打算给维纳斯再造一双手臂。在软件工程的角度看来,这是在一座已经10年之久,用扑克牌搭起来的宝塔之上,打算再用钢筋混凝土做一个漂亮的屋 顶!

这个目标当然没有完成,最后绞尽脑汁只做成了一个demo。因为个别鸟人们的脑子里塞满了思维定势和各种阴谋论。这个暂且不说了,下面这篇1978年的论文倒是很准确地分析了基于消息和事件以及基于过程(进程和线程)这两种结构的差异性和互补性。而这正是在这场闹剧中碰到的关键问题。

On the Duality of Operating System Structures

作者是大名鼎鼎的施乐PARC。他们那儿明白人果然很多,名不虚传。指出了差异性之后,就有人根据不同的应用场景提出某种比另一种更好。下面这篇论文的观点是:在高度并发的服务器应用条件下,基于过程的结构最好:

Why Events Are a Bad Idea

接下来必然会有人唱反调,说大多数情况下线程都不好。而且居然说这话的人是Sun,想不到吧?

Why Threads Are a Bad Idea

其实他们说的都对。在SMP的结构下追求高并发可以用thread;在其它场合追求易构建,可理解,可测量,就该用消息传递。补充一下,消息传递并 不意味着不能高并发高效率,视具体设计而定,结果也可能恰恰相反。后面那个说线程不好的人说的是同步的events在大多数场合已经够用,没必要去招惹线 程。这跟message还不是一回事。如果硬是要抠概念的话,实际的系统里两种结构都会有渗透。POSIX里有进程和线程,可是也有signal,这就是 同步message;消息传递的RTOS里都有分工合作的task,设置几个task共享代码,以多实例并发,这不就是worker线程么。

 

抱歉!评论已关闭.