2011-03-08 88 views
5

unlink,fsyncrename是唯一由定義原子嗎?什麼文件系統操作需要原子?

編輯:原子意味着操作要麼成功,要麼有效,要麼失敗,沒有效果;一個操作不能失敗併產生影響。

清楚如果內核恐慌,該程序無法處理的操作失敗的錯誤,但它必須在這種情況下,考慮到它並不能

+0

您應該明確操作系統,文件系統類型和版本。 – 2011-03-08 12:06:32

+0

@OndrejTucny:如果我理解正確,他指的是posix風格的系統,因此這些信息不存在。 – mafu 2012-02-01 13:15:47

回答

3

我不知道fsync(2)是原子的;如果一個文件在緩衝區高速緩存中有100兆字節髒,則需要幾秒鐘才能寫出該數據,並且在傳輸到磁盤過程中內核可能會崩潰。也許船上的DMA引擎只能處理4兆字節的寫入。也許沒有DMA支持,並且CPU必須通過512字節塊安排每個寫入。

你是什麼意思的'原子'?

mkdir可能是'atomic',或者該目錄存在於磁盤上並且鏈接到父目錄,或者目錄數據結構尚未鏈接到父目錄中,因此無法訪問 - > doesn'不存在。

同樣可能爲mount(2):很難找到中途完成的mount(2),如果失敗,則整個掛載失敗:掛載文件系統或掛載文件系統。

umount(2)很有趣,它可以懶散地完成,但是一旦它被卸載,它就不能用於open(2)creat(2)調用。

所以,我想它歸結爲,你是什麼意思的'原子'? :)