操作系统开发过程应遵循的一些原则

发表于:2011-11-01 09:50  作者:辛庆祥   来源:51Testing软件测试网采编

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签:

  建立一个简便、高效的应用开发环境。定义和实现了API之后,必须建立一个与之配套的应用程序开发环境,供程序员开发与之配套的应用程序。需要说明的是,这个应用开发环境不一定要从头重新开发,完全可以借鉴现有的应用程序开发环境。比如,可以在现有开发环境中增加插件,使得其支持该操作系统。Android就是一个很好的例子,它没有从头开始建立一个开发环境,而是利用了被广泛应用的Eclipse开发环境。这样不但大大降低开发工作量,也可充分继承现有开发环境所积累的开发经验和开发资源。很多情况下,程序员是根据开发环境选择开发的目标操作系统的,而不是根据操作系统选择开发环境。比如同样是移动开发,熟悉JAVA和Eclipse的程序员,可能就直接选择了Android作为首选目标操作系统,而熟悉C/C++语言的程序员,会首选iOS作为目标开发环境。虽然iOS使用Ojbective C语言作为其开发语言,但是该语言与C/C++更加接近。因此,选择一个流行的、拥有广泛开发者的开发环境,对操作系统本身生态链的建设非常有价值。最后,开发环境(或者依赖于某个成熟开发环境的插件)必须与第一个操作系统版本一起发布,所谓“操作系统未动,开发环境先行”。而且一旦发布,尽量保持不变。这样做的目的,是使程序员尽快熟悉最新操作系统的开发方法,给程序员足够的时间去学习和掌握开发过程。

  采用模块化设计,确保操作系统具有最大可能的扩展性。这里包含两个层面的意思:设备驱动程序层面和应用程序层面。在设备驱动程序层面,要提供一个明确定义、功能完备的设备驱动程序调用接口,设备驱动程序通过这一组接口,调用操作系统的特定服务。这样就可使得设备驱动程序作为独立于操作系统核心的独立模块,而无需与操作系统一起进行编译和连接。显然,这样的结构,可使得设备驱动程序的开发过程非常独立和容易。与之相反的做法是,操作系统不提供设备驱动程序调用接口,或者即使提供,也是以函数的形式提供,设备驱动程序开发的时候,必须包含对应的头文件和库文件,并与操作系统核心一起连接成一个大的系统模块。显然,这种设计方法把操作系统核心和设备驱动程序绑定在了一起,不利于设备驱动程序的单独设计。同样的,对于应用程序开发,也应该定义一个清晰的开发接口,供应用程序调用。同时定义和实现一个应用程序加载机制,使得应用程序在开发过程中无需考虑加载地址等因素,也无需考虑操作系统核心的实现机制,只需要专注于应用程序本身的功能即可。这样的结果是,任何一个应用程序,都是独立于操作系统的一个模块,这个模块可存放在外部存储介质上,供操作系统“按需加载”。主流的成功操作系统,大都是按照这样的原则进行设计。比如Windows和Linux,都实现了可加载模块的功能,同时清晰定义了设备驱动程序和应用程序能够调用的接口函数。在移动领域流行的Android和iOS操作系统,也是按照这种方式设计和实现,取得了良好的成功。如果没有这种模块化的设计机制,Apple应用商店和Android应用商店就无从谈起。最后强调一下,这里的模块化原则,与前面所说的操作系统关键模块之间紧密耦合原则不冲突。前面讲的紧密耦合,是操作系统核心模块之间的紧密耦合,这里讲的模块化分离原则,是操作系统核心部分与外围部分(驱动程序、应用程序等)之间的设计原则。

  最大程度的包容设计,尽量与现有操作系统兼容和共存。所谓有容乃大,尽量与现有操作系统或现有的应用软件兼容,是操作系统开发的一个重要原则。这样做,可大大加快操作系统生态链的建设。或许有些不可思议,作为最贴近硬件的系统软件,操作系统之间能兼容吗?答案是肯定的,但是这种兼容可能不像应用程序兼容操作系统那样明显。举例来说,比如新开发的操作系统是针对x86平台的,则尽量支持FAT32/NTFS等文件系统,同时其启动过程,也建议充分利用Windows操作系统的启动机制,提供启动菜单让用户选择。这些动作,就是为兼容Windows操作系统而做的。这样做,可使得用户在安装或使用新操作系统的时候,无需重新格式化硬盘,也无需销毁已有的操作系统,而只要象安装普通软件那样安装到已有硬盘上就可以了。另外一种层面的兼容,是API接口的兼容。开发出与现有操作系统完全一样的API接口,可能性比较小,而且这样做也可能侵犯知识产权。但是与现有操作系统的API接口尽量保持一致,比如保持语义、API接口参数类型、错误处理机制等的一致,可大大降低程序员的学习成本,大大加快应用程序的开发速度。与现有操作系统的可执行文件格式保持一致,也是一种兼容行为。比如,新开发的操作系统支持windows的PE格式执行文件,则可大大增加可用于应用程序开发的开发环境数量,有利于生态链的建设。兼容现有的可执行文件格式,对某些基于已有操作系统比如Windows开发的应用程序,甚至直接可以在新操作系统上运行。

  操作系统开发是一个复杂的系统工程,应该遵循的原则或策略,远不止上述描述的这些。而且上述原则,也是作者在操作系统开发中的一些体会和理解,不一定适合所有操作系统的开发。在这里写出来,主要是希望起一个抛砖引玉的作用,希望能够依次为切入,能够激发更多的讨论和共享,为操作系统开发贡献一份力量。

相关链接:

对操作系统开发相关的一些问题的思考


33/3<123

评 论

论坛新帖



建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道