利用linux下的文件内存映射可以实现进程共享数据,我们可以把一个文件映射到虚拟内存中使多个进程进行共享,
到这里我们大概能想到他能应用到的领域 是很广泛的
主要涉及到 mmap munmap msync 三个函数的应用
下面贴代码
下面一段代码是为文件建立一个简单的记录存储,并且通过内存映射修改文件内容
/*******************************...
分类:
系统相关 时间:
2015-02-13 22:29:42
阅读次数:
268
源端:2015-02-05 17:45:49 INFO OGG-01815 Virtual Memory Facilities for: COM anon alloc: mmap(MAP_ANON) anon free: munmap file alloc: mmap(MAP_SHAR...
分类:
其他好文 时间:
2015-02-05 20:14:55
阅读次数:
1026
本文介绍在POSIX环境使用文件映射IO操作的方法,文件映射IO又被称为存储映射IO,对于普通文件而言,很多时候它是高效的,它实际减少了数据的复制;同时它也可以用于特殊的地方,用于进程之间的通信,共享内存的一种方式。
我们能够把一个文件想象成一块连续的数据,从纯粹的数据角度来看,任何普通文件都可以这么理解。文件映射实际上是把文件的这块数据与我们程序里的一块内存对应上了,使用我们操...
分类:
其他好文 时间:
2015-01-04 17:15:31
阅读次数:
229
mmap,mmap64,munmap---map or unmap files or devices into memoryvoid *mmap(void* addr,size_t length, int prot, int flags, int fd, off_t offset);void *mm...
分类:
系统相关 时间:
2014-12-11 01:32:59
阅读次数:
351
释放的主要过程就是根据用户传入的payload, 找到chunk指针, 然后分别检查前一个和后一个chunk是否可以合并. 这里唯一需要注意的就是与dv和top这些特殊chunk的交互.
基本流程如下,
1. 通过用户传入的mem指针计算出chunk指针p. 如果FOOTERS打开, 则通过magic计算出其所属的mspace指针, 并进行校验.
2. 若p是通过direct mmap生成的, 则还原其头尾的fake chunk后直接munmap释放并结束. 详细内容请参考3.4.2小节的说明.
...
分类:
其他好文 时间:
2014-11-20 17:09:17
阅读次数:
247
共享内存是Linux下提供的最基本的进程通信方法,它通过mmap或者shmget系统调用在内存中创建了一块连续的线性地址空间,而通过munmap或者shmdt系统调用释放这块内存,使用共享内存的好处是多个进程使用同一块内存时,在任何一个进程修改了共享内存中的内容后,其它进程通过访问这段内存就能够得到内存变化。这里探讨nginx对共享内存的封装。...
分类:
其他好文 时间:
2014-11-14 17:54:49
阅读次数:
361
首先简单说一下标准库中malloc实现原理:
标准库内部通过一个双向链表,管理在堆中动态分配的内存。
malloc函数分配内存时会附加若干(通常是12个)字节,存放控制信息。
该信息一旦被意外损坏,可能在后续操作中引发异常。
mmap/munmap 底层不维护任何东西,只是返回一个首地址,所分配内存位于堆中。
brk/sbrk 底层维护一个...
分类:
其他好文 时间:
2014-10-12 15:23:58
阅读次数:
224
在C/C++ 中常用的内存分配和管理的方式有很多,如智能指针, STL容器, new/delete, malloc/free, brk, sbrk等等,最近研究了一下Unix比较底层的一种内存管理方式mmap/munmap,需要完全自己来维护分配的虚拟内存,没有任何其他辅助的数据结构来帮助维护内存空间。
一、在终端里输入 man mmap 可以查看此函数的API文档,此函数的具体描述如下:
v...
分类:
编程语言 时间:
2014-09-27 13:55:09
阅读次数:
799
??
1mmap()依赖的头文件
#include
2函数声明:
void *mmap(void *addr, size_t length, intprot, int flags,
intfd, off_t offset);
int munmap(void *addr, size_t length);
函数说明:
mmap可以把磁盘文件...
分类:
系统相关 时间:
2014-09-21 02:54:19
阅读次数:
317
http://see.xidian.edu.cn/cpp/u/hs3/函数说明calloc()分配内存空间free()释放内存空间getpagesize()取得内存分页大小malloc()分配一段内存空间mmap()建立内存映射munmap()解除内存映射memccpy()复制内存中的内容memc....
分类:
编程语言 时间:
2014-09-16 12:02:50
阅读次数:
167