瀏覽單個文章
darkangel
Major Member
 
darkangel的大頭照
 

加入日期: Aug 2001
文章: 211
引用:
作者ask43301
隨身碟為了速度通常會在最後一筆資料送進controller後就回傳host端已經寫完了,但實際上最後一筆還沒完全寫入至flash,

此時斷電的話就會導致資料寫入不全使flash有機會產生壞塊,code沒寫好的話很容易產生問題,

以前的隨身碟比較會有這種問題,現在的隨身碟速度快通常寫入完後不用幾秒就完全寫入至flash了,

所以基本上只要flash寫入完成以及code有寫好...愛怎麼插拔都沒問題…

以上為小弟個人理解…有錯煩請前輩指正


跟 code 有沒有寫好完全無關。
那是跟系統對儲存裝置採用的 cache 模式有關,所謂的 cache 有兩種模式,一種叫 write through,一種叫 write back。
write through:同步將 cache 的資料寫入儲存體。
write back:會延遲寫入。
通常來說,write back 的效率較佳,所以有些系統(如 Windows XP)預設會採用 write back 的方式來處理 usb 儲存裝置 cache。
這時候系統雖然回應資料寫入完成,但實際上資料還在 cache 中延遲等待寫入,如果冒然的將 usb 拔出,就會發生資料尚未完全寫入的狀況,透過對系統下達移除 usb 裝置,一般會做兩個動作:
1. 強制將 cache 裡的資料寫入儲存裝置裡。(即 flush)
2. 通知驅動程式關閉該 usb 電源。(有的 driver 其實不會做一步)
這也是為什麼有時候我們用移除裝置來移除 USB 會比較保險的原因。
     
      
__________________
滿招損 謙受益
舊 2013-05-25, 06:19 PM #21
回應時引用此文章
darkangel離線中