12 關於緩衝式I/O,下列敘述何者錯誤?
(A) 可以提升檔案存取效率
(B) 資料會先暫存在緩衝器中
(C) 系統當機時不會造成資料遺失
(D) 標準C的庫存函數都具有緩衝功能

答案:登入後查看
統計: A(1), B(0), C(6), D(1), E(0) #3399859

詳解 (共 2 筆)

#7318712

【第一步:找關鍵字】

關鍵字:

  • 緩衝式 I/O(buffered I/O)

  • 暫存在緩衝器(buffer)

  • 效率提升

  • 不會造成資料遺失(陷阱關鍵字)

? 「不會」這種絕對語氣,通常要特別懷疑

【第二步:白話翻譯】

這題在問:

? 「資料先放在暫存區(buffer)再寫入檔案,這種做法有哪些說法是錯的?」

【第三步:解題思路】

這題在考什麼觀念?

? 緩衝機制的優點與風險

解題步驟

  1. 先理解什麼是緩衝

  2. 再想它的優點(快)

  3. 再想它的缺點(可能遺失資料)

  4. 找出不合理的敘述

原理與規則(生活比喻)

想像你在寫信:

  • 沒有緩衝:寫一行就寄一封信(超慢)

  • 有緩衝:寫一堆再一次寄(效率高)

? 但如果你還沒寄就發生意外(停電)
? 那些信就會「消失」

【第四步:選項分析】

(A) 為什麼對?

✔ 正確

? 緩衝可以減少 I/O 次數

例如:

  • 一次寫很多資料
    → 比每次寫一點更快

(B) 為什麼對?

✔ 正確

? 緩衝式 I/O 的核心就是:

資料先放在記憶體的 buffer,再寫入磁碟

(C) 為什麼錯?

✘ 錯誤(本題答案)

「系統當機時不會造成資料遺失」

? 這是錯的!

因為:

  • 資料還在 buffer(記憶體)

  • 還沒寫入磁碟

? 一當機 → buffer 清空 → 資料遺失

(D) 為什麼對?

✔ 正確

? 標準 C 函式(例如 printf, fwrite)

? 都是使用緩衝機制

(例如:行緩衝、全緩衝)

【觀念補充與延伸】

核心觀念定位

? 系統程式 / I/O 機制
? 常考基礎觀念

法條或定義

  • 緩衝式 I/O(Buffered I/O)
    使用記憶體暫存資料,減少實際 I/O 操作次數以提升效率

三種緩衝模式

類型 說明
全緩衝 buffer 滿才寫
行緩衝 遇到換行寫
無緩衝 直接寫

觸類旁通(舉一反三)

對比概念

  • Buffered I/O vs Unbuffered I/O
    ? Buffered:快但有風險
    ? Unbuffered:慢但安全

變化題型

  • 問:什麼情況要用 unbuffered?
    ? 即時性要求高(例如 log、金融交易)

【記憶口訣】

? 「先存快,但可能丟」

【常見陷阱】

學生最容易搞混的地方

以為緩衝一定是安全的

心理盲點

看到「提升效率」就以為沒有缺點

避坑指南

? 看到 buffer:

一定要問兩件事:

  1. 有沒有變快?(有)

  2. 有沒有風險?(也有)

0
0
#6786510
1. 題目解析 題目詢問關於緩衝式I/...
(共 916 字,隱藏中)
前往觀看
0
0