超详细|一篇搞定操作系统——文件管理
文章目錄
- 5.1 文件管理概述
- 5.2 文件結(jié)構(gòu)
- 5.2.1 文件的邏輯結(jié)構(gòu)
- 5.2.2 文件的物理結(jié)構(gòu)
- 5.3 文件目錄管理
- 5.4 文件的存儲(chǔ)設(shè)備
- 5.4.1 文件的存儲(chǔ)設(shè)備
- 5.4.2 磁盤調(diào)度算法
- 5.4.3 存儲(chǔ)空間的分配與回收
- 5.5 文件的共享與安全
操作系統(tǒng)全家桶:傳送門
一、操作系統(tǒng)引述:https://blog.csdn.net/diviner_s/article/details/108829327
二、處理器管理:https://blog.csdn.net/diviner_s/article/details/108940809
三、存儲(chǔ)器管理:https://blog.csdn.net/diviner_s/article/details/112245241
四、設(shè)備管理: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 文件管理概述
一、文件管理基本功能
-
在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,要用到大量的程序和數(shù)據(jù),因內(nèi)存容量有限,且不能長期保存,所以把它們以文件的形式存放在外存中,需要時(shí)再隨時(shí)將它們調(diào)入內(nèi)存。所以在操作系統(tǒng)中又增加了文件管理功能,即構(gòu)成一個(gè)文件系統(tǒng),負(fù)責(zé)管理在外存上的文件,并把對文件的存取、共享和保護(hù)等手段提供給用戶。這不僅方便了用戶,保證了文件的安全性,還可有效地提高系統(tǒng)資源的利用率。
-
在現(xiàn)代OS中,是通過文件系統(tǒng)來組織和管理在計(jì)算機(jī)中存儲(chǔ)的大量程序和數(shù)據(jù);即文件系統(tǒng)的管理功能,是通過把它所管理的程序和數(shù)據(jù)組織成一系列文件的方法來實(shí)現(xiàn)的。
-
文件管理系統(tǒng),簡稱文件系統(tǒng)。
- 文件系統(tǒng) = 文件管理程序 + 它所管理的全部文件 + 文件管理所需的數(shù)據(jù)結(jié)構(gòu)
- 文件管理五大功能(用戶角度 + 系統(tǒng)角度):
1)文件存儲(chǔ)空間管理(即外存管理),分配與回收;
2)文件目錄管理;
3)實(shí)現(xiàn)邏輯文件到物理文件的轉(zhuǎn)換和映射;
4)實(shí)現(xiàn)對文件的各種控制操作和存取操作;
5)實(shí)現(xiàn)文件信息的共享,以及文件保密和保護(hù)措施。
二、文件系統(tǒng)中的一些概念
- 1、文件:簡單說文件是指具有文件名的若干相關(guān)元素的集合。詳細(xì)說文件是具有符號名的、在邏輯上具有完整意義的一組相關(guān)信息項(xiàng)的集合,保存在外存上并具有長期保存性。
- 2、文件系統(tǒng)的核心:是實(shí)現(xiàn)對文件的按名存取。
- 3、文件的屬性:文件類型、長度、建立時(shí)間、存取控制等
- 4、文件的訪問單位:位、字節(jié)、數(shù)據(jù)項(xiàng)、記錄等
- 5、數(shù)據(jù)項(xiàng):數(shù)據(jù)項(xiàng)是最低級的數(shù)據(jù)組織形式,分為兩種:
- 1)基本數(shù)據(jù)項(xiàng)。這是用于描述一個(gè)對象的某種屬性的字符集,是數(shù)據(jù)組織中可以命名的最小邏輯數(shù)據(jù)單位,即原子數(shù)據(jù),又稱為數(shù)據(jù)元素或字段。它的命名通常和其屬性一致。例如,用于描述一個(gè)學(xué)生的基本數(shù)據(jù)項(xiàng)有學(xué)號、姓名、年齡、班級等。
- 2)組合數(shù)據(jù)項(xiàng)。它是由若干個(gè)基本數(shù)據(jù)項(xiàng)組成的,簡稱組項(xiàng)。例如,班長便是一個(gè)組項(xiàng),它由正班長和副班長兩個(gè)基本項(xiàng)組成。又如,工資也是一個(gè)組項(xiàng),它可由基本工資、績效工資和補(bǔ)助組成。
- 基本數(shù)據(jù)項(xiàng)除了數(shù)據(jù)名外,還應(yīng)有數(shù)據(jù)類型。因?yàn)榛卷?xiàng)僅是描述某個(gè)對象的屬性,根據(jù)屬性的不同,需要用不同的數(shù)據(jù)類型來描述。
6、記錄:記錄是一組相關(guān)數(shù)據(jù)項(xiàng)的集合,用于描述一個(gè)對象在某方面的屬性。一個(gè)記錄應(yīng)包含哪些數(shù)據(jù)項(xiàng),取決于需要描述對象的哪些方面。而一個(gè)對象由于他所處的環(huán)境不同可把他作為不同的對象。
- 例如,一個(gè)14歲的青少年,把他作為一個(gè)學(xué)生時(shí),對他的描述應(yīng)使用學(xué)號、姓名、年齡、班級等數(shù)據(jù)項(xiàng)。但若把他作為一個(gè)醫(yī)療對象,對他描述的數(shù)據(jù)項(xiàng)應(yīng)使用病例號、姓名、性別、身高、體重及病史等項(xiàng)。
- 在諸多記錄中,為了能唯一的標(biāo)識一個(gè)記錄,必須在一個(gè)記錄的各個(gè)數(shù)據(jù)項(xiàng)中,確定出一個(gè)或幾個(gè)數(shù)據(jù)項(xiàng),把它們的集合稱為關(guān)鍵字(key)。或者說,關(guān)鍵字是唯一能標(biāo)識一個(gè)記錄的數(shù)據(jù)項(xiàng)。通常,只需用一個(gè)數(shù)據(jù)項(xiàng)作為關(guān)鍵字。
7、文件、記錄和數(shù)據(jù)項(xiàng)之間的層次關(guān)系:
三、文件類型
- 根據(jù)不同角度,可以將文件劃分為不同類別。
- 1、按性質(zhì)和用途可分為:
- 1)系統(tǒng)文件:如內(nèi)核,系統(tǒng)應(yīng)用程序,數(shù)據(jù);只允許用戶執(zhí)行,不能讀寫和修改。
- 2)庫文件:只允許讀和執(zhí)行,如C子程序庫。
- 3)用戶文件:由用戶建立的文件,如源程序、目標(biāo)程序和數(shù)據(jù)文件等。只允許文件所有者和所有者授權(quán)用戶使用。
2、按信息的保存期限可分為:
- 1)臨時(shí)文件:即記有臨時(shí)性信息的文件。用于系統(tǒng)在工作過程中產(chǎn)生的中間文件,一般有暫存的目錄。正常工作情況下,工作完畢會(huì)自動(dòng)刪除,一旦有異常情況往往會(huì)殘留不少臨時(shí)文件。
- 2)永久性文件:其信息需要長期保存的文件。指一般受系統(tǒng)管理的各種系統(tǒng)和用戶文件,經(jīng)過安裝或編輯、 編譯生成的文件,存放在軟盤、硬盤或光盤等外存上。
- 3)檔案文件:系統(tǒng)或一些實(shí)用工具軟件包在工作過程中記錄在案的文檔資料文件,以便查閱歷史檔案。
3、按文件中數(shù)據(jù)的形式可分為:
- 1)源文件:由源程序和數(shù)據(jù)構(gòu)成的文件。通常由終端或輸入設(shè)備輸入的源程序和數(shù)據(jù)所形成的文件都屬于源文件。
- 2)目標(biāo)文件:把源程序經(jīng)過相應(yīng)語言的編譯程序編譯過,但尚未經(jīng)過鏈接程序鏈接的目標(biāo)代碼所構(gòu)成的文件。它屬于二進(jìn)制文件。通常,目標(biāo)文件所使用的后綴名是“.obj”。
- 3)可執(zhí)行文件:把編譯后所產(chǎn)生的目標(biāo)代碼再經(jīng)過鏈接程序鏈接后所形成的文件。
4、按存取控制屬性可分為:
- 1)只執(zhí)行文件:只允許被核準(zhǔn)的用戶調(diào)用執(zhí)行,既不允許讀,更不允許寫。
- 2)只讀文件:只允許文件主及被核準(zhǔn)的用戶去讀,但不允許寫。
- 3)讀寫文件:允許文件主和被核準(zhǔn)的用戶去讀或?qū)懙奈募?/li>
- 4)無保護(hù)文件。
- 各個(gè)操作系統(tǒng)的保護(hù)方法和級別有所不同:DOS操作系統(tǒng)有系統(tǒng)、隱藏、可寫三種保護(hù);UNIX或Linux操作系統(tǒng)有九個(gè)級別的保護(hù)。
5、按文件的邏輯結(jié)構(gòu)可分為:
- 1)有結(jié)構(gòu)文件(記錄式文件):由若干個(gè)記錄所構(gòu)成的文件,如大量的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫。
- 2)無結(jié)構(gòu)文件(流式文件):直接由字符序列所構(gòu)成的文件,文件長度為所含字符數(shù)。如大量的源程序,可執(zhí)行程序,庫函數(shù)。
6、按文件的物理結(jié)構(gòu)可分為:
- 1)順序文件(連續(xù)文件):文件中的記錄,順序地存儲(chǔ)到連續(xù)的物理盤塊中,順序文件中所記錄的次序,與它們存儲(chǔ)在物理介質(zhì)上存放的次序是一致的。
- 2)鏈接文件:文件中的記錄可存儲(chǔ)在并不相鄰接的各個(gè)物理塊中,通過物理塊中的鏈接指針組成一個(gè)鏈表管理。
- 3)索引文件:文件中的記錄可存儲(chǔ)在并不相鄰接的各個(gè)物理塊中,記錄和物理塊之間通過索引表項(xiàng)按關(guān)鍵字存取文件,通過物理塊中的索引表管理,形成一個(gè)完整的文件。
- 4)Hash文件:通過散列函數(shù)實(shí)現(xiàn)存儲(chǔ)的文件。
7、按文件的內(nèi)容形式和系統(tǒng)處理方式可分為:
- 1)普通文件:由ASCII碼或二進(jìn)制碼組成的文件。一般用戶建立的源程序文件、數(shù)據(jù)文件、目標(biāo)代碼文件及操作系統(tǒng)自身代碼文件、庫文件等都是普通文件,它們通常存儲(chǔ)在外存儲(chǔ)設(shè)備上。
- 2)目錄文件:由文件目錄組成的,用來管理和實(shí)現(xiàn)文件系統(tǒng)功能的系統(tǒng)文件,通過目錄文件可對其它文件的信息進(jìn)行檢索。目錄文件也是由字符序列構(gòu)成,可進(jìn)行與普通文件一樣的各種操作。
- 3)特殊文件(設(shè)備文件):特指系統(tǒng)中的各類I/O設(shè)備。為了便于統(tǒng)一管理,系統(tǒng)將所有的輸入/輸出設(shè)備都視為文件,按文件方式提供給用戶使用。
四、文件擴(kuò)展名與文件屬性
1、用戶對文件是“按名存取”的。很多操作系統(tǒng)支持的文件名都由兩部分構(gòu)成:文件名和擴(kuò)展名,二者間用圓點(diǎn)分開。
2、常用圖像文件類型
- BMP格式:Bitmap(位圖),Windows操作系統(tǒng)中的標(biāo)準(zhǔn)圖像文件格式,包含的圖像信息較豐富,幾乎不進(jìn)行壓縮,缺點(diǎn)是占用磁盤空間過大
- GIF格式:圖形交換格式,壓縮比高,磁盤空間占用較少,支持簡單2D動(dòng)畫
- JPEG格式(擴(kuò)展名為.jpg或.jpeg):高度壓縮,圖像的顏色質(zhì)量有所降低,設(shè)計(jì)師不會(huì)選用這種格式,但報(bào)業(yè)用戶使用的較多
- JPEG2000格式:與JPEG相比,它具備更高壓縮率以及更多新功能的新一代靜態(tài)影像壓縮技術(shù)。
- TIFF格式:是Mac中廣泛使用的圖像格式,特點(diǎn)是圖像格式復(fù)雜、存貯信息多,非常有利于原稿的復(fù)制
- PSD格式:Photoshop的專用格式,在Photoshop所支持的各種圖像格式中,PSD的存取速度比其它格式快很多,功能也很強(qiáng)大
- PNG格式:PNG是目前最不失真的格式,汲取了GIF和JPG二者的優(yōu)點(diǎn),存貯形式豐富,能把圖像文件壓縮到極限,利于網(wǎng)絡(luò)傳輸,又能保留與圖像品質(zhì)有關(guān)的信息,缺點(diǎn)是不支持動(dòng)畫應(yīng)用效果
- SWF格式:Flash制作出一種后綴名為SWF(Shockwave Format)的動(dòng)畫,適合網(wǎng)絡(luò)傳輸,放大不失真
3、常用聲音文件類型
- CD格式:天籟之音,近似無損的,基本上是忠于原聲,*.cda
- WAV:無損的音樂,微軟公司開發(fā),WAV格式的聲音文件質(zhì)量和CD相差無幾
- MP3:流行的風(fēng)尚,誕生于八十年代的德國,文件尺寸小,音質(zhì)好
- MIDI:作曲家的最愛
- WMA:最具實(shí)力的敵人,音質(zhì)要強(qiáng)于MP3格式,更遠(yuǎn)勝于RA格式
4、常用視頻文件類型
- AVI格式:最清晰的、最常用的
- DV-AVI格式:攝像機(jī)采集常用
- MPEG格式:MPEG-1 、MPEG-2 、MPEG-4
- DivX格式(DVDrip)
- RM格式:用的少了
- RMVB格式:比RM清晰些,一部大小為700MB左右的DVD影片,轉(zhuǎn)錄成同樣視聽品質(zhì)的RMVB格式,最多也就400MB左右,具有內(nèi)置字幕和無需外掛插件支持
5、文件屬性:描述文件特征的屬性
五、文件系統(tǒng)模型
- 文件系統(tǒng)模型:模型分為三個(gè)層次,最底層是對象及其屬性說明;中間層是對對象進(jìn)行操縱和管理的軟件集合,最高層是文件系統(tǒng)提供給用戶的外文件系統(tǒng)接口。
1、對象及其屬性說明:文件管理系統(tǒng)管理的對象有三種
- 1)文件。文件管理的直接對象。
- 2)目錄。為了方便用戶對文件的存取和檢索,在文件系統(tǒng)中必須配置目錄,每個(gè)目錄項(xiàng)中,必須含有文件名及該文件所在的物理地址(或指針)。對目錄的組織和管理是方便用戶和提高對文件存取速度的關(guān)鍵。
- 3)磁盤(磁帶)存儲(chǔ)空間。文件和目錄要占用存儲(chǔ)空間,對這部分空間的有效管理,不僅能提高外存的利用率,而且能提高對文件的存取速度。
2、對對象操縱和管理的軟件集合:是文件管理系統(tǒng)的核心部分,文件系統(tǒng)的功能大多是在這一層實(shí)現(xiàn)的,包括:對文件存儲(chǔ)空間的管理、對文件目錄的管理、用于將文件的邏輯地址轉(zhuǎn)換為物理地址的機(jī)制、對文件讀和寫的管理,以及對文件的共享與保護(hù)等功能。
- 1)輸入輸出控制層:也叫設(shè)備驅(qū)動(dòng)程序?qū)?#xff0c;負(fù)責(zé)啟動(dòng)輸入輸出操作、對設(shè)備發(fā)來的輸入輸出信號進(jìn)行處理。
- 2)基本文件系統(tǒng):也叫物理輸入輸出層,用于處理主存與磁盤間數(shù)據(jù)塊的交換。
- 3)基本輸入輸出管理程序:也叫文件組織模塊,負(fù)責(zé)與磁盤輸入輸出有關(guān)的事務(wù),如選擇設(shè)備、邏輯塊號到物理塊號的轉(zhuǎn)換、空閑盤塊的管理、輸入輸出緩沖的指定。
- 4)邏輯文件系統(tǒng):負(fù)責(zé)文件和記錄的相關(guān)操作。
3、文件系統(tǒng)接口:
- 為方便用戶使用文件系統(tǒng),文件系統(tǒng)通常向用戶提供兩種類型的接口:
1)命令接口(命令行/圖形):作為用戶與文件系統(tǒng)交互的接口。用戶可通過鍵盤終端鍵入命令或使用圖標(biāo)菜單等,取得文件系統(tǒng)的服務(wù)。
2)程序接口:作為用戶程序與文件系統(tǒng)的接口。用戶程序可通過系統(tǒng)調(diào)用來取得文件系統(tǒng)的服務(wù)。
六、常見文件系統(tǒng)的類型
-
exFAT:擴(kuò)展FAT,適合閃存、U盤。
-
EXT2、EXT3、EXT4:Linux采用的文件系統(tǒng)
-
HFS:分層文件系統(tǒng),Mac OS使用,最初被設(shè)計(jì)用于軟盤和硬盤,同時(shí)也可以在在只讀媒體如CD-ROM上見到。
-
RAW:磁盤未經(jīng)處理或者未經(jīng)格式化產(chǎn)生的的文件系統(tǒng)。造成原因:
- 未格式化
- 硬盤出現(xiàn)壞道
- 病毒
-
FAT文件系統(tǒng):FAT(文件分配表)是一個(gè)主要的計(jì)算機(jī)檔案系統(tǒng)應(yīng)用于各種操作系統(tǒng)中,主要用于DOS中,包括DR-DOS、OpenDOS、freeDOS、MS-DOS、Windows(Windows Me及Windows Me之前的Windows操作系統(tǒng)),FAT同樣適用于可移動(dòng)閃存盤和存儲(chǔ)卡。
- 下面的表顯示設(shè)備應(yīng)該在什么的FAT系統(tǒng)下格式化:
- 下面的表顯示設(shè)備應(yīng)該在什么的FAT系統(tǒng)下格式化:
-
NTFS文件系統(tǒng):NTFS是基于Windows NT的文件系統(tǒng),包括Windows 2000、Windows XP、Windows Server 2003、和Windows Server 2008及后續(xù)系統(tǒng)。NTFS是為Windows系統(tǒng)中的驅(qū)動(dòng)器所設(shè)計(jì)(硬盤驅(qū)動(dòng)器及固態(tài)硬盤驅(qū)動(dòng)器)。NTFS有幾項(xiàng)改進(jìn),如改進(jìn)的FAT支持元數(shù)據(jù)和使用先進(jìn)的數(shù)據(jù)結(jié)構(gòu)來改善性能,可靠性和磁盤空間的利用,再加上額外的擴(kuò)展,如安全訪問控制列表和文件系統(tǒng)日志。
- 注意:NTFS格式的設(shè)備無法在MAC的電腦上寫入數(shù)據(jù)。大多數(shù)MAC電腦能讀取NTFS,但是不能寫入。NTFS是一個(gè)日志文件系統(tǒng),它會(huì)產(chǎn)生更多的讀或?qū)懙幕顒?dòng),因此可能會(huì)減少閃存盤的壽命。一旦設(shè)備被格式化成NTFS格式,你必須使用“安全移除硬件”。
- NTFS的四大優(yōu)點(diǎn):
1)具備錯(cuò)誤預(yù)警的文件系統(tǒng):如果MFT(主文件表)所在的磁盤扇區(qū)恰好出現(xiàn)損壞,NTFS文件系統(tǒng)會(huì)比較智能地將MFT換到硬盤的其他扇區(qū),保證了文件系統(tǒng)的正常使用。
2)文件讀取速度更高效
3)磁盤自我修復(fù)功能:NTFS文件系統(tǒng)每次讀寫時(shí),都會(huì)檢查扇區(qū)正確與否。當(dāng)讀取時(shí)發(fā)現(xiàn)錯(cuò)誤,NTFS會(huì)報(bào)告這個(gè)錯(cuò)誤;當(dāng)向磁盤寫文件時(shí)發(fā)現(xiàn)錯(cuò)誤,NTFS將會(huì)十分智能地?fù)Q一個(gè)完好位置存儲(chǔ)數(shù)據(jù),操作不會(huì)受到任何影響。在這兩種情況下,NTFS都會(huì)在壞扇區(qū)上作標(biāo)記,以防今后被使用。
4)事件日志功能
5.2 文件結(jié)構(gòu)
- 文件組織的兩種觀點(diǎn):
- 用戶觀點(diǎn)(文件的邏輯結(jié)構(gòu)):研究的是用戶思維中的抽象文件,也叫邏輯文件。其目的是為用戶提供一種結(jié)構(gòu)清晰、使用簡便的邏輯組織。用戶按此去存儲(chǔ)、檢索和加工處理有關(guān)文件信息。
- 實(shí)現(xiàn)觀點(diǎn)或系統(tǒng)觀點(diǎn)(文件的物理結(jié)構(gòu)):研究的是存儲(chǔ)在物理設(shè)備介質(zhì)上的實(shí)際文件,即物理文件。其目的是選擇一些性能良好、設(shè)備利用率高的物理結(jié)構(gòu)。系統(tǒng)按此和外部設(shè)備打交道,控制信息的傳輸。
5.2.1 文件的邏輯結(jié)構(gòu)
一、文件的邏輯結(jié)構(gòu)分類
按邏輯結(jié)構(gòu),文件有無結(jié)構(gòu)文件和有結(jié)構(gòu)文件兩種類型。
1、無結(jié)構(gòu)文件(流式文件)
- 數(shù)據(jù)按順序組織并積累保存,由字符流構(gòu)成的文件,文件長度按字節(jié)計(jì)算。
- 大量的源程序、可執(zhí)行文件、庫函數(shù)等,所采用的就是流式文件。
- 在空間利用上較節(jié)省,沒有額外的說明和控制信息。
- 流式文件使用戶可以靈活組織文件結(jié)構(gòu),對OS來說 管理方便。
- 在UNIX系統(tǒng)中,所有的文件都被看作是流式文件。
2、有結(jié)構(gòu)文件(記錄式文件)
- 構(gòu)成文件的基本單位是記錄,記錄式文件是一組有序記錄的集合,按順序編號,可以按記錄號訪問。
- 記錄是一個(gè)具有特定意義的信息單位,可以指定關(guān)鍵字,按關(guān)鍵字進(jìn)行訪問。
- 記錄式文件可把記錄按各種不同的方式排列,以便用戶對文件中的記錄進(jìn)行修改、追加、查找和管理。
二、有結(jié)構(gòu)文件的分類
1、有結(jié)構(gòu)文件按記錄的長度可分為:定長記錄文件和變長記錄文件
- 1)定長記錄文件(常用):
所有記錄長度相等;
檢索方便,根據(jù)記錄號i及記錄長度l;
存儲(chǔ)空間浪費(fèi)大。 - 2)變長記錄文件:
各個(gè)記錄長度不等;
只能順序查找;
存儲(chǔ)空間浪費(fèi)小。
2、有結(jié)構(gòu)文件按記錄的組織形式可以分為:
-
1)順序文件:文件中的記錄一個(gè)接一個(gè)地順序排列,記錄可以是定長的或變長的,可以順序存儲(chǔ)或以鏈表形式存儲(chǔ),在訪問時(shí)需要順序搜索文件。順序文件有以下兩種結(jié)構(gòu):
- ① 第一種是串結(jié)構(gòu),記錄之間的順序與關(guān)鍵字無關(guān)。通常的辦法是由時(shí)間決定,即按存入時(shí)間的先后排列,最先存入的記錄作為第1個(gè)記錄,其次存入的為第2個(gè)記錄,依此類推。
- ② 第二種是順序結(jié)構(gòu),文件中所有記錄按關(guān)鍵字順序排列。
- 在對記錄進(jìn)行批量操作時(shí),即每次要讀或?qū)懸淮笈涗?#xff0c;對順序文件的效率是所有邏輯文件中最高的;此外,也只有順序文件才能存儲(chǔ)在磁帶上,并能有效地工作,但順序文件對查找、修改、增加或刪除單個(gè)記錄的操作比較困難。
-
2)索引文件:
- 記錄式文件,特別是變長記錄文件只能順序查找,系統(tǒng)開銷較大。可以建立一張索引表加快檢索速度,索引表本身是定長記錄的順序文件。在記錄很多或是訪問要求高的文件中,需要引入索引以提供有效的訪問。實(shí)際中,通過索引可以成百上千倍地提高訪問速度。
- 記錄式文件,特別是變長記錄文件只能順序查找,系統(tǒng)開銷較大。可以建立一張索引表加快檢索速度,索引表本身是定長記錄的順序文件。在記錄很多或是訪問要求高的文件中,需要引入索引以提供有效的訪問。實(shí)際中,通過索引可以成百上千倍地提高訪問速度。
-
3)索引順序文件:索引順序文件是順序和索引兩種組織形式結(jié)合。索引順序文件將文件中的所有記錄分為若干個(gè)組,同組中關(guān)鍵字可以無序,但組與組之間關(guān)鍵字必須有序。為分組的順序文件建立一張索引表,在索引表中為每組中的第一個(gè)記錄建立一個(gè)索引項(xiàng),其中含有該記錄的關(guān)鍵字值和指向該記錄的指針。
主文件包含關(guān)鍵字和其他數(shù)據(jù)項(xiàng)。索引表只包含關(guān)鍵字和指針兩個(gè)數(shù)據(jù)項(xiàng),所有關(guān)鍵字遞增排列。查找一個(gè)記錄時(shí),通過索引表找到其所在的組,然后在該組中使用順序查找找到記錄。
對于含有N個(gè)記錄的順序文件,查找某關(guān)鍵字值的記錄時(shí)平均需要查找N/2次。在索引順序文件中,假設(shè)N個(gè)記錄分為M組,索引表中有M個(gè)表項(xiàng),每組有N/M個(gè)記錄,在查找某關(guān)鍵字值的記錄時(shí),先順序查找索引表,需要查找M/2次,然后再在主文件中對應(yīng)的組中順序查找,也需要查找N/M/2次,這樣總共查找M/2+N/M/2次。顯然,索引順序文件提高了查找效率,如果記錄數(shù)很多,可以釆用兩級或多級索引。索引文件和索引順序文件都提高了存取速度,但因?yàn)榕渲盟饕碓黾恿舜鎯?chǔ)空間。
5.2.2 文件的物理結(jié)構(gòu)
- 文件的物理結(jié)構(gòu):是指文件的內(nèi)部組織形式,亦即文件在物理存儲(chǔ)設(shè)備上的存放方法,是從系統(tǒng)的角度來看文件。
- 文件的物理結(jié)構(gòu)決定了文件信息在存儲(chǔ)設(shè)備上的存儲(chǔ)位置,因此,文件信息的邏輯塊號到物理塊號的轉(zhuǎn)換也是由文件的物理結(jié)構(gòu)決定的。
- 文件的存取方式也與文件的物理結(jié)構(gòu)有關(guān)。
- 常用的文件物理結(jié)構(gòu)有4種。
一、文件的訪問方式
- 用戶通過對文件的存取來完成對文件的各種操作,文件的存取方式是由文件的性質(zhì)和用戶使用文件的情況而確定的,一般有兩種方式:順序存取和隨機(jī)存取:
1、順序存取:就是按前后次序依次訪問文件的各個(gè)信息項(xiàng)。要訪問第i+1條記錄,必須先訪問第i條記錄。
-
對記錄式文件,是按記錄的排列順序來存取,如當(dāng)前讀取的記錄為Ri,則下一次讀取的記錄被自動(dòng)地確定為Ri+1。
-
對流式文件,順序存取反映讀寫指針的變化,在存取完一段信息后,讀寫指針自動(dòng)指出下次存取的位置。
-
1)對定長記錄文件,有 rpi+1= rpi + l
順序存取定長記錄文件示意圖:
-
2)對變長記錄文件 rpi+1 = rpi + li ,li是第i個(gè)記錄的長度。
順序存取變長記錄文件示意圖:
-
順序存取的優(yōu)缺點(diǎn):
- 順序存取的最佳應(yīng)用是對記錄進(jìn)行批量存取,即每次要讀或?qū)懸淮笈涗洉r(shí),順序存取的效率很高。適合數(shù)據(jù)統(tǒng)計(jì)和匯總
- 如果用戶要查找或修改單個(gè)記錄,系統(tǒng)需要逐個(gè)查找記錄。這時(shí),順序存取的性能就比較差,尤其是當(dāng)文件較大時(shí),情況更為嚴(yán)重。不適合用戶隨機(jī)查找、增加或刪除記錄。
2、隨機(jī)存取:又稱直接存取,允許用戶直接存取文件中的任一記錄,或者是根據(jù)存取命令把讀寫指針移到指定處讀寫。
- 隨機(jī)存取定長記錄文件示意圖:
- 隨機(jī)存取方式允許以任意順序讀取文件中的字節(jié)或記錄,要設(shè)置讀/寫指針的當(dāng)前位置
- 隨機(jī)方式下讀/寫等操作都以塊號為參數(shù)(**按地址存取)
二、文件的物理結(jié)構(gòu)
主要有四種物理結(jié)構(gòu):
- 順序結(jié)構(gòu) 鏈接結(jié)構(gòu)
- 索引結(jié)構(gòu) 散列結(jié)構(gòu)
1、順序結(jié)構(gòu)(連續(xù)結(jié)構(gòu)):是一種最簡單的物理結(jié)構(gòu),它把邏輯上連續(xù)的文件信息依次存放在連續(xù)編號的物理塊中。
- 只要知道文件在存儲(chǔ)設(shè)備上的起始地址(首塊號)和文件長度(總塊數(shù)),就能很快地進(jìn)行存取。順序存取效果好,也一定程度支持隨機(jī)存取。
- 優(yōu)點(diǎn):結(jié)構(gòu)簡單,訪問速度快。
- 缺點(diǎn):文件長度動(dòng)態(tài)增加困難,不適合某些需要經(jīng)常修改的文件。
- 文件的順序結(jié)構(gòu)示意圖:
2、鏈接結(jié)構(gòu):這種結(jié)構(gòu)將邏輯上連續(xù)的文件分散存放在若干不連續(xù)的物理塊中,每個(gè)物理塊設(shè)有一個(gè)指針,指向其后續(xù)的物理塊。
- 只要指明文件的第一個(gè)塊號,就可以按鏈指針檢索整個(gè)文件(隱式鏈接)。
- 優(yōu)點(diǎn):文件長度容易動(dòng)態(tài)變化,
- 缺點(diǎn):指針占用存儲(chǔ)空間,適合依據(jù)指針順序存取,不適合隨機(jī)存取訪問。
- 文件的鏈接結(jié)構(gòu)示意圖:
- 如果系統(tǒng)將鏈接指針全都拿出來集中存放,統(tǒng)一進(jìn)行管理
- 這就是FAT(文件分配表)(也稱為顯式鏈接方式)。
- FAT鏈接分配方式的問題:1)不能支持高效的直接存取。要對一個(gè)較大的文件進(jìn)行直接存取,須首先在FAT中順序地查找許多盤塊號。2)FAT需占用較大的內(nèi)存空間。
3、索引結(jié)構(gòu):采用這種結(jié)構(gòu),邏輯上連續(xù)的文件存放在若干不連續(xù)的物理塊中,系統(tǒng)為每個(gè)文件建立一張索引表,索引表記錄文件信息所在的邏輯塊號和與之對應(yīng)的物理塊號。
- 索引表也以文件的形式存在磁盤上。
給出索引表的地址,就可以查找與文件邏輯塊號對應(yīng)的物理塊號。
如果索引表過大,會(huì)占用較多空間。
可以采用多級索引結(jié)構(gòu),將一個(gè)大文件的所有索引表(二級索引)的地址放在另一個(gè)索引表(一級索引)中。 - 二級索引(或多級索引):
- 二級索引分配:
- 優(yōu)點(diǎn):訪問速度快,文件長度可動(dòng)態(tài)變化,適合隨機(jī)存取,順序存取性能也可以。
- 缺點(diǎn):存儲(chǔ)開銷大,因?yàn)槊總€(gè)文件有一個(gè)索引表,而索引表亦由物理塊存儲(chǔ),故需要占用額外的外存空間。另外,當(dāng)文件被打開時(shí),索引表需要讀入內(nèi)存,否則訪問速度會(huì)降低一半,故又需要占用額外的內(nèi)存空間,當(dāng)同時(shí)打開的文件很多時(shí),內(nèi)存開銷是可觀的。這種結(jié)構(gòu)限制了文件的最大長度。
4、散列結(jié)構(gòu):又稱雜湊結(jié)構(gòu)或Hash結(jié)構(gòu),其只適用于定長記錄文件和按記錄鍵隨機(jī)存取的訪問方式。散列結(jié)構(gòu)的思想是:通過計(jì)算來確定一個(gè)記錄在存儲(chǔ)設(shè)備上的存儲(chǔ)位置,依次先后存入的兩個(gè)記錄在物理設(shè)備上不一定相鄰。
- 按散列結(jié)構(gòu)組織文件的兩個(gè)關(guān)鍵問題是:
1)定義散列函數(shù)
2)解決沖突
三、記錄的成組與分解
- 磁盤塊的大小是預(yù)先劃分好的,大小固定;而邏輯記錄大小是用戶決定的;邏輯記錄大小往往與物理塊大小不一致,因此,引入記錄的成組和分解。
- 1、記錄的成組:把若干個(gè)邏輯記錄合成一組存放一塊的工作。進(jìn)行成組操作時(shí)必須使用主存緩沖區(qū),緩沖區(qū)的長度等于邏輯記錄長度乘以成組的塊因子。記錄的成組可以提高存儲(chǔ)空間的利用率;減少啟動(dòng)外設(shè)的次數(shù),提高工作效率。
- 2、記錄的分解:從一組邏輯記錄中把一個(gè)邏輯記錄分離出來的操作。進(jìn)程是先從磁盤中找到記錄所在的塊,并將本塊讀入主存緩沖區(qū),再從緩沖區(qū)取出所需要的記錄送到用戶工作區(qū)。如果用戶所需的記錄已經(jīng)在緩沖區(qū)中,則不需要啟動(dòng)外設(shè)讀塊信息,這也可以提高系統(tǒng)工作效率。
邏輯記錄不能跨越兩個(gè)塊:通常設(shè)計(jì)的邏輯記錄的長度與物理塊的長度是有整數(shù)倍數(shù)的。如果一個(gè)邏輯記錄占用了兩個(gè)物理塊的尾部和首部,那么這種方式讀取效率是大打折扣,即要讀入兩個(gè)物理塊才能讀取這個(gè)邏輯記錄。
C,B,D,A
5.3 文件目錄管理
- 計(jì)算機(jī)系統(tǒng)中保存有許多文件,用戶在創(chuàng)建和使用文件時(shí)只給出文件的名字,由文件系統(tǒng)根據(jù)文件名找到指定文件。為了便于對文件進(jìn)行管理,設(shè)計(jì)了文件目錄,用于檢索系統(tǒng)中的所有文件。
- 文件系統(tǒng)的一個(gè)最大特點(diǎn)是“按名存取”,只要給出文件的符號名就能存取外存空間的文件信息,而不必關(guān)心文件的具體物理地址。實(shí)現(xiàn)文件符號名到文件物理地址映射的主要環(huán)節(jié)是檢索文件目錄。
一、文件目錄的基本概念
1、文件的組成
- 文件由文件體和文件控制塊(FCB)兩部分。文件控制塊FCB是系統(tǒng)為管理文件而設(shè)置的一個(gè)數(shù)據(jù)結(jié)構(gòu)。
- FCB是文件存在的標(biāo)志。
2、文件控制塊(FCB):文件控制塊是用來存放文件各種信息的數(shù)據(jù)結(jié)構(gòu),以實(shí)現(xiàn)“按名存取”。FCB的有序集合稱為文件目錄,一個(gè)FCB就是一個(gè)文件目錄項(xiàng)。為了創(chuàng)建一個(gè)新文件,系統(tǒng)將分配一個(gè)FCB并存放在文件目錄中,成為目錄項(xiàng)。
- FCB主要包含以下信息:
1)基本信息:如文件名、文件的物理位置、文件的邏輯結(jié)構(gòu)、文件的物理結(jié)構(gòu)等。
2)存取控制信息:如文件存取權(quán)限等。
3)使用信息:如文件建立時(shí)間、修改時(shí)間等。
3、文件目錄:文件與文件控制塊是一一對應(yīng)的,把所有FCB組織在一起,就構(gòu)成了文件目錄,即文件控制塊的有序集合。給該目錄也設(shè)定一個(gè)文件名,就可以通過查找文件目錄找到該文件對應(yīng)的目錄項(xiàng)(即FCB)。
- 文件目錄一般有一級目錄結(jié)構(gòu)、二級目錄結(jié)構(gòu)和多級目錄結(jié)構(gòu)。
- 目錄文件:文件目錄是需要長期保存的,為了實(shí)現(xiàn)文件目錄的管理,通常將文件目錄以文件的形式保存在外存空間,這個(gè)文件就被稱為目錄文件。目錄文件是長度固定的記錄式文件。
4、索引節(jié)點(diǎn):在檢索目錄文件的過程中,只用到文件名,僅當(dāng)找到一個(gè)目錄項(xiàng)(查找文件名與目錄項(xiàng)中文件名匹配)時(shí),才需要從該目錄項(xiàng)中讀出該文件的物理地址。就是在檢索目錄時(shí),文件的其他描述信息不會(huì)用到,也不需調(diào)入內(nèi)存。因此,有的系統(tǒng)(如UNIX)釆用文件名和文件描述信息分開的方法,文件描述信息單獨(dú)形成一個(gè)稱為索引結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu),簡稱為i結(jié)點(diǎn)。在文件目錄中的每個(gè)目錄項(xiàng)僅由文件名和指向?qū)?yīng)的i結(jié)點(diǎn)的指針構(gòu)成。
- 例如:一個(gè)FCB的大小是64字節(jié),盤塊大小是1KB,每個(gè)盤塊中可以存放16個(gè)FCB(FCB必須連續(xù)存放)。而在UNIX系統(tǒng)中一個(gè)目錄項(xiàng)僅占16字節(jié),其中14字節(jié)是文件名,2字節(jié)是i結(jié)點(diǎn)指針。在1KB的盤塊中可存放64個(gè)目錄項(xiàng)。這樣,可使查找文件時(shí)平均啟動(dòng)磁盤次數(shù)減少到原來的1/4,大大節(jié)省了系統(tǒng)開銷。
DOS目錄項(xiàng)示意圖:
UNIX目錄項(xiàng)示意圖:
二、一級目錄
- 整個(gè)系統(tǒng)設(shè)置一張線性目錄表,表中包括了所有文件的文件控制塊,每個(gè)文件控制塊都指向一個(gè)普通文件。
- 一級目錄結(jié)構(gòu)的優(yōu)點(diǎn)是簡單。
- 一級目錄結(jié)構(gòu)的缺點(diǎn):
1)查找速度慢
2)不允許重名
3)不便于實(shí)現(xiàn)文件共享 - 一級目錄結(jié)構(gòu)示意圖:
三、二級目錄
- 把文件目錄分成兩級,第一級稱為主文件目錄(MFD),第二級稱為用戶文件目錄(UFD)。每個(gè)用戶在主文件目錄中都有一個(gè)登記項(xiàng),記錄了用戶和該用戶的用戶文件目錄的物理地址。而在用戶文件目錄中,存放該用戶每一個(gè)文件的文件控制塊。 二級目錄結(jié)構(gòu)實(shí)現(xiàn)了文件從名字空間到外存地址空間的映射:用戶名→文件名→文件內(nèi)容。
- 優(yōu)點(diǎn):1)有利于文件的管理、共享和保護(hù);
2)適用于多用戶系統(tǒng);
3)不同的用戶可以命名相同文件名的文件,不會(huì)產(chǎn)生混淆,解決了命名沖突問題。 - 缺點(diǎn):不能對文件分類,用戶文件較多時(shí)查找速度慢。
- 優(yōu)點(diǎn):1)有利于文件的管理、共享和保護(hù);
- 二級目錄結(jié)構(gòu)示意圖:
四、多級目錄
- 多級目錄結(jié)構(gòu)是對二級目錄結(jié)構(gòu)的進(jìn)一步改進(jìn),又稱樹型目錄結(jié)構(gòu),產(chǎn)生于UNIX系統(tǒng)。
- 其中:樹葉結(jié)點(diǎn)表示普通文件(用圓圈表示),非葉結(jié)點(diǎn)表示目錄文件(用矩形表示)。
- 樹根結(jié)點(diǎn)稱為根目錄,根目錄是惟一的,由它開始可以查找到所有其他目錄文件和普通文件,根目錄一般可放在內(nèi)存。
- 從根結(jié)點(diǎn)出發(fā)到任一非葉結(jié)點(diǎn)或樹葉結(jié)點(diǎn)都有且僅有一條路徑,該路徑上的全部分支組成了一個(gè)全路徑名。采用多級目錄結(jié)構(gòu)時(shí),文件名為一個(gè)路徑名。
- 多級目錄結(jié)構(gòu)的優(yōu)點(diǎn)是便于文件分類,可為每類文件建立一個(gè)子目錄;查找速度快,因?yàn)槊總€(gè)目錄下的文件數(shù)目較少;可以實(shí)現(xiàn)文件共享。
- 多級目錄結(jié)構(gòu)的缺點(diǎn)是比較復(fù)雜,查找一個(gè)文件按路徑名逐層檢查,由于所有文件都放在外存,多次讀取磁盤影響速度。
- 當(dāng)前目錄:為了提高文件檢索速度,文件系統(tǒng)向用戶提供了一個(gè)當(dāng)前正在使用的目錄,稱為當(dāng)前目錄(也稱工作目錄)。
- 查找一個(gè)文件可從當(dāng)前目錄開始,使用部分路徑名,又稱為“相對路徑”。當(dāng)前目錄可根據(jù)需要任意改變,當(dāng)前目錄一般存放在內(nèi)存。
- 絕對路徑名:又稱全路徑名,是指從根目錄開始到達(dá)所要查找文件的路徑名。 (root)/usr/ml/prog/f1.c
- 相對路徑名:是從當(dāng)前目錄的下級開始書寫,如當(dāng)前目錄是/usr/ml,則有: prog/f1.c
五、Windows和Linux目錄結(jié)構(gòu)的差異
1、系統(tǒng)默認(rèn)目錄的差異
- 1)Windows安裝完成后,會(huì)自動(dòng)建立三個(gè)目錄:
分別是:C:\Documents and Settings
C:\Program Files
C:\WINDOWS - 2)Linux系統(tǒng)安裝完成后,會(huì)創(chuàng)建更多的默認(rèn)目錄:
/home目錄:用來放置每個(gè)帳戶的主目錄
/mnt目錄:有/cdrom與/floppy兩個(gè)子目錄
/tmp目錄:全部用戶和應(yīng)用程序的臨時(shí)文件
/etc目錄:系統(tǒng)命令相關(guān)的配置文件
2、“/”與“\”兩個(gè)符號的差異
- 1)Windows操作系統(tǒng)中,要表示文件或者目錄的路徑時(shí),其目錄名稱之間是以\(反斜杠)作為表示的。
- 2)在Linux操作系統(tǒng)中,無論將硬盤分為多少個(gè)區(qū),每個(gè)分區(qū)中的文件及目錄,都可以在根目錄下,在該分區(qū)的加載目錄中找到。而根目錄的標(biāo)識方法為/(正斜杠)。
3、大小寫的差異以及查詢上的不同
- 1)Windows中,c:\U01與c:\u01兩個(gè)目錄是等價(jià)的。
- 2)Linux中,/u01與/U01兩個(gè)目錄代表不同的目錄。為了便于管理,建議在Linux下面建立文件夾時(shí),最好都能夠采用小寫字母。大寫字母主要用來表示一些特殊的文件夾。如Desktop,它表示用戶的桌面文件,由系統(tǒng)建立。
5.4 文件的存儲(chǔ)設(shè)備
5.4.1 文件的存儲(chǔ)設(shè)備
- 常用的文件存儲(chǔ)設(shè)備有:磁盤、磁帶、光盤等。
- 存儲(chǔ)設(shè)備的性質(zhì)決定了文件的存取方式。
- 為了有效地利用文件存儲(chǔ)設(shè)備和便于對文件信息進(jìn)行處理,通常把文件的存儲(chǔ)空間劃分成若干個(gè)大小相等的物理塊,同時(shí),為了便于管理,也將文件劃分同樣等長的邏輯塊,并以塊作為分配和內(nèi)外存之間傳送信息的基本單位。塊長度是固定的,一般塊長是512字節(jié)或1024字節(jié)。
- 文件存儲(chǔ)設(shè)備可分為兩類:順序存取設(shè)備和直接存取設(shè)備。
一、文件存儲(chǔ)設(shè)備的類型
1、順序存取設(shè)備:順序存取設(shè)備是按信息的物理位置進(jìn)行定位和讀寫操作的存儲(chǔ)設(shè)備。只有在前面的物理塊被存取訪問之后,才能存取后續(xù)的物理塊。
- 1)磁帶是一種典型的順序存取設(shè)備。磁帶是以磁帶上的位置來標(biāo)識磁帶上的數(shù)據(jù)塊,兩個(gè)相鄰的物理塊之間一般有一個(gè)間隙。
- 2)磁帶的存儲(chǔ)特性:
① 是順序存取設(shè)備,總是從磁頭當(dāng)前位置開始讀寫。
② 磁帶上的塊不是由地址來標(biāo)識,是由其在磁帶上的位置來識別的。
③ 塊和塊之間有間隙,通過間隙區(qū)別物理塊。
④ 磁帶存取速度與信息密度、磁帶帶速和塊間間隙大小有關(guān)。帶速越高、信息密度越大、塊間間隙越小,磁帶存取速度越快。
⑤ 磁帶容量大,使用順序存取方式時(shí)速度快,使用隨機(jī)存取方式效率低。 - 3)磁帶的優(yōu)缺點(diǎn):
- 缺點(diǎn):由磁帶的讀寫方式可知,只有當(dāng)?shù)趇塊被存取之后,才能存取第i+l塊。因此,某個(gè)物理塊距離磁頭當(dāng)前位置很遠(yuǎn)時(shí),則要花費(fèi)很長的時(shí)間 “走帶”,使該塊移動(dòng)到磁頭位置。
- 優(yōu)點(diǎn):容量大,順序存取方式時(shí)速度高。
- 應(yīng)用:主要用于后備存儲(chǔ)(備份),存儲(chǔ)不常用的信息(歸檔),或用于傳遞數(shù)據(jù)的介質(zhì)。
2、隨機(jī)存取設(shè)備:
- 隨機(jī)存取設(shè)備,也稱為直接存取設(shè)備,是允許直接存取對應(yīng)存儲(chǔ)介質(zhì)上任意物理塊的存儲(chǔ)設(shè)備。
- 磁盤是一種典型的隨機(jī)存取設(shè)備。磁盤機(jī)有若干磁盤片組成,盤片沿一個(gè)固定方向高速旋轉(zhuǎn),每個(gè)盤面對應(yīng)一個(gè)磁頭,所有的磁頭被固定在一個(gè)磁臂上,所有磁頭可以沿半徑方向同時(shí)移動(dòng)。
- 常見的隨機(jī)存取設(shè)備有:硬盤、軟盤(現(xiàn)在幾乎不再使用)、光盤、U盤、閃存盤、移動(dòng)硬盤等。
1)硬盤:硬盤結(jié)構(gòu)
硬盤:硬盤的發(fā)展史
- 1956年9月13日,IBM的IBM 350 RAMAC是現(xiàn)代硬盤的雛形,整個(gè)硬盤需要50個(gè)直徑為24英寸表面涂有磁漿的盤片,它相當(dāng)于兩個(gè)冰箱的體積,存儲(chǔ)容量只有5MB。
- 1971年,IBM開始采用一種名叫Merlin的技術(shù)生產(chǎn)硬盤,這種技術(shù)據(jù)稱能使硬盤頭更好地在盤片上索引。
- 1973年,IBM 3340問世,主流采用紅色。每平方英寸存儲(chǔ)1.7MB的數(shù)據(jù)。許多公司共享這些系統(tǒng),按照時(shí)間和存儲(chǔ)空間租用它。價(jià)格為7.81美元每兆,這個(gè)價(jià)格比當(dāng)時(shí)汽油的價(jià)格還貴38%。它擁有“溫徹斯特”這個(gè)綽號,也就是現(xiàn)在所熟知的“溫氏架構(gòu)”。來源于它兩個(gè)30MB的存儲(chǔ)單元,是當(dāng)時(shí)出名的“溫徹斯特來福槍”的口徑和填彈量。至此,硬盤的基本架構(gòu)被確立。
- 1979年,IBM發(fā)明了Thin Film磁頭,使硬盤的數(shù)據(jù)定位更加準(zhǔn)確,因此使得硬盤的密度大幅提升。
- 1980年,兩位前IBM員工創(chuàng)立的公司開發(fā)出5.25英寸規(guī)格的5MB硬盤,這是首款面向臺(tái)式機(jī)的產(chǎn)品,而該公司正是希捷公司(Seagate)公司。
- 1982年,日立發(fā)布了全球首款容量超過1GB的硬盤。這就是容量為1.2GB的H-8598硬盤。這塊硬盤擁有10片14英寸盤片,兩個(gè)讀寫磁頭。
- 1980年代末,IBM推出MR(Magneto Resistive磁阻)技術(shù)令磁頭靈敏度大大提升,使盤片的存儲(chǔ)密度較之前的20Mbpsi(bit/每平方英寸)提高了數(shù)十倍,該技術(shù)為硬盤容量的巨大提升奠定了基礎(chǔ)。1991年,IBM應(yīng)用該技術(shù)推出了首款3.5英寸的1GB硬盤。
- 1970到1991年,硬盤碟片存儲(chǔ)密度以每年25%~30%的速度增長;從1991年開始增長到60%~80%;現(xiàn)速度提升到100%甚至200%。從1997年開始的驚人速度提升得益于IBM的GMR(Giant Magneto Resistive,巨磁阻)技術(shù),它使磁頭靈敏度進(jìn)一步提升,進(jìn)而提高了存儲(chǔ)密度。
- 1993年,康諾(Conner Peripherals)推出了CP30344硬盤容量是340MB。
- 1995年,為了配合Intel的LX芯片組,昆騰與Intel攜手發(fā)布UDMA 33接口—EIDE標(biāo)準(zhǔn)將原來接口數(shù)據(jù)傳輸率從16.6MB/s提升到了33MB/s。同年,希捷開發(fā)出液態(tài)軸承(FDB,Fluid Dynamic Bearing)馬達(dá)。所謂的FDB就是指將陀螺儀上的技術(shù)引進(jìn)到硬盤生產(chǎn)中,用厚度相當(dāng)于頭發(fā)直徑十分之一的油膜取代金屬軸承,減輕了硬盤噪音與發(fā)熱量。
- 1998年2月,UDMA 66規(guī)格面世。
- 2003年1月,日立宣布完成20.5億美元的收購IBM硬盤事業(yè)部計(jì)劃,并成立日立環(huán)球存儲(chǔ)科技公司(Hitachi GST)。
- 2005年日立環(huán)儲(chǔ)和希捷都宣布了將開始大量采用磁盤垂直寫入技術(shù),原理是將平行于盤片的磁場方向改變?yōu)榇怪?#xff08;90度),更充分地利用的存儲(chǔ)空間。
- 2007年1月,日立環(huán)球存儲(chǔ)科技宣布發(fā)售全球首只1Terabyte的硬盤,比預(yù)定時(shí)間遲了一年多,售價(jià)為399美元,平均每美分可以購得27.5MB硬盤空間。2011年3月,西部數(shù)據(jù)以43億美元的價(jià)格,收購日立環(huán)球存儲(chǔ)科技。
硬盤:硬盤制造廠商
- 希捷:全球第二大硬盤制造商,2005年并購邁拓(Maxtor)、2011年收購三星旗下硬盤業(yè)務(wù)
- 西部數(shù)據(jù)(Western Digital):總部位于美國加州,收購日立后成為硬盤老大
- 日立(HITACHI):2002年并購IBM硬盤業(yè)務(wù),2011年被西數(shù)收購
- 東芝(TOSHIBA)
硬盤:硬盤結(jié)構(gòu)
- 硬盤正面貼有產(chǎn)品標(biāo)簽,主要包括廠家信息和產(chǎn)品信息,如商標(biāo)、型號、序列號、生產(chǎn)日期、容量、參數(shù)和設(shè)置方法等。
- 硬盤主要由盤體、控制電路板和接口部件等組成。盤體是一個(gè)密封的腔體。硬盤的內(nèi)部結(jié)構(gòu)通常是指盤體的內(nèi)部結(jié)構(gòu);控制電路板上主要有硬盤BIOS、硬盤緩存(即CACHE)和主控制芯片等單元;硬盤接口包括電源插座、數(shù)據(jù)接口和主、從跳線。
硬盤:硬盤結(jié)構(gòu)
-
電源插座連接電源,為硬盤工作提供電力保證。數(shù)據(jù)接口是硬盤與主板、內(nèi)存之間進(jìn)行數(shù)據(jù)交換的通道,使用一根40針40線(早期)或40針80線(當(dāng)前)的IDE接口電纜進(jìn)行連接。新增加的40線是信號屏蔽線,用于屏蔽高速高頻數(shù)據(jù)傳輸過程中的串?dāng)_。中間的主、從盤跳線插座,用以設(shè)置主、從硬盤,即設(shè)置硬盤驅(qū)動(dòng)器的訪問順序。其設(shè)置方法一般標(biāo)注在盤體外的標(biāo)簽上,也有一些標(biāo)注在接口處,早期的硬盤還可能印在電路板上。
-
此外,在硬盤表面有一個(gè)透氣孔,它的作用是使硬盤內(nèi)部氣壓與外部大氣壓保持一致。由于盤體是密封的,所以,這個(gè)透氣孔不直接和內(nèi)部相通,而是經(jīng)由一個(gè)高效過濾器和盤體相通,用以保證盤體內(nèi)部的潔凈無塵,使用中注意不要將它蓋住。
-
硬盤主要由盤體、控制電路板和接口部件組成。盤體就是一個(gè)密封,封裝了多個(gè)盤片的腔體;控制電路包含硬盤BIOS,主控芯片和硬盤緩存等單元;接口部件包含電源、數(shù)據(jù)接口主從跳線等。
-
硬盤的盤片一般采用合金材料,多數(shù)為鋁合金(IBM曾經(jīng)開發(fā)過玻璃材質(zhì)的盤片,現(xiàn)在有些廠家也生產(chǎn)玻璃材質(zhì)的盤片,但不多見),盤面上涂著磁性材料,片厚一般在0.5mm左右,直徑主要有1.8in(1in=25.4mm)、2.5in、3.5in和5.25in 4種,其中2.5in和3.5in盤片應(yīng)用最廣。盤片的轉(zhuǎn)速與盤片大小有關(guān),考慮到慣性及盤片的穩(wěn)定性,盤片越大轉(zhuǎn)速越低。2.5in硬盤的轉(zhuǎn)速在5400r/min~7200r/min之間;3.5in硬盤的轉(zhuǎn)速在4500r/min~5400r/min之間;而5.25in硬盤轉(zhuǎn)速則在3600r/min~4500r/min之間。隨著技術(shù)的進(jìn)步,現(xiàn)在2.5in硬盤的轉(zhuǎn)速最高已達(dá)15000r/min,3.5in硬盤的轉(zhuǎn)速最高已達(dá)12000r/min。
-
有些硬盤只裝一張盤片,有些則有多張。硬盤盤片安裝在主軸電機(jī)的轉(zhuǎn)軸上,在主軸電機(jī)的帶動(dòng)下作高速旋轉(zhuǎn)。每張盤片的容量稱為單碟容量,而一塊硬盤的總?cè)萘烤褪撬斜P片容量的總和。早期硬盤由于單碟容量低,所以盤片較多。現(xiàn)代硬盤盤片一般只有少數(shù)幾片,有的硬盤只裝一張盤片。這些盤片安裝在主軸電機(jī)的轉(zhuǎn)軸上,在主軸電機(jī)的帶動(dòng)下高速旋轉(zhuǎn)。一塊硬盤內(nèi)的所有盤片都是完全一樣的,不然控制部分就太復(fù)雜了。一個(gè)牌子的一個(gè)系列一般都用同一種盤片,使用不同數(shù)量的盤片,就出現(xiàn)了一個(gè)系列不同容量的硬盤產(chǎn)品。
-
盤片上的記錄密度很大,而且盤片工作時(shí)會(huì)高速旋轉(zhuǎn),為保證其工作的穩(wěn)定,數(shù)據(jù)保存的長久,所以硬片都是密封在硬盤內(nèi)部。不可自行拆卸硬盤,在普通環(huán)境下空氣中的灰塵、指紋、頭發(fā)絲等細(xì)小雜質(zhì)都會(huì)對硬盤造成永久損害。
-
硬盤驅(qū)動(dòng)器采用高精度、輕型磁頭驅(qū)動(dòng)/定位系統(tǒng)。這種系統(tǒng)能使磁頭在盤面上快速移動(dòng),可在極短的時(shí)間內(nèi)精確定位在由計(jì)算機(jī)指令指定的磁道上。目前,磁道密度已高達(dá)5400Tpi(每英寸磁道數(shù))或更高;還在研究新方法,如在盤上擠壓(或刻蝕)圖形、凹槽和斑點(diǎn)等作為定位和跟蹤標(biāo)記,以提高到和光盤相等的道密度,從而在保持磁盤機(jī)高速度、高位密度和高可靠性的優(yōu)勢下,大幅度提高存儲(chǔ)容量。
-
硬盤驅(qū)動(dòng)器內(nèi)的電機(jī)都是無刷電機(jī),在高速軸承支持下機(jī)械磨損很小,可以長時(shí)間連續(xù)工作。高速旋轉(zhuǎn)的盤體產(chǎn)生明顯的陀螺效應(yīng),所以硬盤工作時(shí)不宜搬動(dòng),否則將增加軸承的工作負(fù)荷。為了高速存儲(chǔ)和讀取信息,硬盤驅(qū)動(dòng)器的磁頭質(zhì)量小,慣性也小,硬盤驅(qū)動(dòng)器的尋道速度明顯快于軟驅(qū)和光驅(qū)。
-
硬盤驅(qū)動(dòng)器磁頭與磁頭臂及伺服定位系統(tǒng)是一個(gè)整體。伺服定位系統(tǒng)由磁頭臂后的線圈和固定在底板上的電磁控制系統(tǒng)組成。由于定位系統(tǒng)限制,磁頭臂只能在盤片的內(nèi)外磁道之間移動(dòng)。因此,不管開機(jī)還是關(guān)機(jī),磁頭總在盤片上;所不同的是,關(guān)機(jī)時(shí)磁頭停留在盤片啟停區(qū),開機(jī)時(shí)磁頭“飛行”在磁盤片上方。
-
硬盤首先邏輯上被劃分為磁道、柱面及扇區(qū)。每個(gè)盤片的每個(gè)面都有一個(gè)讀寫磁頭,磁頭靠近主軸接觸的表面,即線速度最小的地方,是一個(gè)特殊的區(qū)域,它不存放任何數(shù)據(jù),稱為啟停區(qū)或著陸區(qū),啟停區(qū)外就是數(shù)據(jù)區(qū)。在最外圈,離主軸最遠(yuǎn)的地方是“0”磁道,硬盤數(shù)據(jù)的存放就是從最外圈開始的。磁頭如何找到“0”磁道的位置,是有一個(gè)“0”磁道檢測器,由它來完成硬盤的初始定位。“0”磁道是如此的重要,以致很多硬盤僅僅因?yàn)椤?”磁道損壞就報(bào)廢,可以通過特殊的修復(fù)技術(shù)進(jìn)行修復(fù)。
-
硬盤不工作時(shí),磁頭停留在啟停區(qū),當(dāng)需要從硬盤讀寫數(shù)據(jù)時(shí),磁盤開始旋轉(zhuǎn)。旋轉(zhuǎn)速度達(dá)到額定的高速時(shí),磁頭就會(huì)因盤片旋轉(zhuǎn)產(chǎn)生的氣流而抬起,這時(shí)磁頭才向盤片存放數(shù)據(jù)的區(qū)域移動(dòng)。盤片旋轉(zhuǎn)產(chǎn)生的氣流相當(dāng)強(qiáng),足以使磁頭托起,并與盤面保持一個(gè)微小的距離。這個(gè)距離越小,磁頭讀寫數(shù)據(jù)的靈敏度就越高,對硬盤各部件的要求也越高。早期的磁盤驅(qū)動(dòng)器使磁頭保持在盤面上方幾微米處飛行。稍后使磁頭在盤面上的飛行高度降到約0.1μm~0.5μm,現(xiàn)在的水平已經(jīng)達(dá)到0.005μm~0.01μm,這只是人類頭發(fā)直徑的千分之一。氣流既能使磁頭脫離開盤面,又能使它保持在離盤面足夠近的地方,非常緊密地跟隨著磁盤表面呈起伏運(yùn)動(dòng),使磁頭飛行處于嚴(yán)格受控狀態(tài)。磁頭必須飛行在盤面上方,不接觸盤面,可避免擦傷磁性涂層,更重要的是不讓磁性涂層損傷磁頭。但磁頭也不能離盤面太遠(yuǎn),否則就不能使盤面達(dá)到足夠強(qiáng)的磁化,難以讀出盤上的磁化翻轉(zhuǎn)(磁極轉(zhuǎn)換形式,是磁盤上實(shí)際記錄數(shù)據(jù)的方式)。
-
硬盤:盤面
硬盤一般會(huì)有一個(gè)或多個(gè)盤片,每個(gè)盤片可以有兩個(gè)面(Side),即第1個(gè)盤片的正面稱為0面,反面稱為1面;第2個(gè)盤片的正面稱為2面,反面稱為3面,依次類推。每個(gè)盤面對應(yīng)一個(gè)磁頭(head)用于讀寫數(shù)據(jù)。第一個(gè)盤面的正面的磁頭稱為0磁頭,背面稱為1磁頭;第二個(gè)盤片正面的磁頭稱為2磁頭,背面稱為3磁頭,以此類推。盤面數(shù)和磁頭數(shù)是相等的。
硬盤采用高精度、輕型磁頭驅(qū)動(dòng)和定位系統(tǒng)。這種系統(tǒng)能使磁頭在盤面上快速移動(dòng),讀寫硬盤時(shí),磁頭依靠磁盤高速旋轉(zhuǎn)引起的空氣動(dòng)力效應(yīng)懸浮在盤面上,與盤面的距離不到1微米(約為頭發(fā)直徑的百分之一),可以在極短的時(shí)間內(nèi)精確定位到計(jì)算機(jī)指令指定的磁道上。由于定位系統(tǒng)限制,磁頭傳動(dòng)臂只能在盤片的內(nèi)外磁道間移動(dòng)。因此,不管開機(jī)還是關(guān)機(jī),磁頭總在盤片上。所不同的是,關(guān)機(jī)時(shí)磁頭停留在盤片啟停區(qū),開機(jī)時(shí)磁頭“飛行”在磁盤片上方。 -
硬盤:移動(dòng)頭磁盤與固定頭磁盤
移動(dòng)頭磁盤:每個(gè)盤面有一個(gè)讀寫磁頭,讀寫時(shí)需要首先移動(dòng)磁頭到指定磁道上,再進(jìn)行讀寫。
固定頭磁盤:每個(gè)磁道都有一個(gè)讀寫磁頭,定位讀寫時(shí)不用移動(dòng)磁頭,只需直接定位,甚至實(shí)現(xiàn)多磁頭同時(shí)讀寫,帶來非常大的數(shù)據(jù)帶寬,提升磁盤數(shù)據(jù)讀寫速度,而且磁盤靜音效果會(huì)很好。但固定頭磁盤成本高、儲(chǔ)存密度低,而且想利用完一個(gè)磁盤的幾百個(gè)磁道,固定頭得做的非常小才能在一張直徑大約10公分的磁盤上排開這么多磁頭,否則就會(huì)浪費(fèi)磁盤空間。 -
硬盤:磁道
每個(gè)盤片的每個(gè)盤面被劃分成多個(gè)狹窄的同心圓環(huán),數(shù)據(jù)就是存儲(chǔ)在這樣的同心圓環(huán)上,這樣的圓環(huán)稱為磁道(Track),每個(gè)盤面可以劃分多個(gè)磁道。關(guān)機(jī)時(shí)磁頭停留在硬盤的著陸區(qū),這個(gè)著陸區(qū)以前是位于離盤心最近的區(qū)域,不存放任何數(shù)據(jù)。在后期的硬盤工藝中有些硬盤生產(chǎn)廠商將這個(gè)區(qū)域被移動(dòng)到了盤片的外面。
每個(gè)盤面的最外圈,離盤心最遠(yuǎn)的地方是“0”磁道,向盤心方向依次增長為1磁道,2磁道,等等。硬盤的每一個(gè)盤面有300~1024個(gè)磁道,新式大容量硬盤每面的磁道數(shù)更多。硬盤數(shù)據(jù)的存放就是從最外圈開始。
標(biāo)準(zhǔn)的3.5in硬盤盤面通常有幾百到幾千條磁道。磁道是看不見的,只是盤面上以特殊形式磁化了的一些磁化區(qū),在磁盤格式化時(shí)已規(guī)劃完畢。
-
硬盤:扇區(qū)
根據(jù)硬盤規(guī)格不同,磁道數(shù)可以從幾百到成千上萬不等。信息以脈沖串的形式記錄在這些軌跡中,磁道不是連續(xù)記錄數(shù)據(jù),而是被劃分成一段段圓弧,這些圓弧的角速度一樣。由于徑向長度不一樣,線速度也不一樣,外圈的線速度較內(nèi)圈的線速度大,即同樣的轉(zhuǎn)速下,外圈在同樣時(shí)間段里,劃過的圓弧長度要比內(nèi)圈劃過的圓弧長度大。每段圓弧叫做一個(gè)扇區(qū),每個(gè)扇區(qū)中的數(shù)據(jù)作為一個(gè)單元同時(shí)讀出或?qū)懭搿I葏^(qū)是硬盤上存儲(chǔ)的物理單位,每個(gè)扇區(qū)可存儲(chǔ)128×2a次方(a=0,1,2,3)字節(jié)的數(shù)據(jù)。從DOS時(shí)起,每扇區(qū)是128×22=512字節(jié),沒有哪個(gè)廠商試圖改變。即使要往硬盤上存儲(chǔ)一個(gè)字節(jié)信息,也須一次性把這個(gè)字節(jié)所在扇區(qū)中的全部512字節(jié)讀入內(nèi)存,再選擇所需的那個(gè)字節(jié)。扇區(qū)的編號是從1開始,而不是0。- 扇區(qū)有兩個(gè)主要部分,存儲(chǔ)數(shù)據(jù)地點(diǎn)的標(biāo)識符和存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)段。
① 標(biāo)識符就是扇區(qū)頭標(biāo),包括組成扇區(qū)三維地址的三個(gè)數(shù)字:扇區(qū)所在的磁頭(或盤面)、磁道(或柱面號)以及扇區(qū)在磁道上的位置即扇區(qū)號。頭標(biāo)中還包括一個(gè)字段,其中有顯示扇區(qū)是否能可靠存儲(chǔ)數(shù)據(jù),或者是否已發(fā)現(xiàn)某個(gè)故障因而不宜使用的標(biāo)記。有些硬盤控制器在扇區(qū)頭標(biāo)中還記錄有指示字,可在原扇區(qū)出錯(cuò)時(shí)指引磁盤轉(zhuǎn)到替換扇區(qū)或磁道。最后,扇區(qū)頭標(biāo)以循環(huán)冗余校驗(yàn)(CRC)值作為結(jié)束,以供控制器檢驗(yàn)扇區(qū)頭標(biāo)的讀出情況,確保準(zhǔn)確無誤。
② 扇區(qū)的第二個(gè)主要部分是存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)段,可分為數(shù)據(jù)和保護(hù)數(shù)據(jù)的糾錯(cuò)碼(ECC)。在初始準(zhǔn)備期間,計(jì)算機(jī)用512個(gè)虛擬信息字節(jié)(實(shí)際數(shù)據(jù)的存放地)和與這些虛擬信息字節(jié)相應(yīng)的ECC數(shù)字填入這個(gè)部分。- 扇區(qū)頭標(biāo)包含一個(gè)可識別磁道上該扇區(qū)的扇區(qū)號。有趣的是,這些扇區(qū)號物理上并不連續(xù)編號,它們不必用任何特定的順序指定。扇區(qū)頭標(biāo)的設(shè)計(jì)允許扇區(qū)號可以從1到某個(gè)最大值,某些情況下可達(dá)255。磁盤控制器并不關(guān)心上述范圍中什么編號安排在哪一個(gè)扇區(qū)頭標(biāo)中。在很特殊的情況下,扇區(qū)還可以共用相同的編號。磁盤控制器甚至根本就不管數(shù)據(jù)區(qū)有多大,只管讀出它所找到的數(shù)據(jù),或者寫入要求它寫的數(shù)據(jù)。
- 扇區(qū)編號:給扇區(qū)編號的最簡單方法是l,2,3,4,5,6等順序編號,例如軟盤就是依次編排。但硬盤和軟盤有區(qū)別,因?yàn)閿?shù)據(jù)讀取經(jīng)常要按順序讀取一系列相鄰的扇區(qū)(邏輯數(shù)據(jù)相鄰)。如對磁道扇區(qū)按物理順序進(jìn)行編號,很有可能出現(xiàn)當(dāng)磁頭讀取完第一個(gè)扇區(qū)后,由于盤片轉(zhuǎn)速過快來不及讀取下一個(gè)扇區(qū),因?yàn)槲锢硐噜徤葏^(qū)位置距離是極小的,必須等待轉(zhuǎn)完一圈,這極大浪費(fèi)了時(shí)間。
- 交叉因子:許多年前,IBM的一位杰出工程師想出一個(gè)絕妙辦法,即對扇區(qū)不使用順序編號,而是使用一個(gè)交叉因子進(jìn)行編號。交叉因子用比值的方法來表示,如3﹕1表示磁道上的第1個(gè)扇區(qū)為1號扇區(qū),跳過兩個(gè)扇區(qū)即第4個(gè)扇區(qū)為2號扇區(qū),持續(xù)下去直到給每個(gè)物理扇區(qū)編上邏輯號為止。例如,每磁道有17個(gè)扇區(qū)的磁盤按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。當(dāng)設(shè)置1﹕l的交叉因子時(shí),如果硬盤控制器處理信息足夠快,那么讀出磁道上的全部扇區(qū)只需要旋轉(zhuǎn)一周;但如果硬盤控制器的后處理動(dòng)作沒有這么快,磁盤所轉(zhuǎn)的圈數(shù)就等于一個(gè)磁道上的扇區(qū)數(shù),才能讀出每個(gè)磁道上的全部數(shù)據(jù)。
- 扇區(qū)頭標(biāo)包含一個(gè)可識別磁道上該扇區(qū)的扇區(qū)號。有趣的是,這些扇區(qū)號物理上并不連續(xù)編號,它們不必用任何特定的順序指定。扇區(qū)頭標(biāo)的設(shè)計(jì)允許扇區(qū)號可以從1到某個(gè)最大值,某些情況下可達(dá)255。磁盤控制器并不關(guān)心上述范圍中什么編號安排在哪一個(gè)扇區(qū)頭標(biāo)中。在很特殊的情況下,扇區(qū)還可以共用相同的編號。磁盤控制器甚至根本就不管數(shù)據(jù)區(qū)有多大,只管讀出它所找到的數(shù)據(jù),或者寫入要求它寫的數(shù)據(jù)。
- 扇區(qū)有兩個(gè)主要部分,存儲(chǔ)數(shù)據(jù)地點(diǎn)的標(biāo)識符和存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)段。
-
硬盤:柱面
所有盤面上的同一磁道構(gòu)成一個(gè)圓柱,通常稱做柱面(Cylinder),每個(gè)圓柱上的磁頭由上而下從“0”開始編號。數(shù)據(jù)的讀/寫按柱面進(jìn)行,即磁頭讀/寫數(shù)據(jù)時(shí)首先在同一柱面內(nèi)從“0”磁頭開始進(jìn)行操作,依次向下在同一柱面的不同盤面即磁頭上進(jìn)行操作,只在同一柱面所有的磁頭全部讀/寫完畢后磁頭才轉(zhuǎn)移到下一柱面,因?yàn)檫x取磁頭只需通過電子切換即可,而選取柱面則必須通過機(jī)械切換。電子切換相當(dāng)快,比在機(jī)械上磁頭向鄰近磁道移動(dòng)快得多,所以,數(shù)據(jù)的讀/寫按柱面進(jìn)行,而不按盤面進(jìn)行。也就是說,一個(gè)磁道寫滿數(shù)據(jù)后,就在同一柱面的下一個(gè)盤面來寫,一個(gè)柱面寫滿后,才移到下一個(gè)扇區(qū)開始寫數(shù)據(jù)。讀數(shù)據(jù)也按照這種方式進(jìn)行,這樣就提高了硬盤的讀/寫效率。
一塊硬盤驅(qū)動(dòng)器的圓柱數(shù)(或每個(gè)盤面的磁道數(shù))既取決于每條磁道的寬窄(同樣,也與磁頭的大小有關(guān)),也取決于定位機(jī)構(gòu)所決定的磁道間步距的大小。 -
硬盤:簇
將物理相鄰的若干個(gè)扇區(qū)稱為了一個(gè)簇。操作系統(tǒng)讀寫磁盤的基本單位是扇區(qū),而文件系統(tǒng)的基本單位是簇(Cluster)。在Windows下,隨便找個(gè)幾字節(jié)的文件,在其上面點(diǎn)擊鼠標(biāo)右鍵選擇屬性,看看實(shí)際大小與占用空間兩項(xiàng)內(nèi)容,如大小:15字節(jié)(15字節(jié)),占用空間4KB(4096字節(jié))。這里的占用空間就是機(jī)器分區(qū)的簇大小,因?yàn)樵傩〉奈募紩?huì)占用空間,基本單位是4K,所以都會(huì)占用4K。
簇一般有這幾類大小 4K,8K,16K,32K,64K等。簇越大存儲(chǔ)性能越好,但空間浪費(fèi)嚴(yán)重。簇越小性能相對越低,但空間利用率高。NTFS格式的文件系統(tǒng)簇的大小為4K。
硬盤:硬盤分區(qū)與文件系統(tǒng)格式
硬盤:硬盤特殊結(jié)構(gòu)
- 引導(dǎo)控制塊(Boot Control Block)包括系統(tǒng)從該分區(qū)引導(dǎo)操作系統(tǒng)所需要的信息。如果磁盤沒有操作系統(tǒng),那么這塊的內(nèi)容為空,通常為分區(qū)的第一塊。UFS(UNIX文件系統(tǒng)的簡稱)稱之為引導(dǎo)塊;NTFS稱為分區(qū)引導(dǎo)扇區(qū)。
- 分區(qū)控制塊(Partition Control Block)包括分區(qū)詳細(xì)信息,如分區(qū)塊數(shù)、塊的大小、空閑塊的數(shù)量和指計(jì)、空閑FCB的數(shù)量和指針等。UFS稱為超級塊;NTFS稱為主控文件表。
硬盤:內(nèi)存特殊結(jié)構(gòu)
- 內(nèi)存分區(qū)表包含所有安裝分區(qū)的信息。
- 內(nèi)存目錄結(jié)構(gòu)用來保存近來訪問過的目錄信息。對安裝分區(qū)的目錄,可以包括一個(gè)指向 分區(qū)表的指針。
硬盤:硬盤讀寫數(shù)據(jù)的過程
- 現(xiàn)代硬盤尋道都是采用CHS方式,硬盤讀取數(shù)據(jù)時(shí),讀寫磁頭沿徑向移動(dòng),移到要讀取的扇區(qū)所在磁道的上方,這段時(shí)間稱為尋道時(shí)間。因讀寫磁頭的起始位置與目標(biāo)位置之間的距離不同,尋道時(shí)間也不同。目前硬盤一般為2到30毫秒,平均約為9毫秒。磁頭到達(dá)指定磁道后,然后通過盤片的旋轉(zhuǎn),使得要讀取的扇區(qū)轉(zhuǎn)到讀寫磁頭的下方,這段時(shí)間稱為旋轉(zhuǎn)延遲時(shí)間。最后,信息在磁盤和內(nèi)存之間的實(shí)際傳送時(shí)間叫傳送時(shí)間。一次磁盤服務(wù)的總時(shí)間就是以上三者之和。
- 例如:一個(gè)7200(轉(zhuǎn)/每分鐘)的硬盤,每旋轉(zhuǎn)一周所需時(shí)間為60×1000÷7200=8.33毫秒,則平均旋轉(zhuǎn)延遲時(shí)間為8.33÷2=4.17毫秒(平均情況下,需要旋轉(zhuǎn)半圈)。
- 硬盤容量計(jì)算公式:
硬盤容量 = 盤面數(shù)×柱面數(shù)×扇區(qū)數(shù)×512字節(jié)
硬盤:磁盤(硬盤)的存儲(chǔ)特性
- ① 是直接存取設(shè)備,按地址進(jìn)行讀寫。
② 磁盤空間位置由三個(gè)因素決定:柱面號/磁道號、磁頭號/盤面號、扇區(qū)號。
③ 在磁盤上,信息按柱面存放的,空間分配的基本單位是簇。
④ 訪問磁盤的時(shí)間由三部分組成:尋道時(shí)間、旋轉(zhuǎn)延遲時(shí)間、傳輸時(shí)間。
⑤ 磁盤容量大、訪問速度快,可快速定位,完成直接訪問。
2)軟盤:
- 軟盤驅(qū)動(dòng)器曾經(jīng)是電腦一個(gè)不可缺少的部件,在必要的時(shí)候,它可以為我們 啟動(dòng)計(jì)算機(jī),還能用它來傳遞和備份一些比較小的文件。
- 軟盤在使用之前必須要先格式化(低格),磁盤被分成若干個(gè)磁道,每個(gè)磁道又分為若干個(gè)扇區(qū),每個(gè)扇區(qū)存儲(chǔ)512個(gè)字節(jié)。
- 常見的是3.5英寸雙面高密度1.44MB的軟盤
80(磁道)* 18(扇區(qū))* 512 bytes(扇區(qū)的大小)* 2(雙面) = 1440 x1024 bytes = 1440 KB = 1.44MB
3)光盤:
- 容量大,速度快,價(jià)格便宜,但一般不可寫,光盤的空間結(jié)構(gòu)與磁盤類似
- 可讀寫光盤驅(qū)動(dòng)器價(jià)格貴,寫過程很麻煩
- 光盤分類:
- CD(光盤) CD-ROM(只讀光盤機(jī))
VCD(激光視盤) DVD(數(shù)字多用光盤)
DVD+RW(可反復(fù)寫入的DVD)
藍(lán)光技術(shù)UDO(大容量光盤 ,雙面30G) - CD-ROM:CD-ROM即只讀光盤,1985出現(xiàn),存放音頻信息,取代乙烯基唱片。通過將CD表面的的某個(gè)特定區(qū)域凹陷來表示0或1,數(shù)據(jù)呈螺旋狀有中心向邊緣散開,長度大約5800米,記錄75分鐘音頻信息,容量約660MB。CD-ROM盤是單面盤,不做成雙面盤的原因,不是技術(shù)上做不到,而是做一片雙面盤的成本比做兩片單面盤的成本之和還要高。
- 一次寫光盤(刻錄盤):處理好的空白盤,只能寫一次。
- DVD:數(shù)字多功能光盤,用于播放高清晰度視頻、高質(zhì)量音樂及存儲(chǔ)大容量數(shù)據(jù)。標(biāo)準(zhǔn)DVD存儲(chǔ)密度較高,存儲(chǔ)容量4.7GB。
DVD有五種格式:DVD-VIDEO;DVD-ROM;DVD-R ;DVD-RAW;DVD-AUDIO - 藍(lán)光DVD:藍(lán)光光碟(Blue-ray Disc,簡稱BD)是DVD之后的下一代光盤格式之一,用以存儲(chǔ)高品質(zhì)的影音以及高容量的數(shù)據(jù)存儲(chǔ)。單層的藍(lán)光光碟的容量為25或是27GB,足夠錄制一個(gè)長達(dá)4小時(shí)的高解析影片。2008年2月,SONY主導(dǎo)的藍(lán)光光碟戰(zhàn)勝東芝領(lǐng)導(dǎo)的HD DVD。
- CD(光盤) CD-ROM(只讀光盤機(jī))
4)U盤:
- USB閃存盤(簡稱“U盤”)是基于USB接口、以閃存芯片為存儲(chǔ)介質(zhì)的無需驅(qū)動(dòng)器的存儲(chǔ)設(shè)備。U盤其體積小巧,適合隨身攜帶,可以隨時(shí)隨地、輕松交換資料數(shù)據(jù),是移動(dòng)辦公及數(shù)據(jù)存儲(chǔ)交換產(chǎn)品。
- U盤原理使用標(biāo)準(zhǔn)的USB接口,容量從幾十M到上百G,能夠在各種主流操作系統(tǒng)及硬件平臺(tái)之間作大容量數(shù)據(jù)存儲(chǔ)及交換。
- U盤結(jié)構(gòu)由五部分組成:USB端口、主控芯片、PCB底板、FLASH(閃存)芯片、外殼封裝。
- U盤基本工作:USB端口負(fù)責(zé)連接電腦,是數(shù)據(jù)輸入或輸出的通道;主控芯片負(fù)責(zé)各部件的協(xié)調(diào)管理和下達(dá)各項(xiàng)動(dòng)作指令,并使計(jì)算機(jī)將U盤識別為“可移動(dòng)磁盤”,是U盤的“大腦”;FLASH芯片與電腦內(nèi)存條的原理基本相同,是保存數(shù)據(jù)的實(shí)體,其特點(diǎn)是斷電后數(shù)據(jù)不會(huì)丟失,能長期保存;PCB底板是負(fù)責(zé)提供相應(yīng)處理數(shù)據(jù)平臺(tái),且將各部件連接在一起。當(dāng)U盤被操作系統(tǒng)識別后,使用者下達(dá)數(shù)據(jù)存取的動(dòng)作指令后,USB移動(dòng)存儲(chǔ)盤的工作便包含了這幾個(gè)處理過程。
- U盤存儲(chǔ)原理:在源極和漏極之間電流單向傳導(dǎo)的半導(dǎo)體上形成貯存電子的浮動(dòng)棚。浮動(dòng)?xùn)虐粚庸柩趸そ^緣體。它的上面是在源極和漏極之間控制傳導(dǎo)電流的選擇/控制柵。數(shù)據(jù)是0或1取決于在硅底板上形成的浮動(dòng)?xùn)胖惺欠裼须娮印S须娮颖硎緸?,無電子為1。寫入前刪除數(shù)據(jù)進(jìn)行初始化,即從所有浮動(dòng)?xùn)胖袑?dǎo)出電子,將有所數(shù)據(jù)歸“1”。
寫入時(shí)只有數(shù)據(jù)為0時(shí)才進(jìn)行寫入,數(shù)據(jù)為1時(shí)則什么也不做。寫入0時(shí),向柵電極和漏極施加高電壓,增加在源極和漏極之間傳導(dǎo)的電子能量。這樣電子就會(huì)突破氧化膜絕緣體,進(jìn)入浮動(dòng)?xùn)拧?br /> 讀取數(shù)據(jù)時(shí),向柵電極施加一定的電壓,電流大為1,電流小則定為0。浮動(dòng)?xùn)艣]有電子的狀態(tài)(數(shù)據(jù)為1)下,在柵電極施加電壓的狀態(tài)時(shí)向漏極施加電壓,源極和漏極之間由于大量電子的移動(dòng),就會(huì)產(chǎn)生電流。而在浮動(dòng)?xùn)庞须娮拥臓顟B(tài)(數(shù)據(jù)為0)下,溝道中傳導(dǎo)的電子就會(huì)減少。
計(jì)算機(jī)把二進(jìn)制數(shù)字信號轉(zhuǎn)為復(fù)合二進(jìn)制數(shù)字信號(加入分配、核對、堆棧等指令)讀寫到USB芯片適配接口,通過芯片處理信號分配給EPROM2存儲(chǔ)芯片的相應(yīng)地址存儲(chǔ)二進(jìn)制數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。
5)閃存卡:
- 1984年,東芝提出概念,1988年,Intel首先生產(chǎn)。
- 長壽命,斷電仍能保持所數(shù)據(jù)信息。
- 應(yīng)用:保存設(shè)置信息,U盤、電腦的BIOS(基本輸入輸出程序)、PDA(個(gè)人數(shù)字助理)、數(shù)碼相機(jī)中保存資料等。
- 特點(diǎn):體積小、抗震、質(zhì)量輕、可擦寫1000000次,數(shù)據(jù)可保存10年。
6)固態(tài)硬盤:
- 存儲(chǔ)介質(zhì)有閃存(flash芯片)和DRAM兩種。市場上絕大多數(shù)都是基于Flash閃存的。外觀可以被制成多種樣式,如:筆記本硬盤、微硬盤、存儲(chǔ)卡、U盤等樣式。
- 優(yōu)點(diǎn):速度快、不怕震、重量輕。缺點(diǎn):容量小、價(jià)格高。
二、廉價(jià)磁盤冗余陣列RAID
1、基本概念
- RAID是一組物理磁盤的集合,作為一個(gè)邏輯磁盤管理和使用。數(shù)據(jù)被分散存于多個(gè)物理磁盤,以提高可靠性。數(shù)據(jù)備份的功能是在用戶數(shù)據(jù)一旦發(fā)生損壞后,利用備份信息可以使損壞數(shù)據(jù)得以恢復(fù),從而保障了用戶數(shù)據(jù)的安全性。在用戶看起來,組成的磁盤組就像是一個(gè)硬盤,用戶可以對它進(jìn)行分區(qū),格式化等等。
- 1988年,Patterson et al.在他的一篇文章中建議用6個(gè)特定的磁盤組織來提高磁盤的性能或可靠性,或兩方面都同時(shí)提高。這個(gè)建議很快就被采用,并導(dǎo)致了一種新的I/O設(shè)備的誕生,這就是RAID盤。Patterson et al.把RAID定義為廉價(jià)磁盤的冗余陣列(Redundant Array of Inexpensive Disks),但工業(yè)界把“I”由“廉價(jià)的(Inexpensive)”替換成“獨(dú)立的(Independent)”。
- 在RAID系統(tǒng)中,磁盤控制器是很重要的硬件部份,因?yàn)樗绊懶阅芎腿蒎e(cuò)。常用幾個(gè)控制器來預(yù)防控制器故障。小型計(jì)算機(jī)系統(tǒng)接口(SCSI)適配器具有非常好的讀寫性能,所以在RAID系統(tǒng)中幾乎都使用SCSI。一個(gè)驅(qū)動(dòng)器發(fā)出讀寫命令后,SCSI控制器便能與它斷連而轉(zhuǎn)向其它驅(qū)動(dòng)器操作,而這個(gè)驅(qū)動(dòng)器繼續(xù)自己的操作。
- RAID提供了與磁盤鏡象和磁盤雙工類似的冗余。冗余的級別取決于所使用的RAID級別。在一般的磁盤鏡象配置中,一個(gè)備份驅(qū)動(dòng)器對應(yīng)一個(gè)主驅(qū)動(dòng)器。在三級RAID中一個(gè)奇偶驅(qū)動(dòng)器為兩個(gè)或多個(gè)主驅(qū)動(dòng)器提供鏡象,使用一個(gè)編碼方案向奇偶驅(qū)動(dòng)器寫入信息,這些信息與寫在其它驅(qū)動(dòng)器上的數(shù)據(jù)有某種聯(lián)系。若一個(gè)驅(qū)動(dòng)器出故障,奇偶碼和其它驅(qū)動(dòng)器一起用來生成丟失的數(shù)據(jù)部分。
2、關(guān)鍵技術(shù)
- 1)磁盤鏡像:是一種冗余技術(shù),為磁盤提供保護(hù)功能,防止磁盤發(fā)生故障而造成數(shù)據(jù)丟失。對于RAID而言,采用鏡像技術(shù)會(huì)同時(shí)在陣列中產(chǎn)生兩個(gè)完全相同的數(shù)據(jù)副本,分布在兩個(gè)不同的磁盤驅(qū)動(dòng)器組上。鏡像提供了完全的數(shù)據(jù)冗余能力,當(dāng)一個(gè)數(shù)據(jù)副本失效不可用時(shí),外部系統(tǒng)仍可正常訪問另一副本,不會(huì)對應(yīng)用系統(tǒng)運(yùn)行和性能產(chǎn)生影響。而且,鏡像不需要額外的計(jì)算和校驗(yàn),故障修復(fù)非常快,直接復(fù)制即可。鏡像技術(shù)可以從多個(gè)副本進(jìn)行并發(fā)讀取數(shù)據(jù),提供更高的讀I/O性能,但不能并行寫數(shù)據(jù),寫多個(gè)副本會(huì)導(dǎo)致一定的I/O性能降低。鏡像技術(shù)提供了非常高的數(shù)據(jù)安全性,其代價(jià)也是非常昂貴的,需要至少雙倍的存儲(chǔ)空間。高成本限制了鏡像的廣泛應(yīng)用,主要應(yīng)用于至關(guān)重要的數(shù)據(jù)保護(hù),這種場合下數(shù)據(jù)丟失會(huì)造成巨大的損失。
- 2)數(shù)據(jù)條帶:磁盤存儲(chǔ)的性能瓶頸在于磁頭尋道定位,無法與高速CPU匹配,RAID由多塊磁盤組成,數(shù)據(jù)條帶技術(shù)將數(shù)據(jù)以塊的方式分布存儲(chǔ)在多個(gè)磁盤中,從而可以對數(shù)據(jù)進(jìn)行并發(fā)處理。這樣寫入和讀取數(shù)據(jù)就可以在多個(gè)磁盤上同時(shí)進(jìn)行,并發(fā)產(chǎn)生非常高的聚合I/O,有效提高了整體I/O性能,而且具有良好的線性擴(kuò)展性。這對大容量數(shù)據(jù)尤其顯著,如果不分塊,數(shù)據(jù)只能按順序存儲(chǔ)在磁盤陣列的磁盤上,需要時(shí)再按順序讀取。而通過條帶技術(shù),可獲得數(shù)倍與順序訪問的性能提升。數(shù)據(jù)條帶技術(shù)的分塊大小可以是一個(gè)字節(jié)至幾KB大小,分塊越小,并行處理能力就越強(qiáng),數(shù)據(jù)存取速度就越高,但同時(shí)就會(huì)增加塊存取的隨機(jī)性和塊尋址時(shí)間。數(shù)據(jù)條帶是基于提高I/O性能而提出的,而對數(shù)據(jù)可靠性、可用性沒有任何改善。實(shí)際上,其中任何一個(gè)數(shù)據(jù)條帶損壞都會(huì)導(dǎo)致整個(gè)數(shù)據(jù)不可用,采用數(shù)據(jù)條帶技術(shù)反而增加了數(shù)據(jù)發(fā)生丟失的概念率。
- 3)數(shù)據(jù)校驗(yàn):鏡像具有高安全性、高讀性能,但冗余開銷太昂貴。數(shù)據(jù)條帶通過并發(fā)性來大幅提高性能,然而對數(shù)據(jù)安全性、可靠性未作考慮。數(shù)據(jù)校驗(yàn)是一種冗余技術(shù),它用校驗(yàn)數(shù)據(jù)來提供數(shù)據(jù)的安全,可以檢測數(shù)據(jù)錯(cuò)誤,并在能力允許的前提下進(jìn)行數(shù)據(jù)重構(gòu)。相對鏡像,數(shù)據(jù)校驗(yàn)大幅縮減了冗余開銷,用較小的代價(jià)換取了極佳的數(shù)據(jù)完整性和可靠性。數(shù)據(jù)條帶技術(shù)提供高性能,數(shù)據(jù)校驗(yàn)提供數(shù)據(jù)安全性,RAID不同等級往往同時(shí)結(jié)合使用這兩種技術(shù)。采用數(shù)據(jù)校驗(yàn)時(shí),RAID要在寫入數(shù)據(jù)同時(shí)進(jìn)行校驗(yàn)計(jì)算,并將得到的校驗(yàn)數(shù)據(jù)存儲(chǔ)在RAID成員磁盤中。校驗(yàn)數(shù)據(jù)可以集中保存在某個(gè)磁盤或分散存儲(chǔ)在多個(gè)不同磁盤中,甚至校驗(yàn)數(shù)據(jù)也可以分塊,不同RAID等級實(shí)現(xiàn)各不相同。當(dāng)其中一部分?jǐn)?shù)據(jù)出錯(cuò)時(shí),就可以對剩余數(shù)據(jù)和校驗(yàn)數(shù)據(jù)進(jìn)行反校驗(yàn)計(jì)算重建丟失的數(shù)據(jù)。校驗(yàn)技術(shù)相對于鏡像技術(shù)的優(yōu)勢在于節(jié)省大量開銷,但檢驗(yàn)技術(shù)比鏡像技術(shù)復(fù)雜得多且慢得多。
- 交叉并行存取(數(shù)據(jù)條帶)
3、RAID的特點(diǎn)
- 大容量:用N個(gè)低價(jià)磁盤構(gòu)成一個(gè)統(tǒng)一管理陣列,RAID實(shí)際可用容量要小于所有成員磁盤的總?cè)萘俊AID容量利用率在50%-90%之間
- 高性能:受益于數(shù)據(jù)條帶化技術(shù),RAID將數(shù)據(jù)I/O分散到各個(gè)成員磁盤上,從而獲得比單個(gè)磁盤成倍增長的聚合I/O性能,簡單說就是具備N個(gè)磁盤的容量,但幾乎只有1/N的訪問時(shí)間,性價(jià)比高
- 高可靠性:使用鏡像和校驗(yàn)技術(shù),RAID的冗余技術(shù)大幅提升數(shù)據(jù)可用性和可靠性,保證了若干磁盤出錯(cuò)時(shí),不會(huì)導(dǎo)致數(shù)據(jù)的丟失,不影響系統(tǒng)的連續(xù)運(yùn)行。
- 可管理性:RAID作為快速可靠的磁盤系統(tǒng),方便管理
4、RAID的分級:RAID技術(shù)經(jīng)過不斷的發(fā)展,現(xiàn)在已擁有了從RAID 0到6七種基本的RAID級別。另外,還有一些基本RAID級別的組合形式,如RAID 10(RAID 0與RAID 1的組合),RAID 50(RAID 0與RAID 5的組合)等。不同RAID級別代表著不同的存儲(chǔ)性能、數(shù)據(jù)安全性和存儲(chǔ)成本。RAID級別的選擇有三個(gè)主要因素:可用性(數(shù)據(jù)冗余)、性能、成本。如果安全性要求不高,選擇RAID0以獲得最佳性能。如果可用性和性能是重要的而成本不是一個(gè)主要因素,則根據(jù)硬盤數(shù)量選擇RAID 1。如果可用性、成本和性能都同樣重要,則根據(jù)一般的數(shù)據(jù)傳輸和硬盤的數(shù)量選擇RAID 3、RAID 5。
- RAID 0:無差錯(cuò)控制的帶區(qū)組。
要實(shí)現(xiàn)RAID 0必須要有兩個(gè)以上硬盤驅(qū)動(dòng)器,數(shù)據(jù)并不是保存在一個(gè)硬盤上,而是分成數(shù)據(jù)塊保存在不同驅(qū)動(dòng)器上。因?yàn)閷?shù)據(jù)分布在不同驅(qū)動(dòng)器上,所以數(shù)據(jù)吞吐率大大提高,驅(qū)動(dòng)器的負(fù)載也比較平衡。比如所需讀取的文件分布在兩個(gè)硬盤上,這兩個(gè)硬盤可以同時(shí)讀取,那么原來讀取同樣文件的時(shí)間被縮短為1/2。所有級別中RAID 0的速度是最快的。
RAID 0不需要計(jì)算校驗(yàn)碼,實(shí)現(xiàn)容易。缺點(diǎn)是它沒有數(shù)據(jù)差錯(cuò)控制,沒有冗余功能的,如果一個(gè)磁盤(物理)損壞,數(shù)據(jù)發(fā)生錯(cuò)誤,其它盤上的數(shù)據(jù)正確也無用了,不能用于對數(shù)據(jù)穩(wěn)定性要求高的場合。如果用戶進(jìn)行圖象(包括動(dòng)畫)編輯和其它要求傳輸比較大的場合使用RAID 0比較合適。 - RAID 1:鏡像結(jié)構(gòu)。
RAID 1結(jié)構(gòu)中,RAID控制器必須能夠同時(shí)對兩個(gè)盤進(jìn)行讀操作和對兩個(gè)鏡像盤進(jìn)行寫操作。在一組盤出現(xiàn)問題時(shí),可以使用鏡像,提高系統(tǒng)的容錯(cuò)能力。
RAID 1,每讀一次盤只能讀出一塊數(shù)據(jù),數(shù)據(jù)塊傳送速率與單獨(dú)的盤的讀取速率相同。RAID 1的校驗(yàn)十分完備,因此對系統(tǒng)的處理能力有很大的影響。當(dāng)系統(tǒng)需要極高可靠性時(shí),如進(jìn)行數(shù)據(jù)統(tǒng)計(jì),那么使用RAID 1比較合適。
RAID 1技術(shù)支持“熱替換”,即不斷電的情況下對故障磁盤進(jìn)行更換,更換完畢只要從鏡像盤上恢復(fù)數(shù)據(jù)即可。當(dāng)主硬盤損壞時(shí),鏡像硬盤就可以代替主硬盤工作。RAID 1的數(shù)據(jù)安全性在所有的RAID級別上來說是最好的。但是其磁盤的利用率卻只有50%,是所有RAID級別中最低的。 - RAID 2:帶海明碼校驗(yàn)。
從概念上講,RAID 2同RAID 3類似,兩者都是將數(shù)據(jù)條塊化分布于不同的硬盤上,條塊單位為位或字節(jié)。RAID 2使用海明碼技術(shù)來提供錯(cuò)誤的檢查及恢復(fù),技術(shù)實(shí)施更復(fù)雜。因此,在商業(yè)環(huán)境中很少使用。
海明碼可以在數(shù)據(jù)發(fā)生錯(cuò)誤的情況下將錯(cuò)誤校正,以保證輸出的正確。它的數(shù)據(jù)傳送速率相當(dāng)高,如果希望達(dá)到比較理想的速度,那最好提高保存校驗(yàn)碼ECC碼的硬盤。要利用海明碼,必須要付出數(shù)據(jù)冗余的代價(jià)。 - RAID 3:帶奇偶校驗(yàn)碼的并行傳送。
奇偶校驗(yàn)碼與RAID 2中的海明碼不同,只能查錯(cuò)不能糾錯(cuò)。RAID3采用一個(gè)專用的磁盤作為校驗(yàn)盤,其余磁盤作為數(shù)據(jù)盤,數(shù)據(jù)按位可字節(jié)的方式交叉存儲(chǔ)到各個(gè)數(shù)據(jù)盤中。RAID3象RAID 0一樣以并行的方式來工作,但速度沒有RAID 0快。校驗(yàn)碼在寫入數(shù)據(jù)時(shí)產(chǎn)生并保存在專門的一個(gè)奇偶校驗(yàn)盤上。需要實(shí)現(xiàn)時(shí)用戶必須要有三個(gè)以上的驅(qū)動(dòng)器,寫入速率與讀出速率都很高。主要用于圖形(包括動(dòng)畫)等要求吞吐率比較高的場合。不同于RAID 2,RAID 3使用單塊磁盤存放奇偶校驗(yàn)信息。如果一塊數(shù)據(jù)磁盤失效,奇偶盤及其他數(shù)據(jù)盤可以重新產(chǎn)生數(shù)據(jù)。如果奇偶盤失效,則不影響數(shù)據(jù)使用。RAID 3對于大量的連續(xù)數(shù)據(jù)可提供很好的傳輸率,但對于隨機(jī)數(shù)據(jù),奇偶盤會(huì)成為寫操作的瓶頸。保護(hù)數(shù)據(jù)雖然沒有鏡像安全性高,但是硬盤利用率得到了很大提高,為(n-1)/n。 - RAID 4:帶奇偶校驗(yàn)碼的獨(dú)立磁盤結(jié)構(gòu)。
RAID4與RAID3的原理大致相同,區(qū)別在于條帶化的方式不同。 RAID4按照塊的方式來組織數(shù)據(jù),寫操作只涉及當(dāng)前數(shù)據(jù)盤和校驗(yàn)盤兩個(gè)盤,多個(gè)I/O請求可以同時(shí)得到處理,提高了系統(tǒng)性能。RAID4按塊存儲(chǔ)可以保證單塊的完整性,可以避免受到其他磁盤上同條帶產(chǎn)生的不利影響。RAID4提供了非常好的讀性能,但單一的校驗(yàn)盤往往成為系統(tǒng)性能的瓶頸。對于寫操作,RAID4只能一個(gè)磁盤一個(gè)磁盤地寫,并且還要寫入校驗(yàn)數(shù)據(jù),因此寫性能比較差。而且隨著成員磁盤數(shù)量的增加,校驗(yàn)盤的系統(tǒng)瓶頸將更加突出。正是如上這些限制和不足,RAID4在實(shí)際應(yīng)用中很少見,主流存儲(chǔ)產(chǎn)品也很少使用RAID4保護(hù)。 - RAID 5:分布式奇偶校驗(yàn)的獨(dú)立磁盤結(jié)構(gòu)。
它的奇偶校驗(yàn)碼存在于所有磁盤上。RAID 5的讀效率很高,寫效率一般。因?yàn)槠媾夹r?yàn)碼在不同的磁盤上,所以提高了可靠性,允許單個(gè)磁盤出錯(cuò)。RAID 5也是以數(shù)據(jù)的校驗(yàn)位來保證數(shù)據(jù)的安全,但它不是以單獨(dú)硬盤來存放數(shù)據(jù)的校驗(yàn)位,而是將數(shù)據(jù)段的校驗(yàn)位交互存放于各個(gè)硬盤上。任何一個(gè)硬盤損壞,都可以根據(jù)其它硬盤上的校驗(yàn)位來重建損壞的數(shù)據(jù)。RAID 3與RAID 5相比,在于RAID 3每進(jìn)行一次數(shù)據(jù)傳輸,需涉及到所有的陣列盤。對于RAID 5來說,大部分?jǐn)?shù)據(jù)傳輸只對一塊磁盤操作。RAID 5不存在并發(fā)寫操作時(shí)的校驗(yàn)盤性能瓶頸問題。RAID 5兼顧存儲(chǔ)性能、數(shù)據(jù)安全和存儲(chǔ)成本等各方面因素,是目前綜合性能最佳的數(shù)據(jù)保護(hù)解決方案,數(shù)據(jù)中心大多采用RAID 5。 - RAID 6:帶有兩種分布存儲(chǔ)的奇偶校驗(yàn)碼的獨(dú)立磁盤結(jié)構(gòu)。
RAID 6是對RAID 5的擴(kuò)展,主要是用于要求數(shù)據(jù)絕對不能出錯(cuò)的場合。RAID 6增加了第二個(gè)獨(dú)立的奇偶校驗(yàn)信息塊。兩個(gè)獨(dú)立的奇偶系統(tǒng)使用不同的算法,數(shù)據(jù)的可靠性非常高,即使兩塊磁盤同時(shí)失效,也不會(huì)影響數(shù)據(jù)的使用,由于引入了第二種奇偶校驗(yàn)值,所以需要N+2個(gè)磁盤,
RAID 6相對于RAID 5有更大的“寫損失”。RAID 6的寫性能非常差, 同時(shí)對控制器的設(shè)計(jì)變得十分復(fù)雜,用于計(jì)算奇偶校驗(yàn)值和驗(yàn)證數(shù)據(jù)正確性所花費(fèi)的時(shí)間比較多,造成了不必須的負(fù)載,成本也要高于RAID 5許多,因此,RAID 6很少得到實(shí)際應(yīng)用,主要用于對數(shù)據(jù)安全等級要求非常高的場合。它一般是替代 RAID 10方案的經(jīng)濟(jì)性選擇。 - RAID 7:優(yōu)化的高速數(shù)據(jù)傳送磁盤結(jié)構(gòu)。
RAID7是在RAID6的基礎(chǔ)上,采用了cache技術(shù),它使得傳輸率和響應(yīng)速度都有較大的提高。Cache是一種高速緩沖存儲(chǔ)器,即數(shù)據(jù)在寫入磁盤陣列以前,先寫入cache中。在寫入時(shí)將數(shù)據(jù)分別寫入兩個(gè)獨(dú)立的cache,這樣即使其中有一個(gè)cache出故障,數(shù)據(jù)也不會(huì)丟失。在讀出時(shí),主機(jī)也是直接從cache中讀出,而不是從陣列盤上讀取,減少與磁盤讀操作次數(shù),充分利用磁盤帶寬。
這樣cache和磁盤陣列技術(shù)的結(jié)合,彌補(bǔ)了磁盤陣列的不足(如分塊寫請求響應(yīng)差等缺陷),從而使整個(gè)系統(tǒng)以高效、快速、大容量、高可靠以及靈活、方便的存儲(chǔ)系統(tǒng)提供給用戶,滿足技術(shù)發(fā)展的需要,尤其是多媒體系統(tǒng)的需要。
同時(shí),RAID 7還不僅僅是一種技術(shù),它還是一個(gè)獨(dú)立存儲(chǔ)計(jì)算機(jī),自身帶的操作系統(tǒng)和管理工具,完全可以獨(dú)立運(yùn)行。RAID 7的存儲(chǔ)計(jì)算機(jī)操作系統(tǒng)是一套實(shí)時(shí)事件驅(qū)動(dòng)操作系統(tǒng)。RAID 7系統(tǒng)內(nèi)置實(shí)時(shí)操作系統(tǒng)可自動(dòng)對主機(jī)發(fā)送過來的讀寫指令進(jìn)行優(yōu)化處理,以智能化方式將可能被讀取的數(shù)據(jù)預(yù)先讀入快速緩存中,從而大大減少了磁頭的轉(zhuǎn)動(dòng)次數(shù),提高存儲(chǔ)系統(tǒng)的I/O速度。
RAID 7可幫助用戶有效地管理日益龐大的數(shù)據(jù)存儲(chǔ)系統(tǒng),并使系統(tǒng)的運(yùn)行效率大大提高,滿足不同用戶的存儲(chǔ)需求。但是,RAID 7的成本比其它RAID等級要高許多。另外,RAID 7已被某公司注冊為商標(biāo),目前僅有一家公司提供RAID 7的產(chǎn)品,用戶沒有更多的選擇,這也嚴(yán)重制約了RAID 7的發(fā)展。
5、RAID的組合:
- 標(biāo)準(zhǔn)RAID等級各有優(yōu)勢和不足。自然地,我們想到把多個(gè)RAID等級組合起來,實(shí)現(xiàn)優(yōu)勢互補(bǔ),彌補(bǔ)相互的不足,從而達(dá)到在性能、數(shù)據(jù)安全性等指標(biāo)上更高的RAID系統(tǒng)。目前在業(yè)界和學(xué)術(shù)研究中提到的RAID組合等級主要有RAID 00、RAID 01、RAID 10、RAID 100、RAID 30、RAID 50、RAID 53、RAID 60。當(dāng)然,組合等級的實(shí)現(xiàn)成本一般都非常昂貴,只是在少數(shù)特定場合應(yīng)用。
- 1)RAID 00:簡單地說,RAID 00是由多個(gè)成員RAID 0組成的高級RAID 0。它與RAID 0的區(qū)別在于,RAID 0陣列替換了原先的成員磁盤。可以把RAID 00理解為兩層條帶化結(jié)構(gòu)的磁盤陣列,即對條帶再進(jìn)行條帶化。這種陣列可以提供更大的存儲(chǔ)容量、更高的I/O性能和更好的I/O負(fù)均衡。
- 2)RAID 01和RAID 10:RAID 01是先做條帶化再作鏡像,本質(zhì)是對物理磁盤實(shí)現(xiàn)鏡像;而RAID 10是先做鏡像再作條帶化,是對虛擬磁盤實(shí)現(xiàn)鏡像。相同的配置下,通常RAID 01比RAID 10具有更好的容錯(cuò)能力。RAID 01兼?zhèn)淞薘AID 0和RAID 1的優(yōu)點(diǎn),它先用兩塊磁盤建立鏡像,然后再在鏡像內(nèi)部做條帶化。RAID 01的數(shù)據(jù)將同時(shí)寫入到兩個(gè)磁盤陣列中,如果其中一個(gè)陣列損壞,仍可繼續(xù)工作,保證數(shù)據(jù)安全性的同時(shí)又提高了性能。RAID 01和RAID 10內(nèi)部都含有RAID 1模式,因此整體磁盤利用率均僅為50%。
- 3)RAID 100:通常看作RAID 1+0+0,也稱為RAID 10+0,即條帶化的RAID 10。RAID 100的缺陷與RAID 10相同,任意一個(gè)RAID 1損壞一個(gè)磁盤不會(huì)發(fā)生數(shù)據(jù)丟失,但剩下的磁盤存在單點(diǎn)故障的危險(xiǎn)。最頂層的RAID 0,即條帶化任務(wù),通常由軟件層來完成。RAID 100 突破了單個(gè)RAID控制器對物理磁盤數(shù)量的限制,可以獲得更高的I/O負(fù)載均衡,I/O壓力分散到更多的磁盤上,進(jìn)一步提高隨機(jī)讀性能,并有效降低熱點(diǎn)盤故障風(fēng)險(xiǎn)。因此,RAID 100通常是大數(shù)據(jù)庫的最佳選擇。
- 4)RAID 30(RAID 53)、RAID 50和RAID 60:這三種RAID等級與RAID 00原理基本相同,區(qū)別在于成員“磁盤”換成了RAID 3、RAID 5和RAID 6。其中,RAID 30通常又被稱為RAID 53[13]。其實(shí),可把這些等級RAID統(tǒng)稱為RAID X0等級,X可為標(biāo)準(zhǔn)RAID等級,甚至組合等級(如RAID 100)。利用多層RAID配置,充分利用RAID X與RAID 0的優(yōu)點(diǎn),從而獲得在存儲(chǔ)容量、數(shù)據(jù)安全性和I/O負(fù)載均衡等方面的大幅性能提升。
6、RAID等級簡述:
- RAID 0把連續(xù)的數(shù)據(jù)分散到多個(gè)磁盤上存取,代表了所有RAID級別中最高的存儲(chǔ)性能。磁盤利用率是l00%,不提供數(shù)據(jù)冗余。
- RAID l具有磁盤鏡像功能,利用并行讀寫特性將數(shù)據(jù)塊同時(shí)寫入主盤和鏡像盤,比傳統(tǒng)的鏡像盤速度快,但其磁盤利用率只有50%。
- RAID l0將數(shù)據(jù)分散存儲(chǔ)到RAID組的成員盤上,同時(shí)為每個(gè)成員盤提供鏡像盤,實(shí)現(xiàn)數(shù)據(jù)全冗余保存。它利用了RAID 0較高的讀寫效率和RAID l較高的數(shù)據(jù)保護(hù)和恢復(fù)能力,其磁盤利用率為l/m(m為鏡像組內(nèi)成員盤個(gè)數(shù))。當(dāng)m=2時(shí),RAID l0的磁盤利用率最大,即50%。
- RAID 2:使用海明碼技術(shù)來提供錯(cuò)誤檢查及恢復(fù)。
- RAID 3:使用單塊磁盤存放奇偶校驗(yàn)信息。
- RAID 4:RAID 2、RAID 3條塊單位為字字節(jié),RAID 4、RAID 5條塊單位為塊或記錄。RAID 4也使用一塊磁盤作為奇偶校驗(yàn)盤。
- RAID 5:也采用奇偶校驗(yàn)方式,校驗(yàn)數(shù)據(jù)以螺旋方式分散在RAID組的各成員盤上,沒有專用的校驗(yàn)盤。
- RAID 6:是在RAID 5基礎(chǔ)上把校驗(yàn)信息由一位增加到兩位的RAID級別。它實(shí)際上是一擴(kuò)展RAID 5等級,除了每個(gè)硬盤上都有同級數(shù)據(jù)異或校驗(yàn)區(qū)外,還有一個(gè)針對每個(gè)數(shù)據(jù)塊的異或校驗(yàn)區(qū)。
5.4.2 磁盤調(diào)度算法
- 要使磁盤服務(wù)盡可能地快,就需要操作系統(tǒng)提供合適的磁盤調(diào)度算法,以改善磁盤服務(wù)的平均時(shí)間。
- 磁盤存取時(shí)間由尋道時(shí)間、旋轉(zhuǎn)延遲時(shí)間、傳輸時(shí)間三部分組成。磁盤調(diào)度的目的就是減少磁盤的存取時(shí)間,分為兩種調(diào)度:
- 移臂調(diào)度:移動(dòng)磁頭尋找磁道柱面,是為了減少平均尋道時(shí)間。
- 旋轉(zhuǎn)調(diào)度:讀取的扇區(qū)旋轉(zhuǎn)到磁頭下,是為了減少平均旋轉(zhuǎn)延遲時(shí)間。
- 設(shè)計(jì)磁盤調(diào)度算法應(yīng)當(dāng)考慮兩個(gè)基本因素:
公平性:磁盤訪問請求應(yīng)在有限時(shí)間內(nèi)得到滿足。
高效性:盡量避免磁臂頻繁來回移動(dòng),減少設(shè)備機(jī)械運(yùn)動(dòng)所帶來的時(shí)間開銷。
一、移臂調(diào)度
1、先來先服務(wù)調(diào)度算法
- 即按照訪問請求的次序?yàn)楦鱾€(gè)進(jìn)程服務(wù),這是最公平而又最簡單的算法,但是效率不高。因?yàn)榇蓬^引臂的移動(dòng)速度很慢,如果按照訪問請求發(fā)出的次序依次讀寫各個(gè)磁盤塊,則磁頭引臂將可能頻繁大幅度移動(dòng),容易產(chǎn)生機(jī)械振動(dòng),亦造成較大的時(shí)間開銷,影響效率。
- 設(shè):有一個(gè)請求磁盤服務(wù)的隊(duì)列,要訪問的磁道分別是:
98,183,37,122,14,124,65,67 磁頭現(xiàn)在在53號磁道上
- 先來先服務(wù)調(diào)度算法示例:磁頭共移動(dòng)了640個(gè)磁道
2、最短尋道時(shí)間優(yōu)先調(diào)度算法
- SSTF算法以尋道優(yōu)化為出發(fā)點(diǎn),優(yōu)先為距離磁頭當(dāng)前所在位置最近磁道(柱面)的訪問請求服務(wù)。算法改善了平均服務(wù)時(shí)間,但缺點(diǎn)是:假設(shè)某一段時(shí)間外磁道請求不斷,則可能有內(nèi)磁道請求長時(shí)間得不到服務(wù),缺乏公平性。
- 設(shè):有一個(gè)請求磁盤服務(wù)的隊(duì)列,要訪問的磁道分別是:
98,183,37,122,14,124,65,67 磁頭現(xiàn)在在53號磁道上
- 最短尋道時(shí)間優(yōu)先調(diào)度算法示例:磁頭共移動(dòng)了236個(gè)磁道
3、掃描算法(雙向掃描)
- 最短尋道時(shí)間優(yōu)先算法只考慮訪問磁道與磁頭當(dāng)前位置的距離,不考慮磁臂移動(dòng)方向,而掃描算法則既考慮距離,也考慮方向,且以方向優(yōu)先。假設(shè)磁頭處于最外磁道,并向內(nèi)磁道移動(dòng)。在移動(dòng)的過程中,如果經(jīng)過的磁道有訪問請求,則為其服務(wù),一直移動(dòng)到最內(nèi)層磁道,然后改變磁頭移動(dòng)方向,向外層磁道移動(dòng),同時(shí)為經(jīng)過的請求服務(wù),到達(dá)最外層磁道則再次改變方向,向內(nèi)層磁道移動(dòng),到達(dá)最內(nèi)層磁道再改變方向,如此反復(fù)掃描。
- 設(shè):有一個(gè)請求磁盤服務(wù)的隊(duì)列,要訪問的磁道分別是:
98,183,37,122,14,124,65,67。磁頭現(xiàn)在在53號磁道上,正向0磁道(內(nèi)層)方向移動(dòng)。
- 掃描算法示例:磁頭共移動(dòng)了236個(gè)磁道
4、循環(huán)掃描算法(單向掃描)
- 循環(huán)掃描算法是磁頭只在一個(gè)方向進(jìn)行掃描(由內(nèi)向外),并響應(yīng)進(jìn)程的訪問請求。當(dāng)?shù)竭_(dá)最外層磁道是,磁頭直接快速移動(dòng)至最內(nèi)層磁道而不服務(wù)任何請求,然后再次由內(nèi)向外掃描。假設(shè)磁頭只延由內(nèi)向外的方向進(jìn)行掃描,在移動(dòng)的過程中,如果經(jīng)過的磁道有訪問請求,則為其服務(wù),一直移動(dòng)到最外層磁道。然后將磁頭拉回最內(nèi)層磁道,然后再次由內(nèi)向外移動(dòng),如此反復(fù)。
- 設(shè):有一個(gè)請求磁盤服務(wù)的隊(duì)列,要訪問的磁道分別是:
98,183,37,122,14,124,65,67。磁頭現(xiàn)在在53號磁道上,固定由內(nèi)向外方向移動(dòng)(共200個(gè)磁道)。
- 循環(huán)掃描算法示例:磁頭共移動(dòng)了382個(gè)磁道
5、電梯調(diào)度算法
- 電梯調(diào)度算法是磁頭在一個(gè)方向進(jìn)行掃描時(shí),如果該方向上沒有訪問請求,則停止掃描,并可以更改方向,掃描響應(yīng)另一個(gè)方向的訪問請求。假設(shè)初始時(shí),磁頭處于最外磁道,并向內(nèi)磁道移動(dòng)。在移動(dòng)的過程中,如果經(jīng)過的磁道有訪問請求,則為其服務(wù),然后判斷內(nèi)磁道是否還有訪問請求,如果有,則繼續(xù)向內(nèi)磁道移動(dòng)并服務(wù)。如果沒有,但反方向有訪問請求,則立刻改變磁頭移動(dòng)方向,向外層磁道移動(dòng),同時(shí)為經(jīng)過的請求服務(wù),如此反復(fù)。和掃描算法相比,電梯調(diào)度算法不需要掃描到最內(nèi)層或最外層磁道。
- 設(shè):有一個(gè)請求磁盤服務(wù)的隊(duì)列,要訪問的磁道分別是:
98,183,37,122,14,124,65,67 磁頭現(xiàn)在在53號磁道上,正向內(nèi)層磁道方向移動(dòng)。
- 電梯調(diào)度算法示例:磁頭共移動(dòng)了222個(gè)磁道
二、旋轉(zhuǎn)調(diào)度
-
只有涉及這個(gè)柱面的所有訪問結(jié)束后才會(huì)再次進(jìn)行移臂調(diào)度。
-
一般采用延遲時(shí)間最短者優(yōu)先算法,根據(jù)訪問請求的扇區(qū)旋轉(zhuǎn)到磁頭位置的延遲時(shí)間來決定執(zhí)行次序。
計(jì)算延遲時(shí)間應(yīng)考慮的因素:- 1)若干等待訪問者請求訪問同一盤面上同一磁道上的不同扇區(qū)。
- 2)若干等待訪問者請求訪問不同盤面上同位置磁道上的不同編號的扇區(qū)。
- 3)若干等待訪問者請求訪問不同盤面上同位置磁道上具有相同的扇區(qū)。
解決方案:
- 1)對于前兩種情況:總是讓首先到達(dá)讀寫磁頭位置下的扇區(qū)先進(jìn)行傳送操作。
- 2)對于第三種情況:這些扇區(qū)同時(shí)到達(dá)讀寫磁頭位置下,可任意選擇一個(gè)讀寫磁頭進(jìn)行傳送操作,所以要多次旋轉(zhuǎn)才能完成所有訪問請求。
三、有關(guān)磁盤的管理的部分內(nèi)容
1、磁盤初始化
- 一個(gè)新磁盤只是一個(gè)空白盤。在磁盤能存儲(chǔ)數(shù)據(jù)之前,必須分成扇區(qū)以便磁盤控制器能進(jìn)行讀和寫操作,稱為低級格式化(物理分區(qū))。低級格式化為磁盤的每個(gè)扇區(qū)釆用特別的數(shù)據(jù)結(jié)構(gòu)。每個(gè)扇區(qū)的數(shù)據(jù)結(jié)構(gòu)通常由頭、數(shù)據(jù)區(qū)域(通常為512B大小)和尾部組成。頭部和尾部包含了一些磁盤控制器所使用的信息。
- 為使磁盤存儲(chǔ)文件,操作系統(tǒng)還需要將自己的數(shù)據(jù)結(jié)構(gòu)記錄在磁盤上:第一步將磁盤分為由一個(gè)或多個(gè)柱面組成的分區(qū)(即的C盤、D盤等形式的分區(qū));第二步對物理分區(qū)進(jìn)行邏輯格式化(創(chuàng)建文件系統(tǒng)),操作系統(tǒng)將初始的文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)到磁盤上,這些數(shù)據(jù)結(jié)構(gòu)包括空閑和已分配的空間以及一個(gè)初始為空的目錄。
2、引導(dǎo)塊
- 計(jì)算機(jī)啟動(dòng)時(shí)需要運(yùn)行一個(gè)初始化程序(自舉程序),它初始化CPU、寄存器、設(shè)備控制器和內(nèi)存等,接著啟動(dòng)操作系統(tǒng)。為此,該自舉程序應(yīng)找到磁盤上的操作系統(tǒng)內(nèi)核,裝入內(nèi)存,并轉(zhuǎn)到起始地址,從而開始操作系統(tǒng)的運(yùn)行。
- 自舉程序通常保存在ROM中,為了避免改變自舉代碼需要改變ROM硬件的問題,故只在ROM中保留很小的自舉裝入程序,將完整功能的自舉程序保存在磁盤的啟動(dòng)塊上,啟動(dòng)塊位于磁盤的固定位。擁有啟動(dòng)分區(qū)的磁盤稱為啟動(dòng)磁盤或者系統(tǒng)磁盤。
3、壞塊
- 磁盤有移動(dòng)部件且容錯(cuò)能力弱,所以容易導(dǎo)致一個(gè)或多個(gè)扇區(qū)損壞。部分磁盤甚至出廠時(shí)就有壞扇區(qū)。根據(jù)所使用的磁盤和控制器,對這些塊有多種處理方式。
- 對于簡單磁盤,如電子集成驅(qū)動(dòng)器(IDE)。壞扇區(qū)可手工處理,如MS-DOS的Format命令執(zhí)行邏輯格式化時(shí)便會(huì)掃描磁盤以檢查壞扇區(qū)。壞扇區(qū)在FAT表上會(huì)標(biāo)明,因此程序不會(huì)使用。
- 對于復(fù)雜的磁盤,如小型計(jì)算機(jī)系統(tǒng)接口(SCSI),其控制器維護(hù)一個(gè)磁盤壞塊鏈表。該鏈表在出廠前進(jìn)行低級格式化時(shí)就初始化了,并在磁盤的整個(gè)使用過程中不斷更新。低級格式化將一些塊保留作為備用,對操作系統(tǒng)透明。控制器可以用備用塊來邏輯地替代壞塊,這種方案稱為扇區(qū)備用。
- “寫后讀校驗(yàn)”與“重定向熱修復(fù)區(qū)”
4、提高磁盤性能的一些方法
- 1)磁盤高速緩存:使用緩沖技術(shù)(內(nèi)存、軟緩沖);在硬盤中增加高速緩存(硬緩沖)
- 2)提前讀(預(yù)輸入)與延遲寫(緩輸出):置換技術(shù)、SPOOLing技術(shù)
- 3)優(yōu)化數(shù)據(jù)分布:碎片整理、條塊技術(shù)、交叉并行存取技術(shù)
- 4)虛擬盤:以內(nèi)存的一定空間建立一個(gè)模擬的硬盤來工作,需要時(shí)將虛擬盤中的文件轉(zhuǎn)存到實(shí)際硬盤中。虛擬盤由用戶建立、控制管理和使用,高速緩存由系統(tǒng)控制和管理。
5.4.3 存儲(chǔ)空間的分配與回收
一、分配方法(對應(yīng)于文件的存儲(chǔ)結(jié)構(gòu))
-
文件的物理組織結(jié)構(gòu)涉及一個(gè)文件在存儲(chǔ)設(shè)備上是如何放置的。它和文件的存取方法有密切關(guān)系,另外也取決于存儲(chǔ)設(shè)備的物理特性。
-
文件的存儲(chǔ)分配涉及以下三個(gè)問題:
- ① 創(chuàng)建新文件時(shí),是否一次性為該文件分配所需的最大空間?
- ② 為文件分配的空間是連續(xù)還是不連續(xù)的單位,分配文件空間時(shí)應(yīng)采用的單位有多大?
- ③ 為了記錄分配給各個(gè)文件的單位情況,應(yīng)該使用哪種形式的數(shù)據(jù)結(jié)構(gòu)或表格?
-
常用的分配方法有三種:連續(xù)分配、鏈接分配和索引分配。一般情況一個(gè)系統(tǒng)只提供一種方法的支持。
1、連續(xù)分配(順序存儲(chǔ)結(jié)構(gòu)):采用連續(xù)分配可把邏輯文件中的信息順序存放到一組鄰接的物理盤塊中,這樣形成的物理文件稱為連續(xù)文件(或順序文件)。每個(gè)文件在磁盤上占有一組連續(xù)的塊,形成一個(gè)線性排序,這種排序使訪問磁盤時(shí)需要的尋道數(shù)和尋道時(shí)間最小。
- 連續(xù)分配可以用第一塊的磁盤地址和連續(xù)塊的數(shù)量來定義。如果文件有n塊長并從位置b開始,那么該文件將占有塊b, b+1, b+2, …, b+n-1。一個(gè)文件的目錄條目包括開始塊的地址和該文件所分配區(qū)域的長度。
- 連續(xù)分配支持順序訪問和隨機(jī)訪問。
- 優(yōu)點(diǎn):實(shí)現(xiàn)簡單;特別在順序存取時(shí)速度較快,一次可以存取多個(gè)盤塊,改進(jìn)了I/O性能;也很容易直接存取文件中的任意一塊。
- 缺點(diǎn):① 不便于文件動(dòng)態(tài)擴(kuò)充,因?yàn)橐粋€(gè)文件末尾后的盤塊可能已經(jīng)分配給其它文件,一旦增加,需要大量移動(dòng)盤塊。② 可能出現(xiàn)外部碎片。反復(fù)增刪文件后會(huì)產(chǎn)生外部碎片(與內(nèi)存管理分配方式中的碎片相似)。③ 很難在建立文件時(shí)就確定文件需要的空間大小,并依此來分配存儲(chǔ)空間,所以適用于長度固定的文件。
- 實(shí)現(xiàn)連續(xù)盤塊分配的策略:
① 最先適應(yīng)算法 ② 最佳適應(yīng)算法 ③ 最近適應(yīng)算法
2、鏈接分配(鏈接存儲(chǔ)結(jié)構(gòu)):把邏輯上連續(xù)的文件分散存放在不同的物理塊中,這些物理塊不要求連續(xù),也不規(guī)則排列。這種物理結(jié)構(gòu)形式的文件稱做鏈接文件或串連文件。
- 鏈接分配是釆取離散分配,消除了外部碎片,提高了磁盤空間的利用率。系統(tǒng)根據(jù)文件的需求,為它分配必需的盤塊,當(dāng)文件動(dòng)態(tài)增長時(shí),可以動(dòng)態(tài)為它分配盤塊,故而無需事先知道文件的大小。此外,對文件的增、刪、修改也非常方便。
- 帶來的問題:① 一般僅適于對信息的順序訪問,不利于對文件的隨機(jī)存取。② 每個(gè)物理塊上增加一個(gè)鏈接字。③ 因?yàn)殒溄又羔樋煽啃宰兊汀?/li>
- 鏈接分配可分為隱式鏈接和顯式鏈接兩種形式。
- 1)隱式連接:每個(gè)文件對應(yīng)一個(gè)磁盤塊的鏈表;磁盤塊分布在磁盤的任何地方,除最后一個(gè)盤塊外,每一個(gè)盤塊都有指向下一個(gè)盤塊的指針,這些指針對用戶是透明的。
隱式鏈接分配的缺點(diǎn)在于無法直接訪問盤塊,只能通過指針順序訪問文件,盤塊指針也消耗了一定的存儲(chǔ)空間。隱式鏈接分配的穩(wěn)定性也有問題,系統(tǒng)在運(yùn)行過程中由于軟件或者硬件錯(cuò)誤導(dǎo)致鏈表中的指針丟失或損壞,會(huì)導(dǎo)致文件數(shù)據(jù)的丟失。
- 2)顯式連接:是指把用于鏈接文件各物理塊的指針,顯式地存放在內(nèi)存的一張鏈接表中。該表在整個(gè)磁盤僅設(shè)置一張,每個(gè)表項(xiàng)中存放鏈接指針,即下一個(gè)盤塊號。在該表中,凡是屬于某文件的第一個(gè)盤塊號,或者每一條鏈的鏈?zhǔn)字羔標(biāo)鶎?yīng)的盤塊號,均作為文件地址被填入相應(yīng)文件的FCB的“物理地址”字段中。
由于查找記錄的過程是在內(nèi)存中進(jìn)行的,因而不僅顯著地提高了檢索速度,而且大大減少了訪問磁盤的次數(shù)。由于分配給文件的所有盤塊號都放在該表中,稱該表為文件分配表(FAT)。
3、索引分配(索引存儲(chǔ)結(jié)構(gòu)):鏈接分配解決了連續(xù)分配的外部碎片和文件大小管理的問題。但是鏈接分配不能有效支持直接訪問(FAT除外)。索引分配解決了這個(gè)問題,它把每個(gè)文件的所有的盤塊號都集中放在一起構(gòu)成索引塊(表),每個(gè)文件都有其索引塊,這是一個(gè)磁盤塊地址的數(shù)組。索引塊的第i個(gè)條目指向文件的第i個(gè)塊。目錄條目包括索引塊的地址。要讀第i塊,通過索引塊的第i個(gè)條目的指針來查 找和讀入所需的塊。
- 索引分配除了具備鏈接文件的優(yōu)點(diǎn)外,還克服了它的缺點(diǎn),支持隨機(jī)存取,且沒有外部碎片。但索引分配需要增加索引表,空間開銷也會(huì)增大,所以存取文件的速度也會(huì)受到一定的影響。
- 索引塊的大小是個(gè)重要問題,每個(gè)文件必須有一個(gè)索引塊,如果索引塊太小就無法支持大文件,可以釆用以下機(jī)制來處理:
- 1)多層索引:多層索引使第一層索引塊指向第二層的索引塊,第二層索引塊再指向文件塊。這種方法根據(jù)最大文件大小的要求,可以繼續(xù)到第三層或第四層。例如,4096B的塊,能在索引塊中存入1024個(gè)4B的指針。兩層索引允許1048576個(gè)數(shù)據(jù)塊,即允許最大文件為4GB。
- 2)混合索引:將多種索引分配方式相結(jié)合的分配方式。例如,系統(tǒng)既釆用直接地址,又采用單級索引或兩級索引等方式。
索引塊分為直接塊和間接塊,多重索引具有一般索引文件的優(yōu)點(diǎn),但也存在著間接索引需要多次訪盤而影響速度的缺點(diǎn)。
混合索引:混合索引分配在UNIX系統(tǒng)中釆用,UNK SystemV的索引結(jié)點(diǎn)中,共設(shè)置了13個(gè)地址項(xiàng),iaddr(O)–iaddr(12)。在BSD UNIX的索引結(jié)點(diǎn)中,共設(shè)置了13個(gè)地址項(xiàng),它們都把所有的地址項(xiàng)分成兩類,即直接地址和間接地址。- 直接地址:為了提高對文件的檢索速度,在索引結(jié)點(diǎn)中設(shè)置10個(gè)直接地址項(xiàng),即iaddr(O)–iaddr(9)來存放直接地址。每項(xiàng)中所存放的是該文件數(shù)據(jù)所在盤塊的盤塊號。假如每個(gè)盤塊的大小為4KB,當(dāng)文件不大于40KB時(shí),便可直接從索引結(jié)點(diǎn)中讀出該文件的全部盤塊號。
- 一次間接地址:對于大中型文件,只釆用直接地址并不現(xiàn)實(shí)。可再利用索引結(jié)點(diǎn)中的地址項(xiàng)iaddr(lO) 來提供一次間接地址,就是一級索引分配。一次間址塊就是索引塊,系統(tǒng)將分配給文件的多個(gè)盤塊號記入其中。在一次間址塊中可存放1024個(gè)盤塊號,因而允許文件長達(dá)4MB。
- 多次間接地址:當(dāng)文件長度大于4MB+40KB(—次間址與10個(gè)直接地址項(xiàng))時(shí),系統(tǒng)釆用二次間接地址。用地址項(xiàng)iaddr(11)提供二次間接地址,就是兩級索引分配方式。系統(tǒng)此時(shí)是在二次間址塊中記入所有一次間址塊的盤號。在釆用二次間址方式時(shí),文件最大長度可達(dá)4GB。同理,地址項(xiàng)iaddr(12)作為三次間接地址,其所允許的文件最大長度可達(dá)4TB。
- 索引分配下,訪問文件需要至少兩次訪問外存,首先要讀取索引塊的內(nèi)容,然后再訪問具體的磁盤塊,因而降低了文件的存取速度。為了解決這一問題,通常將文件的索引塊讀入內(nèi)存的緩沖區(qū)中,以加快文件的訪問速度。
文件三種分配方式的比較:
二、外存空間管理
- 文件存儲(chǔ)器空間的劃分與初始化:一般說,一個(gè)文件存儲(chǔ)在一個(gè)文件卷中。文件卷可以是物理盤的一部分,也可以是整個(gè)物理盤,支持超大型文件的文件卷也可以由多個(gè)物理盤組成。
- 在一個(gè)文件卷中,文件數(shù)據(jù)信息的空間(文件區(qū))和存放文件控制信息FCB的空間(目錄區(qū))是分離的。由于存在很多種類的文件表示和存放格式,所以現(xiàn)代操作系統(tǒng)中一般都有很多不同的文件管理模塊,通過它們可以訪問不同格式的邏輯卷中的文件。邏輯卷在提供文件服務(wù)前,必須由對應(yīng)的文件程序進(jìn)行初始化,劃分好目錄區(qū)和文件區(qū),建立空閑空間管理表格及存放邏輯卷信息的超級塊。
- 邏輯卷與物理盤的關(guān)系:
- 文件存儲(chǔ)器空間管理:文件存儲(chǔ)設(shè)備分成許多大小相同的物理塊,并以塊為單位交換信息,因此,文件存儲(chǔ)設(shè)備的管理實(shí)質(zhì)上是對空閑塊的組織和管理,它包括空閑塊的組織、分配與回收等問題。
- 1、空閑表法:空閑表法屬于連續(xù)分配方式,與內(nèi)存的動(dòng)態(tài)分配方式類似,為每個(gè)文件分配一塊連續(xù)的存儲(chǔ)空間。系統(tǒng)為外存上的所有空閑區(qū)建立一張空閑盤塊表,每個(gè)空閑區(qū)對應(yīng)于一個(gè)空閑表項(xiàng),包括序號、該空閑區(qū)第一個(gè)盤塊號、該區(qū)的空閑盤塊數(shù)等信息。再將所有空閑區(qū)按其起始盤塊號遞增的次序排列。
- 空閑盤區(qū)的分配與內(nèi)存的動(dòng)態(tài)分配類似,同樣可釆用首次適應(yīng)算法、循環(huán)首次適應(yīng)算法等。對釋放的存儲(chǔ)空間進(jìn)行回收時(shí),也釆取類似于內(nèi)存回收的方法,即要考慮回收區(qū)是否與空閑表中插入點(diǎn)的前區(qū)和后區(qū)相鄰接,對相鄰接者應(yīng)予以合并。
- 空閑表法特別適于存放連續(xù)文件,若存儲(chǔ)空間有大量的小空閑區(qū)時(shí),檢索效率降低。還會(huì)產(chǎn)生外存的外部碎片,造成磁盤空間的浪費(fèi)。
2、空閑鏈表法:將所有空閑區(qū)域拉成一條空閑鏈,根據(jù)構(gòu)成鏈所用的基本元素不同,可把鏈表分成空閑盤塊鏈和空閑盤區(qū)鏈。
- 空閑盤塊鏈?zhǔn)菍⒋疟P上的所有空閑空間以盤塊為單位拉成一條鏈。當(dāng)用戶因創(chuàng)建文件而請求分配存儲(chǔ)空間時(shí),系統(tǒng)從鏈?zhǔn)组_始,依次摘下適當(dāng)?shù)臄?shù)目的空閑盤塊分配給用戶。當(dāng)用戶因刪除文件而釋放存儲(chǔ)空間時(shí),系統(tǒng)將回收的盤塊依次插入空閑盤塊鏈的末尾。這種方法的優(yōu)點(diǎn)是分配和回收一個(gè)盤塊的過程非常簡單,但在為一個(gè)文件分配盤塊時(shí),可能要重復(fù)多次操作。
- 空閑盤區(qū)鏈?zhǔn)菍⒋疟P上的所有空閑盤區(qū)(每個(gè)盤區(qū)可包含若干個(gè)盤塊)拉成一條鏈。在每個(gè)盤區(qū)上除含有用于指示下一個(gè)空閑盤區(qū)的指針外,還應(yīng)有能指明本盤區(qū)大小(盤塊數(shù))的信息。分配盤區(qū)的方法與內(nèi)存的動(dòng)態(tài)分區(qū)分配類似,通常釆用首次適應(yīng)算法。在回收盤區(qū)時(shí),同樣也要將回收區(qū)與相鄰接的空閑盤區(qū)相合并。
3、位示圖法:位示圖是利用二進(jìn)制的一位來表示磁盤中一個(gè)盤塊的使用情況,磁盤上所有的盤塊都有一個(gè)二進(jìn)制位與之對應(yīng)。當(dāng)其值為“0”時(shí),表示對應(yīng)的盤塊空閑;當(dāng)其值為“1”時(shí),表示對應(yīng)的盤塊已分配。
- 盤塊分配:順序掃描位示圖,從中找出一個(gè)或一組其值為“0”的二進(jìn)制位。將所找到的一個(gè)或一組二進(jìn)制位,轉(zhuǎn)換成與之對應(yīng)的盤塊號。修改位示圖,令相應(yīng)位為“1”。
- 盤塊回收:將回收盤塊的盤塊號轉(zhuǎn)換成位示圖中的行號和列號。修改位示圖,令相應(yīng)位為“0”。
4、成組鏈接法:空閑表法和空閑鏈表法都不適合大型文件系統(tǒng),因?yàn)闀?huì)使空閑表或空閑鏈表太大。在UNIX系統(tǒng)中釆用的是成組鏈接法,這種方法結(jié)合了空閑表和空閑鏈表兩種方法,克服了表太大的缺點(diǎn)。
- 基本思想:把一組n個(gè)空閑扇區(qū)地址保存在第一個(gè)空閑扇區(qū)內(nèi),其后一個(gè)空閑扇區(qū)內(nèi)則保存另一組n各空閑扇區(qū)的地址,如此繼續(xù),直至所有空閑扇區(qū)均予以鏈接。系統(tǒng)只需要保存一個(gè)指向第一個(gè)空閑扇區(qū)的指針。
- 例如:每50個(gè)空閑塊為一組。
第一組的50個(gè)空閑塊塊號放在第二組的頭一塊中,第二組的其余49塊是完全空閑的。第二組的50個(gè)塊號又放在第三組的頭一塊中,以此類推,組與組之間形成鏈接關(guān)系。
表示存儲(chǔ)器空閑空間的“位向量”表或第一個(gè)成組鏈塊以及卷中的目錄區(qū)、文件區(qū)劃分信息都需要存放在輔存儲(chǔ)器中,一般放在卷頭位置,在UNIX系統(tǒng)中稱為“超級塊”。在對卷中文件進(jìn)行操作前,“超級塊”需要預(yù)先讀入系統(tǒng)空間的主存,并保持主存“超級塊”與輔存卷中“超級塊”的一致性。
5.5 文件的共享與安全
一、文件的共享
- 文件共享使多個(gè)用戶(進(jìn)程)共享同一份文件,系統(tǒng)中只需保留該文件的一份副本。如果系統(tǒng)不能提供共享功能,那么每個(gè)需要該文件的用戶都要有各自的副本,會(huì)造成對存儲(chǔ)空間的極大浪費(fèi)。
- 隨著計(jì)算機(jī)技術(shù)的發(fā)展,文件共享的范圍已由單機(jī)系統(tǒng)發(fā)展到多機(jī)系統(tǒng),進(jìn)而通過網(wǎng)絡(luò)擴(kuò)展到全球。這些文件的分享是通過分布式文件系統(tǒng)、遠(yuǎn)程文件系統(tǒng)、分布式信息系統(tǒng)實(shí)現(xiàn)的。這些系統(tǒng)允許多個(gè)客戶通過C/S模型共享網(wǎng)絡(luò)中的服務(wù)器文件。
1、文件共享的定義:一個(gè)文件被多個(gè)用戶或進(jìn)程使用。
2、文件共享形式:
- 文件可以共享,但任何時(shí)刻只能有一個(gè)用戶或進(jìn)程使用共享文件。
- 文件可以同時(shí)被多個(gè)用戶或進(jìn)程共享,需要進(jìn)行相關(guān)的讀寫控制。
3、文件共享的作用:
- 文件共享節(jié)省時(shí)間和存儲(chǔ)空間,減少了用戶工作量。利用文件共享可以實(shí)現(xiàn)進(jìn)程間相互通信和信息交換。
4、文件共享方法(三類):早期文件共享方法;基于索引結(jié)點(diǎn)的共享方法;利用符號鏈實(shí)現(xiàn)文件共享。
- 1)早期文件共享的方法
① 繞彎路法:每個(gè)用戶都獲得一個(gè)“當(dāng)前目錄”,用戶所訪問的所有文件都是相對于當(dāng)前目錄的;當(dāng)所訪問的文件不在當(dāng)前目錄下時(shí),通過“向上走”的方式去訪問其上級目錄,然后一步一步到達(dá)所訪問的文件。
② 基本目錄法:在文件系統(tǒng)中設(shè)置一個(gè)基本目錄,每個(gè)文件在該目錄中均占有一個(gè)目錄項(xiàng),用于給出系統(tǒng)賦予的該文件唯一的標(biāo)識符及該文件的有關(guān)說明信息。同時(shí)每個(gè)用戶都有一個(gè)符號文件目錄,其中每一個(gè)目錄項(xiàng)都含有該文件的符號名及其唯一的標(biāo)識符。
③ 連訪法:為了提高對共享文件的訪問速度,可在相應(yīng)的目錄項(xiàng)之間進(jìn)行鏈接,即使一個(gè)目錄中的目錄項(xiàng)直接指向另一目錄中的目錄項(xiàng)。同時(shí)在文件說明中增設(shè)連訪屬性,指示說明文件中物理地址是指向一個(gè)文件或共享文件目錄項(xiàng)的指針,以及共享用戶計(jì)數(shù)等。
- 2)基于索引結(jié)點(diǎn)的共享方法(硬鏈接)
這種共享方式中引用索引結(jié)點(diǎn),即文件的物理地址及其他的文件屬性等信息,不再是放在目錄項(xiàng)中,而是放在索引結(jié)點(diǎn)中。在文件目錄中只設(shè)置文件名及指向相應(yīng)索引結(jié)點(diǎn)的指針。在索引結(jié)點(diǎn)中還應(yīng)有一個(gè)鏈接計(jì)數(shù)count,用于表示鏈接到本索引結(jié)點(diǎn)上的用戶目錄項(xiàng)的數(shù)目。當(dāng)count=2時(shí),表示有兩個(gè)用戶目錄項(xiàng)鏈接到本文件上,或者說是有兩個(gè)用戶共享此文件。
- 當(dāng)用戶A創(chuàng)建一個(gè)新文件時(shí),A是該文件的所有者,此時(shí)將共享計(jì)數(shù)count置為1。當(dāng)有用戶B要共享此文件時(shí),在用戶B的目錄中增加一個(gè)目錄項(xiàng),并設(shè)置一指針指向該文件的索引結(jié)點(diǎn)。此時(shí),文件主仍然是用戶A,count=2。如果用戶A不再需要此文件,不能將文件直接刪除。因?yàn)閯h除了該文件,也必然刪除該文件的索引結(jié)點(diǎn),這樣會(huì)使用戶B的指針懸空,而用戶B可能正在執(zhí)行寫操作,此時(shí)用戶B會(huì)無法訪問到文件。因此用戶A不能刪除此文件,只是將該文件的count減1,然后刪除自己目錄中的相應(yīng)目錄項(xiàng)。用戶B仍可以使用該文件。當(dāng)count=0時(shí),表示沒有用戶使用該文件,系統(tǒng)將負(fù)責(zé)刪除該文件。
3)利用符號鏈實(shí)現(xiàn)文件共享(軟鏈接) - 用戶B要共享用戶A的一個(gè)文件F,可以由系統(tǒng)創(chuàng)建一個(gè)LINK類型的新文件,也取名為F,并將文件F寫入用戶B的目錄中,以實(shí)現(xiàn)用戶B的目錄與文件F的鏈接。在新文件中只包含被鏈接文件F的路徑名。這種鏈接方法稱為符號鏈接(如快捷方式)。
- 新文件中的路徑名則只被看做是符號鏈,當(dāng)用戶B要訪問被鏈接的文件F且正要讀LINK類新文件時(shí),操作系統(tǒng)根據(jù)新文件中的路徑名去讀該文件,從而實(shí)現(xiàn)了用戶B對文件F的共享。
在利用符號鏈方式實(shí)現(xiàn)文件共享時(shí),只有文件擁有者才有指向其索引結(jié)點(diǎn)的指針。共享該文件的其他用戶只有該文件的路徑名,并不擁有指向其索引結(jié)點(diǎn)的指針。當(dāng)文件擁有者把共享文件刪除后,其他用戶通過符號鏈訪問時(shí),會(huì)出現(xiàn)訪問失敗,于是將符號鏈刪除,不會(huì)留下懸空指針的情況,不會(huì)產(chǎn)生影響。
利用符號鏈實(shí)現(xiàn)文件共享也存在問題,例如:一個(gè)文件釆用符號鏈方式共享,當(dāng)文件擁有者將其刪除,而在共享的其他用戶使用其符號鏈接訪問該文件之前,又有人在同一路徑下創(chuàng)建了另一個(gè)具有同樣名稱的文件,則該符號鏈將仍然有效,但訪問的文件已經(jīng)改變,從而導(dǎo)致錯(cuò)誤。
在符號鏈的共享方式中,當(dāng)其他用戶讀共享文件時(shí),需要根據(jù)文件路徑名逐個(gè)查找目錄,直至找到該文件的索引結(jié)點(diǎn)。因此每次訪問時(shí)可能要多次讀取磁盤,使得訪問文件開銷變大,并增加了啟動(dòng)磁盤的頻率。此外,符號鏈的索引結(jié)點(diǎn)也要耗費(fèi)一定的磁盤空間。符號鏈方式有一個(gè)很大的優(yōu)點(diǎn),即網(wǎng)絡(luò)共享只需提供該文件所在機(jī)器的網(wǎng)絡(luò)地址以及該機(jī)器中的文件路徑即可。
基于索引節(jié)點(diǎn)和利用符號鏈兩種方式都存在一個(gè)共同的問題,即每個(gè)共享文件都有幾個(gè)文件名。就是每增加一條鏈接,就增加一個(gè)文件名。這實(shí)質(zhì)上就是每個(gè)用戶都使用自己的路徑名去訪問共享文件。當(dāng)用戶或系統(tǒng)試圖遍歷整個(gè)文件系統(tǒng)時(shí),將會(huì)多次遍歷到該共享文件。
二、文件安全
1、文件安全包括文件保密和文件保護(hù)
- 保密是為了防止未經(jīng)授權(quán)的非法用戶對文件進(jìn)行訪問,同時(shí)防止合法用戶的有意或無意的泄漏。
- 偽裝者:未經(jīng)授權(quán)的非法用戶,一般來源于系統(tǒng)外部。
- 違法者:合法用戶,但非法訪問未授權(quán)數(shù)據(jù),一般來源于系統(tǒng)內(nèi)部。
- 地下用戶:掌握了系統(tǒng)的管理控制,并逃避系統(tǒng)管理控制的用戶,可能來源于系統(tǒng)外部,也可能來源于系統(tǒng)內(nèi)部。
- 保護(hù)措施是為了防止人為的、系統(tǒng)的、自然的有意或無意對文件造成的破壞。
2、影響文件安全性的主要因素:
- 1)人為因素:指各種影響文件安全的人為方式,有意或無意的泄漏信息或破壞信息,如黑客非法入侵,泄露、計(jì)算機(jī)病毒等。
- 2)系統(tǒng)因素:指計(jì)算機(jī)系統(tǒng)可能產(chǎn)生的各種軟、硬件故障,它們將會(huì)引起文件存儲(chǔ)器的信息丟失或物理損壞;現(xiàn)在計(jì)算機(jī)系統(tǒng)采用各種系統(tǒng)容錯(cuò)技術(shù)來避免系統(tǒng)因素導(dǎo)致的信息安全問題。
- 3)自然因素:即存放在磁盤上的數(shù)據(jù),隨著時(shí)間的推移將可能發(fā)生溢出或逐漸消失。
3、為確保文件的安全性可采取的措施:
- 1)對于人為因素造成的不安全性,通過存取控制機(jī)制進(jìn)行防止,如口令、加密、權(quán)限設(shè)置等。
- 2)對于系統(tǒng)因素造成的不安全性,通過系統(tǒng)容錯(cuò)技術(shù)進(jìn)行防止,如FAT和目錄雙備份、重定向熱修復(fù)區(qū)、磁盤鏡像、磁盤雙工、廉價(jià)磁盤冗余陣列等。
- 3)對于自然因素造成的不安全性,通過“后備系統(tǒng)”進(jìn)行防止,如系統(tǒng)及文件備份、日志管理等。
4、四級安全防護(hù)體系:
- 1)系統(tǒng)級安全管理:通過對現(xiàn)行系統(tǒng)安全技術(shù)的分析,制定系統(tǒng)級安全策略,策略包括安全登陸(合法用戶注冊、登陸時(shí)要驗(yàn)證用戶名及口令等)、敏感系統(tǒng)的隔離、訪問地址段的限制、登錄時(shí)間段的限制、會(huì)話時(shí)間的限制、連接數(shù)的限制、特定時(shí)間段內(nèi)登錄次數(shù)的限制以及遠(yuǎn)程訪問控制等,系統(tǒng)級安全是應(yīng)用系統(tǒng)的第一道防護(hù)大門。
- 2)用戶級安全管理:設(shè)定用戶身份及存取權(quán)限,可執(zhí)行何種操作。UNIX將用戶分為文件主(文件創(chuàng)建者)、文件主的同組用戶或合作者、其他用戶三種;Windows將用戶分為系統(tǒng)管理員、一般用戶、訪客三種。用戶只能按照其權(quán)限進(jìn)行操作和訪問。
- 3)目錄級安全管理:設(shè)定目錄的存取屬性。
- 4)文件級安全管理:設(shè)定文件的存取屬性。
合法用戶的權(quán)限下,又符合目錄和文件的操作屬性,才能最終完成相應(yīng)的目錄或文件操作。
三、文件保密
- 常用保密方法有很多,一般有以下幾種:
- 1、用戶名及口令:用戶在創(chuàng)建文件時(shí)為其規(guī)定一個(gè)口令,系統(tǒng)將此口令保存在該文件的文件控制塊中。當(dāng)用戶使用該文件時(shí),系統(tǒng)要求用戶輸入口令,并與保存在文件控制塊中的口令相比較,只有口令一致時(shí),才允許訪問,否則不允許訪問。這種方法的優(yōu)點(diǎn)是實(shí)現(xiàn)簡單,缺點(diǎn)是保密性比較差,不能控制存取權(quán)限。
- 2、存取控制表:系統(tǒng)為每個(gè)文件形成一張存取控制表,該表給每類用戶規(guī)定了存取權(quán)限,或給每個(gè)用戶規(guī)定存取權(quán)限。
- 3、存取控制矩陣:由系統(tǒng)的全部用戶和系統(tǒng)中的全部文件組成一個(gè)二維矩陣。矩陣的每個(gè)元素aij規(guī)定了第i個(gè)用戶對第j個(gè)文件的訪問權(quán)限。例如,aij=1表示可讀;aij =2表示可寫;aij=3表示可執(zhí)行。如果用戶和文件較多時(shí),這個(gè)矩陣很大,實(shí)現(xiàn)起來系統(tǒng)開銷太大,而且使用也不很方便。
- 4、訪問控制策略:進(jìn)行訪問控制的整體方法,主要有自主訪問控制(DAC)、強(qiáng)制訪問控制(MAC)和基于角色訪問控制(RBAC)。
- 1)自主訪問控制:通過執(zhí)行基于系統(tǒng)實(shí)體身份及其到系統(tǒng)資源的接入授權(quán)。通常DAC通過授權(quán)列表(或訪問控制列表)來限定哪些主體針對哪些客體可以執(zhí)行什么操作。如此將可以非常靈活地對策略進(jìn)行調(diào)整。由于其易用性與可擴(kuò)展性,自主訪問控制機(jī)制經(jīng)常被用于商業(yè)系統(tǒng)。
- 2)強(qiáng)制訪問控制(MAC):是系統(tǒng)強(qiáng)制主體服從訪問控制策略。是由系統(tǒng)對用戶所創(chuàng)建的對象,按照規(guī)定的規(guī)則控制用戶權(quán)限及操作對象的訪問。在MAC中,每個(gè)用戶及文件都被賦予一定的安全級別,只有系統(tǒng)管理員才可確定用戶和組的訪問權(quán)限,用戶不能改變自身或任何客體的安全級別。系統(tǒng)通過比較用戶和訪問文件的安全級別,決定用戶是否可以訪問該文件。常用于軍事用途。
- 3)基于角色的訪問控制:角色是一定數(shù)量的權(quán)限的集合。指完成一項(xiàng)任務(wù)必須訪問的資源及相應(yīng)操作權(quán)限的集合。角色作為一個(gè)用戶與權(quán)限的代理層,表示為權(quán)限和用戶的關(guān)系,所有的授權(quán)應(yīng)該給予角色而不是直接給用戶或用戶組。基于角色的訪問控制(Role-Based Access Control,RBAC)是通過對角色的訪問所進(jìn)行的控制。使權(quán)限與角色相關(guān)聯(lián),用戶通過成為適當(dāng)角色的成員而得到其角色的權(quán)限。RBAC支持三個(gè)著名的安全原則:最小權(quán)限原則、責(zé)任分離原則和數(shù)據(jù)抽象原則。
5、加密:創(chuàng)建文件時(shí),由用戶提供一個(gè)密碼,在文件存入磁盤時(shí)用該密碼對文件內(nèi)容加密。進(jìn)行讀取操作時(shí),要對文件解密。這樣只有知道密碼的用戶才能對文件進(jìn)行訪問,其他用戶不能任意訪問文件。
- 常用加密方法:
方法一:修改后綴名(并不是真正的加密)。
如:將123.doc改為456.avi
方法二:用winrar等壓縮軟件加密,適合文件比較小的加密。
方法三:使用專門的加密軟件加密,如文件加密大師。
方法四:使用硬件加密,加密狗。
方法五:文件相互捆綁,將要加密的文件捆綁在另一個(gè)文件中。
四、文件保護(hù)
1、系統(tǒng)容錯(cuò)
- 1)盤塊一致性檢查:檢查程序建立兩個(gè)表格,即使用表和空閑表,標(biāo)記互相相反。
- 2)文件一致性檢查:從根目錄開始,沿目錄樹遞歸向下查找。對于每個(gè)目錄中的每個(gè)文件,其i節(jié)點(diǎn)對應(yīng)的計(jì)數(shù)器值加1。當(dāng)檢查完畢后,得到一個(gè)以i節(jié)點(diǎn)號為下標(biāo)的列表,說明每個(gè)文件包含在多少個(gè)目錄中。然后,把這些數(shù)目與存放在i節(jié)點(diǎn)中的鏈接計(jì)數(shù)進(jìn)行比較。如果文件系統(tǒng)保持一致性,那么兩個(gè)值相同;否則,出現(xiàn)兩種錯(cuò)誤,即i節(jié)點(diǎn)中的鏈接計(jì)數(shù)太大或太小。
- 3)寫后讀校驗(yàn)、重定向熱修復(fù)
- 4)文件分配表(FAT)雙備份
- 5)文件目錄雙備份
- 6)磁盤鏡像、磁盤雙工
- 7)RAID
2、后備系統(tǒng)
- 1)建立副本:把一個(gè)文件的不同副本分別存到不同介質(zhì)上。操作簡單、但修改一個(gè)文件則必須同時(shí)修改其他副本。
- 2)定時(shí)轉(zhuǎn)儲(chǔ):把所有文件采用定期轉(zhuǎn)儲(chǔ)到磁帶或磁盤上備份起來,包括完全轉(zhuǎn)儲(chǔ)和增量轉(zhuǎn)儲(chǔ)。
- 1)完全轉(zhuǎn)儲(chǔ)(海量轉(zhuǎn)儲(chǔ)):即定期將所有文件全部拷貝到后援存儲(chǔ)器中,后援存儲(chǔ)器可以是磁帶、磁盤、光盤等。當(dāng)磁盤上的文件被破壞時(shí),可將備份設(shè)備上的文件重新裝入磁盤,使文件得以恢復(fù)。完全轉(zhuǎn)儲(chǔ)需要較多的時(shí)間,而且必須在沒有用戶使用文件時(shí)進(jìn)行,不宜過于頻繁,一般每天一次或每周一次。
- 2)增量轉(zhuǎn)儲(chǔ):所謂增量轉(zhuǎn)儲(chǔ)并不復(fù)制所有文件,而是僅復(fù)制兩次轉(zhuǎn)儲(chǔ)期間內(nèi)被修改過的內(nèi)容。增量轉(zhuǎn)儲(chǔ)節(jié)省時(shí)間,但其實(shí)現(xiàn)略復(fù)雜。
- 3)日志管理:紀(jì)錄系統(tǒng)工作中發(fā)生的每次操作和修改。
實(shí)際應(yīng)用當(dāng)中,通常采用“完全備份”和“增量備份”相結(jié)合的方法。出現(xiàn)問題時(shí),首先用完全備份的內(nèi)容恢復(fù),再用增量備份的內(nèi)容恢復(fù),最后使用日志進(jìn)行恢復(fù)。
五、文件使用
用戶在使用文件系統(tǒng)時(shí),必須按照操作系統(tǒng)提供的方式和要求來完成具體的文件操作。
1、建立文件
- 建立文件系統(tǒng)調(diào)用的一般格式:create(文件名,參數(shù)表)
- 用戶提供要?jiǎng)?chuàng)建的文件的文件名及若干參數(shù),系統(tǒng)為這一新創(chuàng)建的文件分配一個(gè)文件控制塊,根據(jù)用戶提供的參數(shù)及系統(tǒng)控制需要填寫文件控制塊中的有關(guān)項(xiàng)。有的系統(tǒng)還返回給用戶一個(gè)文件控制塊描述符,以后用戶使用該文件控制塊描述符存取該文件。
2、打開文件
- 如果使用文件,首先要打開。以建立用戶和文件的聯(lián)系。打開文件系統(tǒng)調(diào)用的一般格式:open(文件名,讀寫方式)
讀寫方式可為讀、寫和既讀又寫等。 - 系統(tǒng)主要完成:(1)檢查該文件名所對應(yīng)的文件控制塊是否已在內(nèi)存,如果不在,則將其調(diào)入內(nèi)存,這時(shí)文件控制塊稱為“活躍的”。(2)檢查操作合法性,例如,若該文件為只讀文件,但用戶卻將“讀寫方式”置為寫,則系統(tǒng)不予打開。有些系統(tǒng)中,在執(zhí)行完系統(tǒng)調(diào)用open之后返回用戶一個(gè)文件描述符,以后用戶使用文件描述符而不是文件名對該文件讀寫。
3、讀文件
- 打開文件后,就可以讀取文件中的信息。讀文件系統(tǒng)調(diào)用的一般格式:read(文件名,記錄鍵,內(nèi)存位置)
- 是把指定文件中給定鍵值的記錄讀入內(nèi)存指定單元。
4、寫文件
- 寫文件系統(tǒng)調(diào)用一般格式:write(文件名,記錄鍵,內(nèi)存位置)
- 表示把內(nèi)存中指定單元的數(shù)據(jù)作為指定鍵值的一個(gè)記錄寫入指定文件中,系統(tǒng)還將為其分配物理塊,以把記錄信息寫在外存上。
5、關(guān)閉文件
- 文件關(guān)閉后一般不能存取,若要存取,則必須再次打開。關(guān)閉文件系統(tǒng)調(diào)用的一般格式:close(文件名)
- 系統(tǒng)根據(jù)用戶提供的文件名或文件描述符,在該文件的文件控制塊上做修改。例如,將該文件的共享用戶數(shù)減l,減1后若值為0,若該文件控制塊內(nèi)容被修改過,則要寫回外存。
6、刪除文件
- 刪除文件系統(tǒng)調(diào)用的一般格式:delete (文件名)
- 系統(tǒng)根據(jù)用戶提供的文件名或文件描述符,檢查刪除的合法性,若合法,則收回文件所占用的各種資源。
7、其它文件操作
- 附加文件append 重新命名文件rename
- 取文件屬性get_attributes 置文件屬性set_attributes
8、目錄操作
- 創(chuàng)建目錄create 刪除目錄delete
- 打開目錄opendir 關(guān)閉目錄closedir
- 讀目錄readdir 重新命名目錄rename
9、文件操作的基本步驟:
- 讀文件步驟:打開文件,讀文件,關(guān)閉文件
- 寫文件步驟:打開文件,寫文件,關(guān)閉文件
- 用戶通過什么操作申請文件的使用權(quán)?
打開文件和建立文件 - 用戶通過什么操作歸還文件的使用權(quán)?
關(guān)閉文件
- 補(bǔ)充:文件系統(tǒng)實(shí)現(xiàn)概述:
為創(chuàng)建一個(gè)文件,應(yīng)用程序調(diào)用邏輯文件系統(tǒng)。邏輯文件系統(tǒng)知道目錄結(jié)構(gòu)形式,它將分配一個(gè)新的FCB給文件,把相應(yīng)目錄讀入內(nèi)存,用新的文件名更新該目錄和FCB,并將結(jié)果寫回到磁盤。
一旦文件被創(chuàng)建,就能用于I/O,不過首先要打開文件。調(diào)用open將文件名傳給文件系統(tǒng),文件系統(tǒng)根據(jù)給定文件名搜索目錄結(jié)構(gòu)。部分目錄結(jié)構(gòu)通常緩存在內(nèi)存中以加快目錄操作。找到文件后,其FCB復(fù)制到系統(tǒng)的打開文件表。該表不但存儲(chǔ)FCB,也有打開該文件的進(jìn)程數(shù)量的條目。
然后,單個(gè)進(jìn)程的打開文件表中會(huì)增加一個(gè)條目,并通過指針將系統(tǒng)范圍的打開文件表的條目同其他域(文件當(dāng)前位置的指針和文件打開模式等)相連。調(diào)用open返回的是一個(gè)指向單個(gè)進(jìn)程的打開文件表中合適條目的指針。所以文件操作都是通過該指針進(jìn)行。
文件名不必是打開文件表的一部分,因?yàn)橐坏┩瓿蓪CB在磁盤上的定位,系統(tǒng)就不再使用文件名了。對于訪問打開文件表的索引,UNIX稱之為文件描述符,Windows稱之為文件句柄。因此,只要文件沒有被關(guān)閉,所有文件操作通過打開文件表來進(jìn)行。
當(dāng)一個(gè)進(jìn)程關(guān)閉文件,就刪除一個(gè)相應(yīng)的單個(gè)進(jìn)程打開文件表的條目即目錄項(xiàng),系統(tǒng)范圍內(nèi)打開文件表的打開數(shù)也會(huì)遞減。當(dāng)打開文件的所有用戶都關(guān)閉了一個(gè)文件時(shí),更新的文件信息會(huì)復(fù)制到磁盤的目錄結(jié)構(gòu)中,系統(tǒng)范圍的打開文件表的條目也將刪除。
在實(shí)際中,系統(tǒng)調(diào)用open會(huì)首先搜索系統(tǒng)范圍的打開文件表以確定某文件是否已被其他進(jìn)程所使用。如果是,就在單個(gè)進(jìn)程的打開文件表中創(chuàng)建一項(xiàng),并指向現(xiàn)有系統(tǒng)范圍的打開文件表的相應(yīng)條目。
總結(jié)
以上是生活随笔為你收集整理的超详细|一篇搞定操作系统——文件管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 固体理论习题演练双时格林函数的运动方程
- 下一篇: linux进程命令面试,面试常问的 25