Embedded 版 (精华区)

发信人: snows (花自飘零水自流), 信区: Embedded
标  题: Wince编程经验13(ZZ)
发信站: 哈工大紫丁香 (2004年03月14日09:32:01 星期天), 站内信件

什么是MMF?
从现在开始,MMF一词将在本文中大量出现。所以,我在此先对MMF做一个简单的描述。
MMF,全称Memory Mapped Files,从宏观上看,它是一种数据内存映射的技术或者说管
理动态内存的一种方法,Randy Kath这样定义到MMF:Memory-mapped files(MMFs) off
er a unique memory management feature that allows applications to access fil
es on disk in the same way they access dynamic memory-through pointers。从微
观的角度,它主要具有以下几个特性:
概念:MMF是一个Windows对象,你可以通过Windows API创建和访问它。
本质:你可以把MMF当成一个普通的文件,只不过它贮存在系统内存中。
图一:MMF在各个进程间实现共享(来自MSDN Online)
特性:MMF可以被任何进程、线程所访问,这说明MMF具有可在进程间共享的特性,这也
正是它的最大"魅力"所在。当然,因为所有的存取操作都在内存中进行,它也同时具备
快速的特点。
实现原理:MMF是基于现代操作系统都普遍采用的虚拟内存(virtual memory)技术,而
虚拟内存是基于一种被称作Paging的机制之上的(2)。所以可以这样认为,只要某个操
作系统采用了基于Page的虚拟内存管理系统,它就可以实现MMF这种功能特性。
生存周期:MMF一直存在直到对它的最后一个引用被断开。
MMF其实是Windows平台下的一个基本特性,所有关于它的操作都可以通过Windows API获
得,它使得DNA架构下COM跨进程访问数据成为可能。利用它,可以将数据库端的业务数
据缓存到应用服务器端或者客户端的MMFs中,省去频繁访问数据库的开销,极大地提高
系统访问性能。对于Java,我们也在Jdk1.4的NIO规范下找到了利用MMF的类集合,虽然
在Jdk1.4的API文档中并没有明确地提出这样一个概念,但是我们在FileChannel和Byte
Buffer类的文档中了解到FileChannel对象具有映射文件至内存的功能,从上面的介绍中
我们可以看出这实际上就是创建了MMF。

--
-
 ╭────────────────────────────╮
 │   风萧传瑟声,叶落根深处,青阶入野无归途,他乡不知顾   │
 │   泣下问和谁,叹者行已暮,寒眉傲骨今尚在,奈何入凡土   │
 ╰────────────────────────────╯
                                                                             

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.229.154]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:1.976毫秒