日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

超详细|一篇搞定操作系统——文件管理

發布時間:2023/12/14 windows 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超详细|一篇搞定操作系统——文件管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 5.1 文件管理概述
  • 5.2 文件結構
    • 5.2.1 文件的邏輯結構
    • 5.2.2 文件的物理結構
  • 5.3 文件目錄管理
  • 5.4 文件的存儲設備
    • 5.4.1 文件的存儲設備
    • 5.4.2 磁盤調度算法
    • 5.4.3 存儲空間的分配與回收
  • 5.5 文件的共享與安全

操作系統全家桶:傳送門
一、操作系統引述:https://blog.csdn.net/diviner_s/article/details/108829327
二、處理器管理:https://blog.csdn.net/diviner_s/article/details/108940809
三、存儲器管理:https://blog.csdn.net/diviner_s/article/details/112245241
四、設備管理:https://blog.csdn.net/diviner_s/article/details/112250905
五、文件管理:https://blog.csdn.net/diviner_s/article/details/112253441
六、用戶接口:https://blog.csdn.net/diviner_s/article/details/112255959

5.1 文件管理概述

一、文件管理基本功能

  • 在現代計算機系統中,要用到大量的程序和數據,因內存容量有限,且不能長期保存,所以把它們以文件的形式存放在外存中,需要時再隨時將它們調入內存。所以在操作系統中又增加了文件管理功能,即構成一個文件系統,負責管理在外存上的文件,并把對文件的存取、共享和保護等手段提供給用戶。這不僅方便了用戶,保證了文件的安全性,還可有效地提高系統資源的利用率。

  • 在現代OS中,是通過文件系統來組織和管理在計算機中存儲的大量程序和數據;即文件系統的管理功能,是通過把它所管理的程序和數據組織成一系列文件的方法來實現的。

  • 文件管理系統,簡稱文件系統。

    • 文件系統 = 文件管理程序 + 它所管理的全部文件 + 文件管理所需的數據結構
    • 文件管理五大功能(用戶角度 + 系統角度):
      1)文件存儲空間管理(即外存管理),分配與回收;
      2)文件目錄管理;
      3)實現邏輯文件到物理文件的轉換和映射;
      4)實現對文件的各種控制操作和存取操作;
      5)實現文件信息的共享,以及文件保密和保護措施。

二、文件系統中的一些概念

  • 1、文件:簡單說文件是指具有文件名的若干相關元素的集合。詳細說文件是具有符號名的、在邏輯上具有完整意義的一組相關信息項的集合,保存在外存上并具有長期保存性。
  • 2、文件系統的核心:是實現對文件的按名存取。
  • 3、文件的屬性:文件類型、長度、建立時間、存取控制等
  • 4、文件的訪問單位:位、字節、數據項、記錄等
  • 5、數據項:數據項是最低級的數據組織形式,分為兩種:
    • 1)基本數據項。這是用于描述一個對象的某種屬性的字符集,是數據組織中可以命名的最小邏輯數據單位,即原子數據,又稱為數據元素或字段。它的命名通常和其屬性一致。例如,用于描述一個學生的基本數據項有學號、姓名、年齡、班級等。
    • 2)組合數據項。它是由若干個基本數據項組成的,簡稱組項。例如,班長便是一個組項,它由正班長和副班長兩個基本項組成。又如,工資也是一個組項,它可由基本工資、績效工資和補助組成。
    • 基本數據項除了數據名外,還應有數據類型。因為基本項僅是描述某個對象的屬性,根據屬性的不同,需要用不同的數據類型來描述。

6、記錄:記錄是一組相關數據項的集合,用于描述一個對象在某方面的屬性。一個記錄應包含哪些數據項,取決于需要描述對象的哪些方面。而一個對象由于他所處的環境不同可把他作為不同的對象。

  • 例如,一個14歲的青少年,把他作為一個學生時,對他的描述應使用學號、姓名、年齡、班級等數據項。但若把他作為一個醫療對象,對他描述的數據項應使用病例號、姓名、性別、身高、體重及病史等項。
  • 在諸多記錄中,為了能唯一的標識一個記錄,必須在一個記錄的各個數據項中,確定出一個或幾個數據項,把它們的集合稱為關鍵字(key)。或者說,關鍵字是唯一能標識一個記錄的數據項。通常,只需用一個數據項作為關鍵字。

7、文件、記錄和數據項之間的層次關系:

三、文件類型

  • 根據不同角度,可以將文件劃分為不同類別。
  • 1、按性質和用途可分為:
    • 1)系統文件:如內核,系統應用程序,數據;只允許用戶執行,不能讀寫和修改。
    • 2)庫文件:只允許讀和執行,如C子程序庫。
    • 3)用戶文件:由用戶建立的文件,如源程序、目標程序和數據文件等。只允許文件所有者和所有者授權用戶使用。

2、按信息的保存期限可分為:

  • 1)臨時文件:即記有臨時性信息的文件。用于系統在工作過程中產生的中間文件,一般有暫存的目錄。正常工作情況下,工作完畢會自動刪除,一旦有異常情況往往會殘留不少臨時文件。
  • 2)永久性文件:其信息需要長期保存的文件。指一般受系統管理的各種系統和用戶文件,經過安裝或編輯、 編譯生成的文件,存放在軟盤、硬盤或光盤等外存上。
  • 3)檔案文件:系統或一些實用工具軟件包在工作過程中記錄在案的文檔資料文件,以便查閱歷史檔案。

3、按文件中數據的形式可分為:

  • 1)源文件:由源程序和數據構成的文件。通常由終端或輸入設備輸入的源程序和數據所形成的文件都屬于源文件。
  • 2)目標文件:把源程序經過相應語言的編譯程序編譯過,但尚未經過鏈接程序鏈接的目標代碼所構成的文件。它屬于二進制文件。通常,目標文件所使用的后綴名是“.obj”。
  • 3)可執行文件:把編譯后所產生的目標代碼再經過鏈接程序鏈接后所形成的文件。

4、按存取控制屬性可分為:

  • 1)只執行文件:只允許被核準的用戶調用執行,既不允許讀,更不允許寫。
  • 2)只讀文件:只允許文件主及被核準的用戶去讀,但不允許寫。
  • 3)讀寫文件:允許文件主和被核準的用戶去讀或寫的文件。
  • 4)無保護文件。
  • 各個操作系統的保護方法和級別有所不同:DOS操作系統有系統、隱藏、可寫三種保護;UNIX或Linux操作系統有九個級別的保護。

5、按文件的邏輯結構可分為:

  • 1)有結構文件(記錄式文件):由若干個記錄所構成的文件,如大量的數據結構和數據庫。
  • 2)無結構文件(流式文件):直接由字符序列所構成的文件,文件長度為所含字符數。如大量的源程序,可執行程序,庫函數。

6、按文件的物理結構可分為:

  • 1)順序文件(連續文件):文件中的記錄,順序地存儲到連續的物理盤塊中,順序文件中所記錄的次序,與它們存儲在物理介質上存放的次序是一致的。
  • 2)鏈接文件:文件中的記錄可存儲在并不相鄰接的各個物理塊中,通過物理塊中的鏈接指針組成一個鏈表管理。
  • 3)索引文件:文件中的記錄可存儲在并不相鄰接的各個物理塊中,記錄和物理塊之間通過索引表項按關鍵字存取文件,通過物理塊中的索引表管理,形成一個完整的文件。
  • 4)Hash文件:通過散列函數實現存儲的文件。

7、按文件的內容形式和系統處理方式可分為:

  • 1)普通文件:由ASCII碼或二進制碼組成的文件。一般用戶建立的源程序文件、數據文件、目標代碼文件及操作系統自身代碼文件、庫文件等都是普通文件,它們通常存儲在外存儲設備上。
  • 2)目錄文件:由文件目錄組成的,用來管理和實現文件系統功能的系統文件,通過目錄文件可對其它文件的信息進行檢索。目錄文件也是由字符序列構成,可進行與普通文件一樣的各種操作。
  • 3)特殊文件(設備文件):特指系統中的各類I/O設備。為了便于統一管理,系統將所有的輸入/輸出設備都視為文件,按文件方式提供給用戶使用。

四、文件擴展名與文件屬性

1、用戶對文件是“按名存取”的。很多操作系統支持的文件名都由兩部分構成:文件名和擴展名,二者間用圓點分開。

2、常用圖像文件類型

  • BMP格式:Bitmap(位圖),Windows操作系統中的標準圖像文件格式,包含的圖像信息較豐富,幾乎不進行壓縮,缺點是占用磁盤空間過大
  • GIF格式:圖形交換格式,壓縮比高,磁盤空間占用較少,支持簡單2D動畫
  • JPEG格式(擴展名為.jpg或.jpeg):高度壓縮,圖像的顏色質量有所降低,設計師不會選用這種格式,但報業用戶使用的較多
  • JPEG2000格式:與JPEG相比,它具備更高壓縮率以及更多新功能的新一代靜態影像壓縮技術。
  • TIFF格式:是Mac中廣泛使用的圖像格式,特點是圖像格式復雜、存貯信息多,非常有利于原稿的復制
  • PSD格式:Photoshop的專用格式,在Photoshop所支持的各種圖像格式中,PSD的存取速度比其它格式快很多,功能也很強大
  • PNG格式:PNG是目前最不失真的格式,汲取了GIF和JPG二者的優點,存貯形式豐富,能把圖像文件壓縮到極限,利于網絡傳輸,又能保留與圖像品質有關的信息,缺點是不支持動畫應用效果
  • SWF格式:Flash制作出一種后綴名為SWF(Shockwave Format)的動畫,適合網絡傳輸,放大不失真

3、常用聲音文件類型

  • CD格式:天籟之音,近似無損的,基本上是忠于原聲,*.cda
  • WAV:無損的音樂,微軟公司開發,WAV格式的聲音文件質量和CD相差無幾
  • MP3:流行的風尚,誕生于八十年代的德國,文件尺寸小,音質好
  • MIDI:作曲家的最愛
  • WMA:最具實力的敵人,音質要強于MP3格式,更遠勝于RA格式

4、常用視頻文件類型

  • AVI格式:最清晰的、最常用的
  • DV-AVI格式:攝像機采集常用
  • MPEG格式:MPEG-1 、MPEG-2 、MPEG-4
  • DivX格式(DVDrip)
  • RM格式:用的少了
  • RMVB格式:比RM清晰些,一部大小為700MB左右的DVD影片,轉錄成同樣視聽品質的RMVB格式,最多也就400MB左右,具有內置字幕和無需外掛插件支持

5、文件屬性:描述文件特征的屬性

五、文件系統模型

  • 文件系統模型:模型分為三個層次,最底層是對象及其屬性說明;中間層是對對象進行操縱和管理的軟件集合,最高層是文件系統提供給用戶的外文件系統接口。

1、對象及其屬性說明:文件管理系統管理的對象有三種

  • 1)文件。文件管理的直接對象。
  • 2)目錄。為了方便用戶對文件的存取和檢索,在文件系統中必須配置目錄,每個目錄項中,必須含有文件名及該文件所在的物理地址(或指針)。對目錄的組織和管理是方便用戶和提高對文件存取速度的關鍵。
  • 3)磁盤(磁帶)存儲空間。文件和目錄要占用存儲空間,對這部分空間的有效管理,不僅能提高外存的利用率,而且能提高對文件的存取速度。

2、對對象操縱和管理的軟件集合:是文件管理系統的核心部分,文件系統的功能大多是在這一層實現的,包括:對文件存儲空間的管理、對文件目錄的管理、用于將文件的邏輯地址轉換為物理地址的機制、對文件讀和寫的管理,以及對文件的共享與保護等功能。

  • 1)輸入輸出控制層:也叫設備驅動程序層,負責啟動輸入輸出操作、對設備發來的輸入輸出信號進行處理。
  • 2)基本文件系統:也叫物理輸入輸出層,用于處理主存與磁盤間數據塊的交換。
  • 3)基本輸入輸出管理程序:也叫文件組織模塊,負責與磁盤輸入輸出有關的事務,如選擇設備、邏輯塊號到物理塊號的轉換、空閑盤塊的管理、輸入輸出緩沖的指定。
  • 4)邏輯文件系統:負責文件和記錄的相關操作。

3、文件系統接口:

  • 為方便用戶使用文件系統,文件系統通常向用戶提供兩種類型的接口:
    1)命令接口(命令行/圖形):作為用戶與文件系統交互的接口。用戶可通過鍵盤終端鍵入命令或使用圖標菜單等,取得文件系統的服務。
    2)程序接口:作為用戶程序與文件系統的接口。用戶程序可通過系統調用來取得文件系統的服務。

六、常見文件系統的類型

  • exFAT:擴展FAT,適合閃存、U盤。

  • EXT2、EXT3、EXT4:Linux采用的文件系統

  • HFS:分層文件系統,Mac OS使用,最初被設計用于軟盤和硬盤,同時也可以在在只讀媒體如CD-ROM上見到。

  • RAW:磁盤未經處理或者未經格式化產生的的文件系統。造成原因:

    • 未格式化
    • 硬盤出現壞道
    • 病毒
  • FAT文件系統:FAT(文件分配表)是一個主要的計算機檔案系統應用于各種操作系統中,主要用于DOS中,包括DR-DOS、OpenDOS、freeDOS、MS-DOS、Windows(Windows Me及Windows Me之前的Windows操作系統),FAT同樣適用于可移動閃存盤和存儲卡。

    • 下面的表顯示設備應該在什么的FAT系統下格式化:
  • NTFS文件系統:NTFS是基于Windows NT的文件系統,包括Windows 2000、Windows XP、Windows Server 2003、和Windows Server 2008及后續系統。NTFS是為Windows系統中的驅動器所設計(硬盤驅動器及固態硬盤驅動器)。NTFS有幾項改進,如改進的FAT支持元數據和使用先進的數據結構來改善性能,可靠性和磁盤空間的利用,再加上額外的擴展,如安全訪問控制列表和文件系統日志。

    • 注意:NTFS格式的設備無法在MAC的電腦上寫入數據。大多數MAC電腦能讀取NTFS,但是不能寫入。NTFS是一個日志文件系統,它會產生更多的讀或寫的活動,因此可能會減少閃存盤的壽命。一旦設備被格式化成NTFS格式,你必須使用“安全移除硬件”。
    • NTFS的四大優點:
      1)具備錯誤預警的文件系統:如果MFT(主文件表)所在的磁盤扇區恰好出現損壞,NTFS文件系統會比較智能地將MFT換到硬盤的其他扇區,保證了文件系統的正常使用。
      2)文件讀取速度更高效
      3)磁盤自我修復功能:NTFS文件系統每次讀寫時,都會檢查扇區正確與否。當讀取時發現錯誤,NTFS會報告這個錯誤;當向磁盤寫文件時發現錯誤,NTFS將會十分智能地換一個完好位置存儲數據,操作不會受到任何影響。在這兩種情況下,NTFS都會在壞扇區上作標記,以防今后被使用。
      4)事件日志功能

5.2 文件結構

  • 文件組織的兩種觀點:
    • 用戶觀點(文件的邏輯結構):研究的是用戶思維中的抽象文件,也叫邏輯文件。其目的是為用戶提供一種結構清晰、使用簡便的邏輯組織。用戶按此去存儲、檢索和加工處理有關文件信息。
    • 實現觀點或系統觀點(文件的物理結構):研究的是存儲在物理設備介質上的實際文件,即物理文件。其目的是選擇一些性能良好、設備利用率高的物理結構。系統按此和外部設備打交道,控制信息的傳輸。

5.2.1 文件的邏輯結構

一、文件的邏輯結構分類

按邏輯結構,文件有無結構文件和有結構文件兩種類型。

1、無結構文件(流式文件)

  • 數據按順序組織并積累保存,由字符流構成的文件,文件長度按字節計算。
  • 大量的源程序、可執行文件、庫函數等,所采用的就是流式文件。
  • 在空間利用上較節省,沒有額外的說明和控制信息。
  • 流式文件使用戶可以靈活組織文件結構,對OS來說 管理方便。
  • 在UNIX系統中,所有的文件都被看作是流式文件。

2、有結構文件(記錄式文件)

  • 構成文件的基本單位是記錄,記錄式文件是一組有序記錄的集合,按順序編號,可以按記錄號訪問。
  • 記錄是一個具有特定意義的信息單位,可以指定關鍵字,按關鍵字進行訪問。
  • 記錄式文件可把記錄按各種不同的方式排列,以便用戶對文件中的記錄進行修改、追加、查找和管理。

二、有結構文件的分類

1、有結構文件按記錄的長度可分為:定長記錄文件和變長記錄文件

  • 1)定長記錄文件(常用):
    所有記錄長度相等;
    檢索方便,根據記錄號i及記錄長度l;
    存儲空間浪費大。
  • 2)變長記錄文件:
    各個記錄長度不等;
    只能順序查找;
    存儲空間浪費小。

2、有結構文件按記錄的組織形式可以分為:

  • 1)順序文件:文件中的記錄一個接一個地順序排列,記錄可以是定長的或變長的,可以順序存儲或以鏈表形式存儲,在訪問時需要順序搜索文件。順序文件有以下兩種結構:

    • ① 第一種是串結構,記錄之間的順序與關鍵字無關。通常的辦法是由時間決定,即按存入時間的先后排列,最先存入的記錄作為第1個記錄,其次存入的為第2個記錄,依此類推。
    • ② 第二種是順序結構,文件中所有記錄按關鍵字順序排列。
    • 在對記錄進行批量操作時,即每次要讀或寫一大批記錄,對順序文件的效率是所有邏輯文件中最高的;此外,也只有順序文件才能存儲在磁帶上,并能有效地工作,但順序文件對查找、修改、增加或刪除單個記錄的操作比較困難。
  • 2)索引文件:

    • 記錄式文件,特別是變長記錄文件只能順序查找,系統開銷較大。可以建立一張索引表加快檢索速度,索引表本身是定長記錄的順序文件。在記錄很多或是訪問要求高的文件中,需要引入索引以提供有效的訪問。實際中,通過索引可以成百上千倍地提高訪問速度。
  • 3)索引順序文件:索引順序文件是順序和索引兩種組織形式結合。索引順序文件將文件中的所有記錄分為若干個組,同組中關鍵字可以無序,但組與組之間關鍵字必須有序。為分組的順序文件建立一張索引表,在索引表中為每組中的第一個記錄建立一個索引項,其中含有該記錄的關鍵字值和指向該記錄的指針。
    主文件包含關鍵字和其他數據項。索引表只包含關鍵字和指針兩個數據項,所有關鍵字遞增排列。查找一個記錄時,通過索引表找到其所在的組,然后在該組中使用順序查找找到記錄。

    對于含有N個記錄的順序文件,查找某關鍵字值的記錄時平均需要查找N/2次。在索引順序文件中,假設N個記錄分為M組,索引表中有M個表項,每組有N/M個記錄,在查找某關鍵字值的記錄時,先順序查找索引表,需要查找M/2次,然后再在主文件中對應的組中順序查找,也需要查找N/M/2次,這樣總共查找M/2+N/M/2次。顯然,索引順序文件提高了查找效率,如果記錄數很多,可以釆用兩級或多級索引。索引文件和索引順序文件都提高了存取速度,但因為配置索引表增加了存儲空間。

5.2.2 文件的物理結構

  • 文件的物理結構:是指文件的內部組織形式,亦即文件在物理存儲設備上的存放方法,是從系統的角度來看文件。
  • 文件的物理結構決定了文件信息在存儲設備上的存儲位置,因此,文件信息的邏輯塊號到物理塊號的轉換也是由文件的物理結構決定的。
  • 文件的存取方式也與文件的物理結構有關。
  • 常用的文件物理結構有4種。

一、文件的訪問方式

  • 用戶通過對文件的存取來完成對文件的各種操作,文件的存取方式是由文件的性質和用戶使用文件的情況而確定的,一般有兩種方式:順序存取和隨機存取:

1、順序存取:就是按前后次序依次訪問文件的各個信息項。要訪問第i+1條記錄,必須先訪問第i條記錄。

  • 對記錄式文件,是按記錄的排列順序來存取,如當前讀取的記錄為Ri,則下一次讀取的記錄被自動地確定為Ri+1。

  • 對流式文件,順序存取反映讀寫指針的變化,在存取完一段信息后,讀寫指針自動指出下次存取的位置。

  • 1)對定長記錄文件,有 rpi+1= rpi + l
    順序存取定長記錄文件示意圖:

  • 2)對變長記錄文件 rpi+1 = rpi + li ,li是第i個記錄的長度。
    順序存取變長記錄文件示意圖:

  • 順序存取的優缺點:

    • 順序存取的最佳應用是對記錄進行批量存取,即每次要讀或寫一大批記錄時,順序存取的效率很高。適合數據統計和匯總
    • 如果用戶要查找或修改單個記錄,系統需要逐個查找記錄。這時,順序存取的性能就比較差,尤其是當文件較大時,情況更為嚴重。不適合用戶隨機查找、增加或刪除記錄。

2、隨機存取:又稱直接存取,允許用戶直接存取文件中的任一記錄,或者是根據存取命令把讀寫指針移到指定處讀寫。

  • 隨機存取定長記錄文件示意圖:
  • 隨機存取方式允許以任意順序讀取文件中的字節或記錄,要設置讀/寫指針的當前位置
  • 隨機方式下讀/寫等操作都以塊號為參數(**按地址存取)

二、文件的物理結構

主要有四種物理結構:

  • 順序結構 鏈接結構
  • 索引結構 散列結構

1、順序結構(連續結構):是一種最簡單的物理結構,它把邏輯上連續的文件信息依次存放在連續編號的物理塊中。

  • 只要知道文件在存儲設備上的起始地址(首塊號)和文件長度(總塊數),就能很快地進行存取。順序存取效果好,也一定程度支持隨機存取。
  • 優點:結構簡單,訪問速度快。
  • 缺點:文件長度動態增加困難,不適合某些需要經常修改的文件。
  • 文件的順序結構示意圖:

2、鏈接結構:這種結構將邏輯上連續的文件分散存放在若干不連續的物理塊中,每個物理塊設有一個指針,指向其后續的物理塊。

  • 只要指明文件的第一個塊號,就可以按鏈指針檢索整個文件(隱式鏈接)。
  • 優點:文件長度容易動態變化,
  • 缺點:指針占用存儲空間,適合依據指針順序存取,不適合隨機存取訪問。
  • 文件的鏈接結構示意圖:
  • 如果系統將鏈接指針全都拿出來集中存放,統一進行管理
  • 這就是FAT(文件分配表)(也稱為顯式鏈接方式)。
  • FAT鏈接分配方式的問題:1)不能支持高效的直接存取。要對一個較大的文件進行直接存取,須首先在FAT中順序地查找許多盤塊號。2)FAT需占用較大的內存空間。

3、索引結構:采用這種結構,邏輯上連續的文件存放在若干不連續的物理塊中,系統為每個文件建立一張索引表,索引表記錄文件信息所在的邏輯塊號和與之對應的物理塊號。

  • 索引表也以文件的形式存在磁盤上。
    給出索引表的地址,就可以查找與文件邏輯塊號對應的物理塊號。
    如果索引表過大,會占用較多空間。
    可以采用多級索引結構,將一個大文件的所有索引表(二級索引)的地址放在另一個索引表(一級索引)中。
  • 二級索引(或多級索引):
  • 二級索引分配:
  • 優點:訪問速度快,文件長度可動態變化,適合隨機存取,順序存取性能也可以。
  • 缺點:存儲開銷大,因為每個文件有一個索引表,而索引表亦由物理塊存儲,故需要占用額外的外存空間。另外,當文件被打開時,索引表需要讀入內存,否則訪問速度會降低一半,故又需要占用額外的內存空間,當同時打開的文件很多時,內存開銷是可觀的。這種結構限制了文件的最大長度。

4、散列結構:又稱雜湊結構或Hash結構,其只適用于定長記錄文件和按記錄鍵隨機存取的訪問方式。散列結構的思想是:通過計算來確定一個記錄在存儲設備上的存儲位置,依次先后存入的兩個記錄在物理設備上不一定相鄰。

  • 按散列結構組織文件的兩個關鍵問題是:
    1)定義散列函數
    2)解決沖突

三、記錄的成組與分解

  • 磁盤塊的大小是預先劃分好的,大小固定;而邏輯記錄大小是用戶決定的;邏輯記錄大小往往與物理塊大小不一致,因此,引入記錄的成組和分解。
  • 1、記錄的成組:把若干個邏輯記錄合成一組存放一塊的工作。進行成組操作時必須使用主存緩沖區,緩沖區的長度等于邏輯記錄長度乘以成組的塊因子。記錄的成組可以提高存儲空間的利用率;減少啟動外設的次數,提高工作效率。
  • 2、記錄的分解:從一組邏輯記錄中把一個邏輯記錄分離出來的操作。進程是先從磁盤中找到記錄所在的塊,并將本塊讀入主存緩沖區,再從緩沖區取出所需要的記錄送到用戶工作區。如果用戶所需的記錄已經在緩沖區中,則不需要啟動外設讀塊信息,這也可以提高系統工作效率。
    邏輯記錄不能跨越兩個塊:通常設計的邏輯記錄的長度與物理塊的長度是有整數倍數的。如果一個邏輯記錄占用了兩個物理塊的尾部和首部,那么這種方式讀取效率是大打折扣,即要讀入兩個物理塊才能讀取這個邏輯記錄。

    C,B,D,A

5.3 文件目錄管理

  • 計算機系統中保存有許多文件,用戶在創建和使用文件時只給出文件的名字,由文件系統根據文件名找到指定文件。為了便于對文件進行管理,設計了文件目錄,用于檢索系統中的所有文件。
  • 文件系統的一個最大特點是“按名存取”,只要給出文件的符號名就能存取外存空間的文件信息,而不必關心文件的具體物理地址。實現文件符號名到文件物理地址映射的主要環節是檢索文件目錄。

一、文件目錄的基本概念

1、文件的組成

  • 文件由文件體和文件控制塊(FCB)兩部分。文件控制塊FCB是系統為管理文件而設置的一個數據結構。
  • FCB是文件存在的標志。

2、文件控制塊(FCB):文件控制塊是用來存放文件各種信息的數據結構,以實現“按名存取”。FCB的有序集合稱為文件目錄,一個FCB就是一個文件目錄項。為了創建一個新文件,系統將分配一個FCB并存放在文件目錄中,成為目錄項。

  • FCB主要包含以下信息:
    1)基本信息:如文件名、文件的物理位置、文件的邏輯結構、文件的物理結構等。
    2)存取控制信息:如文件存取權限等。
    3)使用信息:如文件建立時間、修改時間等。

3、文件目錄:文件與文件控制塊是一一對應的,把所有FCB組織在一起,就構成了文件目錄,即文件控制塊的有序集合。給該目錄也設定一個文件名,就可以通過查找文件目錄找到該文件對應的目錄項(即FCB)。

  • 文件目錄一般有一級目錄結構、二級目錄結構和多級目錄結構。
  • 目錄文件:文件目錄是需要長期保存的,為了實現文件目錄的管理,通常將文件目錄以文件的形式保存在外存空間,這個文件就被稱為目錄文件。目錄文件是長度固定的記錄式文件。

4、索引節點:在檢索目錄文件的過程中,只用到文件名,僅當找到一個目錄項(查找文件名與目錄項中文件名匹配)時,才需要從該目錄項中讀出該文件的物理地址。就是在檢索目錄時,文件的其他描述信息不會用到,也不需調入內存。因此,有的系統(如UNIX)釆用文件名和文件描述信息分開的方法,文件描述信息單獨形成一個稱為索引結點的數據結構,簡稱為i結點。在文件目錄中的每個目錄項僅由文件名和指向對應的i結點的指針構成。

  • 例如:一個FCB的大小是64字節,盤塊大小是1KB,每個盤塊中可以存放16個FCB(FCB必須連續存放)。而在UNIX系統中一個目錄項僅占16字節,其中14字節是文件名,2字節是i結點指針。在1KB的盤塊中可存放64個目錄項。這樣,可使查找文件時平均啟動磁盤次數減少到原來的1/4,大大節省了系統開銷。

    DOS目錄項示意圖:
    UNIX目錄項示意圖:

二、一級目錄

  • 整個系統設置一張線性目錄表,表中包括了所有文件的文件控制塊,每個文件控制塊都指向一個普通文件。
  • 一級目錄結構的優點是簡單。
  • 一級目錄結構的缺點:
    1)查找速度慢
    2)不允許重名
    3)不便于實現文件共享
  • 一級目錄結構示意圖:

三、二級目錄

  • 把文件目錄分成兩級,第一級稱為主文件目錄(MFD),第二級稱為用戶文件目錄(UFD)。每個用戶在主文件目錄中都有一個登記項,記錄了用戶和該用戶的用戶文件目錄的物理地址。而在用戶文件目錄中,存放該用戶每一個文件的文件控制塊。 二級目錄結構實現了文件從名字空間到外存地址空間的映射:用戶名→文件名→文件內容。
    • 優點:1)有利于文件的管理、共享和保護;
      2)適用于多用戶系統;
      3)不同的用戶可以命名相同文件名的文件,不會產生混淆,解決了命名沖突問題。
    • 缺點:不能對文件分類,用戶文件較多時查找速度慢。
  • 二級目錄結構示意圖:

四、多級目錄

  • 多級目錄結構是對二級目錄結構的進一步改進,又稱樹型目錄結構,產生于UNIX系統。
  • 其中:樹葉結點表示普通文件(用圓圈表示),非葉結點表示目錄文件(用矩形表示)。

  • 樹根結點稱為根目錄,根目錄是惟一的,由它開始可以查找到所有其他目錄文件和普通文件,根目錄一般可放在內存。
  • 從根結點出發到任一非葉結點或樹葉結點都有且僅有一條路徑,該路徑上的全部分支組成了一個全路徑名。采用多級目錄結構時,文件名為一個路徑名。
  • 多級目錄結構的優點是便于文件分類,可為每類文件建立一個子目錄;查找速度快,因為每個目錄下的文件數目較少;可以實現文件共享。
  • 多級目錄結構的缺點是比較復雜,查找一個文件按路徑名逐層檢查,由于所有文件都放在外存,多次讀取磁盤影響速度。
  • 當前目錄:為了提高文件檢索速度,文件系統向用戶提供了一個當前正在使用的目錄,稱為當前目錄(也稱工作目錄)。
  • 查找一個文件可從當前目錄開始,使用部分路徑名,又稱為“相對路徑”。當前目錄可根據需要任意改變,當前目錄一般存放在內存。
  • 絕對路徑名:又稱全路徑名,是指從根目錄開始到達所要查找文件的路徑名。 (root)/usr/ml/prog/f1.c
  • 相對路徑名:是從當前目錄的下級開始書寫,如當前目錄是/usr/ml,則有: prog/f1.c

五、Windows和Linux目錄結構的差異
1、系統默認目錄的差異

  • 1)Windows安裝完成后,會自動建立三個目錄:
    分別是:C:\Documents and Settings
    C:\Program Files
    C:\WINDOWS
  • 2)Linux系統安裝完成后,會創建更多的默認目錄:
    /home目錄:用來放置每個帳戶的主目錄
    /mnt目錄:有/cdrom與/floppy兩個子目錄
    /tmp目錄:全部用戶和應用程序的臨時文件
    /etc目錄:系統命令相關的配置文件

2、“/”與“\”兩個符號的差異

  • 1)Windows操作系統中,要表示文件或者目錄的路徑時,其目錄名稱之間是以\(反斜杠)作為表示的。
  • 2)在Linux操作系統中,無論將硬盤分為多少個區,每個分區中的文件及目錄,都可以在根目錄下,在該分區的加載目錄中找到。而根目錄的標識方法為/(正斜杠)。

3、大小寫的差異以及查詢上的不同

  • 1)Windows中,c:\U01與c:\u01兩個目錄是等價的。
  • 2)Linux中,/u01與/U01兩個目錄代表不同的目錄。為了便于管理,建議在Linux下面建立文件夾時,最好都能夠采用小寫字母。大寫字母主要用來表示一些特殊的文件夾。如Desktop,它表示用戶的桌面文件,由系統建立。

5.4 文件的存儲設備

5.4.1 文件的存儲設備

  • 常用的文件存儲設備有:磁盤、磁帶、光盤等。
  • 存儲設備的性質決定了文件的存取方式。
  • 為了有效地利用文件存儲設備和便于對文件信息進行處理,通常把文件的存儲空間劃分成若干個大小相等的物理塊,同時,為了便于管理,也將文件劃分同樣等長的邏輯塊,并以塊作為分配和內外存之間傳送信息的基本單位。塊長度是固定的,一般塊長是512字節或1024字節。
  • 文件存儲設備可分為兩類:順序存取設備和直接存取設備。

一、文件存儲設備的類型

1、順序存取設備:順序存取設備是按信息的物理位置進行定位和讀寫操作的存儲設備。只有在前面的物理塊被存取訪問之后,才能存取后續的物理塊。

  • 1)磁帶是一種典型的順序存取設備。磁帶是以磁帶上的位置來標識磁帶上的數據塊,兩個相鄰的物理塊之間一般有一個間隙。
  • 2)磁帶的存儲特性:
    ① 是順序存取設備,總是從磁頭當前位置開始讀寫。
    ② 磁帶上的塊不是由地址來標識,是由其在磁帶上的位置來識別的。
    ③ 塊和塊之間有間隙,通過間隙區別物理塊。
    ④ 磁帶存取速度與信息密度、磁帶帶速和塊間間隙大小有關。帶速越高、信息密度越大、塊間間隙越小,磁帶存取速度越快。
    ⑤ 磁帶容量大,使用順序存取方式時速度快,使用隨機存取方式效率低。
  • 3)磁帶的優缺點:
    • 缺點:由磁帶的讀寫方式可知,只有當第i塊被存取之后,才能存取第i+l塊。因此,某個物理塊距離磁頭當前位置很遠時,則要花費很長的時間 “走帶”,使該塊移動到磁頭位置。
    • 優點:容量大,順序存取方式時速度高。
    • 應用:主要用于后備存儲(備份),存儲不常用的信息(歸檔),或用于傳遞數據的介質。

2、隨機存取設備:

  • 隨機存取設備,也稱為直接存取設備,是允許直接存取對應存儲介質上任意物理塊的存儲設備。
  • 磁盤是一種典型的隨機存取設備。磁盤機有若干磁盤片組成,盤片沿一個固定方向高速旋轉,每個盤面對應一個磁頭,所有的磁頭被固定在一個磁臂上,所有磁頭可以沿半徑方向同時移動。
  • 常見的隨機存取設備有:硬盤、軟盤(現在幾乎不再使用)、光盤、U盤、閃存盤、移動硬盤等。

1)硬盤:硬盤結構

硬盤:硬盤的發展史

  • 1956年9月13日,IBM的IBM 350 RAMAC是現代硬盤的雛形,整個硬盤需要50個直徑為24英寸表面涂有磁漿的盤片,它相當于兩個冰箱的體積,存儲容量只有5MB。
  • 1971年,IBM開始采用一種名叫Merlin的技術生產硬盤,這種技術據稱能使硬盤頭更好地在盤片上索引。
  • 1973年,IBM 3340問世,主流采用紅色。每平方英寸存儲1.7MB的數據。許多公司共享這些系統,按照時間和存儲空間租用它。價格為7.81美元每兆,這個價格比當時汽油的價格還貴38%。它擁有“溫徹斯特”這個綽號,也就是現在所熟知的“溫氏架構”。來源于它兩個30MB的存儲單元,是當時出名的“溫徹斯特來福槍”的口徑和填彈量。至此,硬盤的基本架構被確立。
  • 1979年,IBM發明了Thin Film磁頭,使硬盤的數據定位更加準確,因此使得硬盤的密度大幅提升。
  • 1980年,兩位前IBM員工創立的公司開發出5.25英寸規格的5MB硬盤,這是首款面向臺式機的產品,而該公司正是希捷公司(Seagate)公司。
  • 1982年,日立發布了全球首款容量超過1GB的硬盤。這就是容量為1.2GB的H-8598硬盤。這塊硬盤擁有10片14英寸盤片,兩個讀寫磁頭。
  • 1980年代末,IBM推出MR(Magneto Resistive磁阻)技術令磁頭靈敏度大大提升,使盤片的存儲密度較之前的20Mbpsi(bit/每平方英寸)提高了數十倍,該技術為硬盤容量的巨大提升奠定了基礎。1991年,IBM應用該技術推出了首款3.5英寸的1GB硬盤。
  • 1970到1991年,硬盤碟片存儲密度以每年25%~30%的速度增長;從1991年開始增長到60%~80%;現速度提升到100%甚至200%。從1997年開始的驚人速度提升得益于IBM的GMR(Giant Magneto Resistive,巨磁阻)技術,它使磁頭靈敏度進一步提升,進而提高了存儲密度。
  • 1993年,康諾(Conner Peripherals)推出了CP30344硬盤容量是340MB。
  • 1995年,為了配合Intel的LX芯片組,昆騰與Intel攜手發布UDMA 33接口—EIDE標準將原來接口數據傳輸率從16.6MB/s提升到了33MB/s。同年,希捷開發出液態軸承(FDB,Fluid Dynamic Bearing)馬達。所謂的FDB就是指將陀螺儀上的技術引進到硬盤生產中,用厚度相當于頭發直徑十分之一的油膜取代金屬軸承,減輕了硬盤噪音與發熱量。
  • 1998年2月,UDMA 66規格面世。
  • 2003年1月,日立宣布完成20.5億美元的收購IBM硬盤事業部計劃,并成立日立環球存儲科技公司(Hitachi GST)。
  • 2005年日立環儲和希捷都宣布了將開始大量采用磁盤垂直寫入技術,原理是將平行于盤片的磁場方向改變為垂直(90度),更充分地利用的存儲空間。
  • 2007年1月,日立環球存儲科技宣布發售全球首只1Terabyte的硬盤,比預定時間遲了一年多,售價為399美元,平均每美分可以購得27.5MB硬盤空間。2011年3月,西部數據以43億美元的價格,收購日立環球存儲科技。

硬盤:硬盤制造廠商

  • 希捷:全球第二大硬盤制造商,2005年并購邁拓(Maxtor)、2011年收購三星旗下硬盤業務
  • 西部數據(Western Digital):總部位于美國加州,收購日立后成為硬盤老大
  • 日立(HITACHI):2002年并購IBM硬盤業務,2011年被西數收購
  • 東芝(TOSHIBA)

硬盤:硬盤結構

  • 硬盤正面貼有產品標簽,主要包括廠家信息和產品信息,如商標、型號、序列號、生產日期、容量、參數和設置方法等。
  • 硬盤主要由盤體、控制電路板和接口部件等組成。盤體是一個密封的腔體。硬盤的內部結構通常是指盤體的內部結構;控制電路板上主要有硬盤BIOS、硬盤緩存(即CACHE)和主控制芯片等單元;硬盤接口包括電源插座、數據接口和主、從跳線。


硬盤:硬盤結構

  • 電源插座連接電源,為硬盤工作提供電力保證。數據接口是硬盤與主板、內存之間進行數據交換的通道,使用一根40針40線(早期)或40針80線(當前)的IDE接口電纜進行連接。新增加的40線是信號屏蔽線,用于屏蔽高速高頻數據傳輸過程中的串擾。中間的主、從盤跳線插座,用以設置主、從硬盤,即設置硬盤驅動器的訪問順序。其設置方法一般標注在盤體外的標簽上,也有一些標注在接口處,早期的硬盤還可能印在電路板上。

  • 此外,在硬盤表面有一個透氣孔,它的作用是使硬盤內部氣壓與外部大氣壓保持一致。由于盤體是密封的,所以,這個透氣孔不直接和內部相通,而是經由一個高效過濾器和盤體相通,用以保證盤體內部的潔凈無塵,使用中注意不要將它蓋住。

  • 硬盤主要由盤體、控制電路板和接口部件組成。盤體就是一個密封,封裝了多個盤片的腔體;控制電路包含硬盤BIOS,主控芯片和硬盤緩存等單元;接口部件包含電源、數據接口主從跳線等。

  • 硬盤的盤片一般采用合金材料,多數為鋁合金(IBM曾經開發過玻璃材質的盤片,現在有些廠家也生產玻璃材質的盤片,但不多見),盤面上涂著磁性材料,片厚一般在0.5mm左右,直徑主要有1.8in(1in=25.4mm)、2.5in、3.5in和5.25in 4種,其中2.5in和3.5in盤片應用最廣。盤片的轉速與盤片大小有關,考慮到慣性及盤片的穩定性,盤片越大轉速越低。2.5in硬盤的轉速在5400r/min~7200r/min之間;3.5in硬盤的轉速在4500r/min~5400r/min之間;而5.25in硬盤轉速則在3600r/min~4500r/min之間。隨著技術的進步,現在2.5in硬盤的轉速最高已達15000r/min,3.5in硬盤的轉速最高已達12000r/min。

  • 有些硬盤只裝一張盤片,有些則有多張。硬盤盤片安裝在主軸電機的轉軸上,在主軸電機的帶動下作高速旋轉。每張盤片的容量稱為單碟容量,而一塊硬盤的總容量就是所有盤片容量的總和。早期硬盤由于單碟容量低,所以盤片較多。現代硬盤盤片一般只有少數幾片,有的硬盤只裝一張盤片。這些盤片安裝在主軸電機的轉軸上,在主軸電機的帶動下高速旋轉。一塊硬盤內的所有盤片都是完全一樣的,不然控制部分就太復雜了。一個牌子的一個系列一般都用同一種盤片,使用不同數量的盤片,就出現了一個系列不同容量的硬盤產品。

  • 盤片上的記錄密度很大,而且盤片工作時會高速旋轉,為保證其工作的穩定,數據保存的長久,所以硬片都是密封在硬盤內部。不可自行拆卸硬盤,在普通環境下空氣中的灰塵、指紋、頭發絲等細小雜質都會對硬盤造成永久損害。


  • 硬盤驅動器采用高精度、輕型磁頭驅動/定位系統。這種系統能使磁頭在盤面上快速移動,可在極短的時間內精確定位在由計算機指令指定的磁道上。目前,磁道密度已高達5400Tpi(每英寸磁道數)或更高;還在研究新方法,如在盤上擠壓(或刻蝕)圖形、凹槽和斑點等作為定位和跟蹤標記,以提高到和光盤相等的道密度,從而在保持磁盤機高速度、高位密度和高可靠性的優勢下,大幅度提高存儲容量。

  • 硬盤驅動器內的電機都是無刷電機,在高速軸承支持下機械磨損很小,可以長時間連續工作。高速旋轉的盤體產生明顯的陀螺效應,所以硬盤工作時不宜搬動,否則將增加軸承的工作負荷。為了高速存儲和讀取信息,硬盤驅動器的磁頭質量小,慣性也小,硬盤驅動器的尋道速度明顯快于軟驅和光驅。

  • 硬盤驅動器磁頭與磁頭臂及伺服定位系統是一個整體。伺服定位系統由磁頭臂后的線圈和固定在底板上的電磁控制系統組成。由于定位系統限制,磁頭臂只能在盤片的內外磁道之間移動。因此,不管開機還是關機,磁頭總在盤片上;所不同的是,關機時磁頭停留在盤片啟停區,開機時磁頭“飛行”在磁盤片上方。

  • 硬盤首先邏輯上被劃分為磁道、柱面及扇區。每個盤片的每個面都有一個讀寫磁頭,磁頭靠近主軸接觸的表面,即線速度最小的地方,是一個特殊的區域,它不存放任何數據,稱為啟停區或著陸區,啟停區外就是數據區。在最外圈,離主軸最遠的地方是“0”磁道,硬盤數據的存放就是從最外圈開始的。磁頭如何找到“0”磁道的位置,是有一個“0”磁道檢測器,由它來完成硬盤的初始定位。“0”磁道是如此的重要,以致很多硬盤僅僅因為“0”磁道損壞就報廢,可以通過特殊的修復技術進行修復。

  • 硬盤不工作時,磁頭停留在啟停區,當需要從硬盤讀寫數據時,磁盤開始旋轉。旋轉速度達到額定的高速時,磁頭就會因盤片旋轉產生的氣流而抬起,這時磁頭才向盤片存放數據的區域移動。盤片旋轉產生的氣流相當強,足以使磁頭托起,并與盤面保持一個微小的距離。這個距離越小,磁頭讀寫數據的靈敏度就越高,對硬盤各部件的要求也越高。早期的磁盤驅動器使磁頭保持在盤面上方幾微米處飛行。稍后使磁頭在盤面上的飛行高度降到約0.1μm~0.5μm,現在的水平已經達到0.005μm~0.01μm,這只是人類頭發直徑的千分之一。氣流既能使磁頭脫離開盤面,又能使它保持在離盤面足夠近的地方,非常緊密地跟隨著磁盤表面呈起伏運動,使磁頭飛行處于嚴格受控狀態。磁頭必須飛行在盤面上方,不接觸盤面,可避免擦傷磁性涂層,更重要的是不讓磁性涂層損傷磁頭。但磁頭也不能離盤面太遠,否則就不能使盤面達到足夠強的磁化,難以讀出盤上的磁化翻轉(磁極轉換形式,是磁盤上實際記錄數據的方式)。

  • 硬盤:盤面
    硬盤一般會有一個或多個盤片,每個盤片可以有兩個面(Side),即第1個盤片的正面稱為0面,反面稱為1面;第2個盤片的正面稱為2面,反面稱為3面,依次類推。每個盤面對應一個磁頭(head)用于讀寫數據。第一個盤面的正面的磁頭稱為0磁頭,背面稱為1磁頭;第二個盤片正面的磁頭稱為2磁頭,背面稱為3磁頭,以此類推。盤面數和磁頭數是相等的。
    硬盤采用高精度、輕型磁頭驅動和定位系統。這種系統能使磁頭在盤面上快速移動,讀寫硬盤時,磁頭依靠磁盤高速旋轉引起的空氣動力效應懸浮在盤面上,與盤面的距離不到1微米(約為頭發直徑的百分之一),可以在極短的時間內精確定位到計算機指令指定的磁道上。由于定位系統限制,磁頭傳動臂只能在盤片的內外磁道間移動。因此,不管開機還是關機,磁頭總在盤片上。所不同的是,關機時磁頭停留在盤片啟停區,開機時磁頭“飛行”在磁盤片上方。

  • 硬盤:移動頭磁盤與固定頭磁盤
    移動頭磁盤:每個盤面有一個讀寫磁頭,讀寫時需要首先移動磁頭到指定磁道上,再進行讀寫。
    固定頭磁盤:每個磁道都有一個讀寫磁頭,定位讀寫時不用移動磁頭,只需直接定位,甚至實現多磁頭同時讀寫,帶來非常大的數據帶寬,提升磁盤數據讀寫速度,而且磁盤靜音效果會很好。但固定頭磁盤成本高、儲存密度低,而且想利用完一個磁盤的幾百個磁道,固定頭得做的非常小才能在一張直徑大約10公分的磁盤上排開這么多磁頭,否則就會浪費磁盤空間。

  • 硬盤:磁道
    每個盤片的每個盤面被劃分成多個狹窄的同心圓環,數據就是存儲在這樣的同心圓環上,這樣的圓環稱為磁道(Track),每個盤面可以劃分多個磁道。關機時磁頭停留在硬盤的著陸區,這個著陸區以前是位于離盤心最近的區域,不存放任何數據。在后期的硬盤工藝中有些硬盤生產廠商將這個區域被移動到了盤片的外面。
    每個盤面的最外圈,離盤心最遠的地方是“0”磁道,向盤心方向依次增長為1磁道,2磁道,等等。硬盤的每一個盤面有300~1024個磁道,新式大容量硬盤每面的磁道數更多。硬盤數據的存放就是從最外圈開始。
    標準的3.5in硬盤盤面通常有幾百到幾千條磁道。磁道是看不見的,只是盤面上以特殊形式磁化了的一些磁化區,在磁盤格式化時已規劃完畢。

  • 硬盤:扇區
    根據硬盤規格不同,磁道數可以從幾百到成千上萬不等。信息以脈沖串的形式記錄在這些軌跡中,磁道不是連續記錄數據,而是被劃分成一段段圓弧,這些圓弧的角速度一樣。由于徑向長度不一樣,線速度也不一樣,外圈的線速度較內圈的線速度大,即同樣的轉速下,外圈在同樣時間段里,劃過的圓弧長度要比內圈劃過的圓弧長度大。每段圓弧叫做一個扇區,每個扇區中的數據作為一個單元同時讀出或寫入。扇區是硬盤上存儲的物理單位,每個扇區可存儲128×2a次方(a=0,1,2,3)字節的數據。從DOS時起,每扇區是128×22=512字節,沒有哪個廠商試圖改變。即使要往硬盤上存儲一個字節信息,也須一次性把這個字節所在扇區中的全部512字節讀入內存,再選擇所需的那個字節。扇區的編號是從1開始,而不是0。

    • 扇區有兩個主要部分,存儲數據地點的標識符和存儲數據的數據段。
      ① 標識符就是扇區頭標,包括組成扇區三維地址的三個數字:扇區所在的磁頭(或盤面)、磁道(或柱面號)以及扇區在磁道上的位置即扇區號。頭標中還包括一個字段,其中有顯示扇區是否能可靠存儲數據,或者是否已發現某個故障因而不宜使用的標記。有些硬盤控制器在扇區頭標中還記錄有指示字,可在原扇區出錯時指引磁盤轉到替換扇區或磁道。最后,扇區頭標以循環冗余校驗(CRC)值作為結束,以供控制器檢驗扇區頭標的讀出情況,確保準確無誤。
      ② 扇區的第二個主要部分是存儲數據的數據段,可分為數據和保護數據的糾錯碼(ECC)。在初始準備期間,計算機用512個虛擬信息字節(實際數據的存放地)和與這些虛擬信息字節相應的ECC數字填入這個部分。
      • 扇區頭標包含一個可識別磁道上該扇區的扇區號。有趣的是,這些扇區號物理上并不連續編號,它們不必用任何特定的順序指定。扇區頭標的設計允許扇區號可以從1到某個最大值,某些情況下可達255。磁盤控制器并不關心上述范圍中什么編號安排在哪一個扇區頭標中。在很特殊的情況下,扇區還可以共用相同的編號。磁盤控制器甚至根本就不管數據區有多大,只管讀出它所找到的數據,或者寫入要求它寫的數據。
      • 扇區編號:給扇區編號的最簡單方法是l,2,3,4,5,6等順序編號,例如軟盤就是依次編排。但硬盤和軟盤有區別,因為數據讀取經常要按順序讀取一系列相鄰的扇區(邏輯數據相鄰)。如對磁道扇區按物理順序進行編號,很有可能出現當磁頭讀取完第一個扇區后,由于盤片轉速過快來不及讀取下一個扇區,因為物理相鄰扇區位置距離是極小的,必須等待轉完一圈,這極大浪費了時間。
      • 交叉因子:許多年前,IBM的一位杰出工程師想出一個絕妙辦法,即對扇區不使用順序編號,而是使用一個交叉因子進行編號。交叉因子用比值的方法來表示,如3﹕1表示磁道上的第1個扇區為1號扇區,跳過兩個扇區即第4個扇區為2號扇區,持續下去直到給每個物理扇區編上邏輯號為止。例如,每磁道有17個扇區的磁盤按2﹕1的交叉因子編號就是:l,10,2,11,3,12,4,13,5,14,6,15,7,16,8,17,9,而按3﹕1的交叉因子編號就是:l,7,13,2,8,14,3,9,15,4,10,16,5,11,17,6,12。當設置1﹕l的交叉因子時,如果硬盤控制器處理信息足夠快,那么讀出磁道上的全部扇區只需要旋轉一周;但如果硬盤控制器的后處理動作沒有這么快,磁盤所轉的圈數就等于一個磁道上的扇區數,才能讀出每個磁道上的全部數據。
  • 硬盤:柱面
    所有盤面上的同一磁道構成一個圓柱,通常稱做柱面(Cylinder),每個圓柱上的磁頭由上而下從“0”開始編號。數據的讀/寫按柱面進行,即磁頭讀/寫數據時首先在同一柱面內從“0”磁頭開始進行操作,依次向下在同一柱面的不同盤面即磁頭上進行操作,只在同一柱面所有的磁頭全部讀/寫完畢后磁頭才轉移到下一柱面,因為選取磁頭只需通過電子切換即可,而選取柱面則必須通過機械切換。電子切換相當快,比在機械上磁頭向鄰近磁道移動快得多,所以,數據的讀/寫按柱面進行,而不按盤面進行。也就是說,一個磁道寫滿數據后,就在同一柱面的下一個盤面來寫,一個柱面寫滿后,才移到下一個扇區開始寫數據。讀數據也按照這種方式進行,這樣就提高了硬盤的讀/寫效率。
    一塊硬盤驅動器的圓柱數(或每個盤面的磁道數)既取決于每條磁道的寬窄(同樣,也與磁頭的大小有關),也取決于定位機構所決定的磁道間步距的大小。

  • 硬盤:簇
    將物理相鄰的若干個扇區稱為了一個簇。操作系統讀寫磁盤的基本單位是扇區,而文件系統的基本單位是簇(Cluster)。在Windows下,隨便找個幾字節的文件,在其上面點擊鼠標右鍵選擇屬性,看看實際大小與占用空間兩項內容,如大小:15字節(15字節),占用空間4KB(4096字節)。這里的占用空間就是機器分區的簇大小,因為再小的文件都會占用空間,基本單位是4K,所以都會占用4K。
    簇一般有這幾類大小 4K,8K,16K,32K,64K等。簇越大存儲性能越好,但空間浪費嚴重。簇越小性能相對越低,但空間利用率高。NTFS格式的文件系統簇的大小為4K。
    硬盤:硬盤分區與文件系統格式

硬盤:硬盤特殊結構

  • 引導控制塊(Boot Control Block)包括系統從該分區引導操作系統所需要的信息。如果磁盤沒有操作系統,那么這塊的內容為空,通常為分區的第一塊。UFS(UNIX文件系統的簡稱)稱之為引導塊;NTFS稱為分區引導扇區。
  • 分區控制塊(Partition Control Block)包括分區詳細信息,如分區塊數、塊的大小、空閑塊的數量和指計、空閑FCB的數量和指針等。UFS稱為超級塊;NTFS稱為主控文件表。

硬盤:內存特殊結構

  • 內存分區表包含所有安裝分區的信息。
  • 內存目錄結構用來保存近來訪問過的目錄信息。對安裝分區的目錄,可以包括一個指向 分區表的指針。

硬盤:硬盤讀寫數據的過程

  • 現代硬盤尋道都是采用CHS方式,硬盤讀取數據時,讀寫磁頭沿徑向移動,移到要讀取的扇區所在磁道的上方,這段時間稱為尋道時間。因讀寫磁頭的起始位置與目標位置之間的距離不同,尋道時間也不同。目前硬盤一般為2到30毫秒,平均約為9毫秒。磁頭到達指定磁道后,然后通過盤片的旋轉,使得要讀取的扇區轉到讀寫磁頭的下方,這段時間稱為旋轉延遲時間。最后,信息在磁盤和內存之間的實際傳送時間叫傳送時間。一次磁盤服務的總時間就是以上三者之和。
  • 例如:一個7200(轉/每分鐘)的硬盤,每旋轉一周所需時間為60×1000÷7200=8.33毫秒,則平均旋轉延遲時間為8.33÷2=4.17毫秒(平均情況下,需要旋轉半圈)。
  • 硬盤容量計算公式:
    硬盤容量 = 盤面數×柱面數×扇區數×512字節

硬盤:磁盤(硬盤)的存儲特性

  • ① 是直接存取設備,按地址進行讀寫。
    ② 磁盤空間位置由三個因素決定:柱面號/磁道號、磁頭號/盤面號、扇區號。
    ③ 在磁盤上,信息按柱面存放的,空間分配的基本單位是簇。
    ④ 訪問磁盤的時間由三部分組成:尋道時間、旋轉延遲時間、傳輸時間。
    ⑤ 磁盤容量大、訪問速度快,可快速定位,完成直接訪問。

2)軟盤:

  • 軟盤驅動器曾經是電腦一個不可缺少的部件,在必要的時候,它可以為我們 啟動計算機,還能用它來傳遞和備份一些比較小的文件。
  • 軟盤在使用之前必須要先格式化(低格),磁盤被分成若干個磁道,每個磁道又分為若干個扇區,每個扇區存儲512個字節。
  • 常見的是3.5英寸雙面高密度1.44MB的軟盤
    80(磁道)* 18(扇區)* 512 bytes(扇區的大小)* 2(雙面) = 1440 x1024 bytes = 1440 KB = 1.44MB

3)光盤:

  • 容量大,速度快,價格便宜,但一般不可寫,光盤的空間結構與磁盤類似
  • 可讀寫光盤驅動器價格貴,寫過程很麻煩
  • 光盤分類:
    • CD(光盤) CD-ROM(只讀光盤機)
      VCD(激光視盤) DVD(數字多用光盤)
      DVD+RW(可反復寫入的DVD)
      藍光技術UDO(大容量光盤 ,雙面30G)
    • CD-ROM:CD-ROM即只讀光盤,1985出現,存放音頻信息,取代乙烯基唱片。通過將CD表面的的某個特定區域凹陷來表示0或1,數據呈螺旋狀有中心向邊緣散開,長度大約5800米,記錄75分鐘音頻信息,容量約660MB。CD-ROM盤是單面盤,不做成雙面盤的原因,不是技術上做不到,而是做一片雙面盤的成本比做兩片單面盤的成本之和還要高。
    • 一次寫光盤(刻錄盤):處理好的空白盤,只能寫一次。
    • DVD:數字多功能光盤,用于播放高清晰度視頻、高質量音樂及存儲大容量數據。標準DVD存儲密度較高,存儲容量4.7GB。
      DVD有五種格式:DVD-VIDEO;DVD-ROM;DVD-R ;DVD-RAW;DVD-AUDIO
    • 藍光DVD:藍光光碟(Blue-ray Disc,簡稱BD)是DVD之后的下一代光盤格式之一,用以存儲高品質的影音以及高容量的數據存儲。單層的藍光光碟的容量為25或是27GB,足夠錄制一個長達4小時的高解析影片。2008年2月,SONY主導的藍光光碟戰勝東芝領導的HD DVD。

4)U盤:

  • USB閃存盤(簡稱“U盤”)是基于USB接口、以閃存芯片為存儲介質的無需驅動器的存儲設備。U盤其體積小巧,適合隨身攜帶,可以隨時隨地、輕松交換資料數據,是移動辦公及數據存儲交換產品。
  • U盤原理使用標準的USB接口,容量從幾十M到上百G,能夠在各種主流操作系統及硬件平臺之間作大容量數據存儲及交換。
  • U盤結構由五部分組成:USB端口、主控芯片、PCB底板、FLASH(閃存)芯片、外殼封裝。
  • U盤基本工作:USB端口負責連接電腦,是數據輸入或輸出的通道;主控芯片負責各部件的協調管理和下達各項動作指令,并使計算機將U盤識別為“可移動磁盤”,是U盤的“大腦”;FLASH芯片與電腦內存條的原理基本相同,是保存數據的實體,其特點是斷電后數據不會丟失,能長期保存;PCB底板是負責提供相應處理數據平臺,且將各部件連接在一起。當U盤被操作系統識別后,使用者下達數據存取的動作指令后,USB移動存儲盤的工作便包含了這幾個處理過程。
  • U盤存儲原理:在源極和漏極之間電流單向傳導的半導體上形成貯存電子的浮動棚。浮動柵包裹著一層硅氧化膜絕緣體。它的上面是在源極和漏極之間控制傳導電流的選擇/控制柵。數據是0或1取決于在硅底板上形成的浮動柵中是否有電子。有電子表示為0,無電子為1。寫入前刪除數據進行初始化,即從所有浮動柵中導出電子,將有所數據歸“1”。
    寫入時只有數據為0時才進行寫入,數據為1時則什么也不做。寫入0時,向柵電極和漏極施加高電壓,增加在源極和漏極之間傳導的電子能量。這樣電子就會突破氧化膜絕緣體,進入浮動柵。
    讀取數據時,向柵電極施加一定的電壓,電流大為1,電流小則定為0。浮動柵沒有電子的狀態(數據為1)下,在柵電極施加電壓的狀態時向漏極施加電壓,源極和漏極之間由于大量電子的移動,就會產生電流。而在浮動柵有電子的狀態(數據為0)下,溝道中傳導的電子就會減少。
    計算機把二進制數字信號轉為復合二進制數字信號(加入分配、核對、堆棧等指令)讀寫到USB芯片適配接口,通過芯片處理信號分配給EPROM2存儲芯片的相應地址存儲二進制數據,實現數據存儲。

5)閃存卡:

  • 1984年,東芝提出概念,1988年,Intel首先生產。
  • 長壽命,斷電仍能保持所數據信息。
  • 應用:保存設置信息,U盤、電腦的BIOS(基本輸入輸出程序)、PDA(個人數字助理)、數碼相機中保存資料等。
  • 特點:體積小、抗震、質量輕、可擦寫1000000次,數據可保存10年。

6)固態硬盤:

  • 存儲介質有閃存(flash芯片)和DRAM兩種。市場上絕大多數都是基于Flash閃存的。外觀可以被制成多種樣式,如:筆記本硬盤、微硬盤、存儲卡、U盤等樣式。
  • 優點:速度快、不怕震、重量輕。缺點:容量小、價格高。

二、廉價磁盤冗余陣列RAID
1、基本概念

  • RAID是一組物理磁盤的集合,作為一個邏輯磁盤管理和使用。數據被分散存于多個物理磁盤,以提高可靠性。數據備份的功能是在用戶數據一旦發生損壞后,利用備份信息可以使損壞數據得以恢復,從而保障了用戶數據的安全性。在用戶看起來,組成的磁盤組就像是一個硬盤,用戶可以對它進行分區,格式化等等。
  • 1988年,Patterson et al.在他的一篇文章中建議用6個特定的磁盤組織來提高磁盤的性能或可靠性,或兩方面都同時提高。這個建議很快就被采用,并導致了一種新的I/O設備的誕生,這就是RAID盤。Patterson et al.把RAID定義為廉價磁盤的冗余陣列(Redundant Array of Inexpensive Disks),但工業界把“I”由“廉價的(Inexpensive)”替換成“獨立的(Independent)”。
  • 在RAID系統中,磁盤控制器是很重要的硬件部份,因為它影響性能和容錯。常用幾個控制器來預防控制器故障。小型計算機系統接口(SCSI)適配器具有非常好的讀寫性能,所以在RAID系統中幾乎都使用SCSI。一個驅動器發出讀寫命令后,SCSI控制器便能與它斷連而轉向其它驅動器操作,而這個驅動器繼續自己的操作。
  • RAID提供了與磁盤鏡象和磁盤雙工類似的冗余。冗余的級別取決于所使用的RAID級別。在一般的磁盤鏡象配置中,一個備份驅動器對應一個主驅動器。在三級RAID中一個奇偶驅動器為兩個或多個主驅動器提供鏡象,使用一個編碼方案向奇偶驅動器寫入信息,這些信息與寫在其它驅動器上的數據有某種聯系。若一個驅動器出故障,奇偶碼和其它驅動器一起用來生成丟失的數據部分。

2、關鍵技術

  • 1)磁盤鏡像:是一種冗余技術,為磁盤提供保護功能,防止磁盤發生故障而造成數據丟失。對于RAID而言,采用鏡像技術會同時在陣列中產生兩個完全相同的數據副本,分布在兩個不同的磁盤驅動器組上。鏡像提供了完全的數據冗余能力,當一個數據副本失效不可用時,外部系統仍可正常訪問另一副本,不會對應用系統運行和性能產生影響。而且,鏡像不需要額外的計算和校驗,故障修復非常快,直接復制即可。鏡像技術可以從多個副本進行并發讀取數據,提供更高的讀I/O性能,但不能并行寫數據,寫多個副本會導致一定的I/O性能降低。鏡像技術提供了非常高的數據安全性,其代價也是非常昂貴的,需要至少雙倍的存儲空間。高成本限制了鏡像的廣泛應用,主要應用于至關重要的數據保護,這種場合下數據丟失會造成巨大的損失。
  • 2)數據條帶:磁盤存儲的性能瓶頸在于磁頭尋道定位,無法與高速CPU匹配,RAID由多塊磁盤組成,數據條帶技術將數據以塊的方式分布存儲在多個磁盤中,從而可以對數據進行并發處理。這樣寫入和讀取數據就可以在多個磁盤上同時進行,并發產生非常高的聚合I/O,有效提高了整體I/O性能,而且具有良好的線性擴展性。這對大容量數據尤其顯著,如果不分塊,數據只能按順序存儲在磁盤陣列的磁盤上,需要時再按順序讀取。而通過條帶技術,可獲得數倍與順序訪問的性能提升。數據條帶技術的分塊大小可以是一個字節至幾KB大小,分塊越小,并行處理能力就越強,數據存取速度就越高,但同時就會增加塊存取的隨機性和塊尋址時間。數據條帶是基于提高I/O性能而提出的,而對數據可靠性、可用性沒有任何改善。實際上,其中任何一個數據條帶損壞都會導致整個數據不可用,采用數據條帶技術反而增加了數據發生丟失的概念率。
  • 3)數據校驗:鏡像具有高安全性、高讀性能,但冗余開銷太昂貴。數據條帶通過并發性來大幅提高性能,然而對數據安全性、可靠性未作考慮。數據校驗是一種冗余技術,它用校驗數據來提供數據的安全,可以檢測數據錯誤,并在能力允許的前提下進行數據重構。相對鏡像,數據校驗大幅縮減了冗余開銷,用較小的代價換取了極佳的數據完整性和可靠性。數據條帶技術提供高性能,數據校驗提供數據安全性,RAID不同等級往往同時結合使用這兩種技術。采用數據校驗時,RAID要在寫入數據同時進行校驗計算,并將得到的校驗數據存儲在RAID成員磁盤中。校驗數據可以集中保存在某個磁盤或分散存儲在多個不同磁盤中,甚至校驗數據也可以分塊,不同RAID等級實現各不相同。當其中一部分數據出錯時,就可以對剩余數據和校驗數據進行反校驗計算重建丟失的數據。校驗技術相對于鏡像技術的優勢在于節省大量開銷,但檢驗技術比鏡像技術復雜得多且慢得多。
  • 交叉并行存取(數據條帶)

3、RAID的特點

  • 大容量:用N個低價磁盤構成一個統一管理陣列,RAID實際可用容量要小于所有成員磁盤的總容量。RAID容量利用率在50%-90%之間
  • 高性能:受益于數據條帶化技術,RAID將數據I/O分散到各個成員磁盤上,從而獲得比單個磁盤成倍增長的聚合I/O性能,簡單說就是具備N個磁盤的容量,但幾乎只有1/N的訪問時間,性價比高
  • 高可靠性:使用鏡像和校驗技術,RAID的冗余技術大幅提升數據可用性和可靠性,保證了若干磁盤出錯時,不會導致數據的丟失,不影響系統的連續運行。
  • 可管理性:RAID作為快速可靠的磁盤系統,方便管理

4、RAID的分級:RAID技術經過不斷的發展,現在已擁有了從RAID 0到6七種基本的RAID級別。另外,還有一些基本RAID級別的組合形式,如RAID 10(RAID 0與RAID 1的組合),RAID 50(RAID 0與RAID 5的組合)等。不同RAID級別代表著不同的存儲性能、數據安全性和存儲成本。RAID級別的選擇有三個主要因素:可用性(數據冗余)、性能、成本。如果安全性要求不高,選擇RAID0以獲得最佳性能。如果可用性和性能是重要的而成本不是一個主要因素,則根據硬盤數量選擇RAID 1。如果可用性、成本和性能都同樣重要,則根據一般的數據傳輸和硬盤的數量選擇RAID 3、RAID 5。

  • RAID 0:無差錯控制的帶區組。
    要實現RAID 0必須要有兩個以上硬盤驅動器,數據并不是保存在一個硬盤上,而是分成數據塊保存在不同驅動器上。因為將數據分布在不同驅動器上,所以數據吞吐率大大提高,驅動器的負載也比較平衡。比如所需讀取的文件分布在兩個硬盤上,這兩個硬盤可以同時讀取,那么原來讀取同樣文件的時間被縮短為1/2。所有級別中RAID 0的速度是最快的。
    RAID 0不需要計算校驗碼,實現容易。缺點是它沒有數據差錯控制,沒有冗余功能的,如果一個磁盤(物理)損壞,數據發生錯誤,其它盤上的數據正確也無用了,不能用于對數據穩定性要求高的場合。如果用戶進行圖象(包括動畫)編輯和其它要求傳輸比較大的場合使用RAID 0比較合適。
  • RAID 1:鏡像結構。
    RAID 1結構中,RAID控制器必須能夠同時對兩個盤進行讀操作和對兩個鏡像盤進行寫操作。在一組盤出現問題時,可以使用鏡像,提高系統的容錯能力。
    RAID 1,每讀一次盤只能讀出一塊數據,數據塊傳送速率與單獨的盤的讀取速率相同。RAID 1的校驗十分完備,因此對系統的處理能力有很大的影響。當系統需要極高可靠性時,如進行數據統計,那么使用RAID 1比較合適。
    RAID 1技術支持“熱替換”,即不斷電的情況下對故障磁盤進行更換,更換完畢只要從鏡像盤上恢復數據即可。當主硬盤損壞時,鏡像硬盤就可以代替主硬盤工作。RAID 1的數據安全性在所有的RAID級別上來說是最好的。但是其磁盤的利用率卻只有50%,是所有RAID級別中最低的。
  • RAID 2:帶海明碼校驗。
    從概念上講,RAID 2同RAID 3類似,兩者都是將數據條塊化分布于不同的硬盤上,條塊單位為位或字節。RAID 2使用海明碼技術來提供錯誤的檢查及恢復,技術實施更復雜。因此,在商業環境中很少使用。
    海明碼可以在數據發生錯誤的情況下將錯誤校正,以保證輸出的正確。它的數據傳送速率相當高,如果希望達到比較理想的速度,那最好提高保存校驗碼ECC碼的硬盤。要利用海明碼,必須要付出數據冗余的代價。
  • RAID 3:帶奇偶校驗碼的并行傳送。
    奇偶校驗碼與RAID 2中的海明碼不同,只能查錯不能糾錯。RAID3采用一個專用的磁盤作為校驗盤,其余磁盤作為數據盤,數據按位可字節的方式交叉存儲到各個數據盤中。RAID3象RAID 0一樣以并行的方式來工作,但速度沒有RAID 0快。校驗碼在寫入數據時產生并保存在專門的一個奇偶校驗盤上。需要實現時用戶必須要有三個以上的驅動器,寫入速率與讀出速率都很高。主要用于圖形(包括動畫)等要求吞吐率比較高的場合。不同于RAID 2,RAID 3使用單塊磁盤存放奇偶校驗信息。如果一塊數據磁盤失效,奇偶盤及其他數據盤可以重新產生數據。如果奇偶盤失效,則不影響數據使用。RAID 3對于大量的連續數據可提供很好的傳輸率,但對于隨機數據,奇偶盤會成為寫操作的瓶頸。保護數據雖然沒有鏡像安全性高,但是硬盤利用率得到了很大提高,為(n-1)/n。
  • RAID 4:帶奇偶校驗碼的獨立磁盤結構。
    RAID4與RAID3的原理大致相同,區別在于條帶化的方式不同。 RAID4按照塊的方式來組織數據,寫操作只涉及當前數據盤和校驗盤兩個盤,多個I/O請求可以同時得到處理,提高了系統性能。RAID4按塊存儲可以保證單塊的完整性,可以避免受到其他磁盤上同條帶產生的不利影響。RAID4提供了非常好的讀性能,但單一的校驗盤往往成為系統性能的瓶頸。對于寫操作,RAID4只能一個磁盤一個磁盤地寫,并且還要寫入校驗數據,因此寫性能比較差。而且隨著成員磁盤數量的增加,校驗盤的系統瓶頸將更加突出。正是如上這些限制和不足,RAID4在實際應用中很少見,主流存儲產品也很少使用RAID4保護。
  • RAID 5:分布式奇偶校驗的獨立磁盤結構。
    它的奇偶校驗碼存在于所有磁盤上。RAID 5的讀效率很高,寫效率一般。因為奇偶校驗碼在不同的磁盤上,所以提高了可靠性,允許單個磁盤出錯。RAID 5也是以數據的校驗位來保證數據的安全,但它不是以單獨硬盤來存放數據的校驗位,而是將數據段的校驗位交互存放于各個硬盤上。任何一個硬盤損壞,都可以根據其它硬盤上的校驗位來重建損壞的數據。RAID 3與RAID 5相比,在于RAID 3每進行一次數據傳輸,需涉及到所有的陣列盤。對于RAID 5來說,大部分數據傳輸只對一塊磁盤操作。RAID 5不存在并發寫操作時的校驗盤性能瓶頸問題。RAID 5兼顧存儲性能、數據安全和存儲成本等各方面因素,是目前綜合性能最佳的數據保護解決方案,數據中心大多采用RAID 5。
  • RAID 6:帶有兩種分布存儲的奇偶校驗碼的獨立磁盤結構。
    RAID 6是對RAID 5的擴展,主要是用于要求數據絕對不能出錯的場合。RAID 6增加了第二個獨立的奇偶校驗信息塊。兩個獨立的奇偶系統使用不同的算法,數據的可靠性非常高,即使兩塊磁盤同時失效,也不會影響數據的使用,由于引入了第二種奇偶校驗值,所以需要N+2個磁盤,
    RAID 6相對于RAID 5有更大的“寫損失”。RAID 6的寫性能非常差, 同時對控制器的設計變得十分復雜,用于計算奇偶校驗值和驗證數據正確性所花費的時間比較多,造成了不必須的負載,成本也要高于RAID 5許多,因此,RAID 6很少得到實際應用,主要用于對數據安全等級要求非常高的場合。它一般是替代 RAID 10方案的經濟性選擇。
  • RAID 7:優化的高速數據傳送磁盤結構。
    RAID7是在RAID6的基礎上,采用了cache技術,它使得傳輸率和響應速度都有較大的提高。Cache是一種高速緩沖存儲器,即數據在寫入磁盤陣列以前,先寫入cache中。在寫入時將數據分別寫入兩個獨立的cache,這樣即使其中有一個cache出故障,數據也不會丟失。在讀出時,主機也是直接從cache中讀出,而不是從陣列盤上讀取,減少與磁盤讀操作次數,充分利用磁盤帶寬。
    這樣cache和磁盤陣列技術的結合,彌補了磁盤陣列的不足(如分塊寫請求響應差等缺陷),從而使整個系統以高效、快速、大容量、高可靠以及靈活、方便的存儲系統提供給用戶,滿足技術發展的需要,尤其是多媒體系統的需要。
    同時,RAID 7還不僅僅是一種技術,它還是一個獨立存儲計算機,自身帶的操作系統和管理工具,完全可以獨立運行。RAID 7的存儲計算機操作系統是一套實時事件驅動操作系統。RAID 7系統內置實時操作系統可自動對主機發送過來的讀寫指令進行優化處理,以智能化方式將可能被讀取的數據預先讀入快速緩存中,從而大大減少了磁頭的轉動次數,提高存儲系統的I/O速度。
    RAID 7可幫助用戶有效地管理日益龐大的數據存儲系統,并使系統的運行效率大大提高,滿足不同用戶的存儲需求。但是,RAID 7的成本比其它RAID等級要高許多。另外,RAID 7已被某公司注冊為商標,目前僅有一家公司提供RAID 7的產品,用戶沒有更多的選擇,這也嚴重制約了RAID 7的發展。

5、RAID的組合:

  • 標準RAID等級各有優勢和不足。自然地,我們想到把多個RAID等級組合起來,實現優勢互補,彌補相互的不足,從而達到在性能、數據安全性等指標上更高的RAID系統。目前在業界和學術研究中提到的RAID組合等級主要有RAID 00、RAID 01、RAID 10、RAID 100、RAID 30、RAID 50、RAID 53、RAID 60。當然,組合等級的實現成本一般都非常昂貴,只是在少數特定場合應用。
  • 1)RAID 00:簡單地說,RAID 00是由多個成員RAID 0組成的高級RAID 0。它與RAID 0的區別在于,RAID 0陣列替換了原先的成員磁盤。可以把RAID 00理解為兩層條帶化結構的磁盤陣列,即對條帶再進行條帶化。這種陣列可以提供更大的存儲容量、更高的I/O性能和更好的I/O負均衡。
  • 2)RAID 01和RAID 10:RAID 01是先做條帶化再作鏡像,本質是對物理磁盤實現鏡像;而RAID 10是先做鏡像再作條帶化,是對虛擬磁盤實現鏡像。相同的配置下,通常RAID 01比RAID 10具有更好的容錯能力。RAID 01兼備了RAID 0和RAID 1的優點,它先用兩塊磁盤建立鏡像,然后再在鏡像內部做條帶化。RAID 01的數據將同時寫入到兩個磁盤陣列中,如果其中一個陣列損壞,仍可繼續工作,保證數據安全性的同時又提高了性能。RAID 01和RAID 10內部都含有RAID 1模式,因此整體磁盤利用率均僅為50%。
  • 3)RAID 100:通常看作RAID 1+0+0,也稱為RAID 10+0,即條帶化的RAID 10。RAID 100的缺陷與RAID 10相同,任意一個RAID 1損壞一個磁盤不會發生數據丟失,但剩下的磁盤存在單點故障的危險。最頂層的RAID 0,即條帶化任務,通常由軟件層來完成。RAID 100 突破了單個RAID控制器對物理磁盤數量的限制,可以獲得更高的I/O負載均衡,I/O壓力分散到更多的磁盤上,進一步提高隨機讀性能,并有效降低熱點盤故障風險。因此,RAID 100通常是大數據庫的最佳選擇。
  • 4)RAID 30(RAID 53)、RAID 50和RAID 60:這三種RAID等級與RAID 00原理基本相同,區別在于成員“磁盤”換成了RAID 3、RAID 5和RAID 6。其中,RAID 30通常又被稱為RAID 53[13]。其實,可把這些等級RAID統稱為RAID X0等級,X可為標準RAID等級,甚至組合等級(如RAID 100)。利用多層RAID配置,充分利用RAID X與RAID 0的優點,從而獲得在存儲容量、數據安全性和I/O負載均衡等方面的大幅性能提升。

6、RAID等級簡述:

  • RAID 0把連續的數據分散到多個磁盤上存取,代表了所有RAID級別中最高的存儲性能。磁盤利用率是l00%,不提供數據冗余。
  • RAID l具有磁盤鏡像功能,利用并行讀寫特性將數據塊同時寫入主盤和鏡像盤,比傳統的鏡像盤速度快,但其磁盤利用率只有50%。
  • RAID l0將數據分散存儲到RAID組的成員盤上,同時為每個成員盤提供鏡像盤,實現數據全冗余保存。它利用了RAID 0較高的讀寫效率和RAID l較高的數據保護和恢復能力,其磁盤利用率為l/m(m為鏡像組內成員盤個數)。當m=2時,RAID l0的磁盤利用率最大,即50%。
  • RAID 2:使用海明碼技術來提供錯誤檢查及恢復。
  • RAID 3:使用單塊磁盤存放奇偶校驗信息。
  • RAID 4:RAID 2、RAID 3條塊單位為字字節,RAID 4、RAID 5條塊單位為塊或記錄。RAID 4也使用一塊磁盤作為奇偶校驗盤。
  • RAID 5:也采用奇偶校驗方式,校驗數據以螺旋方式分散在RAID組的各成員盤上,沒有專用的校驗盤。
  • RAID 6:是在RAID 5基礎上把校驗信息由一位增加到兩位的RAID級別。它實際上是一擴展RAID 5等級,除了每個硬盤上都有同級數據異或校驗區外,還有一個針對每個數據塊的異或校驗區。

5.4.2 磁盤調度算法

  • 要使磁盤服務盡可能地快,就需要操作系統提供合適的磁盤調度算法,以改善磁盤服務的平均時間。
  • 磁盤存取時間由尋道時間、旋轉延遲時間、傳輸時間三部分組成。磁盤調度的目的就是減少磁盤的存取時間,分為兩種調度:
    • 移臂調度:移動磁頭尋找磁道柱面,是為了減少平均尋道時間。
    • 旋轉調度:讀取的扇區旋轉到磁頭下,是為了減少平均旋轉延遲時間。
  • 設計磁盤調度算法應當考慮兩個基本因素:
    公平性:磁盤訪問請求應在有限時間內得到滿足。
    高效性:盡量避免磁臂頻繁來回移動,減少設備機械運動所帶來的時間開銷。

一、移臂調度
1、先來先服務調度算法

  • 即按照訪問請求的次序為各個進程服務,這是最公平而又最簡單的算法,但是效率不高。因為磁頭引臂的移動速度很慢,如果按照訪問請求發出的次序依次讀寫各個磁盤塊,則磁頭引臂將可能頻繁大幅度移動,容易產生機械振動,亦造成較大的時間開銷,影響效率。
  • 設:有一個請求磁盤服務的隊列,要訪問的磁道分別是:
    98,183,37,122,14,124,65,67 磁頭現在在53號磁道上
  • 先來先服務調度算法示例:磁頭共移動了640個磁道

2、最短尋道時間優先調度算法

  • SSTF算法以尋道優化為出發點,優先為距離磁頭當前所在位置最近磁道(柱面)的訪問請求服務。算法改善了平均服務時間,但缺點是:假設某一段時間外磁道請求不斷,則可能有內磁道請求長時間得不到服務,缺乏公平性。
  • 設:有一個請求磁盤服務的隊列,要訪問的磁道分別是:
    98,183,37,122,14,124,65,67 磁頭現在在53號磁道上
  • 最短尋道時間優先調度算法示例:磁頭共移動了236個磁道

3、掃描算法(雙向掃描)

  • 最短尋道時間優先算法只考慮訪問磁道與磁頭當前位置的距離,不考慮磁臂移動方向,而掃描算法則既考慮距離,也考慮方向,且以方向優先。假設磁頭處于最外磁道,并向內磁道移動。在移動的過程中,如果經過的磁道有訪問請求,則為其服務,一直移動到最內層磁道,然后改變磁頭移動方向,向外層磁道移動,同時為經過的請求服務,到達最外層磁道則再次改變方向,向內層磁道移動,到達最內層磁道再改變方向,如此反復掃描。
  • 設:有一個請求磁盤服務的隊列,要訪問的磁道分別是:
    98,183,37,122,14,124,65,67。磁頭現在在53號磁道上,正向0磁道(內層)方向移動。
  • 掃描算法示例:磁頭共移動了236個磁道

4、循環掃描算法(單向掃描)

  • 循環掃描算法是磁頭只在一個方向進行掃描(由內向外),并響應進程的訪問請求。當到達最外層磁道是,磁頭直接快速移動至最內層磁道而不服務任何請求,然后再次由內向外掃描。假設磁頭只延由內向外的方向進行掃描,在移動的過程中,如果經過的磁道有訪問請求,則為其服務,一直移動到最外層磁道。然后將磁頭拉回最內層磁道,然后再次由內向外移動,如此反復。
  • 設:有一個請求磁盤服務的隊列,要訪問的磁道分別是:
    98,183,37,122,14,124,65,67。磁頭現在在53號磁道上,固定由內向外方向移動(共200個磁道)。
  • 循環掃描算法示例:磁頭共移動了382個磁道

5、電梯調度算法

  • 電梯調度算法是磁頭在一個方向進行掃描時,如果該方向上沒有訪問請求,則停止掃描,并可以更改方向,掃描響應另一個方向的訪問請求。假設初始時,磁頭處于最外磁道,并向內磁道移動。在移動的過程中,如果經過的磁道有訪問請求,則為其服務,然后判斷內磁道是否還有訪問請求,如果有,則繼續向內磁道移動并服務。如果沒有,但反方向有訪問請求,則立刻改變磁頭移動方向,向外層磁道移動,同時為經過的請求服務,如此反復。和掃描算法相比,電梯調度算法不需要掃描到最內層或最外層磁道。
  • 設:有一個請求磁盤服務的隊列,要訪問的磁道分別是:
    98,183,37,122,14,124,65,67 磁頭現在在53號磁道上,正向內層磁道方向移動。
  • 電梯調度算法示例:磁頭共移動了222個磁道

二、旋轉調度

  • 只有涉及這個柱面的所有訪問結束后才會再次進行移臂調度。

  • 一般采用延遲時間最短者優先算法,根據訪問請求的扇區旋轉到磁頭位置的延遲時間來決定執行次序。
    計算延遲時間應考慮的因素:

    • 1)若干等待訪問者請求訪問同一盤面上同一磁道上的不同扇區。
    • 2)若干等待訪問者請求訪問不同盤面上同位置磁道上的不同編號的扇區。
    • 3)若干等待訪問者請求訪問不同盤面上同位置磁道上具有相同的扇區。

    解決方案:

    • 1)對于前兩種情況:總是讓首先到達讀寫磁頭位置下的扇區先進行傳送操作。
    • 2)對于第三種情況:這些扇區同時到達讀寫磁頭位置下,可任意選擇一個讀寫磁頭進行傳送操作,所以要多次旋轉才能完成所有訪問請求。

三、有關磁盤的管理的部分內容
1、磁盤初始化

  • 一個新磁盤只是一個空白盤。在磁盤能存儲數據之前,必須分成扇區以便磁盤控制器能進行讀和寫操作,稱為低級格式化(物理分區)。低級格式化為磁盤的每個扇區釆用特別的數據結構。每個扇區的數據結構通常由頭、數據區域(通常為512B大小)和尾部組成。頭部和尾部包含了一些磁盤控制器所使用的信息。
  • 為使磁盤存儲文件,操作系統還需要將自己的數據結構記錄在磁盤上:第一步將磁盤分為由一個或多個柱面組成的分區(即的C盤、D盤等形式的分區);第二步對物理分區進行邏輯格式化(創建文件系統),操作系統將初始的文件系統數據結構存儲到磁盤上,這些數據結構包括空閑和已分配的空間以及一個初始為空的目錄。

2、引導塊

  • 計算機啟動時需要運行一個初始化程序(自舉程序),它初始化CPU、寄存器、設備控制器和內存等,接著啟動操作系統。為此,該自舉程序應找到磁盤上的操作系統內核,裝入內存,并轉到起始地址,從而開始操作系統的運行。
  • 自舉程序通常保存在ROM中,為了避免改變自舉代碼需要改變ROM硬件的問題,故只在ROM中保留很小的自舉裝入程序,將完整功能的自舉程序保存在磁盤的啟動塊上,啟動塊位于磁盤的固定位。擁有啟動分區的磁盤稱為啟動磁盤或者系統磁盤。

3、壞塊

  • 磁盤有移動部件且容錯能力弱,所以容易導致一個或多個扇區損壞。部分磁盤甚至出廠時就有壞扇區。根據所使用的磁盤和控制器,對這些塊有多種處理方式。
  • 對于簡單磁盤,如電子集成驅動器(IDE)。壞扇區可手工處理,如MS-DOS的Format命令執行邏輯格式化時便會掃描磁盤以檢查壞扇區。壞扇區在FAT表上會標明,因此程序不會使用。
  • 對于復雜的磁盤,如小型計算機系統接口(SCSI),其控制器維護一個磁盤壞塊鏈表。該鏈表在出廠前進行低級格式化時就初始化了,并在磁盤的整個使用過程中不斷更新。低級格式化將一些塊保留作為備用,對操作系統透明。控制器可以用備用塊來邏輯地替代壞塊,這種方案稱為扇區備用。
  • “寫后讀校驗”與“重定向熱修復區”

4、提高磁盤性能的一些方法

  • 1)磁盤高速緩存:使用緩沖技術(內存、軟緩沖);在硬盤中增加高速緩存(硬緩沖)
  • 2)提前讀(預輸入)與延遲寫(緩輸出):置換技術、SPOOLing技術
  • 3)優化數據分布:碎片整理、條塊技術、交叉并行存取技術
  • 4)虛擬盤:以內存的一定空間建立一個模擬的硬盤來工作,需要時將虛擬盤中的文件轉存到實際硬盤中。虛擬盤由用戶建立、控制管理和使用,高速緩存由系統控制和管理。

5.4.3 存儲空間的分配與回收

一、分配方法(對應于文件的存儲結構)

  • 文件的物理組織結構涉及一個文件在存儲設備上是如何放置的。它和文件的存取方法有密切關系,另外也取決于存儲設備的物理特性。

  • 文件的存儲分配涉及以下三個問題:

    • ① 創建新文件時,是否一次性為該文件分配所需的最大空間?
    • ② 為文件分配的空間是連續還是不連續的單位,分配文件空間時應采用的單位有多大?
    • ③ 為了記錄分配給各個文件的單位情況,應該使用哪種形式的數據結構或表格?
  • 常用的分配方法有三種:連續分配、鏈接分配和索引分配。一般情況一個系統只提供一種方法的支持。

1、連續分配(順序存儲結構):采用連續分配可把邏輯文件中的信息順序存放到一組鄰接的物理盤塊中,這樣形成的物理文件稱為連續文件(或順序文件)。每個文件在磁盤上占有一組連續的塊,形成一個線性排序,這種排序使訪問磁盤時需要的尋道數和尋道時間最小。

  • 連續分配可以用第一塊的磁盤地址和連續塊的數量來定義。如果文件有n塊長并從位置b開始,那么該文件將占有塊b, b+1, b+2, …, b+n-1。一個文件的目錄條目包括開始塊的地址和該文件所分配區域的長度。
  • 連續分配支持順序訪問和隨機訪問。
  • 優點:實現簡單;特別在順序存取時速度較快,一次可以存取多個盤塊,改進了I/O性能;也很容易直接存取文件中的任意一塊。
  • 缺點:① 不便于文件動態擴充,因為一個文件末尾后的盤塊可能已經分配給其它文件,一旦增加,需要大量移動盤塊。② 可能出現外部碎片。反復增刪文件后會產生外部碎片(與內存管理分配方式中的碎片相似)。③ 很難在建立文件時就確定文件需要的空間大小,并依此來分配存儲空間,所以適用于長度固定的文件。
  • 實現連續盤塊分配的策略:
    ① 最先適應算法 ② 最佳適應算法 ③ 最近適應算法

2、鏈接分配(鏈接存儲結構):把邏輯上連續的文件分散存放在不同的物理塊中,這些物理塊不要求連續,也不規則排列。這種物理結構形式的文件稱做鏈接文件或串連文件。

  • 鏈接分配是釆取離散分配,消除了外部碎片,提高了磁盤空間的利用率。系統根據文件的需求,為它分配必需的盤塊,當文件動態增長時,可以動態為它分配盤塊,故而無需事先知道文件的大小。此外,對文件的增、刪、修改也非常方便。
  • 帶來的問題:① 一般僅適于對信息的順序訪問,不利于對文件的隨機存取。② 每個物理塊上增加一個鏈接字。③ 因為鏈接指針可靠性變低。
  • 鏈接分配可分為隱式鏈接和顯式鏈接兩種形式。
  • 1)隱式連接:每個文件對應一個磁盤塊的鏈表;磁盤塊分布在磁盤的任何地方,除最后一個盤塊外,每一個盤塊都有指向下一個盤塊的指針,這些指針對用戶是透明的。
    隱式鏈接分配的缺點在于無法直接訪問盤塊,只能通過指針順序訪問文件,盤塊指針也消耗了一定的存儲空間。隱式鏈接分配的穩定性也有問題,系統在運行過程中由于軟件或者硬件錯誤導致鏈表中的指針丟失或損壞,會導致文件數據的丟失。
  • 2)顯式連接:是指把用于鏈接文件各物理塊的指針,顯式地存放在內存的一張鏈接表中。該表在整個磁盤僅設置一張,每個表項中存放鏈接指針,即下一個盤塊號。在該表中,凡是屬于某文件的第一個盤塊號,或者每一條鏈的鏈首指針所對應的盤塊號,均作為文件地址被填入相應文件的FCB的“物理地址”字段中。
    由于查找記錄的過程是在內存中進行的,因而不僅顯著地提高了檢索速度,而且大大減少了訪問磁盤的次數。由于分配給文件的所有盤塊號都放在該表中,稱該表為文件分配表(FAT)。

3、索引分配(索引存儲結構):鏈接分配解決了連續分配的外部碎片和文件大小管理的問題。但是鏈接分配不能有效支持直接訪問(FAT除外)。索引分配解決了這個問題,它把每個文件的所有的盤塊號都集中放在一起構成索引塊(表),每個文件都有其索引塊,這是一個磁盤塊地址的數組。索引塊的第i個條目指向文件的第i個塊。目錄條目包括索引塊的地址。要讀第i塊,通過索引塊的第i個條目的指針來查 找和讀入所需的塊。

  • 索引分配除了具備鏈接文件的優點外,還克服了它的缺點,支持隨機存取,且沒有外部碎片。但索引分配需要增加索引表,空間開銷也會增大,所以存取文件的速度也會受到一定的影響。
  • 索引塊的大小是個重要問題,每個文件必須有一個索引塊,如果索引塊太小就無法支持大文件,可以釆用以下機制來處理:
    • 1)多層索引:多層索引使第一層索引塊指向第二層的索引塊,第二層索引塊再指向文件塊。這種方法根據最大文件大小的要求,可以繼續到第三層或第四層。例如,4096B的塊,能在索引塊中存入1024個4B的指針。兩層索引允許1048576個數據塊,即允許最大文件為4GB。
    • 2)混合索引:將多種索引分配方式相結合的分配方式。例如,系統既釆用直接地址,又采用單級索引或兩級索引等方式。
      索引塊分為直接塊和間接塊,多重索引具有一般索引文件的優點,但也存在著間接索引需要多次訪盤而影響速度的缺點。

      混合索引:混合索引分配在UNIX系統中釆用,UNK SystemV的索引結點中,共設置了13個地址項,iaddr(O)–iaddr(12)。在BSD UNIX的索引結點中,共設置了13個地址項,它們都把所有的地址項分成兩類,即直接地址和間接地址。
      • 直接地址:為了提高對文件的檢索速度,在索引結點中設置10個直接地址項,即iaddr(O)–iaddr(9)來存放直接地址。每項中所存放的是該文件數據所在盤塊的盤塊號。假如每個盤塊的大小為4KB,當文件不大于40KB時,便可直接從索引結點中讀出該文件的全部盤塊號。
      • 一次間接地址:對于大中型文件,只釆用直接地址并不現實。可再利用索引結點中的地址項iaddr(lO) 來提供一次間接地址,就是一級索引分配。一次間址塊就是索引塊,系統將分配給文件的多個盤塊號記入其中。在一次間址塊中可存放1024個盤塊號,因而允許文件長達4MB。
      • 多次間接地址:當文件長度大于4MB+40KB(—次間址與10個直接地址項)時,系統釆用二次間接地址。用地址項iaddr(11)提供二次間接地址,就是兩級索引分配方式。系統此時是在二次間址塊中記入所有一次間址塊的盤號。在釆用二次間址方式時,文件最大長度可達4GB。同理,地址項iaddr(12)作為三次間接地址,其所允許的文件最大長度可達4TB。
      • 索引分配下,訪問文件需要至少兩次訪問外存,首先要讀取索引塊的內容,然后再訪問具體的磁盤塊,因而降低了文件的存取速度。為了解決這一問題,通常將文件的索引塊讀入內存的緩沖區中,以加快文件的訪問速度。

        文件三種分配方式的比較:

二、外存空間管理

  • 文件存儲器空間的劃分與初始化:一般說,一個文件存儲在一個文件卷中。文件卷可以是物理盤的一部分,也可以是整個物理盤,支持超大型文件的文件卷也可以由多個物理盤組成。
  • 在一個文件卷中,文件數據信息的空間(文件區)和存放文件控制信息FCB的空間(目錄區)是分離的。由于存在很多種類的文件表示和存放格式,所以現代操作系統中一般都有很多不同的文件管理模塊,通過它們可以訪問不同格式的邏輯卷中的文件。邏輯卷在提供文件服務前,必須由對應的文件程序進行初始化,劃分好目錄區和文件區,建立空閑空間管理表格及存放邏輯卷信息的超級塊。
  • 邏輯卷與物理盤的關系:
  • 文件存儲器空間管理:文件存儲設備分成許多大小相同的物理塊,并以塊為單位交換信息,因此,文件存儲設備的管理實質上是對空閑塊的組織和管理,它包括空閑塊的組織、分配與回收等問題。
  • 1、空閑表法:空閑表法屬于連續分配方式,與內存的動態分配方式類似,為每個文件分配一塊連續的存儲空間。系統為外存上的所有空閑區建立一張空閑盤塊表,每個空閑區對應于一個空閑表項,包括序號、該空閑區第一個盤塊號、該區的空閑盤塊數等信息。再將所有空閑區按其起始盤塊號遞增的次序排列。
  • 空閑盤區的分配與內存的動態分配類似,同樣可釆用首次適應算法、循環首次適應算法等。對釋放的存儲空間進行回收時,也釆取類似于內存回收的方法,即要考慮回收區是否與空閑表中插入點的前區和后區相鄰接,對相鄰接者應予以合并。
  • 空閑表法特別適于存放連續文件,若存儲空間有大量的小空閑區時,檢索效率降低。還會產生外存的外部碎片,造成磁盤空間的浪費。

2、空閑鏈表法:將所有空閑區域拉成一條空閑鏈,根據構成鏈所用的基本元素不同,可把鏈表分成空閑盤塊鏈和空閑盤區鏈。

  • 空閑盤塊鏈是將磁盤上的所有空閑空間以盤塊為單位拉成一條鏈。當用戶因創建文件而請求分配存儲空間時,系統從鏈首開始,依次摘下適當的數目的空閑盤塊分配給用戶。當用戶因刪除文件而釋放存儲空間時,系統將回收的盤塊依次插入空閑盤塊鏈的末尾。這種方法的優點是分配和回收一個盤塊的過程非常簡單,但在為一個文件分配盤塊時,可能要重復多次操作。
  • 空閑盤區鏈是將磁盤上的所有空閑盤區(每個盤區可包含若干個盤塊)拉成一條鏈。在每個盤區上除含有用于指示下一個空閑盤區的指針外,還應有能指明本盤區大小(盤塊數)的信息。分配盤區的方法與內存的動態分區分配類似,通常釆用首次適應算法。在回收盤區時,同樣也要將回收區與相鄰接的空閑盤區相合并。

3、位示圖法:位示圖是利用二進制的一位來表示磁盤中一個盤塊的使用情況,磁盤上所有的盤塊都有一個二進制位與之對應。當其值為“0”時,表示對應的盤塊空閑;當其值為“1”時,表示對應的盤塊已分配。

  • 盤塊分配:順序掃描位示圖,從中找出一個或一組其值為“0”的二進制位。將所找到的一個或一組二進制位,轉換成與之對應的盤塊號。修改位示圖,令相應位為“1”。
  • 盤塊回收:將回收盤塊的盤塊號轉換成位示圖中的行號和列號。修改位示圖,令相應位為“0”。

4、成組鏈接法:空閑表法和空閑鏈表法都不適合大型文件系統,因為會使空閑表或空閑鏈表太大。在UNIX系統中釆用的是成組鏈接法,這種方法結合了空閑表和空閑鏈表兩種方法,克服了表太大的缺點。

  • 基本思想:把一組n個空閑扇區地址保存在第一個空閑扇區內,其后一個空閑扇區內則保存另一組n各空閑扇區的地址,如此繼續,直至所有空閑扇區均予以鏈接。系統只需要保存一個指向第一個空閑扇區的指針。
  • 例如:每50個空閑塊為一組。
    第一組的50個空閑塊塊號放在第二組的頭一塊中,第二組的其余49塊是完全空閑的。第二組的50個塊號又放在第三組的頭一塊中,以此類推,組與組之間形成鏈接關系。
    表示存儲器空閑空間的“位向量”表或第一個成組鏈塊以及卷中的目錄區、文件區劃分信息都需要存放在輔存儲器中,一般放在卷頭位置,在UNIX系統中稱為“超級塊”。在對卷中文件進行操作前,“超級塊”需要預先讀入系統空間的主存,并保持主存“超級塊”與輔存卷中“超級塊”的一致性。

5.5 文件的共享與安全

一、文件的共享

  • 文件共享使多個用戶(進程)共享同一份文件,系統中只需保留該文件的一份副本。如果系統不能提供共享功能,那么每個需要該文件的用戶都要有各自的副本,會造成對存儲空間的極大浪費。
  • 隨著計算機技術的發展,文件共享的范圍已由單機系統發展到多機系統,進而通過網絡擴展到全球。這些文件的分享是通過分布式文件系統、遠程文件系統、分布式信息系統實現的。這些系統允許多個客戶通過C/S模型共享網絡中的服務器文件。

1、文件共享的定義:一個文件被多個用戶或進程使用。
2、文件共享形式:

  • 文件可以共享,但任何時刻只能有一個用戶或進程使用共享文件。
  • 文件可以同時被多個用戶或進程共享,需要進行相關的讀寫控制。

3、文件共享的作用:

  • 文件共享節省時間和存儲空間,減少了用戶工作量。利用文件共享可以實現進程間相互通信和信息交換。

4、文件共享方法(三類):早期文件共享方法;基于索引結點的共享方法;利用符號鏈實現文件共享。

  • 1)早期文件共享的方法
    ① 繞彎路法:每個用戶都獲得一個“當前目錄”,用戶所訪問的所有文件都是相對于當前目錄的;當所訪問的文件不在當前目錄下時,通過“向上走”的方式去訪問其上級目錄,然后一步一步到達所訪問的文件。
    ② 基本目錄法:在文件系統中設置一個基本目錄,每個文件在該目錄中均占有一個目錄項,用于給出系統賦予的該文件唯一的標識符及該文件的有關說明信息。同時每個用戶都有一個符號文件目錄,其中每一個目錄項都含有該文件的符號名及其唯一的標識符。

    ③ 連訪法:為了提高對共享文件的訪問速度,可在相應的目錄項之間進行鏈接,即使一個目錄中的目錄項直接指向另一目錄中的目錄項。同時在文件說明中增設連訪屬性,指示說明文件中物理地址是指向一個文件或共享文件目錄項的指針,以及共享用戶計數等。
  • 2)基于索引結點的共享方法(硬鏈接)
    這種共享方式中引用索引結點,即文件的物理地址及其他的文件屬性等信息,不再是放在目錄項中,而是放在索引結點中。在文件目錄中只設置文件名及指向相應索引結點的指針。在索引結點中還應有一個鏈接計數count,用于表示鏈接到本索引結點上的用戶目錄項的數目。當count=2時,表示有兩個用戶目錄項鏈接到本文件上,或者說是有兩個用戶共享此文件。
  • 當用戶A創建一個新文件時,A是該文件的所有者,此時將共享計數count置為1。當有用戶B要共享此文件時,在用戶B的目錄中增加一個目錄項,并設置一指針指向該文件的索引結點。此時,文件主仍然是用戶A,count=2。如果用戶A不再需要此文件,不能將文件直接刪除。因為刪除了該文件,也必然刪除該文件的索引結點,這樣會使用戶B的指針懸空,而用戶B可能正在執行寫操作,此時用戶B會無法訪問到文件。因此用戶A不能刪除此文件,只是將該文件的count減1,然后刪除自己目錄中的相應目錄項。用戶B仍可以使用該文件。當count=0時,表示沒有用戶使用該文件,系統將負責刪除該文件。

    3)利用符號鏈實現文件共享(軟鏈接)
  • 用戶B要共享用戶A的一個文件F,可以由系統創建一個LINK類型的新文件,也取名為F,并將文件F寫入用戶B的目錄中,以實現用戶B的目錄與文件F的鏈接。在新文件中只包含被鏈接文件F的路徑名。這種鏈接方法稱為符號鏈接(如快捷方式)。
  • 新文件中的路徑名則只被看做是符號鏈,當用戶B要訪問被鏈接的文件F且正要讀LINK類新文件時,操作系統根據新文件中的路徑名去讀該文件,從而實現了用戶B對文件F的共享。
    在利用符號鏈方式實現文件共享時,只有文件擁有者才有指向其索引結點的指針。共享該文件的其他用戶只有該文件的路徑名,并不擁有指向其索引結點的指針。當文件擁有者把共享文件刪除后,其他用戶通過符號鏈訪問時,會出現訪問失敗,于是將符號鏈刪除,不會留下懸空指針的情況,不會產生影響。
    利用符號鏈實現文件共享也存在問題,例如:一個文件釆用符號鏈方式共享,當文件擁有者將其刪除,而在共享的其他用戶使用其符號鏈接訪問該文件之前,又有人在同一路徑下創建了另一個具有同樣名稱的文件,則該符號鏈將仍然有效,但訪問的文件已經改變,從而導致錯誤。
    在符號鏈的共享方式中,當其他用戶讀共享文件時,需要根據文件路徑名逐個查找目錄,直至找到該文件的索引結點。因此每次訪問時可能要多次讀取磁盤,使得訪問文件開銷變大,并增加了啟動磁盤的頻率。此外,符號鏈的索引結點也要耗費一定的磁盤空間。符號鏈方式有一個很大的優點,即網絡共享只需提供該文件所在機器的網絡地址以及該機器中的文件路徑即可。
    基于索引節點和利用符號鏈兩種方式都存在一個共同的問題,即每個共享文件都有幾個文件名。就是每增加一條鏈接,就增加一個文件名。這實質上就是每個用戶都使用自己的路徑名去訪問共享文件。當用戶或系統試圖遍歷整個文件系統時,將會多次遍歷到該共享文件。

二、文件安全
1、文件安全包括文件保密和文件保護

  • 保密是為了防止未經授權的非法用戶對文件進行訪問,同時防止合法用戶的有意或無意的泄漏。
    • 偽裝者:未經授權的非法用戶,一般來源于系統外部。
    • 違法者:合法用戶,但非法訪問未授權數據,一般來源于系統內部。
    • 地下用戶:掌握了系統的管理控制,并逃避系統管理控制的用戶,可能來源于系統外部,也可能來源于系統內部。
  • 保護措施是為了防止人為的、系統的、自然的有意或無意對文件造成的破壞。

2、影響文件安全性的主要因素:

  • 1)人為因素:指各種影響文件安全的人為方式,有意或無意的泄漏信息或破壞信息,如黑客非法入侵,泄露、計算機病毒等。
  • 2)系統因素:指計算機系統可能產生的各種軟、硬件故障,它們將會引起文件存儲器的信息丟失或物理損壞;現在計算機系統采用各種系統容錯技術來避免系統因素導致的信息安全問題。
  • 3)自然因素:即存放在磁盤上的數據,隨著時間的推移將可能發生溢出或逐漸消失。

3、為確保文件的安全性可采取的措施:

  • 1)對于人為因素造成的不安全性,通過存取控制機制進行防止,如口令、加密、權限設置等。
  • 2)對于系統因素造成的不安全性,通過系統容錯技術進行防止,如FAT和目錄雙備份、重定向熱修復區、磁盤鏡像、磁盤雙工、廉價磁盤冗余陣列等。
  • 3)對于自然因素造成的不安全性,通過“后備系統”進行防止,如系統及文件備份、日志管理等。

4、四級安全防護體系:

  • 1)系統級安全管理:通過對現行系統安全技術的分析,制定系統級安全策略,策略包括安全登陸(合法用戶注冊、登陸時要驗證用戶名及口令等)、敏感系統的隔離、訪問地址段的限制、登錄時間段的限制、會話時間的限制、連接數的限制、特定時間段內登錄次數的限制以及遠程訪問控制等,系統級安全是應用系統的第一道防護大門。
  • 2)用戶級安全管理:設定用戶身份及存取權限,可執行何種操作。UNIX將用戶分為文件主(文件創建者)、文件主的同組用戶或合作者、其他用戶三種;Windows將用戶分為系統管理員、一般用戶、訪客三種。用戶只能按照其權限進行操作和訪問。
  • 3)目錄級安全管理:設定目錄的存取屬性。
  • 4)文件級安全管理:設定文件的存取屬性。
    合法用戶的權限下,又符合目錄和文件的操作屬性,才能最終完成相應的目錄或文件操作。

三、文件保密

  • 常用保密方法有很多,一般有以下幾種:
  • 1、用戶名及口令:用戶在創建文件時為其規定一個口令,系統將此口令保存在該文件的文件控制塊中。當用戶使用該文件時,系統要求用戶輸入口令,并與保存在文件控制塊中的口令相比較,只有口令一致時,才允許訪問,否則不允許訪問。這種方法的優點是實現簡單,缺點是保密性比較差,不能控制存取權限。
  • 2、存取控制表:系統為每個文件形成一張存取控制表,該表給每類用戶規定了存取權限,或給每個用戶規定存取權限。
  • 3、存取控制矩陣:由系統的全部用戶和系統中的全部文件組成一個二維矩陣。矩陣的每個元素aij規定了第i個用戶對第j個文件的訪問權限。例如,aij=1表示可讀;aij =2表示可寫;aij=3表示可執行。如果用戶和文件較多時,這個矩陣很大,實現起來系統開銷太大,而且使用也不很方便。
  • 4、訪問控制策略:進行訪問控制的整體方法,主要有自主訪問控制(DAC)、強制訪問控制(MAC)和基于角色訪問控制(RBAC)。
    • 1)自主訪問控制:通過執行基于系統實體身份及其到系統資源的接入授權。通常DAC通過授權列表(或訪問控制列表)來限定哪些主體針對哪些客體可以執行什么操作。如此將可以非常靈活地對策略進行調整。由于其易用性與可擴展性,自主訪問控制機制經常被用于商業系統。
    • 2)強制訪問控制(MAC):是系統強制主體服從訪問控制策略。是由系統對用戶所創建的對象,按照規定的規則控制用戶權限及操作對象的訪問。在MAC中,每個用戶及文件都被賦予一定的安全級別,只有系統管理員才可確定用戶和組的訪問權限,用戶不能改變自身或任何客體的安全級別。系統通過比較用戶和訪問文件的安全級別,決定用戶是否可以訪問該文件。常用于軍事用途。
    • 3)基于角色的訪問控制:角色是一定數量的權限的集合。指完成一項任務必須訪問的資源及相應操作權限的集合。角色作為一個用戶與權限的代理層,表示為權限和用戶的關系,所有的授權應該給予角色而不是直接給用戶或用戶組。基于角色的訪問控制(Role-Based Access Control,RBAC)是通過對角色的訪問所進行的控制。使權限與角色相關聯,用戶通過成為適當角色的成員而得到其角色的權限。RBAC支持三個著名的安全原則:最小權限原則、責任分離原則和數據抽象原則。

5、加密:創建文件時,由用戶提供一個密碼,在文件存入磁盤時用該密碼對文件內容加密。進行讀取操作時,要對文件解密。這樣只有知道密碼的用戶才能對文件進行訪問,其他用戶不能任意訪問文件。

  • 常用加密方法:
    方法一:修改后綴名(并不是真正的加密)。
    如:將123.doc改為456.avi
    方法二:用winrar等壓縮軟件加密,適合文件比較小的加密。
    方法三:使用專門的加密軟件加密,如文件加密大師。
    方法四:使用硬件加密,加密狗。
    方法五:文件相互捆綁,將要加密的文件捆綁在另一個文件中。

四、文件保護

1、系統容錯

  • 1)盤塊一致性檢查:檢查程序建立兩個表格,即使用表和空閑表,標記互相相反。
  • 2)文件一致性檢查:從根目錄開始,沿目錄樹遞歸向下查找。對于每個目錄中的每個文件,其i節點對應的計數器值加1。當檢查完畢后,得到一個以i節點號為下標的列表,說明每個文件包含在多少個目錄中。然后,把這些數目與存放在i節點中的鏈接計數進行比較。如果文件系統保持一致性,那么兩個值相同;否則,出現兩種錯誤,即i節點中的鏈接計數太大或太小。
  • 3)寫后讀校驗、重定向熱修復
  • 4)文件分配表(FAT)雙備份
  • 5)文件目錄雙備份
  • 6)磁盤鏡像、磁盤雙工
  • 7)RAID

2、后備系統

  • 1)建立副本:把一個文件的不同副本分別存到不同介質上。操作簡單、但修改一個文件則必須同時修改其他副本。
  • 2)定時轉儲:把所有文件采用定期轉儲到磁帶或磁盤上備份起來,包括完全轉儲和增量轉儲。
    • 1)完全轉儲(海量轉儲):即定期將所有文件全部拷貝到后援存儲器中,后援存儲器可以是磁帶、磁盤、光盤等。當磁盤上的文件被破壞時,可將備份設備上的文件重新裝入磁盤,使文件得以恢復。完全轉儲需要較多的時間,而且必須在沒有用戶使用文件時進行,不宜過于頻繁,一般每天一次或每周一次。
    • 2)增量轉儲:所謂增量轉儲并不復制所有文件,而是僅復制兩次轉儲期間內被修改過的內容。增量轉儲節省時間,但其實現略復雜。
    • 3)日志管理:紀錄系統工作中發生的每次操作和修改。
      實際應用當中,通常采用“完全備份”和“增量備份”相結合的方法。出現問題時,首先用完全備份的內容恢復,再用增量備份的內容恢復,最后使用日志進行恢復。

五、文件使用

用戶在使用文件系統時,必須按照操作系統提供的方式和要求來完成具體的文件操作。

1、建立文件

  • 建立文件系統調用的一般格式:create(文件名,參數表)
  • 用戶提供要創建的文件的文件名及若干參數,系統為這一新創建的文件分配一個文件控制塊,根據用戶提供的參數及系統控制需要填寫文件控制塊中的有關項。有的系統還返回給用戶一個文件控制塊描述符,以后用戶使用該文件控制塊描述符存取該文件。

2、打開文件

  • 如果使用文件,首先要打開。以建立用戶和文件的聯系。打開文件系統調用的一般格式:open(文件名,讀寫方式)
    讀寫方式可為讀、寫和既讀又寫等。
  • 系統主要完成:(1)檢查該文件名所對應的文件控制塊是否已在內存,如果不在,則將其調入內存,這時文件控制塊稱為“活躍的”。(2)檢查操作合法性,例如,若該文件為只讀文件,但用戶卻將“讀寫方式”置為寫,則系統不予打開。有些系統中,在執行完系統調用open之后返回用戶一個文件描述符,以后用戶使用文件描述符而不是文件名對該文件讀寫。

3、讀文件

  • 打開文件后,就可以讀取文件中的信息。讀文件系統調用的一般格式:read(文件名,記錄鍵,內存位置)
  • 是把指定文件中給定鍵值的記錄讀入內存指定單元。

4、寫文件

  • 寫文件系統調用一般格式:write(文件名,記錄鍵,內存位置)
  • 表示把內存中指定單元的數據作為指定鍵值的一個記錄寫入指定文件中,系統還將為其分配物理塊,以把記錄信息寫在外存上。

5、關閉文件

  • 文件關閉后一般不能存取,若要存取,則必須再次打開。關閉文件系統調用的一般格式:close(文件名)
  • 系統根據用戶提供的文件名或文件描述符,在該文件的文件控制塊上做修改。例如,將該文件的共享用戶數減l,減1后若值為0,若該文件控制塊內容被修改過,則要寫回外存。

6、刪除文件

  • 刪除文件系統調用的一般格式:delete (文件名)
  • 系統根據用戶提供的文件名或文件描述符,檢查刪除的合法性,若合法,則收回文件所占用的各種資源。

7、其它文件操作

  • 附加文件append 重新命名文件rename
  • 取文件屬性get_attributes 置文件屬性set_attributes

8、目錄操作

  • 創建目錄create 刪除目錄delete
  • 打開目錄opendir 關閉目錄closedir
  • 讀目錄readdir 重新命名目錄rename

9、文件操作的基本步驟:

  • 讀文件步驟:打開文件,讀文件,關閉文件
  • 寫文件步驟:打開文件,寫文件,關閉文件
  • 用戶通過什么操作申請文件的使用權?
    打開文件和建立文件
  • 用戶通過什么操作歸還文件的使用權?
    關閉文件

  • 補充:文件系統實現概述:
    為創建一個文件,應用程序調用邏輯文件系統。邏輯文件系統知道目錄結構形式,它將分配一個新的FCB給文件,把相應目錄讀入內存,用新的文件名更新該目錄和FCB,并將結果寫回到磁盤。
    一旦文件被創建,就能用于I/O,不過首先要打開文件。調用open將文件名傳給文件系統,文件系統根據給定文件名搜索目錄結構。部分目錄結構通常緩存在內存中以加快目錄操作。找到文件后,其FCB復制到系統的打開文件表。該表不但存儲FCB,也有打開該文件的進程數量的條目。
    然后,單個進程的打開文件表中會增加一個條目,并通過指針將系統范圍的打開文件表的條目同其他域(文件當前位置的指針和文件打開模式等)相連。調用open返回的是一個指向單個進程的打開文件表中合適條目的指針。所以文件操作都是通過該指針進行。
    文件名不必是打開文件表的一部分,因為一旦完成對FCB在磁盤上的定位,系統就不再使用文件名了。對于訪問打開文件表的索引,UNIX稱之為文件描述符,Windows稱之為文件句柄。因此,只要文件沒有被關閉,所有文件操作通過打開文件表來進行。
    當一個進程關閉文件,就刪除一個相應的單個進程打開文件表的條目即目錄項,系統范圍內打開文件表的打開數也會遞減。當打開文件的所有用戶都關閉了一個文件時,更新的文件信息會復制到磁盤的目錄結構中,系統范圍的打開文件表的條目也將刪除。
    在實際中,系統調用open會首先搜索系統范圍的打開文件表以確定某文件是否已被其他進程所使用。如果是,就在單個進程的打開文件表中創建一項,并指向現有系統范圍的打開文件表的相應條目。

總結

以上是生活随笔為你收集整理的超详细|一篇搞定操作系统——文件管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。