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

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

Я просматриваю 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, чтобы избежать такой проблемы (хотя это не так хорошо документировано, как должно). Нам, вероятно, нужно что-то подобное для семафоров и / или очередей сообщений.