android ashmem 匿名共享内存

1. ashmem是基于linux里的shmem实现的,而shmem又是基于tmpfs伪文件系统。

2. ashmem驱动实现了/dev/ashmem设备文件的open/read/llseek/mmap/ioctl等文件操作,但没有实现write文件操作,由于本质还是文件内存映射(内存指得是进程的虚拟内存,文件则是属于tmpfs,这里和基于磁盘的文件系统的内存映射还是有所不同的,这难道是匿名一词的来源?)

3. ashmem的用途主要是用于进程间通信的,这个和shmem是类似,但是添加了一些新的特性,比如内存回收时的shrink回调,page pin/unpin功能;通过binder通信机制传递文件形式的flat_binder_object可以减少系统中存在的file对象,两个进程可以共用同一个file对象,如果是通过mmap来达到映射通信的目的的话,系统会存在两个file对象指向同一个inode对象(感觉是这样的,还没有去确认)。 


4. mmap的匿名映射应该是不能在进程间共享的,这种匿名映射主要是用于分配大块内存的, malloc的实现就是通过brk或者mmap系统调用来实现的。

你可能感兴趣的:(android ashmem 匿名共享内存)