Je sais que lorsqu'une page de cache de page est modifiée, elle est marquée comme sale et nécessite une réécriture, mais que se passe-t-il lorsque:
Scénario: le fichier / apps / EXE, qui est un fichier exécutable, est paginé complètement dans le cache de pages (toutes ses pages sont dans le cache / mémoire) et exécuté par le processus P
La version continue remplace ensuite / apps / EXE par un tout nouvel exécutable.
Hypothèse 1: je suppose que le processus P (et toute autre personne ayant un descripteur de fichier référençant l'ancien exécutable) continuera à utiliser l'ancien, dans la mémoire / applications / EXE sans problème, et tout nouveau processus qui tentera d'exécuter ce chemin obtiendra le nouvel exécutable.
Hypothèse 2: Je suppose que si toutes les pages du fichier ne sont pas mappées en mémoire, les choses iront bien jusqu'à ce qu'il y ait une erreur de page nécessitant des pages du fichier qui ont été remplacées, et probablement une erreur de segmentation se produira?
Question 1: Si vous bloquez toutes les pages du fichier avec quelque chose comme vmtouch, cela change-t-il le scénario?
Question 2: Si / apps / EXE est sur un NFS distant, cela ferait-il une différence? (Je suppose que non)
Veuillez corriger ou valider mes 2 hypothèses et répondre à mes 2 questions.
Supposons qu'il s'agit d'une boîte CentOS 7.6 avec une sorte de noyau 3.10.0-957.el7
Mise à jour: En y réfléchissant plus, je me demande si ce scénario n'est pas différent de tout autre scénario de page sale.
Je suppose que le processus qui écrit le nouveau binaire fera une lecture et obtiendra toutes les pages de cache car il est paginé, puis toutes ces pages seront marquées comme sales. S'ils sont verrouillés, ce ne seront que des pages inutiles occupant la mémoire centrale une fois que le compte de références sera à zéro.
Je soupçonne qu'à la fin des programmes en cours d'exécution, tout le reste utilisera le nouveau binaire. En supposant que tout est correct, je suppose que ce n'est intéressant que si une partie du fichier est paginée.