本公開涉及計算機領(lǐng)域,尤其涉及數(shù)據(jù)寫入方法及裝置。
背景技術(shù):
文件系統(tǒng)是一種用來存儲和組織計算機文件、目錄及其包含的數(shù)據(jù)的方法,它使文件、目錄以及數(shù)據(jù)的查找和訪問得到簡化。fuse(filesysteminuserspace,用戶空間文件系統(tǒng))為開發(fā)者提供了一個用戶態(tài)的文件系統(tǒng)框架,以及一組用于實現(xiàn)完整文件系統(tǒng)所需的應(yīng)用程序編程接口(applicationprogramminginterface,api),開發(fā)人員只需要實現(xiàn)fuse所定義的幾種接口,就可以方便地在用戶態(tài)實現(xiàn)一個新的文件系統(tǒng),因此極大提高了開發(fā)文件系統(tǒng)的工作效率。
目前,在一些操作系統(tǒng)中,比如android(安卓)系統(tǒng),為了安全方便的管理存儲模塊,比如sdcard(securedigitalmemorycard,安全數(shù)碼卡)的數(shù)據(jù),可以將sdcard掛在基于用戶態(tài)開發(fā)的fuse文件系統(tǒng)中。
然而,在基于用戶態(tài)開發(fā)的fuse文件系統(tǒng)下,內(nèi)核模塊會將應(yīng)用程序的寫入請求按照單個存儲頁的大小來進(jìn)行寫入,即,內(nèi)核模塊會對寫入的每個存儲頁大小的數(shù)據(jù)調(diào)用一次用戶態(tài)文件系統(tǒng)的寫操作,那么例如單個存儲頁的大小為4kb,針對一個64kb數(shù)據(jù)的寫請求,可能將會觸發(fā)16次的用戶態(tài)文件系統(tǒng)的寫操作,效率較低,寫入數(shù)據(jù)的速度較慢。
技術(shù)實現(xiàn)要素:
為克服相關(guān)技術(shù)中存在的問題,本公開提供一種數(shù)據(jù)寫入方法及裝置,用于提高基于用戶態(tài)開發(fā)的fuse文件系統(tǒng)下,寫入數(shù)據(jù)的效率。
根據(jù)本公開實施例的第一方面,提供一種數(shù)據(jù)寫入方法,應(yīng)用于電子設(shè)備,包括:
檢測內(nèi)存中的待存儲數(shù)據(jù)的大小是否達(dá)到預(yù)設(shè)數(shù)據(jù)量,其中,所述預(yù)設(shè)數(shù)據(jù)量大于存儲模塊中單個存儲頁的大??;
在所述待存儲數(shù)據(jù)的大小達(dá)到預(yù)設(shè)數(shù)據(jù)量時,調(diào)用基于用戶態(tài)開發(fā)的用戶空間文件系統(tǒng)fuse的寫操作;
根據(jù)所述寫操作,將所述待存儲數(shù)據(jù)寫入所述存儲模塊中。
可選的,所述方法還包括:
在掛載過程中通過掛載選項設(shè)置所述預(yù)設(shè)數(shù)據(jù)量。
可選的,所述預(yù)設(shè)數(shù)據(jù)量是所述單個存儲頁的大小的整數(shù)倍。
可選的,所述方法還包括:
在所述待存儲數(shù)據(jù)的大小未達(dá)到預(yù)設(shè)數(shù)據(jù)量時,獲得保存操作;
根據(jù)所述保存操作,調(diào)用基于用戶態(tài)開發(fā)的用戶空間文件系統(tǒng)fuse的寫操作;
將所述待存儲數(shù)據(jù)寫入所述存儲模塊中。
根據(jù)本公開實施例的第二方面,提供一種數(shù)據(jù)寫入裝置,應(yīng)用于電子設(shè)備,包括:
檢測模塊,被配置為檢測內(nèi)存中的待存儲數(shù)據(jù)的大小是否達(dá)到預(yù)設(shè)數(shù)據(jù)量,其中,所述預(yù)設(shè)數(shù)據(jù)量大于存儲模塊中單個存儲頁的大??;
第一調(diào)用模塊,被配置為在所述待存儲數(shù)據(jù)的大小達(dá)到預(yù)設(shè)數(shù)據(jù)量時,調(diào)用基于用戶態(tài)開發(fā)的用戶空間文件系統(tǒng)fuse的寫操作;
第一寫入模塊,被配置為根據(jù)所述寫操作,將所述待存儲數(shù)據(jù)寫入所述存儲模塊中。
可選的,所述裝置還包括:
設(shè)置模塊,被配置為在掛載過程中通過掛載選項設(shè)置所述預(yù)設(shè)數(shù)據(jù)量。
可選的,所述預(yù)設(shè)數(shù)據(jù)量是所述單個存儲頁的大小的整數(shù)倍。
可選的,所述裝置還包括:
獲得模塊,被配置為在所述待存儲數(shù)據(jù)的大小未達(dá)到預(yù)設(shè)數(shù)據(jù)量時,獲得保存操作;
第二調(diào)用模塊,被配置為根據(jù)所述保存操作,調(diào)用基于用戶態(tài)開發(fā)的用戶空間文件系統(tǒng)fuse的寫操作;
第二寫入模塊,被配置為將所述待存儲數(shù)據(jù)寫入所述存儲模塊中。
根據(jù)本公開實施例的第三方面,提供一種數(shù)據(jù)寫入裝置,包括:
處理器;
用于存儲處理器可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:檢測內(nèi)存中的待存儲數(shù)據(jù)的大小是否達(dá)到預(yù)設(shè)數(shù)據(jù)量,其中,所述預(yù)設(shè)數(shù)據(jù)量大于存儲模塊中單個存儲頁的大?。?/p>
在所述待存儲數(shù)據(jù)的大小達(dá)到預(yù)設(shè)數(shù)據(jù)量時,調(diào)用基于用戶態(tài)開發(fā)的用戶空間文件系統(tǒng)fuse的寫操作;
根據(jù)所述寫操作,將所述待存儲數(shù)據(jù)寫入所述存儲模塊中。
根據(jù)本公開實施例的第四方面,提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序指令,該程序指令被處理器執(zhí)行時實現(xiàn)本公開第一方面所提供的數(shù)據(jù)寫入方法的步驟。
本公開的實施例提供的技術(shù)方案可以包括以下有益效果:可以檢測內(nèi)存中的待存儲數(shù)據(jù)的大小是否達(dá)到了預(yù)設(shè)數(shù)據(jù)量,預(yù)設(shè)數(shù)據(jù)量可以大于存儲模塊中單個存儲頁的大小,那么在待存儲數(shù)據(jù)的大小達(dá)到預(yù)設(shè)數(shù)據(jù)量時,再調(diào)用基于用戶態(tài)開發(fā)的fuse文件系統(tǒng)的寫操作,然后根據(jù)寫操作將待存儲數(shù)據(jù)寫入存儲模塊中。這樣,內(nèi)存中的待存儲數(shù)據(jù)會在累積到設(shè)定的預(yù)設(shè)數(shù)據(jù)量之后才會觸發(fā)用戶態(tài)的寫操作,無需再對每個存儲頁大小的數(shù)據(jù)進(jìn)行寫操作,提高了fuse文件系統(tǒng)寫操作的效率。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實施例,并與說明書一起用于解釋本公開的原理。
圖1是根據(jù)一示例性實施例示出的一種數(shù)據(jù)寫入方法的流程圖。
圖2是根據(jù)一示例性實施例示出的一種數(shù)據(jù)寫入裝置的框圖。
圖3是根據(jù)一示例性實施例示出的一種數(shù)據(jù)寫入裝置的另一框圖。
圖4是根據(jù)一示例性實施例示出的一種數(shù)據(jù)寫入裝置的另一框圖。
圖5是根據(jù)一示例性實施例示出的一種數(shù)據(jù)寫入裝置的框圖。
具體實施方式
這里將詳細(xì)地對示例性實施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本公開相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。
本公開實施例中的電子設(shè)備例如可以是基于android系統(tǒng)的pc(personalcomputer,個人計算機)、pad(personaldigitalassistant,平板電腦)、手機等等不同的電子設(shè)備,本公開實施例對此不作限定。
圖1是根據(jù)一示例性實施例示出的一種數(shù)據(jù)寫入方法的流程圖,如圖1所示,該數(shù)據(jù)寫入方法用于電子設(shè)備中,包括以下步驟。
在步驟s11中,檢測內(nèi)存中的待存儲數(shù)據(jù)的大小是否達(dá)到預(yù)設(shè)數(shù)據(jù)量,其中,預(yù)設(shè)數(shù)據(jù)量大于存儲模塊中單個存儲頁的大小。
在步驟s12中,在待存儲數(shù)據(jù)的大小達(dá)到預(yù)設(shè)數(shù)據(jù)量時,調(diào)用基于用戶態(tài)開發(fā)的用戶空間文件系統(tǒng)fuse的寫操作。
在步驟s13中,根據(jù)寫操作,將待存儲數(shù)據(jù)寫入存儲模塊中。
存儲模塊比如可以是sdcard等內(nèi)置在電子設(shè)備中的存儲器,能夠用來存儲文件和數(shù)據(jù)。
預(yù)設(shè)數(shù)據(jù)量可以是預(yù)先設(shè)定的能夠觸發(fā)用戶態(tài)的寫操作的數(shù)據(jù)的量。對于預(yù)設(shè)數(shù)據(jù)量的值究竟是多少,本公開實施例不作限定,只要大于存儲模塊中單個存儲頁的大小即可。例如,存儲模塊中單個存儲頁,也就是一個page的大小為4kb,那么可以設(shè)置預(yù)設(shè)數(shù)據(jù)量為8kb、16kb、64kb,等等。
例如,可以設(shè)定預(yù)設(shè)數(shù)據(jù)量為128kb,那么寫入數(shù)據(jù)時,可以檢測內(nèi)存中待存儲數(shù)據(jù)的大小是否達(dá)到了128kb,在內(nèi)存中存儲的待存儲數(shù)據(jù)達(dá)到了128kb時,才觸發(fā)內(nèi)核模塊(即kernelfuse模塊,能夠基于寫入請求將數(shù)據(jù)從內(nèi)存寫入存儲模塊)進(jìn)行用戶態(tài)的寫操作,進(jìn)而將128kb的數(shù)據(jù)寫入存儲模塊(比如sdcard)中??梢?,相較于以存儲頁大小的數(shù)據(jù)量觸發(fā)寫操作,根據(jù)設(shè)置的預(yù)設(shè)數(shù)據(jù)量為依據(jù)來觸發(fā)用戶態(tài)的寫操作能夠有效減少寫操作觸發(fā)的次數(shù),進(jìn)而提高了數(shù)據(jù)寫入的效率,同時也減輕了內(nèi)核模塊的處理負(fù)擔(dān)。
可選的,可以在掛載過程中通過掛載選項設(shè)置預(yù)設(shè)數(shù)據(jù)量。
應(yīng)用程序每次對基于fuse開發(fā)的文件系統(tǒng)的文件寫入必先經(jīng)過內(nèi)核模塊,內(nèi)核模塊有權(quán)限決定何時將數(shù)據(jù)寫入到用戶態(tài)文件系統(tǒng)的,因此可以在對存儲模塊進(jìn)行掛載的過程中,通過掛載選項來設(shè)置預(yù)設(shè)數(shù)據(jù)量。
比如,要設(shè)置預(yù)設(shè)數(shù)據(jù)量為128kb,在structfuse_init_out結(jié)構(gòu)中有一個max_write變量,那么可以直接將128kb賦值給max_write變量。這樣,可以較為方便地對預(yù)設(shè)數(shù)據(jù)量進(jìn)行設(shè)置。
可選的,預(yù)設(shè)數(shù)據(jù)量可以是單個存儲頁的大小的整數(shù)倍。
例如,單個存儲頁(page)的大小為4kb,那么可以設(shè)置預(yù)設(shè)數(shù)據(jù)量為8kb、16kb、64kb、128kb,等等。這樣,可以較好地將待存儲數(shù)據(jù)寫入存儲模塊。
可選的,在待存儲數(shù)據(jù)的大小未達(dá)到預(yù)設(shè)數(shù)據(jù)量時,還可以獲得保存操作,那么可以根據(jù)保存操作,調(diào)用基于用戶態(tài)開發(fā)的用戶空間文件系統(tǒng)fuse的寫操作,然后將待存儲數(shù)據(jù)寫入存儲模塊中。
也即是說,寫入請求對應(yīng)的待寫入數(shù)據(jù)有可能沒有達(dá)到預(yù)設(shè)數(shù)據(jù)量,那么如果用戶進(jìn)行了保存的操作,依然可以觸發(fā)用戶態(tài)的寫操作,將待寫入數(shù)據(jù)寫入存儲模塊中。
例如,用戶的寫入請求對應(yīng)的待寫入數(shù)據(jù)為64kb,預(yù)設(shè)數(shù)據(jù)量為128kb,若用戶進(jìn)行了保存操作,可以觸發(fā)內(nèi)核模塊進(jìn)行用戶態(tài)的寫操作,將沒有達(dá)到預(yù)設(shè)數(shù)據(jù)量的64kb的待存儲數(shù)據(jù)寫入存儲模塊中。通過這樣的方式,即使用戶寫入的數(shù)據(jù)沒有達(dá)到預(yù)設(shè)數(shù)據(jù)量,也能通過保存操作來寫入數(shù)據(jù),電子設(shè)備的數(shù)據(jù)處理能力較強。
圖2是根據(jù)一示例性實施例示出的一種數(shù)據(jù)寫入裝置100的框圖。參照圖2,該裝置100包括檢測模塊121,第一調(diào)用模塊122和第一寫入模塊123。
該檢測模塊121被配置為檢測內(nèi)存中的待存儲數(shù)據(jù)的大小是否達(dá)到預(yù)設(shè)數(shù)據(jù)量,其中,所述預(yù)設(shè)數(shù)據(jù)量大于存儲模塊中單個存儲頁的大小;
該第一調(diào)用模塊122被配置為在所述待存儲數(shù)據(jù)的大小達(dá)到預(yù)設(shè)數(shù)據(jù)量時,調(diào)用基于用戶態(tài)開發(fā)的用戶空間文件系統(tǒng)fuse的寫操作;
該第一寫入模塊123被配置為根據(jù)所述寫操作,將所述待存儲數(shù)據(jù)寫入所述存儲模塊中。
可選的,如圖3所示,裝置100還包括:
設(shè)置模塊124,被配置為在掛載過程中通過掛載選項設(shè)置所述預(yù)設(shè)數(shù)據(jù)量。
可選的,所述預(yù)設(shè)數(shù)據(jù)量是所述單個存儲頁的大小的整數(shù)倍。
可選的,如圖4所示,裝置100還包括:
獲得模塊125,被配置為在所述待存儲數(shù)據(jù)的大小未達(dá)到預(yù)設(shè)數(shù)據(jù)量時,獲得保存操作;
第二調(diào)用模塊126,被配置為根據(jù)所述保存操作,調(diào)用基于用戶態(tài)開發(fā)的用戶空間文件系統(tǒng)fuse的寫操作;
第二寫入模塊127,被配置為將所述待存儲數(shù)據(jù)寫入所述存儲模塊中。
關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
本公開還提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序指令,該程序指令被處理器執(zhí)行時實現(xiàn)本公開提供的數(shù)據(jù)寫入方法的步驟。
圖5是根據(jù)一示例性實施例示出的一種數(shù)據(jù)寫入裝置500的框圖。例如,裝置500可以是移動電話,計算機,數(shù)字廣播終端,消息收發(fā)設(shè)備,游戲控制臺,平板設(shè)備,醫(yī)療設(shè)備,健身設(shè)備,個人數(shù)字助理等。
參照圖5,裝置500可以包括以下一個或多個組件:處理組件502,存儲器504,電力組件506,多媒體組件508,音頻組件510,輸入/輸出(i/o)的接口512,傳感器組件514,以及通信組件516。
處理組件502通??刂蒲b置500的整體操作,諸如與顯示,電話呼叫,數(shù)據(jù)通信,相機操作和記錄操作相關(guān)聯(lián)的操作。處理組件502可以包括一個或多個處理器520來執(zhí)行指令,以完成上述的數(shù)據(jù)寫入方法的全部或部分步驟。此外,處理組件502可以包括一個或多個模塊,便于處理組件502和其他組件之間的交互。例如,處理組件502可以包括多媒體模塊,以方便多媒體組件508和處理組件502之間的交互。
存儲器504被配置為存儲各種類型的數(shù)據(jù)以支持在裝置500的操作。這些數(shù)據(jù)的示例包括用于在裝置500上操作的任何應(yīng)用程序或方法的指令,聯(lián)系人數(shù)據(jù),電話簿數(shù)據(jù),消息,圖片,視頻等。存儲器504可以由任何類型的易失性或非易失性存儲設(shè)備或者它們的組合實現(xiàn),如靜態(tài)隨機存取存儲器(sram),電可擦除可編程只讀存儲器(eeprom),可擦除可編程只讀存儲器(eprom),可編程只讀存儲器(prom),只讀存儲器(rom),磁存儲器,快閃存儲器,磁盤或光盤。
電力組件506為裝置500的各種組件提供電力。電力組件506可以包括電源管理系統(tǒng),一個或多個電源,及其他與為裝置500生成、管理和分配電力相關(guān)聯(lián)的組件。
多媒體組件508包括在所述裝置500和用戶之間的提供一個輸出接口的屏幕。在一些實施例中,屏幕可以包括液晶顯示器(lcd)和觸摸面板(tp)。如果屏幕包括觸摸面板,屏幕可以被實現(xiàn)為觸摸屏,以接收來自用戶的輸入信號。觸摸面板包括一個或多個觸摸傳感器以感測觸摸、滑動和觸摸面板上的手勢。所述觸摸傳感器可以不僅感測觸摸或滑動動作的邊界,而且還檢測與所述觸摸或滑動操作相關(guān)的持續(xù)時間和壓力。在一些實施例中,多媒體組件508包括一個前置攝像頭和/或后置攝像頭。當(dāng)裝置500處于操作模式,如拍攝模式或視頻模式時,前置攝像頭和/或后置攝像頭可以接收外部的多媒體數(shù)據(jù)。每個前置攝像頭和后置攝像頭可以是一個固定的光學(xué)透鏡系統(tǒng)或具有焦距和光學(xué)變焦能力。
音頻組件510被配置為輸出和/或輸入音頻信號。例如,音頻組件510包括一個麥克風(fēng)(mic),當(dāng)裝置500處于操作模式,如呼叫模式、記錄模式和語音識別模式時,麥克風(fēng)被配置為接收外部音頻信號。所接收的音頻信號可以被進(jìn)一步存儲在存儲器504或經(jīng)由通信組件516發(fā)送。在一些實施例中,音頻組件510還包括一個揚聲器,用于輸出音頻信號。
i/o接口512為處理組件502和外圍接口模塊之間提供接口,上述外圍接口模塊可以是鍵盤,點擊輪,按鈕等。這些按鈕可包括但不限于:主頁按鈕、音量按鈕、啟動按鈕和鎖定按鈕。
傳感器組件514包括一個或多個傳感器,用于為裝置500提供各個方面的狀態(tài)評估。例如,傳感器組件514可以檢測到裝置500的打開/關(guān)閉狀態(tài),組件的相對定位,例如所述組件為裝置500的顯示器和小鍵盤,傳感器組件514還可以檢測裝置500或裝置500一個組件的位置改變,用戶與裝置500接觸的存在或不存在,裝置500方位或加速/減速和裝置500的溫度變化。傳感器組件514可以包括接近傳感器,被配置用來在沒有任何的物理接觸時檢測附近物體的存在。傳感器組件514還可以包括光傳感器,如cmos或ccd圖像傳感器,用于在成像應(yīng)用中使用。在一些實施例中,該傳感器組件514還可以包括加速度傳感器,陀螺儀傳感器,磁傳感器,壓力傳感器或溫度傳感器。
通信組件516被配置為便于裝置500和其他設(shè)備之間有線或無線方式的通信。裝置500可以接入基于通信標(biāo)準(zhǔn)的無線網(wǎng)絡(luò),如wifi,2g或3g,或它們的組合。在一個示例性實施例中,通信組件516經(jīng)由廣播信道接收來自外部廣播管理系統(tǒng)的廣播信號或廣播相關(guān)信息。在一個示例性實施例中,所述通信組件516還包括近場通信(nfc)模塊,以促進(jìn)短程通信。例如,在nfc模塊可基于射頻識別(rfid)技術(shù),紅外數(shù)據(jù)協(xié)會(irda)技術(shù),超寬帶(uwb)技術(shù),藍(lán)牙(bt)技術(shù)和其他技術(shù)來實現(xiàn)。
在示例性實施例中,裝置500可以被一個或多個應(yīng)用專用集成電路(asic)、數(shù)字信號處理器(dsp)、數(shù)字信號處理設(shè)備(dspd)、可編程邏輯器件(pld)、現(xiàn)場可編程門陣列(fpga)、控制器、微控制器、微處理器或其他電子元件實現(xiàn),用于執(zhí)行上述數(shù)據(jù)寫入方法。
在示例性實施例中,還提供了一種包括指令的非臨時性計算機可讀存儲介質(zhì),例如包括指令的存儲器504,上述指令可由裝置500的處理器520執(zhí)行以完成上述數(shù)據(jù)寫入方法。例如,所述非臨時性計算機可讀存儲介質(zhì)可以是rom、隨機存取存儲器(ram)、cd-rom、磁帶、軟盤和光數(shù)據(jù)存儲設(shè)備等。
本領(lǐng)域技術(shù)人員在考慮說明書及實踐本公開后,將容易想到本公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本公開并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本公開的范圍僅由所附的權(quán)利要求來限制。