Android磁盘管理-系统源码分析(1)

作者: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/

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

    原文作者:Android源码分析
    原文地址: https://blog.csdn.net/gzshun/article/details/7096763
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞