Czy ktoś może wyjaśnić, dlaczego powstał asmem?Jakie specjalne moce mają asmem?
Przeglądam teraz: mm/ashmem.c
. Z tego co wiem, jądro myśli o asmem jako pamięci wspieranej plikami, która może być mmap'd. Ale dlaczego warto wprowadzić asmem? Wygląda na to, że tę samą funkcjonalność można osiągnąć montując RAM-fs, a następnie używając file/mmap do współdzielenia pamięci.
Jestem pewna, że asmem może robić bardziej fantazyjne rzeczy - patrząc na kod, wydaje się, że ma on coś wspólnego z przypinaniem/odpinaniem stron?
Ale ashmem wymaga współdzielenia przez deskryptory plików. Stworzenie pliku kopii zapasowej i umożliwienie każdemu procesowi podzielenia go na mmap dokonałoby tego samego celu, nie? Widzę, jak to jest lepsze niż shmem, ale jak to jest lepsze niż posiadanie pliku pomocniczego? –
Jest to lepsze, ponieważ, no cóż, tworzenie pliku, gdy to, czego naprawdę chcemy, to wspólna pamięć, to rodzaj okrężnej, hackowej trasy. (Używanie deskryptora plików jest wciąż hackowskie, ale mniej odstręczające niż posiadanie tam pliku, deskryptory plików już generalizują różne rodzaje zasobów, np. Gniazda i urządzenia.) – Kaz
Ten przypinanie i odpinanie biznesu pozwala ci zaimplementować pamięć podręczną pamięć w aplikacji, która zniknie, gdy pamięć będzie potrzebna, podobnie jak bufory jądra. Interfejs API informuje, czy pamięć została wyczyszczona (czy nadal masz pamięć podręczną lub nie). – Kaz