35緩衝區緩存的優點和缺點
使用緩衝區緩存具有多個優點,不幸的是,一些缺點。
•使用緩衝區可以允許均勻的磁盤訪問,因為內核文檔不需要知道I/O的原因。取而代之的是,無論數據是文件,INODC還是超級塊的一部分,它都會將數據複製到緩衝區和從緩衝區中。磁盤I/O的緩衝使代碼更加模塊化,因為與磁盤一起進行I/O的內核部分具有一個用於所有目的的接口。簡而言之,係統設計更簡單。
•該係統對執行I/O的用戶進程沒有數據對齊限製,因為內核會內部對齊數據。硬件實現通常需要特定的數據磁盤I/O數據對齊,例如在兩字節邊界或內存中的四字節邊界上對齊數據。沒有緩衝機製,程序員將不得不確保正確對齊其數據緩衝區。許多程序員的錯誤將導致,並且程序將無法移植UNIX係統在具有更嚴格地址對準屬性的機器上運行。通過將數據從用戶緩衝區複製到係統緩衝區(反之亦然),內核消除了對用戶緩衝區的特殊對齊的需求,
使用戶程序更簡單,更便攜。
•使用緩衝緩存可以減少磁盤流量的量,從而增加整體係統吞吐量並減少響應時間。從文件係統讀取的過程可能會在緩存中找到數據塊,並避免對磁盤I/O的需求。內核經常使用“延遲寫入”來避免不必要的磁盤寫入,將塊留在緩衝區緩存中,並希望在塊上擊中緩存。顯然,對於具有許多緩衝區的係統,緩存命中的機會更大。但是,係統可以盈利配置的緩衝區數受到應保留用於執行過程的內存量的限製:如果用於緩衝區的內存過多,則係統可能會減慢,因為過度過程交換或分頁。
•緩衝算法有助於確保文件係統的完整性,因為它們保持了常見的單一圖像磁盤塊包含在CACHC中。如果兩個過程同時嚐試操縱一個磁盤塊,則緩衝算法(getblk例如)將其訪問序列化,以防止數據損壞。
•減少磁盤流量對於良好的吞吐量和響應時間很重要,但是緩存策略也引入了幾個缺點。由於內核不會立即將數據寫入磁盤上以進行延遲寫入,因此該係統容易受到將磁盤數據留在不正確狀態的崩潰。盡管最近的係統實施減少了災難性事件造成的損害,但基本問題仍然存在:發出寫入係統調用的用戶永遠不確定數據何時何時磁盤驅動。4
•在閱讀和從用戶流程中閱讀和寫作時,使用緩衝區CACHC需要額外的數據副本。編寫數據將數據複製到內核中,並且內核將數據複製到磁盤;過程讀取數據的數據從磁盤讀取到內核以及從內核到用戶流程。傳輸大量數據時,額外的副本會減慢性能,但是在傳輸少量數據時,它會改善性能,因為內核緩衝數據(使用算法getblk和延遲寫入),直到經濟傳輸到磁盤是經濟的。
繼續在這裏閱讀:37個練習
本文是否有幫助?
讀者的問題
-
Eleleta Fethawi1個月前
- 回複
-
艾倫·華萊士(Alan Wallace)4個月前
- 回複
-
Vittore5個月前
- 回複
-
佩內洛普1年以前
- 回複
-
也要1年以前
- 回複
-
莎麗1年以前
- 回複
-
Gormadoc chubb-baggins1年以前
- 回複
-
埃諾1年以前
- 回複
-
Selamawit Sebhat1年以前
- 回複
-
貝爾巴1年以前
- 回複