
磁盤物理結構與延遲時間優化從磁道扇區到交替編號核心要點磁盤讀寫時間 尋道時間Seek Time 旋轉延遲Rotational Latency 傳輸時間Transfer Time其中尋道時間占比最大、是調度優化的核心目標交替編號Interleaving的核心邏輯磁頭讀完一個扇區后需要一小段處理時間而盤片在持續旋轉——如果 0 號扇區緊挨 1 號等處理完 1 號已經轉過去了必須等多轉一圈錯位命名Cylinder Skew的原理類似但發生在多盤面之間磁頭切換盤面需要時間不同盤面的同名扇區故意錯開一段距離從出廠到可用磁盤經歷三步低級格式化劃分扇區→ 分區劃分 C/D/E 盤→ 邏輯格式化創建文件系統磁頭在一個圈上找數據磁盤到底長什么樣機械硬盤HDD的物理結構像一個多層的旋轉蛋糕——多個圓形盤片Platter疊在一起每個盤面Surface上都有一個讀/寫磁頭Head磁頭固定在統一移動的磁頭臂Arm上。盤面被劃分為若干同心圓環——每個圓環稱為一個磁道Track。所有盤面上相同編號的磁道構成了一個柱面Cylinder。每個磁道又被劃分為若干弧段——每個弧段稱為一個扇區Sector是磁盤讀/寫的最小單位通常 512 字節。[引用] 教材中的 CHS 地址Cylinder-Head-Sector格式就是通過柱面號、磁頭號盤面號、扇區號來定位一個扇區。現代磁盤內部已使用 LBALogical Block Addressing邏輯塊編址由磁盤控制器完成 LBA → CHS 的轉換但 CHS 模型在考研中仍然是考點。[經驗] 一個反直覺的事實最內側磁道的扇區面積最小數據密度最大。因為同一圈上需要存儲的數據量相同每個磁道的扇區數相等都是固定比特率寫入外側磁道有更大的周長物理空間更寬裕。現代磁盤使用區位記錄Zone Bit Recording, ZBR技術讓外側磁道擁有更多扇區但考研一般討論簡化模型。磁盤讀寫時間的三個組成部分要讀寫一個扇區磁頭需要完成三個動作。這個公式是磁盤性能分析的基礎讀寫時間 尋道時間 旋轉延遲 傳輸時間尋道時間Seek Time磁頭臂從當前位置移動到目標磁道所需的時間。包含啟動加速時間和勻速移動時間。這是三者中最慢的毫秒級也是磁盤調度算法FCFS / SSTF / SCAN優化的主要對象。尋道時間不是線性增長的——移動 1 個磁道和移動 100 個磁道的時間差距遠小于 100 倍因為啟動加速就已經占了相當比例。但考研計算題一般簡化為每移動一個磁道耗時固定。旋轉延遲Rotational Latency磁頭到達目標磁道后等待目標扇區旋轉到磁頭下方所需的時間。平均為旋轉半圈的時間。假設轉速 7200 rpm轉/分鐘旋轉一圈約 8.33ms平均旋轉延遲 ≈ 4.17ms。傳輸時間Transfer Time數據實際從扇區被磁頭讀取的時間。取決于轉速和每次讀取的扇區數。讀取一個扇區512 字節的傳輸時間通常在微秒級別遠小于前兩者。[經驗] 408 題目一般會給磁盤轉速要求計算讀完一個扇區需要多長時間。標準計算公式單圈時間 60 / 轉速rpm平均延遲 單圈 / 2。如果題目給了尋道時間記得三者相加。交替編號為什么 0 號扇區旁邊不是 1 號[共識] 如果邏輯上相鄰的扇區如 0 號和 1 號在物理上也相鄰排列連續讀多個扇區時會遇到一個大問題。[引用] 教材的分析十分精到磁頭讀取完一個扇區的內容后需要一小段時間處理——校驗數據、放到緩沖區、通知控制器。但盤片在持續旋轉。當磁頭處理完 0 號扇區準備讀 1 號時1 號扇區已經從磁頭下方轉過去了。必須等待盤片旋轉整整一圈1 號扇區才能再次回到磁頭下方。這就產生了巨大的延遲——本來旋轉半圈以內就能讀完的連續扇區因為處理延遲變成每讀一個扇區就要多等一圈。交替編號Interleaving的解決方案將邏輯上連續的扇區在物理上隔開幾個位置排列。例如不使用交替 0 1 2 3 4 5 6 7 使用交替 0 4 1 5 2 6 3 7這樣讀 0 → 處理 → 讀 1 時1 號扇區剛好轉到磁頭下方不需要多等一整圈。交替的間隔取決于控制器處理速度和磁盤轉速的匹配。[經驗] 考研中如果出現交替編號題通常會給你處理時間和轉速讓你判斷交替間隔應該設置為幾個扇區。實際計算邏輯是處理時間內盤片轉過多少個扇區就隔開多少個扇區排列。錯位命名不同盤面的扇區對齊是個陷阱[共識] 交替編號解決了同一磁道內連續扇區的延遲問題。但還有一個類似的問題發生在不同盤面之間。當一個磁道上的數據讀完、需要切換到另一個盤面繼續讀時磁頭需要切換切換電子開關 盤片仍在旋轉。如果兩個盤面的 0 號扇區在物理上完全對齊同一角度位置切換磁頭的時間會導致目標盤面的 0 號扇區已經轉過去了。[引用]錯位命名Cylinder Skew技術正是為了解決這個問題不同盤面的同名扇區在物理上故意錯開一段距離。例如盤面 0 的 0 號扇區在角度 0°盤面 1 的 0 號扇區在角度 30°。這樣磁頭切換的時間剛好讓盤面 1 的 0 號扇區旋轉到磁頭下方。[經驗] 交替編號和錯位命名目標相同減少延遲但作用域不同交替編號優化同一磁道內的連續讀錯位命名優化跨盤面的連續讀。磁盤初始化從低級格式化到邏輯格式化的三步走一塊嶄新的磁盤從出廠到能夠存放文件需要經過三個步驟第一步低級格式化物理格式化。將每個磁道劃分為固定大小的扇區通常 512 字節。每個扇區分為頭Header、數據區Data Area、尾Trailer三部分。頭和尾包含扇區編號、校驗碼奇偶校驗/CRC等管理信息——這些信息由磁盤控制器使用OS 看不到。[引用] 教材指出低級格式化還會檢測并標記壞扇區用備用扇區替換。這一步驟通常由磁盤制造商在出廠前完成普通用戶極少需要自己做。第二步磁盤分區。將物理磁盤劃分為若干個邏輯分區Partition / Volume就是我們熟悉的 C 盤、D 盤、E 盤。分區信息寫入 MBR主引導記錄或 GPTGUID 分區表中。每個分區的起始和結束柱面由分區表記錄。第三步邏輯格式化。在每個分區上創建文件系統——包括創建根目錄、初始化空閑空間管理用的數據結構位示圖 / 空閑分區表、將 superblock 信息寫入磁盤。邏輯格式化之后分區才算真正可用——操作系統可以往里面寫文件了。請注意區分文件系統的邏輯格式化和低級格式化一個是 OS 層面的軟件初始化一個是硬件層面的扇區劃分。在 408 題目中“格式化通常指邏輯格式化除非題目明確寫了低級格式化”。引導塊開機后第一個被讀入內存的東西每個分區的第一個扇區稱為引導塊Boot Block。計算機開機后BIOS 先讀取磁盤第一個扇區MBR由 MBR 中的代碼定位活動分區的引導塊引導塊中的引導程序再負責加載該分區中的操作系統內核。提示引導塊的作用可以結合第一章操作系統引導小節來理解。引導塊 → 操作系統內核加載器 → 內核初始化 → 系統正常運行這是一條完整的啟動鏈路。對于沒有安裝操作系統的分區如純數據盤引導塊可以置空。如果計算機裝了兩個操作系統如 Windows Linux各占一個分區MBR 的引導代碼會讓用戶選擇從哪個分區的引導塊啟動——這就是雙系統引導的基本原理。現代 UEFI 系統用 ESP 分區EFI System Partition替代了這一方案但原理類似。壞塊管理磁盤壞了怎么辦磁盤在使用過程中不可避免會產生壞塊Bad Block——物理上損壞、無法可靠讀寫的扇區。OS 和磁盤控制器協同處理壞塊硬件層面磁盤控制器在低級格式化時檢測壞塊用備用扇區替換對 OS 透明OS 根本不知道有扇區壞了軟件層面文件系統如 ext4可以維護一個壞塊列表在分配磁盤塊時跳過這些位置[經驗] 現代磁盤普遍使用 SMARTSelf-Monitoring, Analysis and Reporting Technology技術持續監控磁盤健康狀態當重映射扇區數Reallocated Sector Count持續增長時就是磁盤即將失效的預警信號。FAQ為什么尋道時間占磁盤讀寫時間的最大比例因為磁頭臂是機械部件移動需要克服慣性。一次尋道通常在 3-15ms而旋轉延遲平均 4ms 左右傳輸時間在微秒級。所以磁盤調度算法優先優化尋道路徑——寧可多轉半圈也不多移動一次磁頭臂。交替編號中的間隔怎么確定間隔 處理時間 / 一個扇區的通過時間。例如處理時間為 200μs盤速 7200rpm一圈 8.33ms每扇區約 100μs則間隔約為 2 個扇區。邏輯扇區排列可能是0, 3, 6, 1, 4, 7, 2, 5。SSD 也需要交替編號嗎不需要。SSD 沒有旋轉盤片和移動磁頭——它沒有尋道時間和旋轉延遲的概念。SSD 的讀寫延遲主要來自閃存芯片本身的訪問時間微秒級遠低于 HDD 的機械延遲。低級格式化和邏輯格式化的區別考試中怎么區分低級格式化 劃分扇區硬件層面邏輯格式化 創建文件系統OS 層面。題目說新買的硬盤需要做……一般指邏輯格式化分區 建文件系統因為低級格式化出廠時已完成。為什么靠近軸心的磁道讀寫速度看起來和外側一樣簡化模型因為磁盤是恒定角速度CAV, Constant Angular Velocity旋轉——不管在哪個磁道上磁頭掃過的扇區數相同每圈時間固定、扇區數固定。但現代磁盤用 ZBR 技術讓外側磁道有更多扇區外圈傳輸速度更快。考研一般用簡化模型假設各磁道扇區數相同。總結磁盤的性能瓶頸由三個時間分量疊加而成其中尋道時間占比最大。交替編號和錯位命名是兩種巧妙的物理層面優化——它們不改變磁盤的機械結構只是改變了扇區編號在盤面上的排列方式就將旋轉延遲降到了最低。從低級格式化到邏輯格式化的三步走流程完整回答了一塊嶄新的磁盤如何變成能存文件的文件系統——扇區、分區、文件系統層層遞進。