text: sync。作為C語言的函式之一，sync()一般以void sync(void)的形式在unistd.h內宣告。該函式也可以從命令列執行sync命令的方式呼叫，同時在其他程式語言中也有名字與之相似的函式。相關呼叫.UNIX中還有一些與sync相似的系統呼叫，如fsync與fdatasync。其中fsync負責寫入所有與特定檔案描述符相關的緩衝區資料；fdatasync功能與fsync相似，但只負責寫入檔案中被變更的資料，而不會修改檔案的元資料。在系統中的應用.UNIX核心常會執行一些諸如flush或update之類的守護程序以將緩衝區資料寫入目標，而這些程序都要呼叫sync函式；在其他某些作業系統上這類任務由cron完成，而在Linux上負責者則為守護程序pdflush。在解除安裝或以只讀許可權過載檔案系統時，系統也會將緩衝區內容寫入儲存介質。資料庫中的應用.在對資料進行修改操作來達到這一目的。但是，對於旋轉尋道的硬碟來說，每次旋轉只能完成一項“提交”操作以將客戶端的修改寫入，因此每秒最多隻能完成幾百次的“提交”操作；而若關閉fsync的限定來放寬要求，則可大幅提升效能，但同時也會帶來系統崩潰後的潛在危險。有鑑於此，資料庫也使用囊括最近修改資訊的來保障可靠性：根據日誌檔案，系統管理員可以在系統崩潰後準確地重做修改操作，以此即可減少對主要資料檔案的sync操作。相關爭議.在預設情況下，硬碟一般使用自有的易失性寫入快取以快取要寫入的資料。這一做法可以大幅提升效能，但同時也會帶來寫入操作丟失的潛在風險，不過開/關快取的效能落差的確相當巨大，甚至連素來保守的FreeBSD社群為此也否決了在FreeBSD 4.3內預設關閉寫入快取的提案。另外，在Firefox引入fsync呼叫的目的以保證其內嵌的SQLite資料庫的完整性後，便有人指出fsync降低了Firefox 3.0的效能；而Linux基金會的技術總監西奧多·周則在“Don't fear the fsync!”一文中討論了fsync的效能表現，並表示“沒有必要害怕fsync”。
metadata: erhwenkuo/wikipedia-zhtw
metadata: Sync (Unix)
metadata: https://zh.wikipedia.org/wiki?curid=3232916