2013-02-11 65 views
1

當使用mmap/msync/munmap時,是讀/寫原子? (假設磁盤在掉電時將完成任何未決寫入)msync原子?

回答

2

涉及多個頁面或多個磁盤扇區的操作永遠不會是原子的。

調查一致性兩個具體事情之間可能更有用。

例如,兩個程序或均爲MMAP(2) -ing同一文件線程之間,它們已經相干和msync(2)無關於此。所有msync都會導致內核將修改後的頁面寫入底層存儲系統 ...對於同一系統上的其他讀者和寫入者也沒有必要或有幫助,這些讀寫器也使用mmap()

如果您想使用不同的工具(共享存儲或非mmap I/O)並同步訪問,您將需要一個真正的信號量或互鎖。我不認爲msync()是有用的。爲了給您更多的幫助,我們需要更多地瞭解您嘗試同步的內容。