2013年(13)
分类: Android平台
2013-04-26 16:54:19
android磁盘管理 system/vold分析
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卡
从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/
vold是android系统处理磁盘的核心部分,取代了Linux系统中的udev,主要用来处理android系统的
热插拔存储设备。在android2.2以后的系统中,vold源码已经移到了system目录下。
vold中比较重要的几个类:
管理类:VolumeManager, CommandListener, NerlinkManager
处理类:Volume, DirectVolume, NetlinkHandler, Fat, ResponseCode
其他类:NerlinkListener, SocketListener
1.VolumeManager管理Volume类;
2.DirectVolume类继承于Volume类,保存着磁盘信息与操作函数;
3.NetlinkManager类负责与内核uevent事件通信,期间,使用到了NetlinkListener和SocketListener类的函数;
4.Fat是格式化sd卡的函数;
5.ResponseCode保存着vold向framework反馈的值