Intereting Posts
WindowBackground в Android 6 (Marshmallow) Отключение и включение пейджинга в ViewPager на Android Использование селектора макета для изменения свойств его дочернего объекта Отключить прокрутку в веб-просмотре? Android Back Arrow на панели инструментов (AppCompatActivity) Кто-нибудь знает, что означает выход из getevent? Android – Webview, окна ввода удвоены? Как я могу передавать музыку из файла внутри зашифрованного zip без распаковки всего файла? Есть ли черный индикатор прогресса на белом фоне? IntentRecieverLeakedException, вам не хватает вызова unregisterReceiver ()? В андроиде Удаление программных приложений AppWidgets Получение атрибута «android: icon»: атрибут не является строковым значением »при загрузке APK в хранилище воспроизведения Android 4.4 Печать в PDF без участия пользователя Сбой Android при закрытии приложения и его повторном открытии Android-векторное приложение: srcCompat не показывает изображения

Какие особые полномочия имеют ашмем?

Может ли кто-нибудь объяснить, почему была создана пепельница?

Я просматриваю mm/ashmem.c прямо сейчас. Насколько я могу судить, ядро ​​думает о ashmem как файловой памяти, которая может быть mmap'd. Но тогда зачем идти навстречу внедрению пепельницы? Кажется, что одна и та же функциональность может быть достигнута путем установки RAM fs, а затем с помощью filemap / mmap для обмена памятью.

Я уверен, что ashmem может делать больше причудливых вещей – от просмотра кода, похоже, что-то связано с фиксацией / откреплением страниц?

Solutions Collecting From Web of "Какие особые полномочия имеют ашмем?"

Ashmem позволяет обрабатывать процессы, которые не связаны между собой, чтобы совместно использовать карты памяти по имени, которые автоматически очищаются.

Обычные старые анонимные mmaps и системная память V разделяли некоторые из этих требований.

Сегменты разделяемой памяти системы V придерживаются, когда больше не ссылаются при запуске программ (иногда это функция, иногда неприятность).

Анонимные общие файлы mmaps могут передаваться от родительского к дочерним процессам, что является негибким, поскольку иногда вы хотите, чтобы процессы не были связаны таким образом, чтобы обмениваться памятью.

Может ли кто-нибудь объяснить, почему была создана пепельница?

Дэвид Тернер (постоянный на Android NDK) ответил на это в разделе Почему был удален bionic / libc / include / sys / shm.h? :

… System V IPC были удалены для кекса. Подробнее см. В документе bionic / libc / docs / SYSV-IPC.TXT.

Короче говоря, IPC System V протекают по дизайну и не очень хорошо работают в среде исполнения Android, где процессы уничтожения, чтобы освободить место для других, являются обычными и очень распространенными. Конечным результатом является то, что любой код, который опирается на эти IPC, может заполнить внутреннюю таблицу ядра SysV IPC-ключей, что можно безопасно разрешить только при перезагрузке.

Мы хотим предоставить альтернативный механизм в будущем, который не будет иметь одинаковых проблем. На данный момент мы предоставляем Ashmem, разработанный специально для Android, чтобы избежать такой проблемы (хотя это не так хорошо документировано, как должно). Нам, вероятно, нужно что-то подобное для семафоров и / или очередей сообщений.