![磁碟 I/O 讀取與寫入的成本](https://rvso.com/image/1288715/%E7%A3%81%E7%A2%9F%20I%2FO%20%E8%AE%80%E5%8F%96%E8%88%87%E5%AF%AB%E5%85%A5%E7%9A%84%E6%88%90%E6%9C%AC%20.png)
寫入光碟比從磁碟讀取成本更高。例如,寫入 1 GB 的記錄檔案與讀取整個檔案相比。
答案1
在驅動器級別,讀扇區操作將花費與寫入扇區操作大約相同(或稍長)的時間。對於讀取磁區,指令必須透過磁碟機介面(例如SATA)到達,指令被解碼、發出尋道、掃描位址標記和記錄ID 直到找到磁區、將磁區資料讀入緩衝區、使用ECC 驗證磁區(糾錯碼),最後發送磁區資料。 (請注意,存在一種普遍的誤解,認為扇區資料可以直接從讀取頭傳輸到介面。絕對錯誤:磁區資料始終完全緩衝,並且只有在讀取整個磁區後才以全介面速度傳輸並驗證。對於寫入磁區,指令和磁區資料必須透過磁碟機介面到達,對指令進行解碼,發出尋道,掃描位址標記和記錄 ID,直到找到磁區,用 ECC 寫出磁區,並通知主機完成。
在作業系統或檔案系統級別,建立新檔案時寫入會更加複雜。讀取或重寫現有磁碟檔案只需要查找資料磁區(或叢集)所在的位置。寫入新檔案或附加到檔案需要先從空閒清單中指派磁區/叢集,將這些磁區/叢集指派給檔案(目錄項目更新?),然後將資料寫出。請注意,磁碟分配表通常會盡快更新(即寫入磁碟),甚至可能在檔案資料之前更新,以便維護檔案系統的完整性。如果您在建立檔案時注意到/聽到大量磁碟尋道,則可以假設磁頭在分配表和新檔案之間移動。