Wednesday, March 23, 2011

Buffered I/O & Unbuffered I/O

簡單來說,

  • Buffered I/O 讀寫的資料都會經過 Cache Manager,會暫存一份在 Memory 當中,然後會根據作業系統決定寫回硬碟的時機(如果用 Write Through,還是可以自行控制)。此模式適合常讀寫檔案,因為可以快速的從 Memory 讀寫。
    (想想 L1, L2 cache 之於 RAM 的關係。)
  • Unbuffered I/O 讀寫的資料不會經過 Cache Manager,而是直接對硬碟讀寫。因此也不會因為大量讀寫資料造成 Cache Trashing。
以下是我的推測,不代表真實測試結果。XD
  • Installer 的檔案複製可能就適合 Unbuffered I/O,因為 Buffered I/O 可能會造成大量的 Cache Trashing。
  • 當有大量的 Cache Trashing 發生時,可能也會影響到 Unbuffered I/O 的效能。因為 Cache Manager 會對硬碟做大量讀寫,這個行為可能會和 Unbuffered I/O 產生 Resource Contention。

參考資料:

No comments: