智能手机之路

来源:互联网 发布:怎么下载农村淘宝app 编辑:程序博客网 时间:2024/05/21 09:57

李振鹏

转载请注明出处

 

智能手机,我认为主要是从应用程序和OS角度来说的,应用程序可以安装卸载,可以同时运行多个应用程序,单个应用程序的崩溃,不会影响系统稳定。

一般来说OS应该能满足抢先式多任务,或者至少能满足协作式多任务。这里的任务,主要是指应用程序,是进程角度,而不是细化到进程内部的线程,独立的地址空间。

 

手机的操作系统由于牵扯到跟通信协议相关,因此必须都是实时操作系统。对于手机来说,一般操作系统为支持多任务的实时操作系统,就是非智能手机,也是多任务的实时操作系统。这里两个多任务一般来说的本质区别就是智能手机的多任务可以动态创建,非智能手机的不能动态创建。不过非智能手机的OS也可能支持动态创建进程。这里还有一个区别就是非智能手机的UI是一个单独的任务,一般称为MMI(Man Machine Interface),所有UI相关的都是一个任务。这就导致了2个有UI的应用程序不能同时独立运行。这个也是非智能手机的缺点。

另一个就是应用程序的安装和卸载。非智能手机的系统一般来说,是统一编译链接的,生成一个可执行文件。如果要想再增加新的应用程序,必须整个系统再次编译链接,生成新的可执行文件。这就导致了无法安装新的应用程序。但是非智能手机也可以安装应用程序,可以参考我的另外一篇文章嵌入式单地址空间OS中实现动态加载的过程。虽然可以安装应用程序,但是这些应用程序并不能同时运行。这里从技术层面上讲的主要问题就是应用程序的动态加载问题。

 

再一个重要的地方就是独立的地址空间,如果所有的应用程序共享相同的地址空间,这样当一个应用程序崩溃,会导致整个系统崩溃,如果应用程序地址空间独立,一旦崩溃,只是这个应用程序而已,系统完好无损。

 

地址空间独立,对于智能手机来说,需要借助专门的硬件来处理内存地址的映射,也就是MMU(Memory Management Unit)内存管理单元。一般来说非智能手机应用程序使用相同的地址空间,并且在系统启动的时候就已经分配完毕了,比如说MMI的任务地址为0x123456,栈空间为8K。这样MMI的地址空间就确定了

 

一般说到智能手机,肯定会说智能手机的三大系统Windows Mobile,Linux和Symbian。支持这几个系统的手机,一般来说都是智能手机。另外增加一个Iphone,也可以归属到智能手机里面,下面就一个一个来说。

Windows Mobile的背后是微软在支持,微软的东西,对于程序员来说,是最方便的,完整地文档,丰富的各类书籍,与Win32相同的API,这样都是Windows Mobile获得良好支持的基础。另外就是强大的测试开发环境,Visual Studio的开发工具确实好用,Windows Mobile的模拟器也做的尽可能的接近实际手机。但是微软的东西有个最大的问题就是源代码不公开,有很多地方需要优化,或者是有些特殊的用法才能实现某些功能,这些得达成,只能依靠长时间的经验积累。我承认,我比较喜欢微软的东西,开发方便,文档准确。但是手机不同于PC,没有实现硬件的标准化,各个手机各不相同,这大大限制了微软的发挥,Windows在桌面上横扫千军,不就是支持外设和程序众多而获得的。硬件没有标准化,把Windows Mobile的应用仅仅限制在了支持的手机上面,而各个手机厂商对微软都抱有很大的戒心,担心重演Windows的悲剧。没有一家完全倒向微软。微软对Windows Mobile的控制太严,客户不好做出随需的更改,一个明显的例子就是屏幕的65536色问题,没有哪家解决的了。还有一个是Windows Mobile的授权价格问题,仍旧太高,占据手机成本很大一部分。对于开发者来讲,为Windows Mobile开发软件,由于微软的良好支撑,破解问题无法解决。不过作为手机系统,Windows Mobile还是做的非常不错的。

原创粉丝点击