亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

操作系統(tǒng)

Linux文件系統(tǒng)結(jié)構(gòu)分析論文

時(shí)間:2024-09-09 22:47:22 操作系統(tǒng) 我要投稿
  • 相關(guān)推薦

Linux文件系統(tǒng)結(jié)構(gòu)分析論文

  摘 要:闡述了Linux系統(tǒng)的文件結(jié)構(gòu)類型,指出了EXT2是在Linux系統(tǒng)中最為常用的文件系統(tǒng)。

Linux文件系統(tǒng)結(jié)構(gòu)分析論文

  分析了EXT2文件系統(tǒng)的磁盤(pán)布局、索引結(jié)點(diǎn)及目錄結(jié)構(gòu),研究了EXT2系統(tǒng)實(shí)現(xiàn)按名存取的方法,文件讀取速度更高效。

  關(guān)鍵詞:EXT2文件系統(tǒng);索引結(jié)點(diǎn);混合索引;文件目錄

  Linux系統(tǒng)的一個(gè)重要的特征就是支持多種不同的文件系統(tǒng),如:EXT、FAT、EXT2、EXT3、SYSV等。目前,Linux主要使用的文件系統(tǒng)是EXT2和EXT3文件系統(tǒng),也是Linux用戶最常用的文件系統(tǒng)。

  各種Linux的系統(tǒng)發(fā)布都將EXT2作為操作系統(tǒng)的基礎(chǔ)。EXT2文件系統(tǒng)支持標(biāo)準(zhǔn)UNIX文件類型:普通文件、目錄文件、特別文件和符號(hào)鏈接。

  1 EXT2磁盤(pán)布局

  EXT2和其他邏輯塊文件一樣,由邏輯塊序列組成,根據(jù)用途劃分,這些邏輯塊通常有:引導(dǎo)塊、超級(jí)塊、inode區(qū)及數(shù)據(jù)區(qū)等。

  EXT2將其所占的邏輯分區(qū)劃分為塊組,由一個(gè)引導(dǎo)塊和其他塊組組成,每個(gè)塊組又由超級(jí)塊、組描述符表、塊位圖、索引節(jié)點(diǎn)位圖、索引節(jié)點(diǎn)表、數(shù)據(jù)區(qū)構(gòu)成,如圖1所示。

  圖1 EXT2磁盤(pán)布局在邏輯空間的映像每個(gè)塊中保存的這些信息是有關(guān)EXT2文件系統(tǒng)的備份信息。當(dāng)某個(gè)塊組的超級(jí)塊或inode受損時(shí),這些信息可以用來(lái)恢復(fù)文件系統(tǒng)。

  2 EXT2索引結(jié)點(diǎn)

  EXT2文件系統(tǒng)中的數(shù)據(jù)是以數(shù)據(jù)塊的方式存儲(chǔ)在文件中的。這些數(shù)據(jù)塊的大小相同,其大小在EXT2創(chuàng)建時(shí)設(shè)定。磁盤(pán)上存儲(chǔ)文件的基本單位是簇。一個(gè)簇也稱為一個(gè)磁盤(pán)塊,它通常是2n個(gè)磁盤(pán)扇區(qū)大小。

  EXT2文件系統(tǒng)用一個(gè)inode數(shù)據(jù)結(jié)構(gòu)描述系統(tǒng)中的每一個(gè)文件,定義系統(tǒng)的拓?fù)浣Y(jié)構(gòu)。一個(gè)inode描述了一個(gè)文件中的數(shù)據(jù)占用了哪些塊以及文件的訪問(wèn)權(quán)限、文件的修改時(shí)間和文件的類型。EXT2文件系統(tǒng)中的每一個(gè)文件都用一個(gè)inode描述,而每一個(gè)inode都用一個(gè)獨(dú)一無(wú)二的數(shù)字標(biāo)識(shí)。文件系統(tǒng)的inode都放在一起,在inode索引表中。

  EXT2塊組中組描述符中的項(xiàng)稱為組描述符,用于描述某個(gè)塊組的整體信息。每個(gè)塊組都有一個(gè)相應(yīng)的組描述符來(lái)描述它,所有的組描述符形成一個(gè)組描述符表,并在使用時(shí)被調(diào)入塊高速緩存。

  EXT2中每個(gè)塊組有兩個(gè)位示圖塊,一個(gè)用于表示數(shù)據(jù)塊的使用情況,叫數(shù)據(jù)塊位圖;另一個(gè)用于表示索引結(jié)點(diǎn)的使用情況,叫索引結(jié)點(diǎn)位圖。位圖中的每一位表示該組中一個(gè)數(shù)據(jù)塊或一個(gè)索引塊的使用情況,用0表示空閑,用1表示已分配。

  在Linux的EXT2文件系統(tǒng)中,索引結(jié)點(diǎn)inode分為兩類,即磁盤(pán)索引結(jié)點(diǎn)和內(nèi)存索引結(jié)點(diǎn),通常也分別叫做EXT2 inode和VFS inode。

 。1)磁盤(pán)索引節(jié)點(diǎn)

  磁盤(pán)索引節(jié)點(diǎn)是指存放在磁盤(pán)上的索引節(jié)點(diǎn)。每個(gè)文件有唯一的一個(gè)磁盤(pán)索引節(jié)點(diǎn),它主要包括以下內(nèi)容:文件所有者標(biāo)識(shí)號(hào):指擁有該文件的文件主或同組的標(biāo)識(shí)符。

  文件類型:指明文件是普通文件、目錄文件還是特別文件等類型。

  文件物理地址:指出數(shù)據(jù)文件所在的物理塊號(hào)。如在Linux系統(tǒng)中,通過(guò)15個(gè)地址項(xiàng)來(lái)表明文件所在的物理塊號(hào)。

  文件存取權(quán)限:用戶對(duì)文件的操作類型,如讀、修改、執(zhí)行等。

  文件大。何募加械淖止(jié)個(gè)數(shù)。

  文件連接計(jì)數(shù):指明系統(tǒng)中共享該文件的進(jìn)程個(gè)數(shù)。

  文件存取時(shí)間:指出該文件最近被進(jìn)程存取的時(shí)間、最近被修改的時(shí)間及索引節(jié)點(diǎn)最近被修改的時(shí)間等。

 。2)內(nèi)存索引節(jié)點(diǎn)

  內(nèi)存索引節(jié)點(diǎn)是指存放在內(nèi)存的索引節(jié)點(diǎn)。當(dāng)文件打開(kāi)時(shí),要將磁盤(pán)索引節(jié)點(diǎn)復(fù)制到內(nèi)存索引節(jié)點(diǎn)中,便于以后使用。內(nèi)存索引節(jié)點(diǎn)包括以下內(nèi)容:索引節(jié)點(diǎn)編號(hào):標(biāo)識(shí)內(nèi)存索引節(jié)點(diǎn)。

  索引節(jié)點(diǎn)狀態(tài):指示該節(jié)點(diǎn)是否已被修改或已被上鎖。

  訪問(wèn)計(jì)數(shù):當(dāng)進(jìn)程訪問(wèn)該節(jié)點(diǎn)時(shí),訪問(wèn)計(jì)數(shù)加1,訪問(wèn)完再減1。

  鏈接指針:指向空閑鏈表和散列隊(duì)列的指針。

  邏輯設(shè)備名:含有該文件的文件系統(tǒng)的邏輯設(shè)備名。

  3 文件的目錄結(jié)構(gòu)

  Linux系統(tǒng)的目錄結(jié)構(gòu)采用了將文件名與文件描述信息分開(kāi)的方法。文件目錄由文件名和該文件的索引節(jié)點(diǎn)號(hào)構(gòu)成,一個(gè)目錄項(xiàng)共占16B。其中,文件名占14個(gè)字節(jié),索引節(jié)點(diǎn)號(hào)(或索引節(jié)點(diǎn)指針)占2個(gè)字節(jié)。因此,1KB的盤(pán)塊中可以存放64(1K/16)個(gè)目錄項(xiàng),這樣就節(jié)省了系統(tǒng)查找及訪問(wèn)文件的時(shí)間。在一個(gè)共有640個(gè)FCB的文件目錄中查找一個(gè)文件時(shí),平均只需啟動(dòng)磁盤(pán)5次,因此大大減少了系統(tǒng)開(kāi)銷。如表1所示為一個(gè)文件目錄的實(shí)例。

  一個(gè)文件的磁盤(pán)索引節(jié)點(diǎn)占64個(gè)字節(jié),主要包括文件標(biāo)識(shí)符、文件存取權(quán)限、文件物理地址、文件長(zhǎng)度、文件連接系數(shù)、文件存取時(shí)間等一些文件的重要信息。

  4 文件的物理結(jié)構(gòu)

  Linux系統(tǒng)文件的物理結(jié)構(gòu)采用混合索引方式,對(duì)分配給文件的磁盤(pán)塊進(jìn)行管理。在Linux文件系統(tǒng)的索引節(jié)點(diǎn)中存在一項(xiàng)i。addr[14],用于存放該文件的磁盤(pán)塊號(hào)。如圖2所示為L(zhǎng)inux系統(tǒng)的混合索引文件結(jié)構(gòu)。

 。1)直接尋址。i。addr[0]—i。addr[9]這10項(xiàng)用于直接存放該文件所占用的磁盤(pán)塊號(hào),文件的前10個(gè)磁盤(pán)塊號(hào)依次放入其中。如果磁盤(pán)塊的大小為1KB,則當(dāng)文件長(zhǎng)度不大于10K時(shí),操作系統(tǒng)可采用直接索引文件的方式對(duì)文件進(jìn)行訪問(wèn),直接從索引節(jié)點(diǎn)中找出該文件所在的磁盤(pán)塊號(hào),訪問(wèn)速度較快。

 。2)一次間接尋址方式。i。addr[10]項(xiàng)中存放的磁盤(pán)塊號(hào)所指向的磁盤(pán)塊再用來(lái)存放下一級(jí)的磁盤(pán)塊號(hào)。假設(shè)一個(gè)磁塊大小為1KB,每個(gè)磁盤(pán)塊號(hào)占4個(gè)字節(jié),則一個(gè)磁盤(pán)塊可存放256個(gè)(1KB/4B)磁盤(pán)塊號(hào)。這樣,通過(guò)一次間接尋址,i。addr[10]項(xiàng)就引出了256個(gè)磁盤(pán)塊號(hào),所以,這一級(jí)可支持的文件長(zhǎng)度為256K。

 。3)二次間接尋址方式。i。addr[11]存放的磁盤(pán)塊號(hào)采用兩級(jí)索引的方式,如果沿用以上的假設(shè),則該項(xiàng)可引出2562個(gè)磁盤(pán)塊,可支持的文件長(zhǎng)度為2562K。

 。4)三次間接尋址方式。i。addr[12]存放的磁盤(pán)塊號(hào)采用三級(jí)索引的方式,如果仍沿用以上的假設(shè),則該項(xiàng)可引出2563個(gè)磁盤(pán)塊,可支持的文件長(zhǎng)度為2563K。

  由以上分析可以看出,UNIX系統(tǒng)對(duì)于長(zhǎng)度較小的文件具有較快的讀寫(xiě)速度,同時(shí)又具有支持大文件的功能。

  圖2 Linux的混合索引文件結(jié)構(gòu)

  Linux系統(tǒng)文件實(shí)現(xiàn)了按名查找。通過(guò)文件名訪問(wèn)文件的過(guò)程如下:通過(guò)文件名查找文件目錄,找到該文件的索引結(jié)點(diǎn)號(hào);通過(guò)索引結(jié)點(diǎn)號(hào)查找索引節(jié)點(diǎn)區(qū),找到該文件的索引點(diǎn);根據(jù)索引結(jié)點(diǎn)中提供a。ad—dr,找到該文件在磁盤(pán)的相應(yīng)的塊號(hào)序列;根據(jù)塊號(hào),找到文件內(nèi)容。

  FAT文件系統(tǒng)與NTFS文件系統(tǒng)目錄的比較:FAT文件系統(tǒng)直接以文件控制塊作為文件目錄,這樣文件系統(tǒng)目錄相應(yīng)較大,查詢速度較慢。以索引結(jié)點(diǎn)作為文件目錄,對(duì)于一些小的文件系統(tǒng)是可以的,但是對(duì)較大型的文件系統(tǒng)就不適用了。Linux系統(tǒng)的文件目錄為:文件名、索引結(jié)點(diǎn)號(hào)。這使得Linux系統(tǒng)的文件目錄更小,查詢速度更快。

  5 結(jié)束語(yǔ)

  由于Linux系統(tǒng)的EXT2文件系統(tǒng)采用了合理巧妙的文件系統(tǒng)結(jié)構(gòu),以及目錄結(jié)構(gòu),使得該文件系統(tǒng)多項(xiàng)性能得到優(yōu)化。采用EXT2系統(tǒng),能夠大大改善磁盤(pán)I/O速度,提高I/O組織的靈活性及編程效率。

  因此,EXT2文件系統(tǒng)為開(kāi)發(fā)嵌入式系統(tǒng)及實(shí)時(shí)應(yīng)用系統(tǒng)提供了廣泛的基礎(chǔ)和手段。

【Linux文件系統(tǒng)結(jié)構(gòu)分析論文】相關(guān)文章:

linux的文件系統(tǒng)03-07

Linux文件系統(tǒng)的幾個(gè)要點(diǎn)03-05

Linux 文件系統(tǒng)管理03-07

解讀 Linux 集群的新型文件系統(tǒng)03-06

簡(jiǎn)單地講解Linux的文件系統(tǒng)及相關(guān)的掛載命令02-28

Linux環(huán)境下使用GFS文件系統(tǒng)可以嗎03-06

結(jié)構(gòu)工程師的考試分析03-29

C語(yǔ)言的結(jié)構(gòu)與聯(lián)合的實(shí)例分析03-30

職稱英語(yǔ)如何分析句子結(jié)構(gòu)03-25