欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Cramfs、JFFS2、YAFFS2的全面對比
由于嵌入式系統自身存在一些特殊要求,使得一些傳統的文件系統(如FAT、EXT2等)并不十分適合。專(zhuān)用的嵌入式文件系統應有一些自身的特性,如文件系統面對的儲存介質(zhì)特殊性、文件系統應具有的跨平臺的安全性,以及整個(gè)系統的即時(shí)性等。本文介紹了3種源碼開(kāi)放的嵌入式文件系統Cramfs、JFFS2、YAFFS2,詳細分析比較了這3種文件系統的主要性能,并根據分析結果指出了各自的適用領(lǐng)域。
Cramfs、JFFS2、YAFFS2是3種性能優(yōu)越,專(zhuān)用于嵌入式系統的文件系統。本文通過(guò)對這3種文件系統的設計原理和主要性能進(jìn)行分析與比較,歸納出各自的選型依據據和適用領(lǐng)域。
三種文件系統的介紹
Cramfs
Cramfs是Linux的創(chuàng )始人LinusTorvalds開(kāi)發(fā)的一種只讀文件系統,采用了zlib壓縮,壓縮比一般可以達到1:2,但仍可以做到高效的隨機讀取。在Linux系統中,通常把不需要經(jīng)常修改的目錄壓縮存放,在系統引導時(shí)再將壓縮文件解開(kāi)。Cramfs并不需要一次性地把文件系統的所有內容都解壓到記憶體中,而只是在系統需要訪(fǎng)問(wèn)某個(gè)位置的資料時(shí),馬上計算出該資料在Cramfs中的位置,將其解壓縮到記憶體之中,然后通過(guò)對記憶體的訪(fǎng)問(wèn)來(lái)獲取需要讀取的資料。
JFFS2
JFFS意為「Journaling Flash FileSystem」,該文件系統是瑞典Axis通信公司開(kāi)發(fā)的一種基于Flash記憶體的日志文件系統。該公司于1999年在GNU/Linux上發(fā)行了第一版JFFS文件系統,后來(lái)經(jīng)過(guò)Redhat公司的發(fā)展,現在已經(jīng)發(fā)行了第二個(gè)版本的JFFS2,其全部程式碼都是可供研究開(kāi)發(fā)的。它在設計時(shí)充分考慮了嵌入式系統中Flash記憶體的讀寫(xiě)特性,確保在系統掉電時(shí),正在讀寫(xiě)的文件不受影響;同時(shí),其儲存策略以及抗疲勞性等方面也在第一版的基礎上進(jìn)行了改進(jìn)。目前,JFFS2廣泛應用于嵌入式系統中,尤其是嵌入式μClinux作業(yè)系統中。
YAFFS2
YAFFS意為「YetAnother Flash File System」,是目前唯一一個(gè)專(zhuān)門(mén)為NANDFlash設計的文件系統。它采用了類(lèi)日志結構,結合NANDFlash的特點(diǎn),提供了損耗平衡和掉電保護機制,可以有效地避免意外掉電對文件系統一致性和完整性的影響。AlephOne公司于2002年5月發(fā)布了第一版YAFFS程式碼,用戶(hù)可以很方便地在網(wǎng)站上下載到。第一版的YAFFS只支援每頁(yè)512位元組的NANDFlash。YAFFS2是YAFFS的升級版,即支援每頁(yè)512位元組的NAND Flash記憶體,也支援每頁(yè)2048位元組的NANDFlash記憶體。
Flash記憶體
Flash設備特點(diǎn)
相對于傳統儲存介質(zhì),Flash記憶體具有如下優(yōu)點(diǎn):
˙可靠性高,采用Flash為儲存介質(zhì),可以確保100萬(wàn)次以上的可靠寫(xiě)入;
˙儲存速度快,寫(xiě)入∕讀取均可接近1Mb/ s;
˙使用方便,具有很強的環(huán)境適應能力。
但是,由于其制造制程的問(wèn)題,還存在以下缺點(diǎn):
˙讀取和寫(xiě)入以頁(yè)為單位,擦除以塊為單位;
˙易出現隨機壞塊;
˙塊與塊之間使用不均衡會(huì )導致壽命問(wèn)題。
NOR Flash和NAND Flash
基于NOR技術(shù)的Flash記憶體是最早出現的Flash記憶體,它具有以下特點(diǎn):
˙程序和資料可存放在同一晶片上,擁有獨立的資料匯流排和位址匯流排,支援快速隨機讀取,允許系統直接從Flash中讀取程式碼并執行,而無(wú)需先將程式碼下載至RAM中再執行;
˙可以單位元組或單字程式化,但必須以塊為單位進(jìn)行擦除操作。
由于NOR Flash記憶體的擦除和程式化速度較慢,而塊尺寸又比較大,因此擦除和程式化操作所花費的時(shí)間很長(cháng)。目前,NORFlash記憶體大多只用于儲存嵌入式系統的啟動(dòng)程式碼。
NANDFlash記憶體可以順序讀取儲存單元的內容,由于制程上的進(jìn)步,其容量越來(lái)越大,單位價(jià)格越來(lái)越便宜,正逐步成為Flash記憶體的主流。NANDFlash記憶體具有以下特點(diǎn):
˙以頁(yè)為單位進(jìn)行讀寫(xiě)操作,以塊為單位進(jìn)行擦除操作;頁(yè)大小為512位元組或2048位元組,每頁(yè)不僅有
資料區,還有幾十位元組的空閑區。
˙資料、位址采用同一匯流排界面,串列讀取。
˙晶片尺寸小,接腳少,單位成本低。
˙晶片內含有失效塊,并且在使用過(guò)程中可能會(huì )出現隨機壞塊。
表1比較了這兩種Flash記憶體的性能參數。
三種嵌入式文件系統主要性能分析與比較
資料安全、運行速度、占用資源、使用范圍等是嵌入式文件系統的主要性能指標。下面從這幾個(gè)方面入手,對這三種嵌入式文件系統進(jìn)行分析與比較。
資料安全
當前的嵌入式系統主要使用固態(tài)Flash晶片作為儲存設備。由于Flash設備自身的特點(diǎn)以及嵌入式系統工作環(huán)境的復雜多樣性,如何保證資料的安全是嵌入式文件系統首先要考慮的問(wèn)題。資料安全主要包括資料冗余和掉電保護等部分。
資料冗余
提高資料安全性的最有效措施是增加資料的冗余,而資料的大量冗余又給維護資料一致性帶來(lái)困難。對此應進(jìn)行合理取舍,在盡量降低冗余的前提下,確保資料的安全性和可靠性。
Cramfs文件系統是一種只讀文件系統,文件系統內容不可更改,設計思想遵循「只儲存最少的信息」;甚至沒(méi)有時(shí)間戳之類(lèi)的信息,除了資料包的CRC校驗信息外,幾乎沒(méi)有別的資料冗余。
JFFS2文件系統是典型的日志結構的文件系統,它儲存的資料是日志式資料信息。JFFS2在Flash上??只有兩種類(lèi)型的資料實(shí)體:j.ffs2_raw_inode和jffs2_rawdirent。前者包含文件的管理信息,后者用于描述文件在文件系統中的位置。真正的資料信息就保持在jffs2_raw_inode節點(diǎn)的后面,大部分管理的信息都是在系統掛載之后建立起來(lái)的。兩種資料實(shí)體有著(zhù)公共的文件頭結構jffs2_ unknown_node。在這個(gè)結構里,有個(gè)jint32_t類(lèi)型的hdr_crc變量,它代表文件頭部中其他域的CRC校驗值。這說(shuō)明JFFS2文件系統使用的是CRC循環(huán)冗余校驗碼。
YAFFS2文件系統是一種類(lèi)日志文件系統,專(zhuān)用于NAND型Flash設備。其儲存資料的基本單位是chunk,相當于Flash的頁(yè)。Chunk中的資料包括兩部分:一部分是資料區,占用Flash的一頁(yè);另一部分是文件信息及冗余資料區,占用Flash頁(yè)的OOB區。其冗余資料主要是ECC校驗資料,對于小頁(yè)(每頁(yè)512位元組)的Flash,每頁(yè)有6位元組的ECC資料;對于大頁(yè)(每頁(yè)2048位元組)的Flash,每頁(yè)有24位元組的ECC資料。
掉電保護
掉電保護的目的是:在系統意外失去供電的情況下,保證系統運行狀態(tài)的確定性以及記錄資料的完整性;當系統供電恢復后,現場(chǎng)資料可以及時(shí)恢復,避免系統產(chǎn)生混亂。很多文件系統出于運行速度考慮,在程序運行過(guò)程中,常將資料暫存在SDRAM中;一旦系統意外掉電,往往會(huì )造成資料丟失。
Cramfs文件系統將文件系統內容解壓到記憶體中,由于其不能寫(xiě)入,文件系統的內容無(wú)法更改,因此不存在掉電保護的問(wèn)題。
JFFS2是一種日志結構文件系統,因此不論電源以何種方式在哪個(gè)時(shí)刻停止供電,JFFS2都能保持資料完整性。當系統遭受不正常斷電后重新啟動(dòng)時(shí),JFFS2自動(dòng)將系統恢復到斷電前最后一個(gè)穩定狀態(tài)。需要注意的是,文件系統在最后一個(gè)穩定狀態(tài)之后發(fā)生的任何改變,都無(wú)法進(jìn)行恢復。
YAFFS2是一種類(lèi)日志文件系統,可以在意外掉電重啟后自動(dòng)提供可靠的資料記錄,防止文件系統的崩潰。它使用獨立的日志文件跟蹤文件系統內容的變化。舉例來(lái)說(shuō):當應用程式需要寫(xiě)Flash的某一頁(yè)時(shí),它首先修改的是存放于文件日志中的一塊鏡像;只有當日志中的鏡像復制到文件系統中后,資料才真實(shí)地寫(xiě)到該頁(yè)上。當發(fā)生意外掉電重啟后,YAFFS2沒(méi)有像JFFS2那樣,使用舊文件完全代替新寫(xiě)文件,而是選擇用新文件完全代替舊的文件,或者已寫(xiě)部分使用新文件,未寫(xiě)部分使用舊文件。這種方式增強了掉電時(shí)未完全寫(xiě)入文件的安全性能,特別是當意外掉電發(fā)生在資料區時(shí),意外掉電時(shí)的文件幾乎被完好地保存下來(lái)。
運行速度
運行速度可以從以下幾個(gè)方面考察:文件系統掛載速度,讀文件速度,寫(xiě)文件速度等。這里預設的儲存介質(zhì)是NAND Flash。
一般而言,壓縮的、只讀的文件系統在啟動(dòng)時(shí)需要將文件系統解壓到SDRAM中,這在一定程度上會(huì )減緩文件系統掛載速度。但是,Cramfs文件系統在設計時(shí)充分考慮了系統掛載的時(shí)間,并沒(méi)有一次性地把文件系統的所有內容都解壓到記憶體中,而只是在系統需要訪(fǎng)問(wèn)某個(gè)位置的資料時(shí),迅速計算出該資料在Cramfs中的位置,將其解壓縮到記憶體之中,再進(jìn)行訪(fǎng)問(wèn)操作。由于其讀文件速度只是找出文件位址以及訪(fǎng)問(wèn)記憶體的操作,所以無(wú)論是掛載速度,還是讀文件速度,Cramfs文件系統都比JFFS2和YAFFS2文件系統要快。
JFFS2文件系統的掛載可以分為以下幾個(gè)步驟進(jìn)行:
1.檢查每個(gè)節點(diǎn)CRC校驗碼的合法性,在記憶體中為每個(gè)節點(diǎn)每個(gè)節點(diǎn)分配必需的相關(guān)的結構;
2.掃瞄每個(gè)i節點(diǎn)的物理節點(diǎn)鏈表,建立鏈接;
3.釋放掃瞄過(guò)程中使用的臨時(shí)信息。
可以看出這個(gè)過(guò)程還是很復雜的,更重要的是,在JFFS2文件系統被掛載時(shí),需要對整個(gè)Flash儲存區域進(jìn)行掃瞄,這就耗費了大量的時(shí)間,因此JFFS2文件系統的開(kāi)機速度非常緩慢。與JFFS2相比,YAFFS2減少了一些功能,掛載時(shí)只需掃瞄Flash記憶體的空閑區,根據從OOB(備份資料區)中讀取的yaffs_tags信息判讀是文件頭頁(yè)面還是資料頁(yè)面,再根據相應信息在記憶體中為每個(gè)文件建立一個(gè)對??應的yaffs_object對象。由于YAFFS2在系統載入時(shí)只需掃瞄各個(gè)頁(yè)面的OOB區,即可建立起整個(gè)文件系統的結構,而不需要像JFFS2那樣掃瞄整個(gè)Flash設備,因此大大加快了文件系統的啟動(dòng)速度。但是,YAFFS2仍然要求對整個(gè)Flash設備所有頁(yè)的空閑進(jìn)行掃瞄,這就導致當Flash設備儲存空間變大時(shí),系統掃瞄時(shí)間會(huì )直線(xiàn)上升。
在文件系統運行時(shí),JFFS2需要維護幾個(gè)鏈表來(lái)管理擦寫(xiě)塊。根據擦寫(xiě)塊上的內容,一個(gè)擦寫(xiě)塊可能會(huì )在不同的鏈表上。具體來(lái)說(shuō),當一個(gè)擦寫(xiě)塊上都是合法(valid)的節點(diǎn)時(shí),它會(huì )在clean_list上;當一個(gè)擦寫(xiě)塊包含至少一個(gè)過(guò)時(shí)(obsolete)的節點(diǎn)時(shí),它會(huì )在dirty_list上;當一個(gè)擦寫(xiě)塊被擦寫(xiě)完畢,并被寫(xiě)入Cleanmarker節點(diǎn)后,它會(huì )在free_list上。正是以這些鏈表為基礎,JFFS2文件系統才可以實(shí)現垃圾回收、損耗平衡等性能。文件系統掛載時(shí)YAFFS2在記憶體中建立一個(gè)層次結構的索引,可以看作是一個(gè)文件樹(shù)。樹(shù)的最底層指向實(shí)際存放文件的頁(yè)面,高層則是一層層的索引目錄。文件樹(shù)是通過(guò)一個(gè)聯(lián)合結構的節點(diǎn)來(lái)實(shí)現的。聯(lián)合結構是固定大?。?2位元組),當它處于最底層時(shí),由16個(gè)2位元組入口來(lái)查找頁(yè)面ID;當處于其它層時(shí),由8個(gè)4位元組指針指向其他更低層的節點(diǎn)。每個(gè)文件對應一個(gè)文件樹(shù),便于檢索。在以NANDFlash為儲存介質(zhì)的嵌入式系統中,YAFFS2的文件讀寫(xiě)性能都優(yōu)于JFFS2。
占用資源
在嵌入式系統中,記憶體和外部記憶體資源匱乏,需要節約使用。因此占用的記憶體和外部記憶體資源量也是衡量嵌入式文件系統的一個(gè)重要指標。
如果使用RAMDISK方式運行文件系統,那么在系統運行之后,首先要把Flash上??的映像文件解壓到記憶體中,才可以開(kāi)始運行程序。這樣,同樣的程式碼不僅在外部記憶體中占據了空間,而且由于解壓縮,還在記憶體中占用了更大的空間。Cramfs雖然是一個(gè)壓縮式的文件系統,但前面已介紹過(guò),它并不需要一次性地將所有內容解壓到記憶體之中。由于其對文件內容的壓縮,因此無(wú)論是外部記憶體還是記憶體,Cramfs都比JFFS2和YAFFS2占用更少的資源。
JFFS2將文件系統的資料和原資料以節點(diǎn)的形式儲存在Flash上??,其冗余資料只是節點(diǎn)頭部的CRC校驗碼,并且在儲存時(shí)對節點(diǎn)的資料進(jìn)行了壓縮。與之相比,YAFFS2不僅儲存了頁(yè)資料的ECC校驗碼,并且沒(méi)有Flash設備OOB區儲存資料,而是用來(lái)儲存頁(yè)節點(diǎn)信息。其映像也是由若干個(gè)頁(yè)面組成,沒(méi)有對資料進(jìn)行壓縮,因此YAFFS2文件系統映像大大超過(guò)了JFFS2文件系統映像。實(shí)驗表明,普通YAFFS2映像的大小約為同樣JFFS2映像大小的2倍。當文件系統在記憶體中運行時(shí),JFFS2在記憶體中定義了若干鏈表,YAFFS2在記憶體中為每個(gè)文件創(chuàng )建一個(gè)文件樹(shù)。盡管為每個(gè)文件建立一個(gè)文件樹(shù)需要消耗掉不少的記憶體,但是比起維護JFFS2所需的鏈表消耗的記憶體,還是少一些。在實(shí)際運行中,YAFFS2占用的記憶體要小于JFFS2文件系統。
使用范圍
要使用Cramfs或JFFS2文件系統,離不開(kāi)MTD驅動(dòng)程式層的支援。MTD(Memory TechnologyDevice)是Linux中的一個(gè)儲存設備通用界面層。雖然也可以建立在RAM上,但它是專(zhuān)為基于Flash的設備而設計的。MTD包含特定Flash晶片的驅動(dòng)程式, Flash晶片驅動(dòng)向上層提供讀、寫(xiě)、擦除等基本的Flash操作方法。MTD對這些操作進(jìn)行封裝后向用戶(hù)層提供MTDchar和MTD block類(lèi)型的設備。MTD char類(lèi)型的設備包括/dev/mtd0等,可以對Flash的原始字元訪(fǎng)問(wèn);MTDblock類(lèi)型的設備包括/dev/mtdblock0等,將Flash類(lèi)比成塊設備,這樣就可以在這些塊設備上創(chuàng )建Cramfs或JFFS2等格式的文件系統。在對用戶(hù)層的界面上,Cramfs或JFFS2文件系統還需要作業(yè)系統VFS(虛擬文件系統)的支援。
同樣,YAFFS2文件系統支援使用MTD驅?動(dòng)層和VFS層,這也是一般在嵌入式Linux或者μClinux作業(yè)系統中使用YAFFS2文件系統的常用方法。除此之外,YAFFS2還帶有NANDFlash晶片驅動(dòng),并為嵌入式系統提供了直接訪(fǎng)問(wèn)文件系統的API,用戶(hù)可以不使用Linux中的MTD和VFS,直接對文件進(jìn)行操作。
圖1 為嵌入式系統的文件系統結構。
YAFFS2中的YAFFS2Direct提供了直接的文件系統界面,因此在那些沒(méi)有VFS層的嵌入式系統中也可使用YAFFS2。YAFFS2文件系統的使用范圍要比Cramfs和JFFS2文件系統廣泛;但是需要注意的是,YAFFS2只能用在NANDFlash儲存設備上。
結論
這3種嵌入式文件系統在嵌入式系統中的應用非常廣泛,但是又具有各自的特點(diǎn)。
表2 比較了3種文件系統的主要性能,并歸納出各自最適用的領(lǐng)域。
具體分析如下:
1. Cramfs是最早的一種嵌入式文件系統,它只儲存了最少的信息,對文件內容進(jìn)行了壓縮,運行速度比較
快。但是由于其不能寫(xiě)入,不支援超過(guò)16 MB大小的文件,因此廣泛地應用于儲存空間小、文件系統內容
較少并且不需要用戶(hù)寫(xiě)入的嵌入式系統中。
2. JFFS2是一種較早的Flash專(zhuān)用文件系統。目前已有很多JFFS2應用于μClinux以及嵌入式Linux的例子。事
實(shí)上,它已經(jīng)成為新版Linux中的一種標準文件系統。
同時(shí)它對NOR Flash和NAND Flash提供支援,針對兩種Flash設備共同的特性,提供掉電保護和損耗平衡等
功能,可供用戶(hù)讀寫(xiě),十分適合于同時(shí)用到這兩種Flash設備的嵌入式系統。
3. YAFFS2是專(zhuān)為NANDFlash設計的文件系統,它充分考慮了NAND Flash設備的特性,支援ECC校驗,提
供掉電保護和損耗平衡功能,運行和掛載速度都比JFFS2要快。它支援作業(yè)系統廣泛,包括常見(jiàn)的嵌入
式Linux、WinCE、μClinux。由于它提供Direct界面,因此稍加修改也可使用在沒(méi)有作業(yè)系統的嵌入式
系統中。目前,被廣泛應用于使用NAND Flash作為儲存設備的嵌入式系統中。
針對具體應用,可以在考察各種文件系統特點(diǎn)的基礎上,選擇更適合自身系統的一種文件系統解決方案。比如在許多以NANDFlash為儲存介質(zhì)的應用系統中,都用到「CramfsYAFFS2」文件系統。以Cramfs作為根文件系統,既提高了啟動(dòng)速度,也能保護根文件不受破壞;使用YAFFS2作為用戶(hù)文件系統,在保證用戶(hù)可以自由讀寫(xiě)文件的基礎上,提高了文件系統的安全性和運行速度,不失為一種優(yōu)良的嵌入式文件系統解決方案。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
嵌入式Linux下NAND存儲系統的設計與實(shí)現
嵌入式Linux文件系統簡(jiǎn)介
在U-Boot中實(shí)現對Yaffs鏡像的支持
原制作文件系統的Cramfs鏡像
嵌入式系統存儲器淺談
嵌入式雜談之文件系統
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久