昨天討論到了 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:
參考資料:
2 comments:
寫的真好
釐清了我不少的疑惑
感謝分享
簡兄不誠懇。XD
Post a Comment