Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does the OS (POSIX) flush a memory-mapped file if the process is SIGKILLed?

Tags:

c++

c

linux

unix

posix

If a process is killed with SIGKILL, will the changes it has made to a memory-mapped file be flushed to disk? I assume that if the OS ensures a memory-mapped file is flushed to disk when the process is killed via SIGKILL, then it will also do so with other terminating signals (SIGABRT, SIGSEGV, etc...).

like image 740
chila Avatar asked May 14 '09 14:05

chila


People also ask

What is mmap in Posix?

In computing, mmap(2) is a POSIX-compliant Unix system call that maps files or devices into memory. It is a method of memory-mapped file I/O. It implements demand paging because file contents are not immediately read from disk and initially use no physical RAM at all.

Does mmap load file into memory?

Yes, mmap creates a mapping. It does not normally read the entire content of whatever you have mapped into memory. If you wish to do that you can use the mlock/mlockall system call to force the kernel to read into RAM the content of the mapping, if applicable.

Can you close file after mmap?

After the mmap() call has returned, the file descriptor, fd, can be closed immediately without invalidating the mapping. The prot argument describes the desired memory protection of the mapping (and must not conflict with the open mode of the file).

How does mmap work in Linux?

mmap works by manipulating your process's page table, a data structure your CPU uses to map address spaces. The CPU will translate "virtual" addresses to "physical" ones, and does so according to the page table set up by your kernel. When you access the mapped memory for the first time, your CPU generates a page fault.


1 Answers

It will depend on whether the memory-mapped file is opened with modifications private (MAP_PRIVATE) or not (MAP_SHARED). If private, then no; the modifications will not be written back to disk. If shared, the kernel buffer pool contains the modified buffers, and these will be written to disk in due course - regardless of the cause of death.

like image 111
Jonathan Leffler Avatar answered Sep 28 '22 10:09

Jonathan Leffler