Qualcuno può spiegare perché è stato creato ashmem?Quali poteri speciali ha ashmem?
Sto navigando attraverso mm/ashmem.c
in questo momento. Per quanto posso dire, il kernel sta pensando ad ashmem come memoria supportata da file che può essere memorizzata in mmap'd. Ma allora, perché prendersi la briga di implementare ashmem? Sembra che la stessa funzionalità possa essere ottenuta montando una RAM fs e quindi utilizzando la mappa/mmap per condividere la memoria.
Sono sicuro che ashmem può fare cose più fantasiose - dal punto di vista del codice, sembra che abbia qualcosa a che fare con le pagine di blocco/sblocco?
Ma ashmem richiede la condivisione tramite descrittori di file. Creare un file di backup e consentire a ciascun processo di renderlo condiviso condividerebbe lo stesso obiettivo, no? Capisco come sia meglio di shmem, ma come è meglio avere un file di supporto? –
È meglio perché, beh, creare un file quando ciò che si vuole veramente è un pezzo di memoria condiviso è una specie di percorso tortuoso e hacky. (Dovendo usare un descrittore di file è ancora hacky, ma meno hacky che avere un file anche lì. I descrittori di file già generalizzano a diversi tipi di risorse, ad esempio socket e dispositivi.) – Kaz
Quella attività di blocco e sblocco sembra consentire di implementare la cache memoria nella tua applicazione che andrà via quando la memoria è necessaria, in modo simile ai buffer del kernel. L'API ti consente di sapere se la memoria è stata eliminata (hai ancora la cache o no). – Kaz