作業系統›Ch10 檔案管理
第 25 題/共 28 題
◀ OS 25/28
25. File System、Caching、Index Consistency、Locking、Deadlock
#OS-10-025中File SystemCachingIndex ConsistencyLockingDeadlock

考慮一個磁碟檔案 F\mathcal{F},其中儲存一組鍵值對(key-value pairs)。API「y=READ(x)y = READ(x)」用來回傳鍵 xx 對應的值 yy,前提是鍵值對 (x,y)(x,y) 存在於 F\mathcal{F} 中。API「WRITE(x,y)WRITE(x,y)」則是:若 (x,y)(x,y) 不存在,就把它寫入 F\mathcal{F};否則就用 yy 更新鍵 xx 的值。這裡的 READ(⋅)READ(\cdot) 與 WRITE(⋅)WRITE(\cdot) 是各自獨立的行程(或執行緒)。請針對以下設計,判斷正確(○)或錯誤(×),這些設計的目的是在(存取延遲的意義下)最佳化對檔案 F\mathcal{F} 的讀寫操作。令 SS 為儲存在 F\mathcal{F} 中的鍵值對集合。

(a) 將 SS 分割成數個互不相交的區塊(blocks){s}\{s\},即 S=⋃{s}S = \bigcup \{s\}。每個區塊 s∈Ss \in S 是記憶體與磁碟子系統之間的擷取單位(fetching unit)。給定 (x,y)∈s(x,y) \in s,配置一個記憶體區塊 mm 來儲存從磁碟複製過來的 ss。接著從 mm 中取出 (x,y)(x,y) 並回傳給 READ(⋅)READ(\cdot)。為了效率,mm 中的鍵應該用平衡搜尋樹(balanced search tree)之類的結構組織。

(b) 對於 WRITE(⋅)WRITE(\cdot),先更新 mm 中的 (x,y)(x,y)。當 mm 被置換(replaced)時,mm 應寫回 F\mathcal{F},且 F\mathcal{F} 中原本的 ss 可以被覆蓋。

(c) 我們額外在檔案系統中建立一個本機檔案索引 I\mathcal{I},用來在 SS 中定位 (x,y)(x,y),也就是說 I\mathcal{I} 能協助快速判斷 (x,y)(x,y) 儲存在哪一個 s∈Ss \in S 中。I\mathcal{I} 會被複製一份到記憶體中(記為 I∗\mathcal{I}^*),以減少對磁碟子系統執行的 IO 操作數量。I∗\mathcal{I}^* 會因為 WRITE(⋅)WRITE(\cdot) 新增的 (x,y)(x,y) 而被更新。因此,I∗\mathcal{I}^* 與 I\mathcal{I} 可能會不一致。

(d) 有可能發生多個 WRITE(⋅)WRITE(\cdot) 操作處理相同的鍵 xx,且這些 WRITE(⋅)WRITE(\cdot) 操作可能由不同的客戶端(clients)並行呼叫。一種可能的實作方式是:每個 WRITE(⋅)WRITE(\cdot) 必須先成功取得存取 mm 與 I∗\mathcal{I}^* 兩者所需的鎖(locks),才能繼續更新 xx 的值;一旦值被提交(committed),兩個鎖都會被釋放。在這種實作方式下,各種 WRITE(⋅)WRITE(\cdot) 操作『不可能』因此產生死結(deadlock)。

📄 成大114
跳轉到第題
▤完整推導請見《WH 資工筆記 · 作業系統》Ch10 檔案管理
本章題號 · 21–28 / 28