Адрес: ул. Б. Очаковская 32 Москва Россия
Наши официальные канал и чат в telegram
Поднимем Devuan на вершину Distrowatch! Просто перейдите по ссылке один раз в день.

В ядро Linux 6.18 принята реализация Binder IPC для Android, написанная на Rust

Новости собранные из разных RSS источников
Аватара пользователя
root:#
Site Admin
Сообщения: 827
Зарегистрирован: Вт ноя 08, 2022 3:27 pm
Благодарил (а): 44 раза
Поблагодарили: 24 раза

В ядро Linux 6.18 принята реализация Binder IPC для Android, написанная на Rust

Сообщение root:# »

В ядро Linux 6.18 принята реализация Binder IPC для Android, написанная на Rust
В кодовую базу ядра Linux, на основе которой формируется релиз 6.18, принята реализация механизма межпроцессного взаимодействия Binder, написанная на языке Rust. Binder используется в Android для организации взаимодействия между процессами и удалённого вызова методов (один процесс Android может вызвать метод или функцию в другом процессе Android, используя Binder для идентификации, вызова и передачи аргументов между процессами). Код Binder был переписан на Rust в рамках проекта по усилению защищённости, продвижению приёмов безопасного программирования и повышению эффективности выявления проблем при работе с памятью в Android (около 70% из всех опасных уязвимостей, выявленных в Android, вызваны ошибками при работе с памятью). Использование Rust позволило решить некоторые проблемы с которыми сталкивались разработчики Binder, включая ошибки, связанные с подсчётом ссылок, блокировками и проверкой границ, а также значительно уменьшить сложность обработки ошибок. Реализация Binder на Rust аналогична по функциональности с изначальным вариантом на языке Си, проходит все тесты AOSP (Android Open-Source Project) и может использоваться для создания рабочих редакций Android-прошивок. Несмотря на продвинутые возможности и поддержку объектов со сложной семантикой владения, драйвер на Rust получился меньше варианта на Си - 5.5 против 5.8 тысяч строк кода. В описании коммита автор упоминает следующие мотивы для переписывания Binder:
  • Binder, развивается уже 15 лет и за это время его функциональность и сложность значительно возросли - проект находится на стыке всех компонентов Android и охватывает множество задач, выходящих за рамки IPC: корректный анализ и преобразование содержимого транзакций, которые могут содержать несколько объектов разных типов (например, указатели, файловые дескрипторы), взаимодействующих друг с другом; контроль размера пулов потоков в пользовательском пространстве и обеспечение назначения транзакций потокам таким образом, чтобы избежать взаимных блокировок при исчерпании потоков в пуле; отслеживание счётчиков ссылок объектов, совместно используемых несколькими процессами, корректно пересылая изменения счётчиков ссылок между процессами; обработка многочисленных сценариев возникновения ошибок и совмещение 13 различных блокировок, 7 счётчиков ссылок и атомарных переменных. При этом выполнять подобные задачи он должен максимально быстро и корректно.
В старом коде накопился заметный технический долг, который усложнял как поиск ошибок, так и дальнейшую разработку. Например, в коре встречаются крупные функции на более чем тысячу строк кода, сомнительные методы обработки ошибок и запутанные структуры. Binder является критическим с точки зрения безопасности компонентом Android, так как элементы платформы, работающие в изолированных sandbox-окружениях, такие как процесс отрисовки в Chrome и SW Codec, имеют к нему прямой доступ, а уязвимость в Binder позволит обойти изоляцию. Высокая сложность вкупе с техническим долгом сильно осложняют поддержание высокого уровня безопасности в Binder.
Источник: https://www.opennet.ru/opennews/art.shtml?num=64092