作者: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. Android(安卓)实现TextView中文字链接的方式
  2. Android快速开发架构PlanA(二),简单粗暴的路由管理PRouter
  3. Android(安卓)Activity生命周期管理
  4. Android(安卓)实现TextView中 文字链接的方式
  5. Android(安卓)实现TextView中文字链接的方式
  6. 在Android中查看和管理sqlite数据库
  7. Android磁盘管理-系统源码分析(1)
  8. Android内存管理机制
  9. Android(安卓)-- 无线网络配置信息的管理者WifiConfigStore简介

随机推荐

  1. Android(安卓)App开发者年终总结--日均20
  2. Android(安卓)Studio 中手把手教你设置sw
  3. Android(安卓)Things阿里云物联网平台的
  4. 资深程序员多年代码实践总结:《和Android
  5. Android(安卓)结合源码和实例理解消息机
  6. 如何优雅的实现Android(安卓)屏幕适配方
  7. 寻找android中的设计模式(二)
  8. js与android交互难点 == js唤起app
  9. Android(安卓)擠下 Opera,成為行動瀏覽器
  10. (4.2.6)【android开源组件】SwitchButton