文档详情

WindowsCE操作系统内存管理(MMU,虚拟内存)总结.docx

发布:2017-04-18约2.94千字共3页下载文档
文本预览下载声明
中科院上海微系统与信息技术研究所 PAGE4 / NUMPAGES4 【原创】Windows CE操作系统内存管理总结 0 概述 Windows CE是一个32位的嵌入式操作系统,因此运行在Windows CE上的应用程序具有32位的寻址能力。 内存管理: 1 物理内存 RAM为操作系统和应用程序提供运行和缓冲空间。 易失性存储器根据工作原理不同分为两种:静态读写存储器SRAM,SRAM基于触发器原理;动态读写寄存器DRAM,DRAM是基于分布电容存储器原理。 DRAM 是动态存储器(Dynamic RAM)的缩写,SDRAM 是英文 Synchronous DRAM 的缩写,译成中文就是同步动态存储器。从技术角度上讲,同步动态存储器(SDRAM)是在现有的标准 动态存储器中加入同步控制逻辑(一个状态机),利用一个单一的系统时钟同步所有的地址数 据和控制信号。使用 SDRAM 不但能提高系统表现,还能简化设计、提供高速的数据传输。在功能上,它类似常规的 DRAM,且也需时钟进行刷新。可以说,SDRAM 是一种改善了结构的增强型 DRAM。 ROM通常用来存储程序,其内容可断电永久保存,它通常包括操作系统映像本身和组成操作系统的一些其他文件。 ROM,只读存储器。可编程的ROM有: 紫外线可擦除型ROM:EPROM,需要用紫外线擦出已写入的程序,必须脱机固化,不能在线改写 电可擦除型ROM:E2PROM,被广泛使用 Flash与ROM相比最大的优点是可擦写,这样它既可以用来存储操作系统本身,也可以用来存储后来安装的程序。从结构上来说,Flash主要有AND,NAND,NOR及DiNOR等。 NAND与NOR对比: Windows CE最大支持512MB的物理内存。 2 虚拟内存 为什么要使用虚拟内存? ROM DLL vs RAM DLL? Windows XP的每个进程独享4GB虚拟地址空间,而Windows CE中所有的进程共享一个4GB的虚拟地址空间。 Windows CE 操作系统支持两种页大小:1KB和4KB。在Windows CE中,与桌面 Windows 一样,虚拟内存的申请分为保留(reserve)和提交(commit)两个过程,虚拟地址空间的保留是以64KB为边界的,也就是说,任何一次虚拟内存申请都会返回一个64KB的整数倍的地址,但是把虚拟内存提交到物理内存是以页为粒度的。 管理虚拟内存的硬件是内存管理单元(MMU,Memory Management Unit)。MMU负责把虚拟地址应为到物??地址,并且提供一定的内存保护。 特点: (1)每个 Slot 占 32MB,Slot 的编号从 0开始 (2)Slot 0 到 Slot 32 对应的虚拟地址是 0x0000 0000到 0x41FF FFFF,它们用于存放进程的虚拟地址空间。Slot 0与Slot 1基本是在一起的。其中Slot 0用于映射当前在处理器上执行的进程。Slot1由 XIP的DLL代码使用。Slot 2到Slot 32对应Windows CE中每个进程的32MB虚拟地址空间。 (3)Slot 33到Slot 63对应的虚拟地址空间是0x4200 0000到0x7FFF FFFF。这块虚拟内存是由所有进程共享的,由于每个进程只有32MB 的虚拟地址空间,如果应用程序希望使用更多的虚拟内存,就可以在这个范围内申请。这个范围包括对象存储和内存映射文件。此范围内的最后一个Slot从0x7E00 0000到0x 7FFFF FFFF,也就是Slot 63,用来存放纯资源DLL。 (4)虚拟地址0x8000 0000到0x9FFF FFFF用来静态映射所有的物理地址,也就是说Windows CE会把所有的物理内存一比一的映射到这段虚拟地址上。一共512MB。 (5)虚拟地址 0xA000 0000到 0xBFFF FFFF会重复映射所有的物理内存。在驱动程序中我们如果需要直接访问设备I/O或寄存器【即不使用缓存】,通常使用0xA000 0000物理地址。 (6)物理内存被映射到内核空间之后,Windows CE内核中访问物理内存就变得相对简单。如果需要访问某个物理内存地址,只需要把该物理内存地址加上0x8000 0000或者0xA000 0000就可以了。当然这种简便的方式只能由Windows CE内核使用。 (7)Slot97是 Windows CE的核心进程NK.exe专用的。 (8)从0xE000 0000到0xFFFF FFFF这一段最高的地址是内核使用的地址空间。对于不同的处理器体系结构这里保存着不同的东西。通常会放置一些供虚拟内存用的页表、中断向量表等内核使用的数据结构。 进程申请虚拟内存是从低地址往高地址增长的,DL
显示全部
相似文档