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