技术开发 频道

精心定制Win XPe系统 打破内存占用魔咒

  2.Windows XPe内存占用的原因分析

  (1)启动过多无用的组件和驱动程序

  嵌入式系统在启动时一般需要三个基本元素:引导工具BootLoader,内核的内存管理和程序管理、初始化进程等。如果要它成为完整的操作系统,还得加上硬件驱动程序、硬件接口程序和应用程序组。因此,即使在一个简单的嵌入式系统里,当系统启动后内核和许多加载的组件或驱动程序都会在内存里,而这些暂时不需要使用到的组件或驱动程序就成了请神容易送神难的内存占用“神仙”了。这是大多数嵌入式系统的工作模式,它同样被XPE所支持。

  幸运的是XPE还有一种超强能力,就是有能力通过“加载”和“卸载”程序来大大节省内存。对嵌入式开发者而言,内核是通常要常驻在内存中,一般应用组件或驱动程序在启动结束后就应该要结束进程以释放内存。但如果这种动态的、根据需要才加载的组件程序在初始化系统引导后没有被释放的话,就会占用嵌入式系统宝贵的内存。因此,如果Windows在启动时过多加载无用的组件和驱动程序,或在启动后没有卸载暂时不用的组件和驱动程序,内存占用就不可避免了。

  (2)运行的程序太多,没有关闭不需用的程序

  运行的程序太多,耗用的内存当然也就越多,严重时就会引起内存资源的枯竭。这分为两种情况,一是在启动Windows XPe后,用户运行的并发程序太多,引发内存不足从而没有足够的内存运行其它程序或在程序中完成某一操作。另一种情况是在启动Windows时自动运行的程序太多,如果在启动Windows时自动运行的程序太多,那么即使重新启动计算机,也将没有足够的内存用于运行其它程序。

  (3)没有应用Windows虚拟内存

  内存在计算机中的作用很大,嵌入式设备中所有运行的程序都需要经过内存来执行。如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用。当内存不够用时,系统就会自动调用硬盘空闲空间来充当内存,以缓解内存的紧张。

  因此,XPE这种神奇的能力能使应用程序有更多的内存可供使用。虚拟内存设置主要有两点,即虚拟内存大小和分页位置。内存大小就是设置虚拟内存最小和最大为多少,而分页位置则是设置虚拟内存应使用那个分区中的硬盘空间。因此,如果系统没有正确设置和应用Windows虚拟内存,或硬盘空闲空间容量不足够的话,则可能会使XPE系统无法正常工作,或可能经常收到“内存不足”的消息,或在运行某程序时出现假死机的错误消息。

  (4)临时文件占用太多的内存

  临时文件是内存中的一块临时区域,用以存放从程序复制来的对象(如文本、数据或图形)。倘若嵌入式开发者的设计思路和程序实现需要使用大量的临时文件,而无用的临时文件又保留过多的话,内存空间就会被大量占用,那么可供正常程序运行的内存容量将非常有限。因此,及时清除无用的临时文件是嵌入式开发很重要的设计行动之一。

  (5)内存碎片和内存丢失

  众所周知,在Windows中驻留内存中的数据越多,就会占用越多的内存资源。而且在长时间地使用计算机后,内存中的数据排列就可能因为混乱而导致系统性能下降。因此,在嵌入式系统中执行时间较长的程序时,尽管可分配的内存总量并未超出总的可用内存总数,但内存碎片也可能会导致系统的内存枯竭。

  另一方面,内存丢失也是一个不可忽视的问题。具体地说,内存丢失是因为应用程序的缺陷而导致一块已经分配但永远不会被释放的内存区。对于将会在某时刻能退出的桌面应用程序,较小的内存丢失是可以承受的,因为退出进程时将会把占用的内存空间返还给操作系统。但对于长时间运行的嵌入式系统来说,积少成多的内存丢失和内存碎片往往会成为其致命伤。

0
相关文章