Se un processo viene ucciso con SIGKILL, saranno i cambiamenti che ha apportate a un file memory-mapped essere scaricate su disco? Suppongo che se il sistema operativo assicura che un file mappato in memoria venga scaricato su disco quando il processo viene ucciso tramite SIGKILL, lo farà anche con altri segnali di terminazione (SIGABRT, SIGSEGV, ecc ...).Il sistema operativo (POSIX) svuota un file mappato in memoria se il processo è SIGKILLed?
13
A
risposta
16
Dipenderà se il file mappato in memoria viene aperto con modifiche privata (MAP_PRIVATE) o meno (MAP_SHARED). Se privato, allora no; le modifiche non verranno riscritte sul disco. Se condiviso, il pool del buffer del kernel contiene i buffer modificati e questi verranno scritti sul disco a tempo debito, indipendentemente dalla causa della morte.
0
ho posto una domanda simile me stesso e poi seguiti con il codice di dimostrazione, quando ero insoddisfatto con le risposte. Vedere mmap, msync and linux process termination
Problemi correlati
- 1. Identificazione Se il sistema operativo è (aperto) SUSE in Python?
- 2. Come verificare se esiste un file mappato in memoria?
- 3. Come svuotare in modo asincrono un file mappato in memoria?
- 4. In che modo esattamente il sistema operativo protegge il kernel
- 5. In che modo il sistema operativo esegue file binari compilati?
- 6. Verificare se il sistema operativo Windows funziona in modalità provvisoria
- 7. Esiste una differenza tra il file mappato iostream boost e il file mappato interprocesso boost?
- 8. Gestione file di memoria mappato in C# direttamente dalla memoria
- 9. Come determinare il sistema operativo
- 10. Come rilevare se un file mappato in memoria è in uso
- 11. Impossibile determinare il sistema operativo
- 12. Qualunque sistema operativo implementa il buffering per malloc()?
- 13. Come rilevare il sistema operativo in esecuzione?
- 14. malloc in un sistema incorporato senza sistema operativo
- 15. Un sistema operativo supportato da database
- 16. Il sistema operativo avvia i processi di uccisione quando viene eseguito il processo Python multi-thread
- 17. Il sistema operativo può dirmi quando viene creato un nuovo file?
- 18. Sistema operativo in Ada
- 19. È possibile liberare parzialmente la memoria allocata dinamicamente su un sistema POSIX?
- 20. database senza sistema operativo richiesto per il sistema integrato
- 21. Rileva il sistema operativo dall'estensione di Firefox
- 22. File mappato memoria per array numpy
- 23. programmazione a basso livello: come fa il sistema operativo a iniziare un nuovo thread/processo?
- 24. Java: Come scoprire se il percorso è assoluto indipendentemente dal sistema operativo
- 25. Identificare il sistema operativo del sistema tramite ID
- 26. Come rilevare il sistema operativo corrente Gradle
- 27. Come scoprire se il mio sistema operativo è in esecuzione su un ambiente virtualizzato o non virtualizzato?
- 28. Sviluppo di un sistema operativo
- 29. Come posso garantire che un file mappato in memoria mantenga accessibili le pagine di memoria?
- 30. In che modo OpenGl è implementato in un sistema operativo?
Grazie! Hai qualche documentazione su questo comportamento? Non sono riuscito a trovarne. – chila
dallo standard POSIX (http://www.opengroup.org/onlinepubs/9699919799/toc.htm) per mmap() dice: Se non viene specificato MAP_SHARED, scrivere i riferimenti devono modificare l'oggetto sottostante. Nessuna parola di donnola su "a meno che il processo non venga ucciso dopo il completamento della scrittura della memoria, ma prima che i dati vengano scaricati sul disco". –