Android会使用Linux中的pmem driver进行内存分配。
通过代码的阅读,分配的关系我做了张简单的图。


说明:
1. pmem_probe
A. 获得设备的内存空间,包括物理地址和大小
B. 对空间的管理模块进行初始化,分区域
C. 对空间进行ioremap2. pmem_open
A. 创建新的pmem_data结构
B. 并使之与pmem[]建立链表关系
3. pmem_mmap
A. 根据mmap大小的需求,重新调整空间的管理模块。并从device中获得需要的空间
B. 为获得的区域重新建立页表
C. 如果是CONNECTED状态,需要对每个子区域从新建立页表
4. ioctl: PMEM_MAP
A. 确保map的可行性,获得map请求的区域
B. 创建新的region_node,将获得的区域信息保存到region_node中
C. 并与region_list建立链表关系
5. ioctl: PMEM_UNMAP
A. 从region_list移除请求的区域
B. 释放页表
6. ioctl: PMEM_CONNECT
A. 链接需要被connected的文件到当前文件。相当于两个文件映射到同一块区域。
7. ioctl: PMEM_ALLOCATE
A. 根据allocate大小的需求,重新调整空间的管理模块。并从device中获得需要的空间


下图例子,是pmem定义8M空间,而Android需要获得1M空间的状况。



本文来自ChinaUnix博客,如果查看原文请点: http://blog.chinaunix.net/u2/81094/showart_1905703.html

更多相关文章

  1. Android(安卓)ImageView.ScaleType总结
  2. android如何实现文件按时间先后顺序排列显示
  3. Android简明开发教程二十一:访问Internet 绘制在线地图
  4. [android UI]应用程序自适应屏幕大小
  5. [Android] Android自定义对话框(Dialog)位置,大小
  6. android 实时获取 麦克风 音量大小
  7. android UI设计秘籍
  8. 设置Activity大小不再全屏原理
  9. android开发图片小技巧

随机推荐

  1. Android(安卓)Intent的几种用法全面总结
  2. Android入门第十六篇之Style与Theme
  3. android每日一问【2011-09-27】
  4. Android(安卓)应用程序之间数据共享—Con
  5. Android中几种图像特效处理方法小结
  6. Android中Drawable Resource学习
  7. Android应用开发揭秘 第一章
  8. AIDL (Android(安卓)Interface Definitio
  9. Android灭亡论之Firefox OS操作系统出现
  10. 系出名门Android(3) - 对话框(Dialog)和