- Android匿名共享(Ashmen)
- Android特有内存共享机制,实现了进程间的内存共享。基于ashmen设备(如MemoryDealer可以看作是ashmem的封装),涉及Binder、设备驱动等内容。
- ashmem设备核心源码位于Linux工程中,实质上扩用了Linux Kernel内存共享机制。
- ashmem操作函数:
- ashmem_open:从ashmem_area_cachep分配一块ashamed_area内存(asma),并对其进行初始化操作,声明其名称、权限等,并记录在file文件中,后续即可通过file文件进行访问。
- ashamed_mmap: 把ashmem设备文件映射到进程虚拟空间中,将同一块物理内存映射至不同进程(即进程间通信的方式),使得进程可以像操作内存一样操作文件。共享进程双方拥有一个共同临时文件file,file为空时即为第一个访问该共享空间的进程,ashmem会创建file并记录,后面其他进程访问file则直接将此file映射过去。
- ashmem_ioctl:设置ashmem设备名称、获取设备名称、设置设备大小等,并保存在各进程asma中。
- 明天内容:
p127-p131
网友评论