Si leo y escribo un solo archivo con las API IO normales, se garantiza que las escrituras serán atómicas por bloque. Es decir, si mi escritura solo modifica un bloque único, el sistema operativo garantiza que todo el bloque está escrito, o nada en absoluto.Memoria Archivos asignados y escrituras atómicas de bloques individuales
¿Cómo obtengo el mismo efecto en un archivo mapeado en memoria?
Los archivos mapeados en memoria son simplemente matrices de bytes, así que si modifico la matriz de bytes, el sistema operativo no tiene forma de saber cuándo considero que una escritura está "lista", por lo que podría (aunque sea poco probable) cambiar el memoria justo en el medio de mi operación de escritura de bloques, y en efecto, escribo medio bloque.
Necesitaría una especie de "entrar/salir de la sección crítica", o algún método para "fijar" la página de un archivo en la memoria mientras escribo. Algo como eso existe? Si es así, ¿es eso portable en los sistemas POSIX comunes? & Windows?
¿Cuántas aplicaciones están interactuando con su archivo asignado? – Justin
Solo un proceso, es decir, el servidor de la base de datos. –