版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1第四章文件系統(tǒng)文件目錄文件系統(tǒng)的實現(xiàn)文件系統(tǒng)管理和優(yōu)化文件系統(tǒng)實例2長期信息保存的要求能夠保存大量數(shù)據(jù)在使用信息的進(jìn)程終止后,信息仍然存在能夠允許多個進(jìn)程并發(fā)訪問相關(guān)信息 滿足上述三個要求,按單元將信息存儲到磁盤和其他外部媒介的一般方法就是文件(files)。然后,進(jìn)程可以讀些它們。保存在文件中的信息必須是持久性的,也就是說,不受進(jìn)程創(chuàng)建和終止的影響。文件只應(yīng)該在其所有者顯式地刪除它時才消失。3三個抽象概念進(jìn)程進(jìn)程就是一個正在執(zhí)行的程序進(jìn)程地址空間地址空間:一個進(jìn)程可用于尋址內(nèi)存的一套地址集合。文件文件是進(jìn)程創(chuàng)建的信息邏輯單元。4長期信息保存文件由操作系統(tǒng)管理。文件的存取、使用、保護(hù)以及實現(xiàn)都是操作系統(tǒng)的主要設(shè)計問題。整體上而言,處理文件的操作系統(tǒng)部份稱為文件系統(tǒng)(filesystem):FAT/NTFS/CDFS/UFS/VMFS從用戶的立場來看,文件系統(tǒng)最重要的方面是文件的出現(xiàn)方式,即文件的組成、文件的命名和保護(hù)、文件的操作等等。5文件文件命名文件結(jié)構(gòu)文件類型文件存取文件屬性文件操作6文件命名(FileNaming)文件是一種抽象機制。它們提供一種方法將信息存儲在磁盤上,稍后再讀出來。對用戶來說,文件的實現(xiàn)必須隱藏信息的保存方式和位置以及磁盤的實際工作。(對用戶半透明)文件的具體命名規(guī)則在各個系統(tǒng)中是不同的,不過全部操作系統(tǒng)都允許用1至8個字母組成的字符串作為合法文件名。7文件命名(FileNaming)典型的文件擴(kuò)展名壓縮文件file.zip一般文本文件file.txtTEX格式程序的輸入file.texPostScript文件file.ps可移植文檔格式文件file.pdf目標(biāo)文件(編譯程序的輸出,尚未鏈接)file.objMPEG標(biāo)準(zhǔn)編碼的電影file.mpgMPEGlayer3編碼的音頻壓縮格式file.mp3JPEG標(biāo)準(zhǔn)編碼的靜態(tài)圖片file.jpgWWW超文本鏈接標(biāo)示語言文檔file.html幫助文件file.hlp可交換的圖像文件格式file.gifC語言源程序file.c備份文件file.bak含義擴(kuò)展名8文件結(jié)構(gòu)(FileStructure)文件結(jié)構(gòu)有多種形式。通常的三種:字節(jié)序列記錄序列樹對于無結(jié)構(gòu)的字節(jié)序列,操作系統(tǒng)不知道也不關(guān)心文件中是什么。它所看到的全部都是字節(jié)。任何意義都必須由用戶級程序指定。UNIX和Windows都使用該方式。記錄序列把文件看作定長的記錄序列樹:用于商業(yè)數(shù)據(jù)處理9三種類型的文件(a)字節(jié)序列(b)記錄序列(c)樹文件結(jié)構(gòu)(FileStructure)10文件類型(FileTypes)一種分類:普通文件:包含用戶信息的文件ASCII文件:可顯示和打印二進(jìn)制文件:有一定的內(nèi)部結(jié)構(gòu),如可執(zhí)行文件等。目錄:系統(tǒng)文件,用于維護(hù)文件系統(tǒng)的結(jié)構(gòu)。UNIX的一種分類字符特殊文件:與I/O相關(guān)的,用于建模諸如終端、打印機和網(wǎng)絡(luò)等的串行I/O設(shè)備。塊特殊文件:用于磁盤建模。11(a)可執(zhí)行文件(b)存檔文件文件類型(FileTypes)12魔數(shù):很多類型的文件,其起始的幾個字節(jié)的內(nèi)容是固定的(或是有意填充,或是本就如此)。因此這幾個字節(jié)的內(nèi)容也被稱為魔數(shù)(magicnumber),因為根據(jù)這幾個字節(jié)的內(nèi)容就可以確定文件類型。Unix命令"file"
就是利用這個原理工作的。BSS:是“BlockStartedbySymbol”的縮寫,意為“以符號開始的塊”。BSS是Unix鏈接器產(chǎn)生的未初始化數(shù)據(jù)段。其他的段分別是包含程序代碼的“text”段和包含已初始化數(shù)據(jù)的“data”段。BSS段的變量只有名稱和大小卻沒有值。比如,在C語言之類的程序編譯完成之后,已初始化的全局變量保存在.data段中,未初始化的或初始化為0全局變量保存在.bss段中。文件類型(FileTypes)13文件存取(FileAccess)早期操作系統(tǒng)只有一種文件存取方式:順序存取(sequentialaccess)。進(jìn)程在這些系統(tǒng)中可從開始處順序讀文件全部字節(jié)或記錄,但不能跳過某一些內(nèi)容也不能非順序讀取。當(dāng)磁盤被用來存儲文件后,可以非順序地讀取磁盤存儲文件中的字節(jié)或記錄,或按照關(guān)鍵字而不是位置來存取記錄。這種能夠以任何次序讀取其中字節(jié)或記錄的文件稱作隨機存取文件(randomaccessfile)。14順序存取從起點讀取所有字節(jié)/記錄不能跳過,可以倒帶或者倒退對于磁帶媒介比較方便隨機存取以任意次序讀取字節(jié)/記錄是數(shù)據(jù)庫系統(tǒng)的根本所在可以下列方式讀取文件:移動文件標(biāo)記(seek),然后讀取讀取,然后移動文件標(biāo)記文件存取(FileAccess)15可能的文件屬性該文件可能增長的最大字節(jié)數(shù)最大尺寸文件的字節(jié)數(shù)當(dāng)前大小最后改變該文件的日期時間最后修改時間最后訪問該文件的日期時間最后訪問時間文件創(chuàng)建的日期時間創(chuàng)建時間關(guān)鍵字域的字節(jié)數(shù)關(guān)鍵字長度關(guān)鍵字在每個記錄中的偏移關(guān)鍵字位置一個記錄的字節(jié)數(shù)記錄長度0表示未上鎖;非0表示已鎖定鎖定標(biāo)志0表示正常;1表示進(jìn)程退出時刪除文件臨時標(biāo)志0表示只能順序存??;1表示隨機存取隨機存取標(biāo)志0表示ASCII文件;1表示二進(jìn)制文件ASCII/二進(jìn)制標(biāo)志0表示已經(jīng)備份;1表示需要備份存檔標(biāo)志0表示一般文件;1表示系統(tǒng)文件系統(tǒng)標(biāo)志0表示正常;1表示不顯示在列表中隱藏標(biāo)志0表示讀/寫;1表示只讀只讀標(biāo)志當(dāng)前所有者所有者創(chuàng)建該文件的人的ID創(chuàng)建者訪問文件需要密碼密碼哪些人可以哪些方式訪問文件保護(hù)含義屬性文件屬性(FileAttributes)16創(chuàng)建(Create)刪除(Delete)打開(Open)關(guān)閉(Close)讀(Read)寫(Write)添加(Append)定位(Seek)獲取屬性(Getattributes)設(shè)置屬性(SetAttributes)重命名(Rename)文件操作(FileOperations)17/*文件賦值程序。錯誤監(jiān)測和報告已經(jīng)盡可能地省略了。*/#include<sys/types.h> /*包含必要的頭文件*/#include<fcntl.h>#include<stdlib.h>#include<unistd.h>intmain(intargc,char*argv[]); /*ANSI原型*/#defineBUF_SIZE4096 /*使用的緩沖區(qū)大小為4096字節(jié)*/#defineOUTPUT_MODE0700 /*輸出文件的保護(hù)位*/intmain(intargc,char*argv[]){ intin_fd,out_fd,rd_count,wt_count;charbuffer[BUF_SIZE];if(argc!=3)exit(1); /*如果argc不是3,則語法錯誤*/使用文件系統(tǒng)調(diào)用的示例復(fù)制文件的簡單程序(1/2)18/*打開輸入文件,并創(chuàng)建輸出文件*/in_fd=open(argv[1],O_RDONLY); /*打開源文件*/if(in_fd<0)exit(2); /*如果不能打開,則退出*/out_fd=creat(argv[2],OUTPUT_MODE); /*創(chuàng)建目標(biāo)文件*/if(out_fd<0)exit(3); /*如果不能創(chuàng)建,則退出*//*復(fù)制循環(huán)*/while(TRUE){ rd_count=read(in_fd,buffer,BUF_SIZE); /*讀入一個數(shù)據(jù)塊*/ if(rd_count<=0)break; /*如果文件結(jié)束或者錯誤,退出循環(huán)*/ wt_count=write(out_fd,buffer,rd_count); /*寫數(shù)據(jù)*/ if(wt_count<=0)exit(4); /*wt_count<=0為錯誤*/}/*關(guān)閉文件*/close(in_fd);close(out_fd);if(rd_count==0) /*最后的讀沒有錯誤*/ exit(0);else exit(5); /*最后的讀有錯誤*/}使用文件系統(tǒng)調(diào)用的示例復(fù)制文件的簡單程序(2/2)19目錄(Directory)為了記錄文件信息,文件系統(tǒng)通常有目錄(directories)或者文件夾(folders)。在許多系統(tǒng)中,目錄本身就是文件。目錄包括其組織(organization)、屬性(properties)以及作用于其上的操作(operations)。20目錄(Directory)一級目錄系統(tǒng)兩級目錄系統(tǒng)層次目錄系統(tǒng)路徑名目錄操作21一級目錄系統(tǒng)目錄系統(tǒng)的最簡單形式是使用一個目錄包含所有的文件。有時候,稱之為根目錄(rootdirectory),不過,由于只有一個目錄,名字無關(guān)緊要。在早期的個人計算機上,這種系統(tǒng)非常普遍,部分原因是只有一個用戶。非常有趣的是,世界上最大的超級計算機CDC6600,對于所有文件也只有一個目錄,盡管它同時有多個用戶使用。這個決斷無疑是想保持軟件設(shè)計的簡單。22單層目錄系統(tǒng)單層目錄系統(tǒng)包含的4個文件,分別屬于3個不同的人A、B和C。一級目錄系統(tǒng)23兩級目錄系統(tǒng)為了避免不同用戶為其自己擁有的文件取相同的文件名所導(dǎo)致的沖突,下一步就是給每個用戶一個私有目錄。這樣,一個用戶選擇的名字不會干擾另一個用戶的選擇,而且在兩個或多個目錄中的相同名字不會發(fā)生問題。例如,這種設(shè)計可以用于多用戶計算機或者通過局域網(wǎng)共享公用文件服務(wù)器的個人計算機的簡單網(wǎng)絡(luò)上。24兩級目錄系統(tǒng)圖中字母表示目錄和文件的所有者25層次目錄系統(tǒng)雙層目錄系統(tǒng)消除了不同用戶之間的文件名沖突,但仍然難以使有很多文件的用戶感到滿意。用戶常常需要把文件按某種邏輯方式組織起來。最終我們需要的是一般的層次(即目錄樹)。采用層次結(jié)構(gòu),每個用戶可以擁有多個所需的目錄,自然地組織他們的文件。26層次目錄系統(tǒng)目錄樹27路徑名(PathNames)用目錄樹組織文件系統(tǒng)時,要某種方法指明文件名。常用的方法有兩種:絕對路徑名(absolutepathname):絕對路徑名是從根目錄開始到文件的路徑,且是唯一的。相對路徑名(relativepathname):它常和工作目錄,也稱作當(dāng)前目錄一起采用。是從當(dāng)前目錄到文件的路徑。28UNIX目錄樹路徑名(PathNames)29路徑名(PathNames)絕對路徑示例:(1)文件mailbox:/usr/ast/mailbox(2)文件dictionary:/usr/lib/dictionary相對路徑示例:(1)當(dāng)前目錄:/ 相對路徑:usr/ast/mailbox(1)當(dāng)前目錄:/usr 相對路徑:ast/mailbox(1)當(dāng)前目錄:/usr/ast 相對路徑:mailbox(1)當(dāng)前目錄:/usr/lib 相對路徑:../ast/mailbox
30路徑名(PathNames)每個目錄中有兩個特殊的目錄項:.(一個點):當(dāng)前目錄。..(兩個點):父目錄。31目錄操作創(chuàng)建(Create)刪除(Delete)打開目錄(Opendir)關(guān)閉目錄(Closedir)讀目錄(Readdir)重命名(Rename)鏈接(Link)解除鏈接(Unlink)32文件系統(tǒng)的實現(xiàn)以上從用戶角度考察文件和目錄以下從實現(xiàn)者角度來考察文件系統(tǒng)。用戶關(guān)心的是文件是怎樣命名的、可以進(jìn)行哪些操作、目錄樹是什么樣的以及類似的界面問題。而實現(xiàn)者感興趣的是文件和目錄是怎樣存儲的、磁盤空間是怎樣管理的以及怎樣使系統(tǒng)有效而可靠地工作等等。33文件系統(tǒng)的實現(xiàn)文件系統(tǒng)布局文件的實現(xiàn)目錄的實現(xiàn)共享文件日志結(jié)構(gòu)文件系統(tǒng)日志文件系統(tǒng)虛擬文件系統(tǒng)34文件系統(tǒng)布局MBR:磁盤的0號扇區(qū)叫做MBR(MasterBootRecord,主引導(dǎo)記錄),用于啟動計算機。分區(qū)表:位于MBR的尾部。多數(shù)磁盤可以劃分為一個或多個分區(qū),該表給出了每個分區(qū)的起點和終點地址。表中有一個分區(qū)被標(biāo)記為活動的。計算機啟動:BIOS讀入并執(zhí)行MBR。MBR程序首先確定活動分區(qū),讀入其第一塊,即引導(dǎo)塊(bootblock),并執(zhí)行它。引導(dǎo)塊中的程序載入包含在該分區(qū)中的操作系統(tǒng)。35文件系統(tǒng)布局不同的文件系統(tǒng)磁盤布局不相同36實現(xiàn)文件文件的物理存儲方法:連續(xù)分配(ContiguousAllocation)鏈表分配(LinkedListAllocation)使用內(nèi)存表的鏈表分配(LinkedListAllocationUsingaTableinMemory)i-節(jié)點(i-nodes)37連續(xù)分配最簡單的分配方案是把每個文件作為連續(xù)數(shù)據(jù)塊存儲在磁盤上。所以,在塊大小為1K的磁盤上,50K的文件要分配50個連續(xù)的塊。該分配方案有兩大優(yōu)勢首先,簡單、容易實現(xiàn),記錄每個文件用到的磁盤塊簡化為只需記住一個數(shù)字即可,也就是第一塊的磁盤地址。其次,性能較好,在一次操作中,就可以從磁盤上讀出整個文件。缺點:不能預(yù)知文件的長度,會造成磁盤碎片。適用于CD-ROM,文件長度已知且在使用中不會改變。38(a)分配給7個文件的連續(xù)磁盤空間(b)文件D、F被刪除后的磁盤狀態(tài)連續(xù)分配39鏈表分配存儲文件的第二種方法是為每個文件構(gòu)造磁盤塊的鏈表。每個塊的第一個字作為指向下一塊的指針,塊的其他部分存放數(shù)據(jù)。優(yōu)點:這類方法可以利用每個磁盤塊。不會因為磁盤碎片而浪費存儲空間。缺點:順序讀取文件非常方便,但是隨機存取卻相當(dāng)緩慢。40鏈表分配將文件保存為磁盤塊的鏈表41使用內(nèi)存表的鏈表分配鏈表分配使用主存中的一個文件分配表42i-節(jié)點記錄各個文件分別包含哪些磁盤塊的方法是給每個文件賦予一張稱為i-節(jié)點的小表,其中列出了文件屬性和文件中各塊在磁盤上的地址。43i-節(jié)點 UNIX文件系統(tǒng),采用1KB的磁盤塊大小和4B的磁盤地址。若I-節(jié)點包括10個直接塊,一次、二次、三次間接塊各一個,則此文件系統(tǒng)允許文件最大長度是?解:1KB的磁盤塊,存放4B的地址號,每塊可放1K/4=256個塊號最大文件長度:(10*1K+1*256*1K+1*2562*1K+1*2563*1K)B44目錄的實現(xiàn)打開文件時,操作系統(tǒng)利用用戶給出的路徑名找到相應(yīng)目錄項,目錄項中提供了查找文件磁盤塊所需要的信息。目錄系統(tǒng)的主要功能是把ASCII文件名映射成查找文件數(shù)據(jù)所需的信息。目錄項的設(shè)計文件名磁盤地址文件屬性45固定長度的目錄項(a)包含固定大小項的簡單目錄,目錄項中有磁盤地址和屬性。(b)目錄中的每一項只是對i-節(jié)點的引用。46長度不固定的目錄項在目錄中處理長文件名的兩種方法(a)行方式(b)堆方式47共享文件(SharedFiles)當(dāng)幾個用戶同在一個項目里工作時,他們常常需要共享文件。其結(jié)果是,如果一個共享文件同時出現(xiàn)在屬于不同用戶的不同目錄下,工作起來就很方便。如下圖,B目錄與該共享文件的連接稱為一個連接(Link)。文件系統(tǒng)本身是一個有向無環(huán)圖(directedacyclicgraph)而不是一棵樹。48共享文件(SharedFiles)包含一個共享文件的文件系統(tǒng)49實現(xiàn)共享文件的兩種方法:硬鏈接:在UNIX系統(tǒng)中,只有I節(jié)點與文件本身關(guān)聯(lián),目錄中有一個目錄項指向該I節(jié)點,I節(jié)點中記錄了有多少鏈接。如下圖。符號鏈接:目錄B中有一個目錄項,指向一個類型為LINK的新文件,此文件中只包含了鏈接文件的路徑名。共享文件(SharedFiles)50(a)鏈接前的狀態(tài)(b)創(chuàng)建鏈接后(c)原所有者刪除該文件后共享文件(SharedFiles)51日志結(jié)構(gòu)文件系統(tǒng)隨著CPU越來越快,內(nèi)存越來越大磁盤Cache也越來越大來自Cache的讀請求數(shù)增加大部分磁盤訪問將是寫操作LFS策略將整個磁盤構(gòu)造成一個日志把所有寫操作先緩沖在內(nèi)存中定期將其寫入磁盤日志的尾部打開文件時,定位i-節(jié)點,然后查找數(shù)據(jù)塊52文件系統(tǒng)管理和優(yōu)化磁盤空間管理文件系統(tǒng)備份文件系統(tǒng)的一致性文件系統(tǒng)性能磁盤碎片整理53磁盤空間管理文件通常存放在磁盤上,所以磁盤空間的管理是系統(tǒng)設(shè)計者要考慮的一個主要問題。存儲n個字節(jié)的文件可以有兩種策略:分配n個字節(jié)的連續(xù)磁盤空間,或者把文件分成很多個連續(xù)的塊。在存儲器管理中,單純段式和分頁也要進(jìn)行同樣的權(quán)衡。54塊尺寸(BlockSize)一旦決定把文件按固定大小的塊來存儲,就會有一個問題:塊的大小應(yīng)該是多少?按照磁盤組織方式,扇區(qū)、磁道和柱面明顯都可以作為分配單位。在頁式系統(tǒng)中,頁面大小也是主要選項之一。塊很大,比如以柱面為分配單位,這時每個文件,甚至是1個字節(jié)的文件,都要占用整個一個柱面。磁盤空間利用率低塊很小,則每讀一塊都有尋道和旋轉(zhuǎn)時間。數(shù)據(jù)傳輸速率低55塊尺寸(BlockSize)實線(左邊刻度)給出一個磁盤的數(shù)據(jù)速率虛線(右邊刻度)給出磁盤空間效率所有文件都是2KB。56塊大小與磁盤數(shù)據(jù)率關(guān)系 設(shè)磁盤每道有128KB,旋轉(zhuǎn)時間是8.33毫秒,平均尋道時間是10毫秒,若塊大小是K字節(jié),則數(shù)據(jù)傳輸率是多少?解:讀取一塊所需時間為:T=10+8.33/2+K/217*8.33(ms)數(shù)據(jù)率為:K/T(B/ms)K=512,數(shù)據(jù)率是:512*8/(10+4.165+512/217*8.33)=2.89*105bit/sK=1K,數(shù)據(jù)率是: 1024*8/(10+4.165+1024/217*8.33)=5.76*105bit/sK=2K,數(shù)據(jù)率是: 2046*8/(10+4.165+2046/217*8.33)=1.145*106bit/s57空閑塊的記錄一旦選定了塊大小,下一個問題就是如何記錄空閑塊。廣泛采用的是兩種方法:第一種方法采用磁盤塊的鏈表。每個塊中包含盡有可能多的空閑磁盤塊號。另一種空閑磁盤空間管理的方法是采用位映像。n個塊的磁盤需要n位位映像。在位映像中,空閑塊用1表示,分配塊用0表示(或者反之)。58空閑塊的記錄(a)用鏈表保存空閑列表(b)位映像59空閑塊的記錄 設(shè)磁盤塊大小為1KB,16bits磁盤地址,若磁盤容量為20MB,則共有20M/1K=20480個塊,存放所有塊號所需空間:用鏈表記錄空閑塊
一個磁盤塊可以存放1KB/16-1=511個塊號 全部磁盤塊共需20480/511=40個塊的空閑鏈表來存放位映像 20480個塊需要20480bit的位圖,則位圖占用20480/1KB=20個塊60空閑塊的記錄(a)指向空閑磁盤塊的指針塊在內(nèi)存中,幾乎全滿;還有3個指針塊在磁盤上。(b)釋放一個3個塊的文件后的結(jié)果。(c)另一種處理3個空閑塊的策略?;疑捻棻硎究臻e磁盤塊的指針。61磁盤配額(DiskQuotas)為了防止人們貪心占有太多的磁盤空間,多用戶操作系統(tǒng),像UNIX,常常提供一種強行的磁盤配額機制。其思想是系統(tǒng)管理員分給每個用戶擁有文件和塊的最大數(shù)量,操作系統(tǒng)確保每個用戶不超過分給他們的配額。當(dāng)用戶打開文件時,系統(tǒng)找到文件屬性和磁盤地址,并把它們送人內(nèi)存中的打開文件表。其中一個屬性告訴文件所有者是誰。任何該文件大小的增長都記到所有者的配額上。62磁盤配額(DiskQuotas)在配額表中記錄每個用戶的配額63文件系統(tǒng)可靠性備份(Backups)文件系統(tǒng)一致性(FileSystemConsistency)64備份(Backups)即使有再好的處理壞塊的策略,經(jīng)常地備份文件也是很重要的。畢竟,在一些關(guān)鍵的數(shù)據(jù)塊損壞之后,自動切換到備用塊,無異于亡羊補牢。備份軟盤上的文件系統(tǒng)很簡單,只需把整個磁盤復(fù)制到一張空軟盤上。物理轉(zhuǎn)儲(physicaldump):轉(zhuǎn)儲所有的磁盤塊邏輯轉(zhuǎn)儲(logicaldump):只轉(zhuǎn)儲自某個時間以來被修改的文件和目錄65備份(Backups)被轉(zhuǎn)儲的文件系統(tǒng)。方框表示目錄,圓圈表示文件?;疑捻棻硎旧洗无D(zhuǎn)儲后被修改過。每個目錄和文件都使用其i-節(jié)點號標(biāo)記。66備份(Backups)算法:Step1:所有的目錄和已修改的文件相應(yīng)的I節(jié)點號在位圖中被標(biāo)記,如下圖aStep2:其下沒有包含被修改的子目錄和文件的目錄其I節(jié)點標(biāo)記被刪除,如下圖bStep3:掃描位圖,轉(zhuǎn)儲所有被標(biāo)記的目錄Step4:掃描位圖,轉(zhuǎn)儲所有被標(biāo)記的文件67邏輯轉(zhuǎn)儲使用的位映像備份(Backups)68文件系統(tǒng)一致性影響文件系統(tǒng)可靠性的另一個問題是文件系統(tǒng)的一致性。很多文件系統(tǒng)讀取磁盤塊,進(jìn)行修改后,再寫回磁盤。如果在修改過的磁盤塊全部寫回之前,系統(tǒng)崩潰,則文件系統(tǒng)有可能會處于不一致狀態(tài)。如果未被寫回的塊是i-節(jié)點塊、目錄塊或者包含空閑表的磁盤塊時,這個問題尤為嚴(yán)重。系統(tǒng)啟動時運行一個實用程序檢查一致性,包括塊一致性檢查和文件一致性檢查69塊一致性檢查方法 檢查程序構(gòu)造兩張表,每個表為每個塊設(shè)立一個計數(shù)器(初始化為0)。第一張表中計數(shù)器跟蹤塊在文件中的出現(xiàn)次數(shù);第二張表中計數(shù)器跟蹤塊在空閑鏈表中出現(xiàn)次數(shù)。 檢查程序讀取全部的I節(jié)點,建立相應(yīng)文件所使用的全部塊的塊號表。每讀到一個塊號,第1張表中該塊對應(yīng)計數(shù)器增1;檢查程序檢查鏈表(或位圖),查找全部未使用的塊,每找到一個,第二張表中該塊對應(yīng)計數(shù)器增1。70塊一致性檢查文件系統(tǒng)一致:每個塊要么在第一個計數(shù)器中為1,要么在第二個計數(shù)器中為1文件系統(tǒng)不一致:兩個計數(shù)器值都為0——丟失塊第一個計數(shù)器值超過1——分配空閑塊,將文件中內(nèi)容寫入空閑塊第二個計數(shù)器值超過1——重建空閑表兩個計數(shù)器中值都等于1——把塊從空閑表中刪除71塊一致性檢查文件系統(tǒng)狀態(tài)(a)一致的(b)缺少的塊(c)在空閑列表中復(fù)制塊(d)復(fù)制數(shù)據(jù)塊72文件一致性檢查方法:
使用一張計數(shù)器鏈表,以I節(jié)點號索引,每個文件一個計數(shù)器。檢查程序從根目錄開始,沿目錄樹搜索,遇到一個文件,則相應(yīng)計數(shù)器加1(符號鏈接不計)。搜索完畢,表中每個計數(shù)器表示此文件被多少目錄所包含,并把此值與實際I節(jié)點中的鏈接數(shù)比較(文件創(chuàng)建時,鏈接數(shù)等于1)不一致實際鏈接數(shù)>計數(shù)器實際鏈接數(shù)<計數(shù)器73文件系統(tǒng)性能緩存提前讀塊(BlockReadAhead)策略減少磁盤臂移動(ReducingDiskArmMotion)74文件系統(tǒng)性能對磁盤的存取比對內(nèi)存的存取要慢。讀一個內(nèi)存字可能花10納秒。從硬盤讀可能以10MB/sec進(jìn)行,每32位的字要慢40倍,不過,還必須加上5-10毫秒的尋道時間,并且等待扇區(qū)旋轉(zhuǎn)到磁頭下。如果只需要一個字,內(nèi)存存取要比磁盤存取快上100萬倍。由于存取時間的這種區(qū)別,許多文件系統(tǒng)設(shè)計了各種優(yōu)化方法來改進(jìn)性能。75緩存用于減少磁盤訪問的最通常的技術(shù)就是塊緩存(blockcache)或者緩沖區(qū)緩存(buffercache)。Cache的發(fā)音為“Cash”,源自于法語的cacher,意即隱藏。在這里的上下文中,Cache是塊的一個集合,邏輯上屬于磁盤,不過由于性能的原因保存在內(nèi)存中。76緩存高速緩存的管理:對于讀操作,檢查要讀的塊是否在高速緩存中,如果在,直接進(jìn)行讀操作不需訪問磁盤;如果不在則首先將該塊從磁盤讀入緩存,再拷貝給用戶。77緩存緩存中的塊置換:如果緩存已滿,要調(diào)入新塊,則必須把某一塊調(diào)出緩存。分頁系統(tǒng)中的頁面置換算法也適用于緩存。緩存的組織:為提高查找速度,建立一個哈希表,根據(jù)(設(shè)備號+磁盤地址)為哈希值索引,具有相同哈希值的塊鏈接在一起。如下圖78緩存(Caching)緩沖區(qū)cache的數(shù)據(jù)結(jié)構(gòu)79提前讀塊(BlockReadAhead)第二種改進(jìn)文件系統(tǒng)性能的技術(shù)就是試圖在其需要前將塊讀入Cache中,以提高命中率。特別的,許多文件是順序讀取的。當(dāng)請求文件系統(tǒng)在文件中產(chǎn)生塊k時,它完成該請求,不過,當(dāng)它完成時,它順便檢查Cache看塊k+1是否在那里。如果不在,它設(shè)定讀取塊k+1,這樣當(dāng)需要它時,它已經(jīng)在Cache中了。至少它將在途中了。80減少磁盤臂移動另一種增強文件系統(tǒng)性能的方法是通過把可能被順序訪問的塊相互臨近地放置,盡可能放在相同的柱面上,這樣就可以減少磁盤臂的移動。當(dāng)寫入輸出文件時,文件系統(tǒng)必須每次定位一塊。如果空閑塊記錄在位映像中,而且整個位映像在主存中,那么就很容易選擇一個與前一塊盡可能接近的空閑塊。如果使用空閑鏈表,其部份是在磁盤上,要定位接近的塊就比較困難了。81文件系統(tǒng)實例CD-ROM文件系統(tǒng)ISO9660文件系統(tǒng)RockRidge擴(kuò)展Joliet擴(kuò)展MS-DOS文件系統(tǒng)UNIXV7文件系統(tǒng)82ISO9660文件系統(tǒng)最經(jīng)常被采用的CD-ROM文件系統(tǒng)的標(biāo)準(zhǔn)是1988年發(fā)布的國際標(biāo)準(zhǔn)ISO9660。事實上,目前市場上的每個CD-ROM都兼容該標(biāo)準(zhǔn),某些可能具有下面將提到的擴(kuò)展。該標(biāo)準(zhǔn)的目標(biāo)之一就是所有CD-ROM可以在每臺計算機上讀出來,與其使用的字節(jié)次序以及操作系統(tǒng)無關(guān)。因此,在該文件系統(tǒng)上加入了某些限制,使得可以在最弱的操作系統(tǒng)上(例如MS-DOS)使用。83ISO9660文件系統(tǒng)ISO9660文件系統(tǒng)的目錄項84RockRidge擴(kuò)展其擴(kuò)展分為如下幾個域:PX–POSIX屬性PN–主設(shè)備和次設(shè)備號SL–符號鏈接NM–替代名CL–孩子位置PL–雙親位置RE–重定位TF–時間標(biāo)簽85Joliet擴(kuò)展Joliet提供的主要擴(kuò)充是:長文件名Unicode字符集深達(dá)8層的目錄嵌套具有擴(kuò)展名的目錄。86MS-DOS文件系統(tǒng)第一印象認(rèn)為,MS-DOS就是一個更大、更好的CP/M。它只能在Intel平臺上運行,不支持多道程序,而且只能以PC的實模式運行(起初是其唯一的模式)。其外殼有更多特性以及更多的系統(tǒng)調(diào)用,但是,其基本的操作系統(tǒng)仍舊是載入程序、操作鍵盤和屏幕以及管理文件系統(tǒng)。87MS-DOS文件系統(tǒng)MS-DOS目錄項88MS-DOS文件系統(tǒng)不同塊尺寸的最大分區(qū)大小空格表示禁止的組合。2TB2048MB32KB2TB1024MB16
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《威海節(jié)日習(xí)俗》課件
- 《室內(nèi)設(shè)計課件》課件
- 單位管理制度集合大合集人力資源管理篇
- 單位管理制度合并選集【員工管理篇】十篇
- 單位管理制度分享匯編員工管理篇
- 單位管理制度分享大全人員管理篇十篇
- 《審計與管理》課件
- 《客房優(yōu)化方案》課件
- 《診斷思路》課件
- (高頻選擇題50題)第2單元 社會主義制度的建立與社會主義建設(shè)的探索(解析版)
- 勞務(wù)派遣協(xié)議書(吉林省人力資源和社會保障廳制)
- 水庫移民安置檔案分類大綱與編號方案
- 醫(yī)院安全生產(chǎn)風(fēng)險分級管控和隱患排查治理雙體系
- GA 1802.2-2022生物安全領(lǐng)域反恐怖防范要求第2部分:病原微生物菌(毒)種保藏中心
- 企業(yè)EHS風(fēng)險管理基礎(chǔ)智慧樹知到答案章節(jié)測試2023年華東理工大學(xué)
- 健身俱樂部入場須知
- 《古蘭》中文譯文版
- 井下機電安裝安全教育培訓(xùn)試題及答案
- TZJXDC 002-2022 電動摩托車和電動輕便摩托車用閥控式鉛酸蓄電池
- GB/T 337.1-2002工業(yè)硝酸濃硝酸
- 《解放戰(zhàn)爭》(共48張PPT)
評論
0/150
提交評論