在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式設(shè)備上的文件系統(tǒng)優(yōu)化設(shè)計(jì)

            嵌入式設(shè)備上的文件系統(tǒng)優(yōu)化設(shè)計(jì)

            作者: 時(shí)間:2013-11-11 來(lái)源:網(wǎng)絡(luò) 收藏

            隨著芯片技術(shù)的發(fā)展,各種處理器的處理能力不斷提高,手持智能終端得到極大的普及。嵌入式操作系統(tǒng)在未來(lái)的手持智能設(shè)備中將扮演著非常重要的角色,使嵌入式的應(yīng)用和研究不斷的深入。

            由于Microsoft公司的Windows操作系統(tǒng)占據(jù)了桌面操作系統(tǒng)絕大多數(shù)份額,而手持智能設(shè)備與PC機(jī)的數(shù)據(jù)交換又在所難免,因此,絕大多數(shù)的大容量嵌入式智能設(shè)備必須采用與PC機(jī)兼容的FAT/。隨著便攜式硬盤(pán)的應(yīng)用,在嵌入式硬盤(pán)上已成為主流的格式。

            同時(shí),隨著CPU處理能力的提高,面向存儲(chǔ)的應(yīng)用需求在手持智能設(shè)備上也隨著不斷增長(zhǎng),的訪問(wèn)性能將是未來(lái)的手持設(shè)備非常關(guān)鍵的因素。然而,當(dāng)硬盤(pán)在手持智能設(shè)備上應(yīng)用時(shí),由于硬盤(pán)訪問(wèn)的高耗能特性,對(duì)于手持設(shè)備的設(shè)計(jì)構(gòu)成了極大的挑戰(zhàn)。而硬盤(pán)的能耗又與讀寫(xiě)訪問(wèn)的時(shí)間成正比,從節(jié)能的角度出發(fā),系統(tǒng)設(shè)計(jì)者同樣希望在單位時(shí)間內(nèi)讀取更多內(nèi)容,以減少硬盤(pán)訪問(wèn)時(shí)間從而達(dá)到節(jié)能的目的。因此,在上的的優(yōu)化實(shí)現(xiàn)成為非常迫切的需求。

            1 Linux中FAT32讀操作分析

            1.1 虛擬文件系統(tǒng)與FAT32[1-2]

            Linux系統(tǒng)中的虛擬文件系統(tǒng)VFS(Virtual File System)是一個(gè)非常強(qiáng)大的機(jī)制,其設(shè)計(jì)思路是在內(nèi)核中提供一個(gè)文件系統(tǒng)框架,包括接口函數(shù)集、管理用的數(shù)據(jù)結(jié)構(gòu)以及各種緩存機(jī)制。VFS提供上下兩個(gè)方面的接口,上層接口是提供給I/O系統(tǒng)的用戶使用的,包括應(yīng)用程序和內(nèi)核的其他管理模塊,通過(guò)該接口可使I/O系統(tǒng)(文件、設(shè)備、網(wǎng)絡(luò)等)完成如打開(kāi)、關(guān)閉、讀、寫(xiě)等;下層接口是提供給真實(shí)文件系統(tǒng)的,VFS支持的每個(gè)真實(shí)文件系統(tǒng)都要通過(guò)這個(gè)接口來(lái)實(shí)現(xiàn)。通過(guò)這種機(jī)制,Linux將系統(tǒng)存在的各種真實(shí)文件系統(tǒng)(如EXT2/EXT3、FAT/FAT32、JFFS/JFFS2等)以及設(shè)備文件都統(tǒng)一到一種操作中,以此來(lái)實(shí)現(xiàn)系統(tǒng)的管理與調(diào)度。

            FAT(File Allocation Table)文件系統(tǒng)是Microsoft公司推出的廣泛使用在Dos、Windows 9X、Windows 2000以及Windows XP系統(tǒng)中。由于Windows系列的操作系統(tǒng)的普及,其FAT文件系統(tǒng)被人們所廣泛熟悉和應(yīng)用。當(dāng)前針對(duì)大容量硬盤(pán),F(xiàn)AT32文件系統(tǒng)占據(jù)了主要的地位。在FAT32文件系統(tǒng)中,以下三個(gè)概念與文件的組織密切相關(guān):

            扇區(qū)(Sector): 數(shù)據(jù)存取的最小物理單位。
            簇(Cluster):文件最小分配單位,與分區(qū)大小、文件系統(tǒng)相關(guān)。
            邏輯扇區(qū)(Logic Sector):在文件系統(tǒng)實(shí)現(xiàn)中,為了優(yōu)化和統(tǒng)一設(shè)計(jì)所定義的讀寫(xiě)長(zhǎng)度。

            1.2 文件讀在內(nèi)核中的實(shí)現(xiàn)

            以讀操作為例,通過(guò)Linux系統(tǒng)中VFS的作用,從用戶空間對(duì)FAT32的操作,系統(tǒng)可以抽象成從fread( )映射到內(nèi)核函數(shù)do_generic_file_read( )來(lái)完成具體的文件讀操作。在文件/μCLinux/linux-2.4.x/mmnommu/filemap.c中存在這個(gè)接口實(shí)現(xiàn)的原型。雖然這類接口并不是基本的,但正如大多數(shù)文件系統(tǒng)的實(shí)現(xiàn),F(xiàn)AT32就是通過(guò)這類接口來(lái)實(shí)現(xiàn)文件的各種操作。

            圖1描述了函數(shù)do_generic_file_read( )的實(shí)現(xiàn)原理。從函數(shù)入口處獲得目標(biāo)內(nèi)容的文件描述指針,從而獲得文件入口。通過(guò)分析描述符inode以及當(dāng)前狀態(tài),系統(tǒng)獲得預(yù)讀read_ahead的大小,進(jìn)行相應(yīng)的計(jì)算,獲得所需要獲取的目標(biāo)內(nèi)容Page頁(yè)索引以及offset偏移量。然后發(fā)起預(yù)讀的指令,并等待獲得相應(yīng)的Page內(nèi)容后,將其拷貝到buffer中進(jìn)行組織,并提供上層程序磁盤(pán)文件在內(nèi)存中的映像。


            1.3 文件預(yù)讀機(jī)制與Page讀[1-4]

            在do_generic_file_read的實(shí)現(xiàn)中,磁盤(pán)讀動(dòng)作實(shí)際是在預(yù)讀read_ahead中完成的,即預(yù)讀機(jī)制。這是由于Linux系統(tǒng)為了獲得更高的性能以及充分利用CPU處理能力,VFS設(shè)計(jì)中做了一層buffer/cache緩沖。當(dāng)系統(tǒng)發(fā)現(xiàn)buffer/cache中有即將要訪問(wèn)的內(nèi)容缺失時(shí),系統(tǒng)將發(fā)起一次預(yù)讀請(qǐng)求。下層文件系統(tǒng)根據(jù)尋找CPU以及總線的空閑狀態(tài),執(zhí)行具體的預(yù)讀機(jī)制。這樣,上下層構(gòu)成一個(gè)異步過(guò)程來(lái)完成系統(tǒng)的任務(wù),以達(dá)到充分利用系統(tǒng)資源的目的。

            在考察read_ahead( )的實(shí)現(xiàn)中可以發(fā)現(xiàn),實(shí)際上read_ahead( )函數(shù)的主要功能是根據(jù)實(shí)際需求不斷調(diào)用文件系統(tǒng)中的readpage( )函數(shù)來(lái)完成的。這是由于Linux的內(nèi)存管理都是按照頁(yè)(Page)模式進(jìn)行組織的。也就是說(shuō),每次從具體的對(duì)象數(shù)據(jù)存儲(chǔ)設(shè)備(如硬盤(pán))上讀取相應(yīng)的數(shù)據(jù)時(shí),將嚴(yán)格按照page的大小進(jìn)行讀取動(dòng)作。根據(jù)一般定義,Page采用4 096B為單位。在Linux上的FAT32實(shí)現(xiàn)中,將由fat_readpage( )具體應(yīng)用實(shí)例來(lái)實(shí)現(xiàn)這個(gè)功能。

            1.4 Block讀實(shí)現(xiàn)[3-4]

            由于不同的硬件設(shè)備存在不同的物理結(jié)構(gòu),在文件系統(tǒng)格式化時(shí),最基本的存儲(chǔ)單元Cluster的大小是不同的。如通常能夠見(jiàn)到的有512B、1KB等。也就是說(shuō),實(shí)際文件的存儲(chǔ)是按照不同的目標(biāo)存儲(chǔ)設(shè)備劃分為不同的塊來(lái)存儲(chǔ)的。在文件系統(tǒng)實(shí)現(xiàn)中,為了兼容不同的目標(biāo)系統(tǒng)與硬件設(shè)備,在FAT文件系統(tǒng)中的Page讀動(dòng)作的實(shí)現(xiàn)中,引入了一個(gè)Block概念,即根據(jù)具體文件描述,按照Block大小完成整個(gè)Page的讀命令。
            在μCLinux/linux-2.4.x/mmnommu/filemap.c文件中,fat_readpage( )的實(shí)現(xiàn)就是根據(jù)上述目標(biāo)進(jìn)行相應(yīng)設(shè)計(jì)的,即通過(guò)inode獲取相應(yīng)文件的具體存儲(chǔ)信息,然后將Page讀轉(zhuǎn)化為按照Block塊方式進(jìn)行讀操作。也就是通過(guò)反復(fù)調(diào)用block_read_full_page( )函數(shù)來(lái)滿足最后Page內(nèi)容的獲取。

            函數(shù)block_read_full_page( )的具體實(shí)現(xiàn)過(guò)程如圖2所示。系統(tǒng)根據(jù)傳入的參數(shù),獲得Block大小,生成相應(yīng)的緩存空間,然后反復(fù)發(fā)出Block讀的Request,直到完成整個(gè)Page的讀任務(wù)。

            如圖2所示Block_read_full_page( )的實(shí)現(xiàn)機(jī)理中,最重要的是根據(jù)系統(tǒng)狀況,經(jīng)過(guò)計(jì)算確切地獲得將由多少個(gè)Block來(lái)組成一個(gè)Page。

            在Linux實(shí)現(xiàn)中,Block大小決定于文件描述符inode中的i_blkbits域。在Linux中的FAT32文件系統(tǒng)設(shè)計(jì)中,inode->i_blkbits是由FAT32系統(tǒng)中的logic_sector_size決定的,即用/linux-2.4.x/fs/fat/inode.c來(lái)實(shí)現(xiàn)從FAT32文件系統(tǒng)映射到Linux的inode各項(xiàng)定義。

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

            上一頁(yè) 1 2 下一頁(yè)

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

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉