作者:gzshun. 原创作品,转载请标明出处!


本系列文章,将会详细讲解Android系统的磁盘管理部分,可以通过这个突破口,熟悉整个Android的系统架构与实现原理。


Android磁盘管理总共涉及到四大部分源码:
1.Linux kernel: Android建立在Linux内核的基础上,最底层的部分是由Linux kernel来负责的,用于检测热插拔事件;
2.Vold:Android没有使用Linux平台下的udev来处理,于是Google写了一个类似udev功能的vold,充当了kernel与framework之间的桥梁;
3.Framework:Android的核心框架,(仅仅磁盘管理这部分)负责操作vold,给vold下发操作命令;
4.UI:Androidd的系统应用,与Framework进行交互,用于挂载/卸载SD卡。

Android挂载SD卡,流程如下:
1.用户在“设置”页面的“SD卡和手机内存”中,点击“挂载”;
2.UI从Framework获取操作磁盘的函数(向Framework注册,才能使用的函数),然后调用挂载的处理函数;
3.该处理函数通过广播机制发送挂载命令“volume mount sdcard”,vold接受命令并挂载SD卡后,用广播通知Framework;
4.Framework收到挂载SD卡的回复,通知UI的处理结果;
5.界面显示挂载成功/挂载失败。

从这里可以看出,Android的磁盘管理涉及到整个系统框架,这是Android系统很重要的一个子系统,通过磁盘管理的子系统来熟悉Android系统架构,能够了解到Android的多方面知识。从SD卡的挂载流程可以看出,Android系统大量地使用IPC,从而做到了模块独立的效果。从磁盘管理的那四大部分来看,四个部分之间的相互联系均是使用socket进行通信,没有使用到传统的API调用,整个系统就显得非常的独立。

源码的位置:
Vold:system/vold
Framework: frameworks/base/services/java/com/android/server
UI: android-2.2r2/packages/apps/Settings/src/com/android/settings/deviceinfo/


下篇文章开始分析源码,从下往上走。。

更多相关文章

  1. C语言函数以及函数的使用
  2. 第二讲:Android系统构架分析和应用程序目录结构分析
  3. 重新解压打包android 根文件系统 ramdisk.img
  4. Android系统服务概要
  5. 使用Android系统自带的icon图标
  6. Android 获取imei号码,获取手机型号和系统版本号等信息

随机推荐

  1. Java千百问_04异常处理(002)_java如何捕获
  2. 华师京城怎么样
  3. 是否可以在两个类之间使用RMI双向?
  4. java-IO流3(缓冲输入字节流)
  5. 小学徒成长系列—StringBuilder & String
  6. JAVA基础_Java IO流 控制台到记事本、记
  7. Java开发水吧点饮品系统(顶层父类对象做接
  8. java代码获知该方法被哪个类、哪个方法、
  9. 小女子想转学java,各位朋友能否给点建议
  10. java中的事件监听问题,如何将菜单项与组合