接着作者又争辩道: :□ 引述《 Timothy Shyu 》的文章 : :我想我要来回应一下有关Kernel缩小化这个议题 : :1. 143K kernel 是我们研究这个议题的一个副产品而已,事实上,要缩小的是整个 : Embedded系统,而不只是kernel而已. :2. 要缩减整个系统,所以我们开发了一些工具,可以scan 整个Embedded Linux系统, : 包含kernel、library、application等,目的是作这三者间的最佳化.这些工具 : 将kernel无用到的System call移除,并藉由分析application来产生最精简的 : Library.
I understand. I have done the same thing before. My point is that we can save much more space by reducing the library that kernel. It's hard to steal 500K from kernel. However, it's not so hard to get 500K from other part of systems. :3. 有时候连工具(Ex. gnu tools)本身,我们也要动一些手脚,例如一些最佳化的方式 : 是否适合Embedded System的需求,或是有些格式,如ELF的header是否可以缩减等. : :4. Embedded 环境有时是比教特殊的,有时连Console都没有,那么把这些没用到的 : 程序码包含进来是没有意义的不是吗? 如果我们手边能有一些工具程序来帮我们 : 作这些缩减的工作,无疑是减轻系统开发人员的负担,在PC上,或许几MB或几十 : MB不算什么,但在embedded中,或许这是否能拿到订单的关键. Different applications have different requirements. Your point is true for some cases. :5. 另外有一些缩减也是相当有趣的,例如printk中的Array! 仔细算算好几十K! : 但也不能用手动缩减吧! We have two different requirements, size of RAM and size of flash. Buffers are related to the size of RAM. However, it doesn't affect the size of flash. :6. 总之,我们把Linux的缩小当作一个研究的issue看待,是有一些直得开发的空间, It's insteresting. However, I don't think it's very valuable. : 曾经在一次embedded linux的研讨会上听到kernel小于500K是没有意义的,我想这要 : 看用途,不能一概而论.我们也不能只从kernel的configuration来看Embedded Linux : 的缩小化. : : : 由于您的文章中提到uCLinux,其实这个Project是 for 那些没有硬件实作MMU的CPU, : 照理讲,硬件没有做,要由软件来实现的话,mm的程序会膨胀才对,就好像用软件 : 来模拟FPU一样.Lineo 是把这种SOC当作uC(micro-controller),所以不再用软件 : 实作一些mm该有的功能,看起来好像是non-MMU-->mm缩小,其实是错误的. : You are right. My statement is a little bit misleading. My intension is to response to some guys who think they can save some space by removing VM from kernel since they think RTOS don't need VM.
: 例如,本来由MMU来作memory的protection,在non-MMU的环境中,Linux的核心中 : 要增加一些程序来处理,但在uCLinux中完全没有实作.反正只是for controller : 嘛,也不会load user program. It doesn't matter! : 首先程序必须以PIC(position in-dependent code)选项编译,以便可以产生 : relocation的程序码,然后kernel安排适当的记忆体,并且将之载入及执行,如此 : 才能在此无MMU的环境中执行 一个以上的程序 . : : 另外,程序的载入本身也是个问题,i.e. load 到那里,在有VM support的环境中 : 每个程序可以load到固定的位址,例如,位址0 .而不会产生冲突,因为每个VM : 中的位址0, MMU 会帮忙mapping到不同的PM上.对于没有MMU 的CPU就比教麻烦了, : : : 所以non-MMU对Linux的porting是一项吃力不讨好的工作,万一gnu tools的支援又 : 不够,那就有的图的,今天看到工商时报一项新闻中指出,详威已成功整合华邦 : 的PA-RISC CPU与其embedded linux.对于这棵源于HP但去掉FPU与MMU的SOC, : 屈指算来我们也努力了一段时间了,从kernel的修改到gnu tools中软件FPU的支援, : 的确吃掉不少engineer power. 最后在等HP在一两个月内完成一项gnu tools对此 : PA-RISC的支援---pic选项. : : 想不到详威是如此的厉害,不但能够完成当初Cygnus在PA-RISC上未完成的gnu上 : 的加强,还能够在两三个月内完成porting,看来HP找LinuxCare来portig其工作站 : 版本的PA-RISC(W/MMU)至Linux,是找错对象了,将近两年了还搞不出一个 : distribution,应该要找详威才是
|