论文部分内容阅读
由于科学技术的发展,人们对各种电子产品的需要也越来越多,甚至越来越高,这包括对价格、便携、实时、稳定、可靠、安全等方面的要求。显然,对于一个系统的稳定性、可靠性除了硬件本身的关系外,最重要的莫过于软件系统的可靠性及稳定性,而内存无疑是这个软件系统稳定及安全的最关键环节。本论文的主要目的就是为了解决该问题:找出一种适合于嵌入式系统的内存保护机制。该机制不仅能够实现基本的内存保护及任务隔离的目的,而且能够尽量地减少对系统性能的影响,特别是实时性。 在本论文中首先通过对嵌入式系统特点的分析以及VxWorks内存管理的分析来明确该需求。然后又分别通过对已有的较为成熟的内存保护机制进行研究,包括:内存管理单元的研究;Linux内存保护机制的研究;VxWorks进程管理的研究等,最终提出了一个适合嵌入式系统的内存保护机制。该机制包括对页表机制的选择——使用系统页表以节省有限的内存资源,代码段的写保护,其它段不可执行的研究,任务堆栈空间的隔离,堆空间的管理,内存泄漏的检测。在最初的方案上任务堆栈空间切换的时间复杂度是与任务空间的大小成线性关系的,所以本论文的最后又提出了一种基于SR段寄存器的O(1)切换策略。 最后论文通过在VxWorks5.5+MPC603e的平台上实现了以上设计,通过实验数据验证了该方案的正确性,并通过各种数据比较了原系统、切换策略的方案1以及改进切换策略的性能,发现了经过改进后的方案基本能达到预期的要求,对系统的实时性影响较小,完成了所要求的保护功能。 本系统的难点在于这是一个基于内核的模块,所以在设计及实现的时候,必须深入理解内核的每个细节甚至是某个字节。例如栈的生长方式、任务控制块的结构、内存管理的组织结构等。在机制的设计上要充分理解该机制的优缺点,包括时间复杂度,空间复杂度以及对硬件资源的依赖程度,从而选择出一种较佳的方案。同时本论文的创新点在于提出了一种在嵌入式系统中实现内存保护机制的方案,该方案实现了系统代码段的写保护;以及基于页表的任务间隔离机制;提出了嵌入式系统的堆管理方式,按需分配,延迟释放;快速的内存泄漏测试方法;最后提出了基于段方式的切换改进策略,使得任务的切换效率由O(N)改进为O(1)。