您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 嵌入式系统--内存管理
嵌入式操作系统之内存管理组长:小组成员:万富、主要内容•概述•内存管理的主要功能•内存保护•虚拟内存概述内存管理系统式嵌入式操作系统内核中重要的功能之一。由于处理器直接运行和处理的程序和数据只能放在内存中,因此内存的管理质量是否优良将直接影响系统。内存管理的主要功能•虚拟内存空间操作系统采用虚拟内存功能使系统显得它有比实际大得多得内存空间,虚拟内存可以比系统中的物理内存大好多。•保护系统中每个进程都有自己的虚拟地址空间,这些虚拟内存空间相互之间完全分离,因此运行一个应用的进程不会影响其他的进程。同样,硬件的虚拟内存机制允许内存区域被写保护,这样就保护了代码和数据不被恶意应用重写。•内存映射内存映射用来把映像和数据文件映像到一个进程的地址空间。在内存映射中,文件的内容被直接链接到进程的虚拟地址空间。•公平物理内存分配内存管理系统给予系统中运行的每个进程公平的一份系统物理内存。•共享虚拟内存尽管虚拟内存允许进程拥有分隔的虚拟地址空间,但有时还需要进程共享内存,如进程间通信需要共享内存。内存保护•内存保护可通过硬件提供的MMU(memorymanagementunit)来实现。•目前,大多数处理器都集成了MMU:–大幅度降低那些通过在处理器外部添加MMU模块的处理方式所存在的内存访问延迟。–MMU现在大都被设计作为处理器内部指令执行流水线的一部分,使得使用MMU不会降低系统性能,相反,如果系统软件不使用MMU,还会导致处理器的性能降低。–在某些情况下,不使能MMU,跳过处理器的相应流水线,可能导致处理器的性能降低80%左右。•早期的嵌入式操作系统大都没有采用MMU:–一方面是出于对硬件成本的考虑;–另一方面是出于实时性的考虑。•嵌入式系统发展到现在,硬件成本越来越低,MMU所带来的成本因素基本上可以不用考虑•原来的嵌入式CPU的速度较慢,采用MMU通常会造成对时间性能的不满足,而现在CPU的速度也越来越快,并且采用新技术后,已经将MMU所带来的时间代价降低到比较低的程度•嵌入式CPU具有MMU的功能已经是一种必要的趋势。•由于采用MMU后对应用的运行模式甚至开发模式都会有一些影响,大量嵌入式操作系统都没有使用MMU。•对于安全性、可靠性要求高的应用来讲如果不采用MMU,则几乎不可能达到应用的要求。–如果没有MMU的功能,将无法防止程序的无意破坏,无法截获各种非法的访问异常,当然更不可能防止应用程序的蓄意破坏了。–采用MMU后,便于发现更多的潜在问题,并且也便于问题的定位。•未采用MMU时,内存模式一般都是平面模式,应用可以任意访问任何内存区域、任何硬件设备,程序中出现非法访问时,开发人员是无从知晓的,也非常难于定位。内存保护•MMU通常具有如下功能:–内存映射;–检查逻辑地址是否在限定的地址范围内,防止页面地址越界;–检查对内存页面的访问是否违背特权信息,防止越权操作内存页面;–在必要的时候(页面地址越界或是页面操作越权)产生异常。应用程序逻辑地址MMU物理内存物理地址内存映射把应用程序使用的地址集合(逻辑地址)翻译为实际的物理内存地址(物理地址)内存保护•大多数处理器的典型页面大小为4K字节,有些处理器也可能使用大于4K字节的页面,但页面大小总是2的幂,以对发生在MMU中的地址映射行为流水线化。•当页放置到物理内存时,页面将放置到页框架(pageframe)中。–页框架是物理内存的一部分,具有与页面同样的大小,且开始地址为页面大小的整数倍。–MMU包含着能够把逻辑地址映射为物理地址的表,称为页表。•操作系统能够在需要的时候对这种映射关系进行改变:–应用程序对内存的需求发生变化或是添加或删除应用程序的时候。–在应用程序中的任务发生上下文切换时。页号逻辑地址偏移量页框架物理地址偏移量页表基址寄存器特权和其他信息页框架页表基于页表的内存映射过程。•每个内存页还具有一些特权和状态信息。–MMU提供二进制位来标识每个页面的特权或状态信息。这些二进制位用来确定页面中的内容是否:•可被处理器指令所使用(执行特权)•可写(写特权)•可读(读特权)•已被回写(脏位)•当前在物理内存中(有效位)•在操作系统的支持下,MMU还提供虚拟存储功能,即在任务所需要的内存空间超过能够从系统中获得的物理内存空间的情况下,也能够得到正常运行。–当需要的页面被添加到逻辑地址空间时,任务对内存页面的合法访问,将自动访问到物理内存。–页面当前不在物理内存中时,将导致页面故障异常,然后操作系统负责从后援存储器(如硬盘或是FLASH存储设备)中获取需要的页面,并从产生页面故障的机器指令处重新执行。•MMU通常具有如下不同功能程度的使用方式:•没有使用MMU,应用程序和系统程序能够对整个内存空间进行访问。•采用该模式的系统比较简单、性能也比较高,适合于程序简单、代码量小和实时性要求比较高的领域。•大多数传统的嵌入式操作系统都采用该模式;0级,内存的平面使用模式•通常只是打开MMU,并通过创建一个域(domain,为内存保护的基本单位,每个域对应一个页表)的方式来使用内存,并对每次内存访问执行一些必要的地址转换操作。•该模式仍然只是拥有MMU打开特性的平面内存模式;1级,处理具有MMU和内存缓存的嵌入式处理器•MMU被打开,且创建了静态的域(应用程序的逻辑地址同应用程序在物理内存中的物理地址之间的映射关系在系统运行前就已经确定),以保护应用和操作系统在指针试图访问其他程序的地址空间时不会被非法操作。•通常使用消息传送机制实现数据在被MMU保护起来的各个域之间的移动。2级,内存保护模式•通过操作系统使用CPU提供的内存映射机制,内存页被动态地分配、释放或是重新分配。•从内存映射到基于磁盘的虚拟内存页的过程是透明的。3级,虚拟内存使用模式•0级模式为大多数传统嵌入式实时操作系统的使用模式,同1级模式一样,都是内存的平面使用模式,不能实现内存的保护功能。•2级模式是目前大多数嵌入式实时操作系统所采用的内存管理模式,既能实现内存保护功能,又能通过静态域的使用方式保证系统的实时特性。•3级模式适合于应用比较复杂、程序量比较大,并不要求实时性的应用领域。应用程序1应用程序2代码2数据24G0代码1数据14G0逻辑地址应用程序1的页表应用程序2的页表代码1数据1数据2代码2操作系统物理内存0基于静态域的MMU使用方式也称为是一一对应的使用方式。在这种一一对应的使用方式中,应用程序的逻辑地址同应用程序在物理内存中的物理地址相同,简化了内存管理的实现方式。•在嵌入式实时操作系统中,MMU通常被用来进行内存保护:–实现操作系统与应用程序的隔离–应用程序和应用程序之间的隔离–防止应用程序破坏操作系统的代码、数据以及应用程序对硬件的直接访问。–对于应用程序来讲,也可以防止别的应用程序对自己的非法入侵,从而破坏应用程序自身的运行。•在内存保护方面,MMU提供了以下措施:–防止地址越界•通过限长寄存器检查逻辑地址,确保应用程序只能访问逻辑地址空间所对应的、限定的物理地址空间,MMU将在逻辑地址超越限长寄存器所限定的范围时产生异常;–防止操作越权•根据内存页面的特权信息控制应用程序对内存页面的访问,如果对内存页面的访问违背了内存页面的特权信息,MMU将产生异常。应用1应用2应用3操作系统简单的MMU保护模式应用程序之间要通信就只能通过操作系统提供的通信服务,如:信号量、管道、消息、共享内存等,而不能直接访问彼此的地址空间。MMU通常还提供权限等级,不同的权限等级对硬件访问的权限不一样。操作系统一般运行在核心态,具有所有的特权,而应用则一般运行在用户态,具有一般权限,以防止应用程序的故意破坏。嵌入式实时操作系统内核共享库任务任务信号量任务信号量堆堆堆共享数据域基于域的内存管理方式虚拟内存为用户提供一种不受物理存储器结构和容量限制的存储管理技术,是桌面/服务器操作系统为在所有任务中使用有限物理内存的通常方法,每个任务从内存中获得一定数量的页面,并且,当前不访问的页面将被置换出去,为需要页面的其他任务腾出空间。虚拟内存的概念图谢谢!
本文标题:嵌入式系统--内存管理
链接地址:https://www.777doc.com/doc-3181945 .html