磁盤存儲管理,如何爲文件分配內存

注:本文爲本人讀書總結,內容僅供參考。

一、實物圖

在這裏插入圖片描述

二、原理圖

  • 磁頭(head):每個盤片一般有上下兩面,分別對應1個磁頭,共2個磁頭;
  • 磁道(track):磁道是從盤片外圈往內圈編號0磁道,1磁道…
  • 扇區(sector)數:每個磁道都別切分成很多扇形區域,每道的扇區數量相同;
  • 所有的盤片(一般硬盤裏有多個盤片,盤片之間平行)都固定在一個主軸上。在每個盤片的存儲面上都有一個磁頭,磁頭與盤片之間的距離很小(所以劇烈震動容易損壞),磁頭連在一個磁頭控制器上,統一控制各個磁頭的運動。磁頭沿盤片的半徑方向動作,而盤片則按照指定方向高速旋轉,這樣磁頭就可以到達盤片上的任意位置了。

在這裏插入圖片描述

三、讀取數據的流程

  1. 操作系統發送指令:取0柱面(最外層的所有磁道組成的一個圓柱面),0磁頭(第1個磁頭),1扇區(第一個扇區)的數據
  2. 第1個磁頭移動到第一個柱面(鎖定了一個磁道的數據)
  3. 主軸轉動,轉動到第一個扇區的時候,將數據取出

四、硬盤空間的組織方式(如何爲文件分配內存)

詳細見:磁盤文件管理程序
可以想象,一塊較大的磁盤空間其實是由無數個盤塊組成的,那麼這些盤塊如何組裝成一塊較大的內存來分配給一個文件呢?

  1. 連續:爲每個文件分配一塊連續的空間,各個盤塊相鄰接,第一個盤塊的地址爲a,第二個就是a+1,第三個是a+2 ……
    優點:知道文件的起點和長度便可以像數組一樣隨機存取數據;連續的盤塊基本都在同一個磁道,效率極高;
    缺點:需要事先知道存儲的文件的大小來決定分配哪些連續空間、插入刪除會產生許多碎片化的文件,
  2. 鏈式:屬於一個文件的盤塊通過鏈接成爲一體,每個鏈條的首地址作爲文件地址記錄在相應文件的FCB的“物理地址”字段中。記錄盤塊鏈接的指針顯示地記錄爲一張鏈接表,所有已分配的盤塊號都記錄在其中,稱文件分配表(FAT),爲了提高文件系統訪問速度,FAT一般常駐內存
    缺點:FAT過大,太佔內存,需要遍歷FAT
  3. 索引:每個文件都建一張索引表記錄分配的內存盤塊的信息;
    例如一個索引表定義爲13個地址項:iaddr(0)~iaddr(12),總的來說分爲兩種:直接地址、間接地址
    小文件:
    iaddr(0)~iaddr(9)存放直接地址,即存文件數據的盤塊號;
    中文件:
    iaddr(10)存放單級索引的索引盤塊號;
    大文件:
    iaddr(11)存放二級索引的主索引盤塊號
    iaddr(12)存放三級索引的主索引盤塊號

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章