3 votes

Les bibliothèques peuvent-elles partager la mémoire comme dans linux ?

Est-il possible pour les bibliothèques de partager la mémoire comme la mémoire partagée dans linux ? (La fonctionnalité de mémoire partagée adoptée dans le Système V et plus tard adoptée dans linux)

Par exemple, lorsque deux applications fonctionnent simultanément et qu'elles utilisent toutes deux la bibliothèque OkHttp, celle-ci est-elle chargée deux fois en mémoire ?

3voto

Andy Brudtkuhl Points 1714

La même fonctionnalité de mémoire partagée est toujours présente dans Android, et elle fonctionne sur les bibliothèques partagées intégrées telles qu'OpenGL ES, mais elle n'est pas utilisée pour les bibliothèques tierces comme vous le demandez. Chaque application qui utilise une bibliothèque tierce doit inclure cette bibliothèque dans son fichier APK. Il ne s'agit donc pas de bibliothèques partagées (dans le format .so sens) : ce sont juste des fichiers en double qui peuvent contenir le même code. (Généralement, ils ne contiendront pas le même code car différentes applications auront été construites avec différentes versions de la bibliothèque).

Cela permet d'éviter les éventuelles incompatibilités ou les problèmes de sécurité causés par la mise à jour de bibliothèques provenant de différentes applications. Les incompatibilités de bibliothèques partagées sont un énorme problème dans les systèmes GNU/Linux. Les distributions font beaucoup d'efforts pour les éviter en testant différentes combinaisons d'applications et de bibliothèques, mais il arrive encore que les choses se passent mal. Dans Android, où personne n'est chargé de s'assurer que les différentes applications fonctionnent ensemble, ce type de système de bibliothèque partagée aurait pour conséquence que les applications se brisent souvent lorsqu'une bibliothèque partagée est mise à jour. Des problèmes de sécurité pourraient survenir dans un système utilisant les bibliothèques partagées de cette manière, car une application pourrait mettre à jour une bibliothèque partagée vers une "version plus récente" qui est en fait piratée pour divulguer des informations ou contrôler l'application. Les bibliothèques devraient être traitées comme des paquets distincts, signés par l'auteur, tout comme les applications, et il faudrait alors mettre en place un processus complexe pour gérer les mises à jour des versions.

0 votes

Les "bibliothèques de base" préinstallées étant l'exception, je suppose ?

0 votes

Je ne pense pas que les bibliothèques de base aient une exception dans ce cas.

0 votes

Ce n'est pas le cas. Tout comme Linux, Android crée un mmap de copie sur écriture des bibliothèques, le noyau partage automatiquement la mémoire pour le mmap lorsque c'est possible. Toutes les bibliothèques du système central sont également chargées par zygote et partagées lorsqu'un nouveau processus est créé. Référence .

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X