vold
Volume Daemon - служба внешнего хранилища
Тип файла: служба
Комментарии
Когда мы вставляем SD-карту или USB-накопитель в устройство Android, система автоматически монтирует их для использования.
vold (Volume Daemon) — это служба, отвечающая за обнаружение и монтирование/отключение всех внешних или расширенных носителей в Android, таких как usb, sdcard, cdrom (SSD ?)
Основная функция службы заключается в том, чтобы помочь Android поддерживать устройства хранения данных с возможностью горячей замены.
Процесс vold получает от ядра сообщения о подключении или отключении внешнего устройства хранения для управления и контроля внешних устройств хранения на платформе Android.
Они включают в себя подключение SD-карты, монтирование, удаление и форматирование.
При изменении внешнего устройства ядро отправляет сообщения в формате uEvent через Netlink.
Для программ пользовательского пространства Netlink — это специальный механизм связи на основе сокетов, который является асинхронным и используется для двунаправленной передачи данных между ядром и пользовательским приложением.
Приложение пользовательского сокета может использовать стандартный API сокета для использования мощных функций, предоставляемых Netlink
vold — нативная программа для управления внешним запоминающим устройством на платформе Android.
Это фоновый процесс. Он взаимодействует со слоем Java MountService.
vold получает сообщения uevent от ядра и пересылает их на верхний уровень.
MountService получает сообщения от vold, а также может отправлять команды управления vold.
vold включает три модуля: NetlinkManager, VolumeManager и CommandListener.
Модуль NetlinkManager специально получает сообщение uevent от ядра Linux и пересылает его в VolumeManager.
Затем модуль VolumeManager отправляет соответствующую информацию в MountService через CommandListener.
MountService отправляет соответствующую команду обработки в VolumeManager в соответствии с полученным сообщением, и VolumeManager получает команду. Затем непосредственно управляйте внешним запоминающим устройством.
Модуль CommandListener внутренне инкапсулирует Socket для межпроцессного взаимодействия.
Служба MountService уровня Java на стороне клиента взаимодействует с vold на стороне сервера через Socket.