Consistency Semantics
Consistency semantics 定義 shared file 被多個 users / processes 同時存取時,一方 write 何時能被另一方 read 到。
三種 model
- D-OS-Ch15ga-UNIX_Semantics:single shared image;write 立即對其他 open users 可見。直覺、強,但 distributed caching 成本高。
- D-OS-Ch15gb-Session_Semantics:open-close session 為邊界;close 後的修改只保證對之後新開的 sessions 可見。適合 client caching,但 concurrent edits 會有 conflict risk。
- D-OS-Ch15gc-Immutable_Shared_Files_Semantics:shared file 不可修改、name 不重用。最容易 cache,代價是更新必須變成 new file / version。
為何會有差異
Local FS 可由單一 kernel / buffer cache 維持 immediate visibility。Distributed FS 中,每個 client 可能 cache blocks / attributes;若每次 write 都同步、invalidate、lock,network cost 很高。因此 remote FS 常犧牲 strict consistency 換 performance。
Application implication
需要多人同時寫入時,不能只靠一般 FS semantics;通常要 locks、transactions、application-level coordination。Read-mostly data 適合 weaker 或 immutable semantics;database 通常自己實作 logging / locking / recovery。