作業系統學習筆記11 | 生磁碟的使用與管理

2022-09-14 06:01:53

這部分是裝置驅動的最後一部分——磁碟管理,相較於上一篇的鍵盤和顯示器要更復雜,但大致過程基本相同。磁碟管理共有4層抽象,我們將從此學習、掌握裝置驅動的一般研究理念和設計方法。這部分先介紹前2層抽象。


參考資料:

  • 課程:哈工大作業系統(本部分對應 L28)

    因為太多了,所以磁碟管理4層抽象準備分成2~3篇來講。

  • 實驗:作業系統原理與實踐_Linux - 藍橋雲課 (lanqiao.cn)

  • 課本:《作業系統原理、實現與實踐》-李治軍、劉宏偉

    2022-09-13,上了組合與介面課,發現我校的外設驅動是在這個課上講。


1. 磁碟工作原理

我們先讓磁碟使用起來,後面再引入 「管理」 來讓磁碟更好的被使用。

生磁碟就是指直接被驅動的磁碟,與之相應的,熟磁碟就是引入了檔案系統抽象的磁碟。

1.1 生磁碟驅動原理的主幹理解

如下圖所示,像上篇筆記所講的外設一樣,磁碟工作依然基於馮·諾依曼架構:

  • CPU 通過 PCI 匯流排 發出 out 指令讀寫磁碟;
  • 磁碟工作完後向 CPU 發出中斷請求;
  • 後續會將磁碟抽象為檔案檢視。
img

1.2 磁碟結構、容量和分類

使用磁碟,當然要先理解磁碟的結構,如下圖所示:

  • 磁碟是由一個柱子串起很多碟片而組成的立體結構,像一個糖葫蘆串;每個盤面都由許多磁軌組成,碟片上下兩面都是可讀寫的;

    硬碟又劃分為磁頭(Heads)、柱面(Cylinder)、磁區(Sector);

    • 磁碟的存取單位是磁區,即每次讀寫的最小磁碟單元;

    • 磁區大小是 512 位元組;

    • 硬碟容量=磁頭數(同一柱面上的磁片數)×柱面數×磁區數×512 位元組

    • 設計磁碟時,磁區大小是存取時間和碎片浪費的折衷考慮

      這個後續會提。

  • 學到後面的補充:柱面是什麼?

    • 所有盤面中相對位置相同的磁軌組成柱面,即同一圈空心圓柱體。
    • 我們後面所說的尋道,與尋找柱面等價。
  • 旋轉時,利用電流的磁效應,對一些電訊號進行磁化,儲存在磁碟中,用來儲存一些資訊;同樣的,將磁訊號轉化為電訊號,就可以讀出磁碟資訊。

    磁碟的物理原理,詳見:磁碟原理:從電磁感應說起

img

現行磁碟可以作如下分類:

  • 固態硬碟盤

    • SSD,Solid State Disk 或 Solid State Drive;

    • SSD 不算是磁碟,實際上是一種快閃記憶體固態硬碟,其工作原理應當參見 Flash;固態硬碟能夠實現隨機儲存,控制邏輯與機械磁碟完全不一樣;

    • 下面討論的磁碟工作原理也是機械硬碟的。

      參考資料:機械硬碟和ssd固態硬碟的原理對比分析,這篇筆記很詳細。

  • 機械磁碟

    • 根據磁頭是否可以移動
      • 固定頭磁碟(每個磁軌有一個磁頭)
      • 移動頭磁碟(每個盤面有一個磁頭)
      • 這裡我們介紹的是移動頭磁碟
    • 根據盤面是否可更換
      • 固定盤磁碟;
      • 可換盤磁碟;

1.3 磁碟的 I/O 過程

1.3.1 讀寫磁碟

讀取磁碟資訊時,比如讀取磁碟中的一個位元組:

  • 首先是將磁頭移動到指定的磁軌上,此時磁頭不通電(磁片一直有磁);
  • 磁軌開始旋轉,轉到目標位置 / 目標磁區時,磁生電,磁訊號變為電訊號,就通過磁頭導回記憶體緩衝區;
  • =