Mémoire virtuelle, persistance : faut-il des fichiers ?
Je ne suis pas du tout d’accord avec la description de l’appel-système "mmap". La vision de la totalité du fichier en mémoire qu’il permet passe par le système normal de gestion de la mémoire virtuelle et donc ne devrait, s’il est correctement programmé, ne rien charger du tout du fichier en mémoire mais se contenter d’initialiser quelques descripteurs de pages ou segments du plus haut niveau pour indiquer que ces pages sont absentes de la mémoire centrale et où il faut aller les chercher si le programme y accède. Si tout le fichier arrive en mémoire c’est que le programme l’a demandé, ou du moins a au moins demandé quelque chose dans chacune de ses pages.
Par ailleurs pour moi la différence entre mémoire et fichier n’est pas dans la persistence ou non mais dans le mode d’accès. L’accès à la mémoire se fait par des addresses, l’accès à un fichier se fait par un nom le plus souvent reflètant une structure (quasi) arborescente (le quasi est pour les liens durs Unix qui font que plusieurs chemins peuvent désigner la même chose). D’ailleurs les deux visions peuvent s’échanger : /dev/mem, /dev/kmem et ramdisks permetent de voir la mémoire comme des fichiers, mmap permet de voir un fichier comme de la mémoire. Une même collection de données peut être vue comme fichiers de plusieurs façons différentes : tout un disque ou une partition comme un seul fichier /dev/dsk/xxx ou comme une arborescence montée. Sous Windows leur infâme "base de registre" se trouve répartie dans X fichiers différents de noms NTUSER.DAT ou autres, mais l’émulation cygwin permet de voir ça comme une arborescence standard sous /proc/registry et d’y utiliser les utilitaires standard (find, grep, ...).