android存储相关Vold总结

来源:互联网 发布:开通淘宝客的条件 编辑:程序博客网 时间:2024/06/04 23:12

转载请注明出处:http://blog.csdn.net/droyon/article/details/45154991

Vold进程中包含三大块,CommandListener,VolumeManager,NetlinkManager。

1、CommandLinstener是MountService与VolumeManager的中介。负责命令的上传下达。内部使用socket用于跨进程通信。作为socket的服务端,MountService作为客户端。接收MountService的控制指令,将VolumeManager的上报消息传送给MountService。

2、VolumeManager,接收来自NetlinkManager发过来的uevent事件,进行相应处理后,通过CommandListener发送给MountService,MountService接收信息后,会继续下发控制指令给VolumeManager做继续处理。例如:底层接收到sd插入的uevent事件,VolumeManager发给MountService,MountService继续下发挂载指令等等。

3、NetlinkManager接收来自kernel内核的uevent事件,sd卡挂载、格式化等操作,kernel向NetlinkManager发送uevent事件。NetlinkManager会将消息传递给VolumeManager做继续处理。


kernel在以下两种情形下发送Uevent事件:

1、当设备发生变化时。设备的插入和拔出,例如sd卡的插入或者usb外置存储设备的插入,像otg等。这种情况是由设备主动触发的。

2、相应的存储设备在sys下一般存在“设备文件”,直接或者间接的操作设备文件,改变设备文件中的内容,都会触发kernel发送和该设备相关的Uevent消息。


ps:Netlink是Linux系统中用户空间和kernel进行通信的一种机制,其复用socket的相关接口,用户接收来自kernel的一些信息,同时向kernel发送相应指令。





0 0