数据共享,内存映射文件和虚拟内存,共享内存

一、内存映射

内存映射文件允许开发人员预定一块地址空间区域并给区域调拨物理存储器。内存映射文件的物理存储器来自磁盘已有的文件,而不是来自系统的页交换文件。一旦把文件映射到地址空间,就可以对它进行访问,就好像整个文件都已经被载入内存一样。不必再对文件执行I/O操作。

使用内存映射文件来颠倒文件内容时,先打开文件并向系统预订一块虚拟地址空间区域。接着让系统把文件的第一个字节映射到该区域的第一个字节,然后就可以访问这块虚拟内存区域,就好像它实际上包含了文件一样。优点:在于系统为我们处理所有与文件缓存有关的操作,不必再分配任何内存,把文件中的数据载入内存,把数据写回文件,以及释放内存。

内存映射文件有三种,第一种是可执行文件的映射,第二种是数据文件的映射,第三种是借助页面交换文件的内存映射.应用程序本身可以使用后两种内存映射.

过程

1.创建或打开一个文件内核对象。该对象标识了我们想要用作内存映射文件的那个磁盘文件。CreateFile().

2.创建一个文件映射内核对象来告诉系统文件的大小以及如何访问文件。CreateFileMapping()

3.告诉系统把文件映射对象的部分或者全部数据映射到进程的地址空间。MapViewOfFile();

4.从进程的地址空间撤销对文件数据的映射。UnmapViewOfFile();

5.关闭文件映射对象和文件对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值