Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

... Система V IPC была удалена для кекса. Видеть bionic/libc/docs/SYSV-IPC.TXT для деталей.

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

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