HANDLE hMapOjb = CreateFileMapping( hFile, null, PAGE_READWRITE|SEC_RESERVE, 0, 0, null)
TCHAR* pBuf = (LPTSTR) MapViewOfFile( hMapObj, FILE_MAP_WRITE, 0, OFFSET, 10MB)
然埋冲后就对 pBuf进行 *** 作。
注意控制参晌液唤数的宴凯调整,
关联 进程中的1个虚拟内存区域 &1个磁盘上的对象,使得二者存在映射关系
若存在上述映射关系,则具备以伍察纳下特征没慎
在 Linux 系统下,根据内存映射的本质原理 &特点,其应用场景在于:
下面,我将详细讲解 内存映射应用在跨进程通信 &文件 *** 作的实例
从上面可看出:使用了内存映射的文件读/写 *** 作方式效率更加高、性能最好!
从上面可看出:使用腔没了内存映射的跨进程通信 效率最高、性能最好!
虚拟内存的目标存储器是磁盘,所型锋以虚拟内存区域是和磁盘中的文件对应的。初始化虚拟内存的内容时,会把虚拟内存区域和一个磁盘文件对象对应起来,这个过程叫内存映射。被映射的对象称为:共享对象。虚拟内存可以映射的磁盘文件对象包括两种:
在多个进程的虚拟内存区域已和同一个共享对象建立映射关系的前提下,若姿租羡其中一个进程对该虚拟区域进行写 *** 作,那么对于也把该共享对象映射到其自身虚拟内迹拍存区域的进程也是可见的。
工作流程如下:
这两个步骤创建虚拟空间和映射地址,但时并无将任何文件数据拷贝到主存;真正的数据拷贝时刻:当进程发起读/写 *** 作时。
示意图:
特点:直接通过映射进行交互,数据拷贝的次数只有一次,文件读取的效率高,可实现高效大规模数据传输。
工作流程:
示意图:
缺点:
工作流程:
示意图:
优点:
参考链接:
https://www.jianshu.com/p/719fc4758813
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)