Thursday, March 24, 2011

User-Buffered I/O for C Library

昨天討論到了 Win32 Kernel Mode 下的 Buffered I/O 和 Unbuffered I/O 的差異。其實在 User Mode 的環境下,C標準函式庫的File I/O(fread, fwrite...)也存在自己的 Buffered 方式,稱之為 User-Buffered I/O 或稱為 Stream Buffering。重點在於決定何時把 Buffer 內的東西透過 System Call 倒入 Kernel Mode。

  • Fully Buffered: 
    • 系統或 Caller 決定一個固定大小的緩衝區。
    • 當透過 File I/O 寫滿緩衝區,I/O 才會發生。
  • Line Buffered: 
    • 當 File I/O 寫到換行符號,I/O才會發生。
    • 在 Win32,沒有這個選項...
  • No Buffered:
    • 就是沒有Buffer...
參考資料:

2 comments:

shoting said...

寫的真好
釐清了我不少的疑惑
感謝分享

Unknown said...

簡兄不誠懇。XD