Si se mata un proceso con SIGKILL, ¿los cambios que ha realizado en un archivo mapeado en memoria se vacían en el disco? Supongo que si el sistema operativo garantiza que un archivo mapeado en memoria se vacía en el disco cuando el proceso se mata a través de SIGKILL, también lo hará con otras señales de terminación (SIGABRT, SIGSEGV, etc.).¿El SO (POSIX) vacía un archivo mapeado en memoria si el proceso está SIGKILL?
13
A
Respuesta
16
Dependerá de si el archivo mapeado en memoria se abre con modificaciones privadas (MAP_PRIVATE) o no (MAP_SHARED). Si es privado, entonces no; las modificaciones no se escribirán en el disco. Si se comparte, el conjunto de búferes del kernel contiene los búferes modificados, que se escribirán en el disco a su debido tiempo, independientemente de la causa de la muerte.
0
Formulé una pregunta similar y seguí con el código de demostración cuando no estaba satisfecho con las respuestas. Ver mmap, msync and linux process termination
Cuestiones relacionadas
- 1. anexando a un archivo mapeado en memoria
- 2. Proceso asesinado por SIGKILL
- 3. Cuánta memoria está bloqueada en un proceso
- 4. ¿Cómo vaciar de forma asíncrona un archivo mapeado en memoria?
- 5. ¿Qué tan grande puede ser un archivo mapeado en memoria?
- 6. SIGKILL al asignar memoria en C++
- 7. Comprobar si el proceso se está ejecutando
- 8. ¿Hay alguna diferencia entre el archivo mapeado iostream de boost y el archivo mapeado entre procesos de impulso?
- 9. detectar si un objeto está vacía
- 10. ¿Usa un archivo mapeado de memoria como un archivo de intercambio?
- 11. Comprobando si el archivo está completamente escrito
- 12. mapeado de texturas a los objetos 3D en un proceso por lotes en el servidor
- 13. Implementación IList de archivo mapeado en memoria, para almacenar conjuntos de datos grandes "en la memoria"?
- 14. ¿Debería mostrar una cuadrícula si está vacía?
- 15. ¿Cómo implementar la lectura concurrente en un archivo mapeado en la memoria en Java?
- 16. Eliminar la primera línea de archivo si está vacía
- 17. Compruebe si la cadena está vacía
- 18. ¿Se garantiza que los datos en un archivo mapeado en memoria se descarguen secuencialmente?
- 19. ¿Cómo comprobar si no hay cadena vacía y no está vacía en el servidor SQL?
- 20. ¿Cómo puedo leer rápidamente los bytes de un archivo mapeado en memoria en .NET?
- 21. Delphi: compruebe si el archivo está en uso
- 22. SO: el planificador de procesos se ejecuta en un proceso separado
- 23. .NET - TextWriterTraceListener, el archivo está en uso por otro proceso
- 24. A ver si el archivo está vacío
- 25. Compruebe si el archivo ya está abierto
- 26. Linux - Encuentra si el proceso está listo o correr
- 27. Prueba Powershell si la carpeta está vacía
- 28. Comprobando si el proceso aún se está ejecutando?
- 29. Determinar si una cadena está "vacía"
- 30. VBA Comprobar si la variable está vacía
¡Gracias! ¿Tiene alguna documentación sobre este comportamiento? No pude encontrar ninguno. – chila
El estándar POSIX (http://www.opengroup.org/onlinepubs/9699919799/toc.htm) para mmap() dice: Si se especifica MAP_SHARED, las referencias de escritura cambiarán el objeto subyacente. No hay palabras de comadreja sobre 'a menos que el proceso se mate después de que se complete la escritura de la memoria, pero antes de que los datos se descarguen al disco'. –