tienen son quienes que poderes para oscuros oscuro niños mitologia los habilidades especiales elfos elfo drows drow droow cantante biografia android linux shared-memory

android - son - poderes de un elfo oscuro



¿Qué poderes especiales tiene ashmem? (2)

¿Alguien puede explicar por qué se creó ashmem?

Estoy navegando a través de mm/ashmem.c este momento. Por lo que puedo decir, el kernel está pensando en ashmem como en una memoria respaldada por archivos que puede ser mmap. Pero entonces, ¿por qué tomarse la molestia de implementar ashmem? Parece que la misma funcionalidad podría lograrse montando una RAM y luego usando filemap / mmap para compartir memoria.

Estoy seguro de que Ashmem puede hacer cosas más sofisticadas: de mirar el código, ¿parece tener algo que ver con fijar / desincrustar páginas?


¿Alguien puede explicar por qué se creó ashmem?

David Turner (un habitual en NDK de Android) respondió esto en ¿Por qué se eliminó bionic / libc / include / sys / shm.h? :

... System V IPCs se han eliminado para cupcake. Consulte bionic / libc / docs / SYSV-IPC.TXT para obtener más información.

En resumen, los IPC de System V tienen un diseño deficiente y no funcionan bien en el entorno de ejecución de Android, donde los procesos de eliminación para dejar espacio para otros son normales y muy comunes. El resultado final es que cualquier código que se base en estos IPC podría terminar llenando la tabla interna del kernel de claves IPC de SysV, algo que solo se puede resolver de forma segura mediante un reinicio.

Queremos proporcionar un mecanismo alternativo en el futuro que no tenga los mismos problemas. Una cosa que ofrecemos en este momento es ashmem, que fue diseñado específicamente para Android para evitar ese tipo de problema (aunque no está tan bien documentado como debería). Probablemente necesitamos algo similar para semáforos y / o colas de mensajes.


Ashmem permite que los procesos que no están relacionados por ascendencia compartan mapas de memoria por nombre, que se limpian automáticamente.

Los mmaps anónimos antiguos y la memoria compartida de System V carecen de algunos de estos requisitos.

Los segmentos de memoria compartida de System V se mantienen cuando ya no están referenciados por programas que se ejecutan (lo que a veces es una característica, a veces una molestia).

Los mmaps compartidos anónimos se pueden pasar de un proceso principal a uno secundario, lo cual es inflexible, ya que a veces se desean procesos no relacionados de esa manera para compartir la memoria.