《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > 嵌入式設(shè)備上的文件系統(tǒng)優(yōu)化設(shè)計(jì)

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

2008-07-24
作者:應(yīng) 駿1,, 江 峰2, 李 莉1

??? 摘 要: FAT32在Linux上的優(yōu)化與實(shí)現(xiàn)是提高硬盤式嵌入式設(shè)備性能的關(guān)鍵因素,。通過(guò)深入分析FAT32文件系統(tǒng)" title="文件系統(tǒng)">文件系統(tǒng)在Linux上的實(shí)現(xiàn)細(xì)節(jié),,針對(duì)性地提出了多種優(yōu)化策略:Block機(jī)制實(shí)現(xiàn)優(yōu)化、預(yù)讀機(jī)制控制優(yōu)化,、Page機(jī)制改進(jìn)等,。最后給出了一個(gè)實(shí)際系統(tǒng)的性能優(yōu)化比較。
??? 關(guān)鍵詞: Linux? FAT32文件系統(tǒng)? 預(yù)讀? 優(yōu)化

?

??? 隨著芯片技術(shù)的發(fā)展,,各種處理器的處理能力" title="處理能力">處理能力不斷提高,,手持智能終端得到極大的普及。嵌入式Linux操作系統(tǒng)在未來(lái)的手持智能設(shè)備" title="智能設(shè)備">智能設(shè)備中將扮演著非常重要的角色,,使嵌入式Linux的應(yīng)用和研究不斷的深入,。
由于Microsoft公司的Windows操作系統(tǒng)占據(jù)了桌面操作系統(tǒng)絕大多數(shù)份額,而手持智能設(shè)備與PC機(jī)的數(shù)據(jù)交換又在所難免,,因此,,絕大多數(shù)的大容量" title="大容量">大容量嵌入式智能設(shè)備必須采用與PC機(jī)兼容的FAT/FAT32文件系統(tǒng)。隨著便攜式硬盤的應(yīng)用,,F(xiàn)AT32在嵌入式硬盤上已成為主流的格式,。
??? 同時(shí),隨著CPU處理能力的提高,,面向存儲(chǔ)的應(yīng)用需求在手持智能設(shè)備上也隨著不斷增長(zhǎng),,文件系統(tǒng)的訪問(wèn)性能將是未來(lái)的手持設(shè)備非常關(guān)鍵的因素。然而,,當(dāng)硬盤在手持智能設(shè)備上應(yīng)用時(shí),,由于硬盤訪問(wèn)的高耗能特性,對(duì)于手持設(shè)備的設(shè)計(jì)構(gòu)成了極大的挑戰(zhàn),。而硬盤的能耗又與讀寫訪問(wèn)的時(shí)間成正比,,從節(jié)能的角度出發(fā),系統(tǒng)設(shè)計(jì)者同樣希望在單位時(shí)間內(nèi)讀取更多內(nèi)容,,以減少硬盤訪問(wèn)時(shí)間從而達(dá)到節(jié)能的目的,。因此,在Linux上的FAT32的優(yōu)化實(shí)現(xiàn)成為非常迫切的需求,。
1 Linux中FAT32文件系統(tǒng)讀操作分析
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)閉,、讀,、寫等;下層接口是提供給真實(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ì)大容量硬盤,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ì)所定義的讀寫長(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)行組織,,并提供上層程序磁盤文件在內(nèi)存中的映像。

??????????????????????????
1.3 文件預(yù)讀機(jī)制與Page讀[1-4]
??? 在do_generic_file_read的實(shí)現(xià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è)備(如硬盤)上讀取相應(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)定義。
1.5 系統(tǒng)MAKE_REQUEST[1-4]
??? 經(jīng)過(guò)上述各個(gè)步驟的計(jì)算,,在文件系統(tǒng)實(shí)現(xiàn)中,,將文件讀操作轉(zhuǎn)化為若干個(gè)不同的Block讀需求,最后向下層驅(qū)動(dòng)程序?qū)影l(fā)起具體的命令Request,。上述的轉(zhuǎn)化,,基本上是根據(jù)底層配置以及內(nèi)存管理的需求,將大的/整體的命令細(xì)分/拆分為更加細(xì)小的動(dòng)作,。
??? 而在實(shí)際執(zhí)行過(guò)程中,,肯定存在較多的過(guò)度拆分的情況,以致于產(chǎn)生過(guò)多低效率的命令,,因此,在具體實(shí)現(xiàn)過(guò)程中,,為了避免這種情況,,在實(shí)際發(fā)出Request之前,需要對(duì)其進(jìn)行相應(yīng)的檢查,,合并相關(guān)的Request,,以提高系統(tǒng)實(shí)現(xiàn)性能。這個(gè)過(guò)程將由submit_bh來(lái)完成,。
??? 圖3所示是submit_bh函數(shù)中的主體調(diào)用子函數(shù)_make_request的實(shí)現(xiàn)過(guò)程,。在FAT32實(shí)現(xiàn)中,,_make_request根據(jù)獲得的Block大小、存儲(chǔ)設(shè)備的sector number,,準(zhǔn)備好內(nèi)存空間后,,向IDE發(fā)出具體的Request。而具體的Request合并將發(fā)生在發(fā)出Request之前,。其實(shí)現(xiàn)原理根據(jù)當(dāng)前隊(duì)列中Request的地址相關(guān)性來(lái)判斷,。

??????????????????????
2 優(yōu)化策略分析
??? 面對(duì)提高文件系統(tǒng)訪問(wèn)性能的需求,經(jīng)過(guò)分析系統(tǒng)如何處理用戶發(fā)起的讀命令,,觀察read( )命令從VFS到具體的文件系統(tǒng)FAT32的實(shí)現(xiàn),,轉(zhuǎn)化為具體的每一個(gè)Request的整個(gè)過(guò)程,系統(tǒng)的優(yōu)化可從以下幾個(gè)方面進(jìn)行,。
2.1 Block讀操作改進(jìn)
??? 根據(jù)1.4節(jié)針對(duì)block_read_full_page( )的描述,,實(shí)際上是根據(jù)實(shí)際文件系統(tǒng)定義的Block大小,將一個(gè)page轉(zhuǎn)化為多個(gè)Block的讀動(dòng)作,。而在FAT32的具體實(shí)現(xiàn)中,,根據(jù)/linux-2.4.x/fs/fat/inode.c文件中的描述,Block size等于logic_sector_size的大小,,即邏輯扇區(qū)大小,。
??? 在FAT文件系統(tǒng)的定義中,邏輯扇區(qū)是為了統(tǒng)一不同硬盤的物理扇區(qū)而設(shè)置的,。由于一般物理扇區(qū)最小為512B,,因此在FAT32普遍實(shí)現(xiàn)中,邏輯扇區(qū)設(shè)置為512B,。
??? 而當(dāng)前大容量的硬盤系統(tǒng),,其物理扇區(qū)普遍大于4KB。在這種情形下,,根據(jù)Linux上的FAT32實(shí)現(xiàn),,一個(gè)4KB或者以上的物理扇區(qū)的讀,被人為地劃分為8次512B邏輯扇區(qū)的讀命令,。而由于物理原因,,可知道物理扇區(qū)將是磁盤上最小的尋址單位,也就是說(shuō),,在最壞的情況下(即下層__make_request沒(méi)有及時(shí)判斷出這些buffer是可以合并的),,向一個(gè)以4KB為扇區(qū)的硬盤發(fā)出一個(gè)page(4KB)的讀命令,最后將由8次同一個(gè)扇區(qū)的讀動(dòng)作來(lái)實(shí)現(xiàn),。
??? 針對(duì)block_read_full_page劃分的不合理,,可以嘗試用重寫block_read_full_page來(lái)實(shí)現(xiàn),即擴(kuò)大Block為4KB,。這樣即可以認(rèn)為,,一個(gè)Linux的page讀將按照一次Block讀來(lái)完成,。同時(shí)由于Linux內(nèi)存管理都以4KB大小的page作為基本單位,這樣在所有文件系統(tǒng)的內(nèi)部,,將以4KB為最小單位進(jìn)行讀取,,把跨4KB的特殊情況留給下層驅(qū)動(dòng)來(lái)完成拆分(由于大容量硬盤的應(yīng)用目標(biāo),這種情況幾乎不會(huì)出現(xiàn)),。因此,,Block改進(jìn)就是通過(guò)改進(jìn)Block的大小,進(jìn)行合并過(guò)多的拆分,,來(lái)達(dá)到提高系統(tǒng)的讀性能的作用,。
2.2 預(yù)讀機(jī)制控制
??? Linux系統(tǒng)上的FAT32文件系統(tǒng)實(shí)現(xiàn),依然強(qiáng)烈依賴著預(yù)讀機(jī)制來(lái)完成實(shí)際的讀操作,。這是由于Linux最初是以PC機(jī)為設(shè)計(jì)目標(biāo)的,,即存在內(nèi)存交換文件和各種緩沖機(jī)制來(lái)對(duì)有限的資源進(jìn)行無(wú)限的邏輯擴(kuò)展[5]
??? 這種多重緩沖的設(shè)計(jì)機(jī)制,,非常適合應(yīng)用程序/控制命令流存儲(chǔ)的磁盤管理,。然而,在本嵌入式系統(tǒng)" title="嵌入式系統(tǒng)">嵌入式系統(tǒng)設(shè)計(jì)中,,F(xiàn)AT32作為數(shù)據(jù)存儲(chǔ)空間,,數(shù)據(jù)存儲(chǔ)相對(duì)有序,并且可預(yù)測(cè)性比較強(qiáng),。因此,,這種抽象帶來(lái)的好處不是特別的明顯。同時(shí)由于存在多級(jí)緩沖,,尤其是硬盤系統(tǒng)的多級(jí)緩沖,,會(huì)造成以下幾個(gè)缺點(diǎn):
??? (1)因多次數(shù)據(jù)搬移,造成性能下降,。對(duì)于嵌入式系統(tǒng)尤其是消費(fèi)類設(shè)備,,由于成本的原因,其總線帶寬(包括內(nèi)存總線與外部總線)都是相對(duì)有限的,,因此,,在這類總線中的數(shù)據(jù)搬移造成的延遲,是不能忽略的(而PC機(jī)的設(shè)計(jì)中,,由于高速的內(nèi)存吞吐量,,往往這個(gè)延遲是可以忽略的)。
??? (2)緩沖和cache的存在,,會(huì)造成具體動(dòng)作更多不可預(yù)測(cè)性,這違反了實(shí)時(shí)系統(tǒng)的需求,。因?yàn)榍度胧较到y(tǒng)很多層面都有一定的實(shí)時(shí)性要求,;其次,,增加了硬盤電源管理的難度,即硬盤狀態(tài)將頻繁切換,,減少有機(jī)會(huì)進(jìn)入省電的Idle模式及更加省電的Sleep模式,,浪費(fèi)了硬盤自身APM(Advanced Power Management)帶來(lái)的好處。
??? 因此,,在本設(shè)計(jì)中需要對(duì)預(yù)讀機(jī)制進(jìn)行管理,,甚至去除預(yù)讀機(jī)制。實(shí)際上是對(duì)文件讀實(shí)現(xiàn)中的do_generic_file_read( )函數(shù)進(jìn)行改造,,去除了預(yù)讀判斷機(jī)制,,采用直接調(diào)用方式。
2.3 Page機(jī)制改進(jìn)
??? 整個(gè)文件系統(tǒng)的讀操作,,將以page為單位進(jìn)行相應(yīng)的規(guī)劃,,即以4 096B為考慮對(duì)象。而在真實(shí)的磁盤系統(tǒng)中,,由于大容量磁盤的普及,,4 096B幾乎成了最小的物理扇區(qū)。面對(duì)這樣的磁盤系統(tǒng),,其FAT文件讀寫具體實(shí)現(xiàn),,實(shí)際上不能充分利用底層硬件以及驅(qū)動(dòng)程序提供的各種優(yōu)化措施,如DMA等[6-7],。
??? 針對(duì)這樣的思路,,需要引入多個(gè)page讀操作的相關(guān)性,即在fat_readpage( )之前增加多個(gè)page合并的判斷,??梢越梃bRequest合并的方式進(jìn)行page合并,即通過(guò)目標(biāo)地址判斷的方式進(jìn)行合并部分Page讀動(dòng)作,。
3 優(yōu)化實(shí)例
??? 在實(shí)際優(yōu)化中,,采用了前面提到的三種優(yōu)化策略,在某一個(gè)實(shí)際的系統(tǒng)上進(jìn)行相應(yīng)的測(cè)試,取得了較好的效果,。
??? 圖4是一個(gè)ARM嵌入式系統(tǒng)的詳細(xì)測(cè)試結(jié)果,。該測(cè)試的物理實(shí)施條件是:

????????????????????
??? ARM7TDMI的系統(tǒng),CPU頻率88MHz,,8KB i-cache/no d-cache,;硬盤掛接的EMIF為44MHz,16bit位寬,;SDRAM為32bit位寬,,運(yùn)行在88MHz下;硬盤為4 200轉(zhuǎn),20GB,;系統(tǒng)采用μCLinux 2.4.18,。
測(cè)試采用發(fā)起read( )用戶讀操作進(jìn)行相應(yīng)的測(cè)試。其中每個(gè)測(cè)試采用不同大小的buffer來(lái)觀察實(shí)際優(yōu)化前/后的訪問(wèn)速率比較,。
??? 從測(cè)試結(jié)果可以看出,,在采用buffer為8KB進(jìn)行文件讀時(shí),可以取得超過(guò)50%以上的訪問(wèn)性能的提升,。同時(shí)在這種測(cè)試條件下,,也獲得了最好的讀性能,達(dá)到2MB/s以上的測(cè)試性能,。這個(gè)讀性能基本上已可以滿足很多多媒體系統(tǒng)所需要的數(shù)據(jù)流要求,。
??? 同時(shí)在這種優(yōu)化策略下,應(yīng)用系統(tǒng)可以有針對(duì)性地優(yōu)化應(yīng)用程序中的各種讀操作,。建議采用4KB或者8KB的buffer,,使系統(tǒng)運(yùn)行在最佳的狀態(tài)。
??? 本文仔細(xì)分析了Linux的FAT32實(shí)現(xiàn)中讀操作的具體實(shí)現(xiàn)過(guò)程,,針對(duì)FAT32系統(tǒng)實(shí)現(xiàn)的缺陷,,提出了多種優(yōu)化策略,并在某一個(gè)嵌入式設(shè)備中進(jìn)行具體的優(yōu)化和測(cè)試,,取得了一定的性能提升,。最后給出了對(duì)應(yīng)用程序設(shè)計(jì)的建議。
??? 文件系統(tǒng)優(yōu)化是一個(gè)非常深?yuàn)W的課題,,尤其是嵌入式系統(tǒng)的文件系統(tǒng)設(shè)計(jì),,針對(duì)不同的應(yīng)用,應(yīng)有不同的優(yōu)化目標(biāo),。本文介紹了初步的優(yōu)化方法,,在某一個(gè)具體的嵌入式設(shè)備上進(jìn)行相應(yīng)的實(shí)踐,取得了良好的效果,。

參考文獻(xiàn)
[1] 毛德操,,胡希明. Linux內(nèi)核情景分析[M]. 杭州: 浙江大學(xué)出版社, 2001.
[2]?郭玉東. Linux操作系統(tǒng)結(jié)構(gòu)分析[M].西安:西安電子科技大學(xué)出版社,2002.
[3]?WILLIAM D R, HEYBRUCK F. An introduce to FAT 16/FAT?32 file systems. Hitachi Global Storage Technologies,Charlotte, NC. 2005.
[4]?張明亮,,張宗杰. 淺析FAT32文件系統(tǒng)[J]. 計(jì)算機(jī)與數(shù)字工程,,2005,33(1):56-59.
[5]?吳嫻. 嵌入式Linux文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,,2005,,(9):111-112.
[6]?袁春旭,高飛.TMS320F206對(duì)基于FAT32文件系統(tǒng)IDE硬盤的文件操作[J].現(xiàn)代電子技術(shù),,2004,,(6):88-91.
[7]?楊道良,,任曉霞. Linux下連續(xù)媒體文件系統(tǒng)研究[J].計(jì)算機(jī)工程與應(yīng)用,2000,,(8):5-10.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。