|
楼主 |
发表于 2003-6-17 11:43:08
|
显示全部楼层
探头出来看看,你就会发现这个世界上被用在嵌入式开发的操作系统数不胜数。
如果以我们最关心的资源消耗量来分类这些系统:
块头大的:windowce,linux,...
中等个头:vxworks,uc/os,palmos,epoc...
小号的:psos,neaucles,q-dos,...
虽然上面的分类只是我的一家之见,不过很不幸,我们都很喜欢的linux内核系统通常都不得不和它的死敌window放在最大最耗费资源的一类里。
也许你很奇怪,linux这样一个看上去不应该是很庞大的内核却需要很大的资源。问题在于1:linux内核的几个模块结合紧密,这种紧密结合带来的pc上的高效,但是在你不需要其中的几个部分的时候却很难将它们“干净的”丢弃 2:linux的支持的功能太多,大量的缓冲机制,大量的ipc机制,用户,权限,不同规范的api接口,为了裁减这些嵌入式上几乎不会使用到的功能,我们又需要做大量的工作。3:linux的资源管理理念,作为pc和服务器上的强大系统,linux更加倾向于的是统一管理。包括各种设备,内存空间。这在一些比较高层的嵌入式应用中会使你的开发非常的方便,但是在一些基础应用中实际上是为了作到这种通用管理付出了不小的代价,而且往往一些移植的老应用更倾向于自己管理物理内存空间。
也许又有人会说,资源的增加不是随着硬件的发展正在很快的增加么?
这种情况在pc和服务器上表现的很明显,但是在嵌入式系统的发展上表现的远没有那么明显。几年来,当台式机的主流配置从32m内存发展到了512m内存的时候,手机中sdram的主流配置不过是从128k增加到了1m左右。往往嵌入式开发中资源的匮乏和尽力榨取硬件每一点能力是贯穿你设计开发的主题。
当然也有很多应用中出现的夸张的资源跳跃,比如交换机上的单板sdram量从4m左右跳跃到了软交换时代的2g以上。当然这带来的除了单机处理能力大大增加外是单板的价格飞涨。
实际上,还有很重要一种分类方法-是否支持实时。也许实时这个名词听上去非常的酷,但它绝对不是大多数人需要的功能。如果你真的需要这个功能,你需要仔细的挑选你的硬件指标,你的操作系统并且精心打磨你的代码和中断系统。如果你不够牛,你就耐心忍受它给你带来的麻烦好了。至少我这么说的意思是,不要过分主动的向你的老板或者导师提出:我要做一个真正毫秒响应的实时系统!
除了考虑选用系统的消耗和你的应用的差异以外,你还需要考虑的就是系统的硬件支持。最中心的,你选中的系统是否支持你的cpu,它是否有内建的微硬盘/flash硬件接口和文件系统,它是否支持你想要使用的特殊硬件比如usb?
哈哈,这里恐怕是linux爱好者最容易抬起胸膛的地方了。linux有可能是这种支持性最广泛的一个作业系统了。这里我就不多说了,看看arch下面支持的架构数目和你方便的挂载一个驱动,一个文件系统的情况。(哦,当然了,资源消耗,资源消耗) |
|