本公開涉及信息技術領域,尤其涉及存儲空間預留方法及裝置。
背景技術:
隨著科學技術的不斷發展,電子技術也得到了飛速發展,各種各樣的電子設備已經成為人們娛樂生活中不可或缺的一部分,比如,手機、pad(personaldigitalassistant,平板電腦),等等,這些電子設備豐富了人們的生活。電子設備都搭載有操作系統,android(安卓)系統是目前較為主流的操作系統之一。
在android系統中,需要某些較為重要的核心進程能夠正常運行才能保證系統或應用程序的正常工作。比如,存儲空間滿了,可能這時候需要文件管理器能夠正常工作才能讓文件管理器有機會清理存儲空間,而文件管理器需要記錄一些核心信息才能正常工作,而如果存儲空間的不足使得能夠讓文件管理器正常工作的核心進程無法運行,將可能導致文件管理器無法工作,也就無法對存儲空間進行清理。
技術實現要素:
為克服相關技術中存在的問題,本公開提供一種存儲空間預留方法及裝置,用于解決一些特定的進程因存儲空間不足無法正常運行的技術問題。
根據本公開實施例的第一方面,提供一種存儲空間預留方法,應用于電子設備,包括:
在對所述電子設備的存儲單元進行掛載分區之前,確定待預留空間的分區;
根據預設空間大小以及所述分區總的空間大小,確定預留空間大小;
按照所述預留空間大小,在所述分區中預留存儲空間,其中,具有指定權限的進程能夠使用預留的存儲空間。
可選的,根據預設空間大小以及所述分區總的空間大小,確定預留空間大小,包括:
根據所述分區總的空間大小,確定預留空間閾值;
在所述預留空間閾值小于所述預設空間大小時,確定所述預留空間大小的值與所述預留空間閾值相同;
在所述預留空間閾值大于或等于所述預設空間大小時,確定所述預留空間大小的值與所述預設空間大小的值相同。
可選的,在確定待預留空間的分區之后,還包括:
確定所述分區使用的文件系統為擴展文件系統ext。
可選的,所述方法還包括:
在用來記錄各個分區文件系統相關的掛載信息的文件fstab中設置待預留空間的分區及所述預設空間大小。
可選的,在按照所述預留空間大小,在所述分區中預留存儲空間之后,還包括:
在目標進程請求使用預留的存儲空間時,確定所述目標進程是否具有指定的權限;
在所述目標進程具有指定的權限時,在預留的存儲空間中為所述進程分配空間。
根據本公開實施例的第二方面,提供一種存儲空間預留裝置,應用于電子設備,包括:
第一確定模塊,被配置為在對所述電子設備的存儲單元進行掛載分區之前,確定待預留空間的分區;
第二確定模塊,被配置為根據預設空間大小以及所述分區總的空間大小,確定預留空間大小;
預留模塊,被配置為按照所述預留空間大小,在所述分區中預留存儲空間,其中,具有指定權限的進程能夠使用預留的存儲空間。
可選的,所述第二確定模塊包括:
第一確定子模塊,被配置為根據所述分區總的空間大小,確定預留空間閾值;
第二確定子模塊,被配置為在所述預留空間閾值小于所述預設空間大小時,確定所述預留空間大小的值與所述預留空間閾值相同;
第三確定子模塊,被配置為在所述預留空間閾值大于或等于所述預設空間大小時,確定所述預留空間大小的值與所述預設空間大小的值相同。
可選的,所述裝置還包括:
第三確定模塊,被配置為在確定待預留空間的分區之后,確定所述分區使用的文件系統為擴展文件系統ext。
可選的,所述裝置還包括:
設置模塊,被配置為在用來記錄各個分區文件系統相關的掛載信息的文件fstab中設置待預留空間的分區及所述預設空間大小。
可選的,所述裝置還包括:
第四確定模塊,被配置為在按照所述預留空間大小,在所述分區中預留存儲空間之后,在目標進程請求使用預留的存儲空間時,確定所述目標進程是否具有指定的權限;
分配模塊,被配置為在所述目標進程具有指定的權限時,在預留的存儲空間中為所述進程分配空間。
根據本公開實施例的第三方面,提供一種存儲空間預留裝置,包括:
處理器;
用于存儲處理器可執行指令的存儲器;
其中,所述處理器被配置為:
在對所述電子設備的存儲單元進行掛載分區之前,確定待預留空間的分區;
根據預設空間大小以及所述分區總的空間大小,確定預留空間大小;
按照所述預留空間大小,在所述分區中預留存儲空間,其中,具有指定權限的進程能夠使用預留的存儲空間。
根據本公開實施例的第四方面,提供一種計算機可讀存儲介質,其上存儲有計算機程序指令,該程序指令被處理器執行時實現本公開第一方面所提供的存儲空間預留方法的步驟。
本公開的實施例提供的技術方案可以包括以下有益效果:可以預留一定的存儲空間來保障具有指定權限的進程的正常運行。可以根據待預留空間的分區總的空間大小以及設定的預設空間大小來確定預留空間大小,再按照預留空間大小在對應分區中預留存儲空間,預留的空間可以供具有指定權限的進程使用。這樣,可以較好地保障一些特定的進程的正常運行,避免了因特定的進程無法運行而導致的系統或應用無法工作的現象,提高了電子設備系統的性能以及電子設備的可靠性。
應當理解的是,以上的一般描述和后文的細節描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構成本說明書的一部分,示出了符合本公開的實施例,并與說明書一起用于解釋本公開的原理。
圖1是根據一示例性實施例示出的一種存儲空間預留方法的流程圖。
圖2是根據一示例性實施例示出的一種存儲空間預留裝置的框圖。
圖3是根據一示例性實施例示出的一種存儲空間預留裝置的另一框圖。
圖4是根據一示例性實施例示出的一種存儲空間預留裝置的另一框圖。
圖5是根據一示例性實施例示出的一種存儲空間預留裝置的另一框圖。
圖6是根據一示例性實施例示出的一種存儲空間預留裝置的另一框圖。
圖7是根據一示例性實施例示出的一種存儲空間預留裝置的框圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本公開相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。
本公開實施例中的電子設備例如可以是基于android系統的pc、pad、手機等等不同的電子設備,本公開實施例對此不作限定。
圖1是根據一示例性實施例示出的一種存儲空間預留方法的流程圖,如圖1所示,該存儲空間預留方法用于電子設備中,包括以下步驟。
在步驟s11中,在對電子設備的存儲單元進行掛載分區之前,確定待預留空間的分區。
在步驟s12中,根據預設空間大小以及分區總的空間大小,確定預留空間大小。
在步驟s13中,按照預留空間大小,在分區中預留存儲空間,其中,具有指定權限的進程能夠使用預留的存儲空間。
本公開實施例中,對于具有指定權限的進程究竟是哪些進程不作限定。比如,可以是申明了cap_sys_resource能力的進程和root進程,那么可以在創建相應進程時通過調用類似capset函數將對應的進程設置上cap_sys_resource能力。
待預留空間的分區和預設空間大小可以通過編程語句進行設定,通過解析便能夠確定待預留空間的分區及預設空間大小,然后根據預設空間大小和待預留空間的分區總的空間大小,確定預留空間大小,比如最終確定出的預留空間大小為128m,那么可以在待預留空間的分區中預留128m的存儲空間,使得具有指定權限的進程能夠使用預留的這128m的存儲空間。通過這樣的方式,可以較好地保障一些特定的進程的正常運行,避免了因特定的進程無法運行而導致的系統或應用無法工作的現象,提高了電子設備系統的性能以及電子設備的可靠性。
預設空間大小可以是根據需求預先設定的空間大小,對于預設空間大小究竟是多少,本公開實施例不作限定,比如可以設置預設空間大小為128m、64m等等。預設空間大小可以進一步同待預留空間的分區總的空間大小來共同決定要在待預留空間的分區中預留空間的預留空間大小。
可選的,對于設置待預留空間的分區以及設置預設空間大小的方式,本公開實施例不作限定,可以在用來記錄各個分區文件系統相關的掛載信息的文件fstab中設置待預留空間的分區及所述預設空間大小。
例如,定義reserved_size變量參數來存儲預設空間大小,那么可以首先在fs_mgr中支持解析reserved_size參數,然后可以在fstab中通過編程來給reserved_size賦值(設定預設空間大小)以及設置待預留空間的分區。比如可以設置userdata分區為待預留空間的分區,以及設置reserved_size=128m(即設置預設空間大小為128m)。這樣,可以較好地設置待預留空間的分區以及預設空間大小,有利于進一步確定預留空間大小。
設置好待預留空間的分區和預設空間大小后,可以在對存儲單元進行掛載分區之前,當系統啟動時解析fstab文件,發現對應分區有reserved_size參數,便可以確定該分區需要預留空間。
可選的,在確定待預留空間的分區之后,還可以確定分區使用的文件系統為擴展文件系統ext。
可以判斷待預留空間的分區是否為ext文件系統(包括ext2、ext3、ext4等),如果確定是ext文件系統,再繼續執行進一步的預留空間的操作。這樣,可以確保預留的是使用ext文件系統的分區中的空間,保障具有指定權限的進程能夠使用。
可選的,根據預設空間大小以及分區總的空間大小,確定預留空間大小,可以根據分區總的空間大小,確定預留空間閾值,在預留空間閾值小于預設空間大小時,確定預留空間大小的值與預留空間閾值相同,在預留空間閾值大于或等于預設空間大小時,確定預留空間大小的值與預設空間大小的值相同。
由于在存儲空間中,通常用數據塊來描述存儲空間,因此可以將預設空間大小轉化成數據塊多少來描述。比如,從待預留空間的分區的超級塊中獲取塊大小block_size,然后將reserved_size(保存預設空間大小的參數)轉換成用數據塊多少描述的參數reserved_blocks,即,reserved_blocks=reserved_size/block_size。
預留空間閾值可以根據待預留空間的分區總的空間大小來確定,對于確定預留空間閾值的方式本公開實施例不作限定,例如,可以令待預留空間的分區總的空間大小的2%為預留空間閾值,那么,預留空間閾值reserved_threshold=從超級塊中獲取的整個分區總的數據塊×0.02。當然還可以令待預留空間的分區總的空間大小的1%、0.5%...為預留空間閾值。
確定預留空間閾值后,可以將預留空間閾值與預設空間大小進行比較,然后根據比較的結果來確定預留空間大小。
經比較之后,如果reserved_threshold<reserved_blocks,則可以令reserved_blocks=reserved_threshold;如果reserved_threshold≥reserved_blocks,則可以令reserved_blocks的值為轉換成數據塊大小后的reserved_size。
通過以上的方式可以較好的確定在分區中進行預留的較為合適的預留空間大小,有利于具有指定權限的進程使用預留的空間,提高電子設備的系統的性能。
在確定reserved_blocks的值,也就是預留空間大小后,可以按照預留空間大小,在待預留空間的分區中預留存儲空間。例如,可以起一個子進程執行類似如下命令的操作:tune2fs-rreserved_blocks。
可選的,預留了存儲空間之后,有目標進程請求使用預留的存儲空間時,可以先確定目標進程是否具有指定的權限,那么在目標進程具有指定的權限時,可以在預留的存儲空間中為進程分配空間。
目標進程可以是任一待運行的進程,那么如果存儲單元中除了預留的存儲空間外的剩余存儲空間不足以讓目標進程正常運行,目標進程可以申請使用預留的存儲空間。在確定目標進程具有指定權限(比如為申明了cap_sys_resource能力的進程)時,可以認為目標進程是對系統運行來說較為重要的進程,那么可以為目標進程分配預留的存儲空間中的地址供目標進程運行;反之如果目標進程不具備指定權限的進程,可能目標進程的運行與否并不會對系統造成影響,則可以不為其分配地址。這樣,可以較好地保障一些特定的進程的正常運行,避免了因特定的進程無法運行而導致的系統或應用無法工作的現象,提高了電子設備系統的性能以及電子設備的可靠性。
圖2是根據一示例性實施例示出的一種存儲空間預留裝置100框圖。參照圖2,該裝置100包括第一確定模塊121,第二確定模塊122和預留模塊123。
該第一確定模塊121被配置為在對電子設備的存儲單元進行掛載分區之前,確定待預留空間的分區;
該第二確定模塊122被配置為根據預設空間大小以及分區總的空間大小,確定預留空間大小;
該預留模塊123被配置為按照預留空間大小,在分區中預留存儲空間,其中,具有指定權限的進程能夠使用預留的存儲空間。
可選的,如圖3所示,第二確定模塊122包括:
第一確定子模塊1221,被配置為根據分區總的空間大小,確定預留空間閾值;
第二確定子模塊1222,被配置為在預留空間閾值小于預設空間大小時,確定預留空間大小的值與預留空間閾值相同;
第三確定子模塊1223,被配置為在預留空間閾值大于或等于預設空間大小時,確定預留空間大小的值與預設空間大小的值相同。
可選的,如圖4所示,裝置100還包括:
第三確定模塊124,被配置為在確定待預留空間的分區之后,確定分區使用的文件系統為擴展文件系統ext。
可選的,如圖5所示,裝置100還包括:
設置模塊125,被配置為在用來記錄各個分區文件系統相關的掛載信息的文件fstab中設置待預留空間的分區及預設空間大小。
可選的,如圖6所示,裝置100還包括:
第四確定模塊126,被配置為在按照預留空間大小,在分區中預留存儲空間之后,在目標進程請求使用預留的存儲空間時,確定目標進程是否具有指定的權限;
分配模塊127,被配置為在目標進程具有指定的權限時,在預留的存儲空間中為進程分配空間。
關于上述實施例中的裝置,其中各個模塊執行操作的具體方式已經在有關該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。
本公開還提供一種計算機可讀存儲介質,其上存儲有計算機程序指令,該程序指令被處理器執行時實現本公開提供的存儲空間預留方法的步驟。
圖7是根據一示例性實施例示出的一種存儲空間預留裝置700的框圖。例如,裝置700可以是移動電話,計算機,數字廣播終端,消息收發設備,游戲控制臺,平板設備,醫療設備,健身設備,個人數字助理等。
參照圖7,裝置700可以包括以下一個或多個組件:處理組件702,存儲器704,電力組件706,多媒體組件708,音頻組件710,輸入/輸出(i/o)的接口712,傳感器組件714,以及通信組件716。
處理組件702通常控制裝置700的整體操作,諸如與顯示,電話呼叫,數據通信,相機操作和記錄操作相關聯的操作。處理組件702可以包括一個或多個處理器720來執行指令,以完成上述的方法的全部或部分步驟。此外,處理組件702可以包括一個或多個模塊,便于處理組件702和其他組件之間的交互。例如,處理組件702可以包括多媒體模塊,以方便多媒體組件708和處理組件702之間的交互。
存儲器704被配置為存儲各種類型的數據以支持在裝置700的操作。這些數據的示例包括用于在裝置700上操作的任何應用程序或方法的指令,聯系人數據,電話簿數據,消息,圖片,視頻等。存儲器704可以由任何類型的易失性或非易失性存儲設備或者它們的組合實現,如靜態隨機存取存儲器(sram),電可擦除可編程只讀存儲器(eeprom),可擦除可編程只讀存儲器(eprom),可編程只讀存儲器(prom),只讀存儲器(rom),磁存儲器,快閃存儲器,磁盤或光盤。
電力組件706為裝置700的各種組件提供電力。電力組件706可以包括電源管理系統,一個或多個電源,及其他與為裝置700生成、管理和分配電力相關聯的組件。
多媒體組件708包括在所述裝置700和用戶之間的提供一個輸出接口的屏幕。在一些實施例中,屏幕可以包括液晶顯示器(lcd)和觸摸面板(tp)。如果屏幕包括觸摸面板,屏幕可以被實現為觸摸屏,以接收來自用戶的輸入信號。觸摸面板包括一個或多個觸摸傳感器以感測觸摸、滑動和觸摸面板上的手勢。所述觸摸傳感器可以不僅感測觸摸或滑動動作的邊界,而且還檢測與所述觸摸或滑動操作相關的持續時間和壓力。在一些實施例中,多媒體組件708包括一個前置攝像頭和/或后置攝像頭。當裝置700處于操作模式,如拍攝模式或視頻模式時,前置攝像頭和/或后置攝像頭可以接收外部的多媒體數據。每個前置攝像頭和后置攝像頭可以是一個固定的光學透鏡系統或具有焦距和光學變焦能力。
音頻組件710被配置為輸出和/或輸入音頻信號。例如,音頻組件710包括一個麥克風(mic),當裝置700處于操作模式,如呼叫模式、記錄模式和語音識別模式時,麥克風被配置為接收外部音頻信號。所接收的音頻信號可以被進一步存儲在存儲器704或經由通信組件716發送。在一些實施例中,音頻組件710還包括一個揚聲器,用于輸出音頻信號。
i/o接口712為處理組件702和外圍接口模塊之間提供接口,上述外圍接口模塊可以是鍵盤,點擊輪,按鈕等。這些按鈕可包括但不限于:主頁按鈕、音量按鈕、啟動按鈕和鎖定按鈕。
傳感器組件714包括一個或多個傳感器,用于為裝置700提供各個方面的狀態評估。例如,傳感器組件714可以檢測到裝置700的打開/關閉狀態,組件的相對定位,例如所述組件為裝置700的顯示器和小鍵盤,傳感器組件714還可以檢測裝置700或裝置700一個組件的位置改變,用戶與裝置700接觸的存在或不存在,裝置700方位或加速/減速和裝置700的溫度變化。傳感器組件714可以包括接近傳感器,被配置用來在沒有任何的物理接觸時檢測附近物體的存在。傳感器組件714還可以包括光傳感器,如cmos或ccd圖像傳感器,用于在成像應用中使用。在一些實施例中,該傳感器組件714還可以包括加速度傳感器,陀螺儀傳感器,磁傳感器,壓力傳感器或溫度傳感器。
通信組件716被配置為便于裝置700和其他設備之間有線或無線方式的通信。裝置700可以接入基于通信標準的無線網絡,如wifi,2g或3g,或它們的組合。在一個示例性實施例中,通信組件716經由廣播信道接收來自外部廣播管理系統的廣播信號或廣播相關信息。在一個示例性實施例中,所述通信組件716還包括近場通信(nfc)模塊,以促進短程通信。例如,在nfc模塊可基于射頻識別(rfid)技術,紅外數據協會(irda)技術,超寬帶(uwb)技術,藍牙(bt)技術和其他技術來實現。
在示例性實施例中,裝置700可以被一個或多個應用專用集成電路(asic)、數字信號處理器(dsp)、數字信號處理設備(dspd)、可編程邏輯器件(pld)、現場可編程門陣列(fpga)、控制器、微控制器、微處理器或其他電子元件實現,用于執行上述方法。
在示例性實施例中,還提供了一種包括指令的非臨時性計算機可讀存儲介質,例如包括指令的存儲器704,上述指令可由裝置700的處理器720執行以完成上述方法。例如,所述非臨時性計算機可讀存儲介質可以是rom、隨機存取存儲器(ram)、cd-rom、磁帶、軟盤和光數據存儲設備等。
本領域技術人員在考慮說明書及實踐本公開后,將容易想到本公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本公開的一般性原理并包括本公開未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由下面的權利要求指出。
應當理解的是,本公開并不局限于上面已經描述并在附圖中示出的精確結構,并且可以在不脫離其范圍進行各種修改和改變。本公開的范圍僅由所附的權利要求來限制。