想知道共享內存的密鑰是文件名還是inode。MEM_SHARED,mmap和硬鏈接
我有一個名爲.last的文件,它只是一個名爲YYYYMMDDHHMMSS的文件的硬鏈接。
目錄如下:
20110101143000
.last
。去年僅僅是一個硬鏈接20110101143000.
一段時間後,會創建一個新的文件
20110101143000
20110622083000
.last
然後,我們刪.last,然後重新創建它以引用新文件。
我們的軟件在這些更新過程中不斷運行,它使用MAP_SHARED對.last文件進行映射。當完成一個文件時,軟件可能會將其緩存幾分鐘而不是取消映射。在物理服務器上,同時運行12-24個軟件實例。不同的實例經常在大致相同的時間映射相同的文件。我的問題是:
Linux是否使用文件名鍵入共享內存,或者它使用inode?
鑑於這種情況:
- PROC A mmaps。去年,並沒有取消映射
- 的新文件寫入,。去年被刪除,一個新的。去年創建鏈接新 文件
- PROC B mmaps新。去年,不取消映射
如果Linux中使用的索引節點,然後PROC A和B將被看到映射到DIF的存儲器的不同塊不同的文件,這是我們想要的。如果linux使用文件名,那麼A和B都會看到映射到新文件的相同內存塊。 B很好,但當分片塊中的內存發生變化時,A會崩潰。
任何人都知道它是如何工作的?我要去測試,但如果事實證明是基於名稱的話,我就會被搞砸,除非有人知道一個竅門。
謝謝!