Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Восьмая независимая  научно-практическая конференция  «Разработка ПО 2012»  1 - 2 ноября, Москва     Технология контейнерн...
Рынок мобильных устройств   В 2011:       Пользователей сотовой связи -- 5,981 млн       Подписчиков мобильного интерне...
Ожидаемые технологии (Gartner)http://www.gartner.com/it/page.jsp?id=2124315
Задачи "мобильной виртуализации"•   Защита личных данных;•   Изоляция подозрительных программ;•   Ограничение доступа прил...
Почему Android?                   • Open source                   • Linux basedGartner Research
AndroidVM. Цели и задачи  Независимое исполнение нескольких Android     на одном устройстве;    Защита взаимного влияния...
Основные варианты использования•   Запуск нескольких независимых контейнеров с    Android на одном устройстве;•   Интеракт...
Изоляция программ на мобильныхплатформах
Архитектура Androidhttp://www.techotopia.com
Архитектура решения
Доработанные компоненты Ядро   Supervisor (AndCont)   Механизм межконтейнерного взаимодействия (ICC)   LXC Периферия ...
Доработки LXC•   Запрет инициации перезагрузки виртуальной    машиной Dalvik.•   Уведомления супервизора уровня ядра о зап...
Механизм межконтейнерноговзаимодействия (ICC)Задача: обеспечить возможность передачи сообщений  между контейнерамиОграниче...
Контроль доступа к sysfsЗадача: обеспечить возможность запрета управления  физическими устройствами через интерфейс sysfs....
Виртуализация блочных устройствЗадача: предоставить контейнерам персональный  раздел на MMC накопителе.Решение:• Образ раз...
Виртуализация системных сервисовЗадача: обеспечить непротиворечивый доступ к системнымсервисам, создать у Android иллюзию ...
Виртуализация подсистемы ввода
Виртуализация сети
Телефония (Radio-Interface Layer)
Мультиплексирование стека RIL
Маршрутизация запросов RIL•   Безусловная передача запроса проприетарной    библиотеке для всех запросов, не изменяющих   ...
Маршрутизация уведомлений•   Маршрутизация в активный контейнер —    входящие SMS и звонки.•   Маршрутизация во все контей...
Bиртуализация графикиЗадача: Отображать экране только активный Android.Решение:• Изменить схему отображения памяти  видеок...
Отображение видеопамяти
КомпонентыAndroid audio framework•   Java API для работы со звуком•   AudioFlinger (C++)•   Программный микшер•   Effects ...
Архитектура виртуализации звука
Приоритезация аудио потоков•   Прокси сервер получает от каждого контейнера    звуковой поток, точку назначения, режим.•  ...
Интеграция Audio и телефонии1. Звонок поступает в контейнер2. Контейнер вызывает у прокси клиента   AudioHardwareInterface...
Управления питанием•   Framebuffer early suspend - уведомление userspace о    состоянии экрана (on/off)•   Без виртуализац...
Поддерживаемое системное ПОЯдро Linux:•  2.6.35 — смартфоны•  3.0.30 — эмулятор.Userspace:•  Android 2.3 (CyanogenMod 7) —...
Опорные сценарии длятестирования 1. Простой. 2. Проигрывание музыки с выключенной    подсветкой экрана. 3. Интерактивная и...
Тестируемые конфигурации 1. Оригинальное окружение CyanogenMod7 для    Samsung Galaxy S II. 2. Один контейнер с CyanogenMo...
Потребление памяти  Сценарий 1   Сценарий 2   Сценарий 3
Потребление аккумулятора  Сценарий 1   Сценарий 2   Сценарий 3
Направления развития проекта•   Запрет доступа к устройствам ввода•   Автоматическая генерация начальной конфигурации    к...
Вопросы
Демо•   http://www.youtube.com/watch?v=0_PsQb4WnT8&feat    ure=youtu.be•   http://16918.selcdn.ru/androidvm/androidvm-    ...
Upcoming SlideShare
Loading in …5
×

Технология контейнерной виртуализации Android (Карташов, Баталов, Кринкин)

1,100 views

Published on

Virtualization is widely used for desktop and server systems and in several years it comes into mobile world. The paper suggests approach for container virtualization for Android operating system. Analogues (like Cells, VmWare Horizon Mobile, TrustDroid, EmbeddedXen) are described, and their advantages and disadvantages are considered. Approach suggested by authors is based on linux containers (LXC) mechanism. It allows virtualization of process identifiers, network resources and also can be used for resource management on top of cgroups. For resource management in multi-container environment new supervisor (AndCont) has been developed. Also suggested solution includes modified Android binder driver for inter-process communications; components for multiplexing user input; GPU and frame buffer virtualization scheme; proxy-based solution for in-coming and out-coming messages and phone calls. Active container is introduced to define Android OS instance which is holding user input queue and able to use physical screen for output graphical content. Other (non-active) Android instances do output into virtual buffers which are not visible for users and they are able to run applications in background. Special proxy-based layer has been developed for telephony virtualization. It includes wrapper around native (proprietary) modules for radio-interface features management and set of rules which are defining calls routing scheme. Sound can be mixed from several applications from different containers but during a call audio tract will be monopolized by telephony. On the power management side in paper suggested two solutions: wake_lock() and wake_unlock() virtualization too keep sleeping state for each container; wait_for_fb_sleep event emulation for rendering interface notification to avoid user interface updating. Most of fixes in regular android drivers (e.g. Alarm, Audio etc) have been made by adding unique state context for each container and adding device wide event and data multiplexor. In paper performance testing strategy and scenarios are described; results are discussed. Adding containers has low impact on battery power consumption but approach should be improved for better memory usage. It’s possible to run two Android with traditional applications (games, players) but set of devices is limited for that. Performance tuning will be continued by authors.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Технология контейнерной виртуализации Android (Карташов, Баталов, Кринкин)

  1. 1. Восьмая независимая научно-практическая конференция «Разработка ПО 2012» 1 - 2 ноября, Москва Технология контейнерной виртуализации для платформы AndroidЕвгений Баталов, Александр Карташов, Кирилл Кринкин Санкт-Петербургский Академический университет РАН
  2. 2. Рынок мобильных устройств  В 2011:  Пользователей сотовой связи -- 5,981 млн  Подписчиков мобильного интернет -- 1,186 млн  Продано мобильных телефонов – 1,775 млн  Продано смартфонов -- 491 млн  (Прогноз 2012 – 686 млн)  Нежелательное ПО:  Официально зарегистрировано 2,500 mobile malware (2010, Bullguard)  Двукратный рост числа mobile malware в 2011 по отношению к 2010 (IBM X-force)http://mobithinking.com/mobile-marketing-tools/latest-mobile-stats
  3. 3. Ожидаемые технологии (Gartner)http://www.gartner.com/it/page.jsp?id=2124315
  4. 4. Задачи "мобильной виртуализации"• Защита личных данных;• Изоляция подозрительных программ;• Ограничение доступа приложений к системным сервисам (SMS, WiFi, телефония,…);• Защита корпоративных приложений на смартфонах сотрудников;• Эффективное использование аппаратных средств;• Создание окружения для разработки и отладки мобильных приложений.
  5. 5. Почему Android? • Open source • Linux basedGartner Research
  6. 6. AndroidVM. Цели и задачи  Независимое исполнение нескольких Android на одном устройстве;  Защита взаимного влияния приложений и системных служб, принадлежащих разным Android;  Управление доступом к физическим и виртуальным устройствам;  Совместное использование устройств;  Эффективное использование системных ресурсов (память, CPU, GPU, аккумулятор,…)
  7. 7. Основные варианты использования• Запуск нескольких независимых контейнеров с Android на одном устройстве;• Интерактивная работа пользователя с приложениями в одном (активном) Android- контейнере;• Фоновая работа приложений в неактивных (фоновых) контейнерах;• Возможность смены активного контейнера.
  8. 8. Изоляция программ на мобильныхплатформах
  9. 9. Архитектура Androidhttp://www.techotopia.com
  10. 10. Архитектура решения
  11. 11. Доработанные компоненты Ядро  Supervisor (AndCont)  Механизм межконтейнерного взаимодействия (ICC)  LXC Периферия  Мультиплексор RIL  Мультиплексор звука  Framebuffer  GPU Системные сервисы  Binder,  Alarm Панель управления
  12. 12. Доработки LXC• Запрет инициации перезагрузки виртуальной машиной Dalvik.• Уведомления супервизора уровня ядра о запуске нового контейнера перед запуском процесса init.• Расширен синтаксис конфигурационных файлов LXC: добавлена возможность описания заблокированных путей sysfs и перенаправления блочных устройств.• Устранена утечка файловых дескрипторов из демона adbd, который используется для доступа к смартфону через USB.
  13. 13. Механизм межконтейнерноговзаимодействия (ICC)Задача: обеспечить возможность передачи сообщений между контейнерамиОграничения: • сокеты не работают, т. к. привязаны к сетевому пространству имен; • именованные каналы требуют агент в корневом пользовательском окружении – неэффективно.Решение:Собственный механизм и протокол IPC на базе Netlink
  14. 14. Контроль доступа к sysfsЗадача: обеспечить возможность запрета управления физическими устройствами через интерфейс sysfs.Решение• Операции блокировки sysfs в фреймворке Linux Security Modules.• Конфигурационные параметры конфигурационном файле контейнера со списком запрещенных путей в sysfs.
  15. 15. Виртуализация блочных устройствЗадача: предоставить контейнерам персональный раздел на MMC накопителе.Решение:• Образ раздела MMC-карты разместить в устройстве loop.• Перехват запроса блочного устройства (bdget), подстановка ссылки на подготовленный loop.
  16. 16. Виртуализация системных сервисовЗадача: обеспечить непротиворечивый доступ к системнымсервисам, создать у Android иллюзию монопольногоиспользования.Примеры сервисов: • Binder — система межпроцессного обмена; • Alarm — интерфейс к часам реального времени.Решение: Виртуализация устройств:  поддержка состояния устройства для каждого контейнера  механизм мультиплексирования
  17. 17. Виртуализация подсистемы ввода
  18. 18. Виртуализация сети
  19. 19. Телефония (Radio-Interface Layer)
  20. 20. Мультиплексирование стека RIL
  21. 21. Маршрутизация запросов RIL• Безусловная передача запроса проприетарной библиотеке для всех запросов, не изменяющих состояние соединения и GSM-модема.• Передача запроса от активного контейнера проприетарной библиотеке для запросов, связанных с отправкой SMS и совершением звонков.• Безусловное блокирование — для всех неизвестных запросов;
  22. 22. Маршрутизация уведомлений• Маршрутизация в активный контейнер — входящие SMS и звонки.• Маршрутизация во все контейнеры — информационных уведомлений (например, уведомлений об изменении уровня сигнала сотовой сети)
  23. 23. Bиртуализация графикиЗадача: Отображать экране только активный Android.Решение:• Изменить схему отображения памяти видеоконтроллера• Отображать на память физического экрана только видео-память активного контейнера• Использовать MMU для реализации схемы отображения видеопамяти
  24. 24. Отображение видеопамяти
  25. 25. КомпонентыAndroid audio framework• Java API для работы со звуком• AudioFlinger (C++)• Программный микшер• Effects (возможно DSP)• Android audio HAL
  26. 26. Архитектура виртуализации звука
  27. 27. Приоритезация аудио потоков• Прокси сервер получает от каждого контейнера звуковой поток, точку назначения, режим.• Приоритезация точек назначения звукового потока: o Headset: 10 o Small speaker: 5 o Big speaker: 0
  28. 28. Интеграция Audio и телефонии1. Звонок поступает в контейнер2. Контейнер вызывает у прокси клиента AudioHardwareInterface::setMode(IN_CALL)3. Прокси клиент уведомляет об этом сервер4. Сервер инициирует эмуляцию воспроизведения звука контейнеров5. Сервер вызывает у оригинального HAL AudioHardwareInterface::setMode(IN_CALL)6. Оригинальный HAL ответственен за интеграцию аудио и телефонии
  29. 29. Управления питанием• Framebuffer early suspend - уведомление userspace о состоянии экрана (on/off)• Без виртуализации fbearlysuspend следует непосредственно за событием нажатия кнопки power (on/off)• При fbearlysuspend(off) Android выключает экран• Многие приложения останавливаются после нажатия power.
  30. 30. Поддерживаемое системное ПОЯдро Linux:• 2.6.35 — смартфоны• 3.0.30 — эмулятор.Userspace:• Android 2.3 (CyanogenMod 7) — смартфоны,• Android 4 (официальный) — эмулятор.
  31. 31. Опорные сценарии длятестирования 1. Простой. 2. Проигрывание музыки с выключенной подсветкой экрана. 3. Интерактивная игра с одновременным проигрывнием музыки.
  32. 32. Тестируемые конфигурации 1. Оригинальное окружение CyanogenMod7 для Samsung Galaxy S II. 2. Один контейнер с CyanogenMod 7. 3. Два контейнера с CyanogenMod 7: в одном контейнере проигрывалась музыка, в другом запущена игра.
  33. 33. Потребление памяти Сценарий 1 Сценарий 2 Сценарий 3
  34. 34. Потребление аккумулятора Сценарий 1 Сценарий 2 Сценарий 3
  35. 35. Направления развития проекта• Запрет доступа к устройствам ввода• Автоматическая генерация начальной конфигурации контейнера• Управление Android Low Memory Killer• Совместное использование разделов MMC-карты• Оптимизация использования памяти для системных библиотек и Dalvik• Поддержка нескольких абонентских номеров в RIL• Маршрутизация и совместное использование GPS, Bluetooth, камеры, микрофона
  36. 36. Вопросы
  37. 37. Демо• http://www.youtube.com/watch?v=0_PsQb4WnT8&feat ure=youtu.be• http://16918.selcdn.ru/androidvm/androidvm- demo.mkv• http://16918.selcdn.ru/androidvm/demo.m4v

×