Chinaunix首页 | 论坛 | 博客
  • 博客访问: 53553
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 231
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-26 10:22
文章分类

全部博文(13)

文章存档

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反馈的值

阅读(4312) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~