简介
通过思维导图和相关分解,简单的介绍对Android系统的认知,方便搭建一套比较整体的Android基础框架。
从内存基础介绍开始,无论是什么操作系统,都是要处理真正的物理内存去读取执行指令及数据,所以内存管理是重中之重。
描述
- 操作系统 - 内存的游戏
- 进程间数据共享
- 共享内存
- shared memory
- 申请内存 shmget shmat
- shmdt 全部进程需要撤销
- shctl 配置共享区
- Android 匿名内存共享是对它的一个优化
- shared memory
- 管道(PIPE)
- 单向处理
- 一端只能写入 一端只能读取
- 单向处理
- Socket
- UNIX DOMAIN SOCKET
- RPC
- 共享内存
- 数据同步
- 信号量
- 先调用减少,判断是否大于0
- 如果大于0执行
- 否则等待
- 在此发起同步,信号量+1,判断是否大于
- 如果大于0执行
- 否则通知之前等待的执行
- 实现原理
- 先调用减少,判断是否大于0
- mutex
- monitor
- futex
- 对mutex的优化,没有竞争时不会进入内核
- 信号量
- Android 同步机制
- mutex
- 互斥变量
- condition
- 对Mutex的升级
- 当条件满足时主动条用condition
- 对Mutex的升级
- barrier
- 对mutex和condition的使用
- open
- close
- wait
- 用于处理同步和等待等条件
- 对mutex和condition的使用
- 小Tips
- 当局部变量对象创建时,创建锁
- 对象析构时自动释放锁
- mutex
- 内存管理
- 虚拟内存
- 通过分段 获取线性内存
- 线性内存
- 如果机制支持分页,通过分页获取物理内存
- 物理内存
- 真正的操作
- 虚拟内存
- Android进程通信
- 匿名内存共享
- Anonymous Shared Memory
- 不需要对内存命名
- 通过binder获取FD(文件描述符)
- 通过FD映射到当前进程的虚拟内存
- Anonymous Shared Memory
- 匿名内存共享
- 进程间数据共享
思维导图
注:文中内容主要参考《Android内核设计》,只是添加了些许自己的总结。