看完阿海的这篇文章后,终于对上述问题有了一些理解。拿我的Palm Treo 650来说,其内部有一块32M的NAND Flash和一块32M的DRAM。其中前者属于非易失性闪存,在掉电后可以保持一段时间的数据,就类似于MP3播放器中常用的闪存,或者可以比喻成电脑上的硬盘;而后者学名为“动态随机存储器”,在掉电后数据会很快丢失,类似于我们电脑上的内存,存取比前者快速。650上两块存储器的分配如下图:
文件存储:其中rom(小写)是我们刷机才能修改的部分。RAM就是我们通常所说的RAM,是由NAND Flash虚拟出来的,只有在硬启时才会被清空,在启动时会接受部分从rom解压出来的文件。而ROM(大写)则是rom解压到DRAM上的数据。
软件运行:运行程序时,对于电脑的硬盘和内存又有不同的比喻,此时RAM和ROM都相当于硬盘,而DBCache和动态内存则相当于内存。多数软件都会调入DBCache中运行。
可见DBCache最大容量主要取决于ROM的大小,而ROM的大小又主要取决于实际rom的大小。如果rom image足够小,解压后的ROM的体积会有更为客观的缩小,使DBCache最大容量大量增加。比如我刷了个Bob忠于原版的rom,DBCache硬是从原版的7M左右涨到了13M。
刷一个小rom之后RAM容量也会有可观的增加,一方面是因为rom的部分文件会解压到RAM中,另一方面是因为rom和RAM共用一个物理存储器。刷了上述rom之后我的RAM大约增加了4M。
结论:
1.DBCache和RAM的大小都受rom(是指rom image而不是ROM)的影响。而程序运行主要是在DBCache中而不是RAM中,所以刷小一点的rom对提高稳定性和加快运行速度很有帮助。只有对于采用NOR Flash非易失存储的老机器,由于程序就在NOR Flash中运行,内存中装的软件多少才会影响运行速度。
2.讨论存储功能时,NAND Flash=硬盘,DRAM=内存;讨论系统运行时,ROM+RAM=硬盘,DBCache+动态内存=内存,rom退居二线。
没有评论:
发表评论