Sé que cuando se modifica una página de caché de página, se marca como sucia y requiere una reescritura, pero qué sucede cuando:
Escenario: el archivo / aplicaciones / EXE, que es un archivo ejecutable, se pagina en la caché de la página por completo (todas sus páginas están en la caché / memoria) y se ejecuta mediante el proceso P
La versión continua luego reemplaza / apps / EXE con un nuevo ejecutable.
Supuesto 1: supongo que el proceso P (y cualquier otra persona con un descriptor de archivo que haga referencia al ejecutable anterior) continuará utilizando el antiguo, en memoria / aplicaciones / EXE sin ningún problema, y cualquier proceso nuevo que intente ejecutar esa ruta obtendrá El nuevo ejecutable.
Supuesto 2: supongo que si no todas las páginas del archivo se asignan a la memoria, todo estará bien hasta que haya un error de página que requiera páginas del archivo que se han reemplazado, y probablemente se producirá una falla predeterminada.
Pregunta 1: Si bloquea todas las páginas del archivo con algo como vmtouch, ¿eso cambia el escenario?
Pregunta 2: Si / apps / EXE está en un NFS remoto, ¿haría alguna diferencia? (Supongo que no)
Corrija o valide mis 2 supuestos y responda mis 2 preguntas.
Supongamos que este es un cuadro CentOS 7.6 con algún tipo de kernel 3.10.0-957.el7
Actualización: Pensando más en ello, me pregunto si este escenario no es diferente a cualquier otro escenario de página sucia
Supongo que el proceso que escribe el nuevo binario hará una lectura y obtendrá todas las páginas de caché, ya que está todo paginado, y luego todas esas páginas se marcarán como sucias. Si están bloqueados, solo serán páginas inútiles que ocuparán la memoria central después de que el conteo de referencias llegue a cero.
Sospecho que cuando finalizan los programas que se están ejecutando actualmente, cualquier otra cosa usará el nuevo binario. Suponiendo que todo sea correcto, supongo que solo es interesante cuando solo se paginó parte del archivo.