<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 對ROMFS文件系統(tǒng)的分析和改進(jìn)

          對ROMFS文件系統(tǒng)的分析和改進(jìn)

          作者: 時(shí)間:2012-03-26 來源:網(wǎng)絡(luò) 收藏

          引言:是在嵌入式設(shè)備上常用的一種,具備體積小,可靠性好,讀取速度快等優(yōu)點(diǎn)。同時(shí)支持目錄,符號鏈接,硬鏈接,設(shè)備文件。但也有其局限性。是一種只讀,同時(shí)由于本身設(shè)計(jì)上的原因,使得ROMFS支持的最大文件不超過256M。本文討論了 ROMFS的原理,并針對其代碼做了詳細(xì)的分析,指出了ROMFS的優(yōu)缺點(diǎn)并做了相應(yīng)的改進(jìn)。Linux, uclinux都支持ROMFS。除ROMFS外,其它常用的嵌入式設(shè)備的文件系統(tǒng)還有CRAMFS,JFFS2等,它們各有特色。

          1.ROMFS文件系統(tǒng)的特點(diǎn)

          ROMFS是一種只讀的文件系統(tǒng),它使用順序存儲方式,所有數(shù)據(jù),包括目錄,鏈接等都按目錄樹的順序存放。相對于EXT2等較大型的文件系統(tǒng)而言,ROMFS非常節(jié)省空間。通常ROMFS用在嵌入式設(shè)備中作為根文件系統(tǒng),或者用于保存boot loader以便引導(dǎo)系統(tǒng)啟動。

          2.ROMFS文件系統(tǒng)的數(shù)據(jù)存儲方式

          設(shè)計(jì)一個(gè)文件系統(tǒng)首先要確定它的數(shù)據(jù)存儲方式。不同的數(shù)據(jù)存儲方式對文件系統(tǒng)占用空間,讀寫效率,查找速度等主要性能有極大影響。ROMFS是一種只讀的文件系統(tǒng),它使用順序存儲方式,所有數(shù)據(jù)都是順序存放的。因此ROMFS中的數(shù)據(jù)一旦確定就無法修改,這是ROMFS只能是一種只讀文件系統(tǒng)的原因,它的數(shù)據(jù)存儲方式?jīng)Q定了無法對ROMFS進(jìn)行寫操作。由于采用了順序存放策略,ROMFS中每個(gè)文件的數(shù)據(jù)都能連續(xù)存放,讀取過程中只需要一次尋址操作,進(jìn)而就可以讀入整塊數(shù)據(jù),因此ROMFS中讀取數(shù)據(jù)效率很高。

          整個(gè)ROMFS文件系統(tǒng)的布局如下:

          ROMFS的首部


          前八個(gè)字節(jié)是文件系統(tǒng)的名字,在這里是”-rom1fs-“, 8-11字節(jié)存放該文件系統(tǒng)大小,12-15字節(jié)為前512字節(jié)的校驗(yàn)和,從16字節(jié)開始是文件系統(tǒng)的卷名,卷名的長度必須的16字節(jié)的整數(shù)倍,不足的部分可以用‘0’填充。

          ROMFS的首部是ROMFS的超級塊信息,操作系統(tǒng)通過超級塊來識別文件系統(tǒng)的類型。首部之后就是實(shí)際的數(shù)據(jù),包括目錄,普通文件,設(shè)備文件,硬鏈接等。ROMFS支持所有這些類型的文件。

          ROMFS文件系統(tǒng)中文件存儲方式:


          上一頁 1 2 3 4 下一頁

          關(guān)鍵詞: ROMFS 文件系統(tǒng)

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();