用于在多個(gè)存儲器類型之間移動(dòng)數(shù)據(jù)的技術(shù)的制作方法
【專利摘要】本發(fā)明提供了一種兩級分頁機(jī)制。第一級針對進(jìn)程從可收回的存儲器位置收集數(shù)據(jù)并將所述數(shù)據(jù)壓縮到單個(gè)容器中。第二級將所述壓縮容器的內(nèi)容發(fā)送至交換文件并可對目標(biāo)存儲器設(shè)備采用最佳的I/O操作。通過使第一分頁器定位所述壓縮容器中的被請求的數(shù)據(jù)并且然后使第二分頁器從所述交換文件中檢索對應(yīng)數(shù)據(jù),而使得請求式分頁成為可能。
【專利說明】用于在多個(gè)存儲器類型之間移動(dòng)數(shù)據(jù)的技術(shù)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實(shí)施例涉及多個(gè)存儲器類型之間的數(shù)據(jù)傳輸。更具體地講,本發(fā)明的實(shí)施例涉及用于將數(shù)據(jù)從易失性存儲器移動(dòng)至非易失性存儲器的技術(shù)。
【背景技術(shù)】
[0002]電子設(shè)備包括有限的存儲器容量。易失性存儲器類型通??煊诜且资源鎯ζ鳌R虼?,易失性存儲器通常用于要求最小存儲器延遲的應(yīng)用程序。然而,由于易失性存儲器是有限的,因此可能存在要求從易失性存儲器移除數(shù)據(jù)以允許其他應(yīng)用程序或進(jìn)程利用附加的存儲器位置的情況。
【專利附圖】
【附圖說明】
[0003]本發(fā)明以舉例的方式而非以限制的方式例示于各個(gè)附圖的圖形中,在附圖中類似的附圖標(biāo)號表示類似的元件。
[0004]圖1為第一存儲器與第二存儲器之間的數(shù)據(jù)移動(dòng)的概念圖。
[0005]圖2為用于第一存儲器與第二存儲器之間的數(shù)據(jù)移動(dòng)的技術(shù)的一個(gè)實(shí)施例的流程圖。
[0006]圖3為用于將數(shù)據(jù)從第一存儲器傳輸至第二存儲器的技術(shù)的一個(gè)實(shí)施例的流程圖。
[0007]圖4為用于對第一存儲器與第二存儲器之間的數(shù)據(jù)移動(dòng)進(jìn)行管理的代理的一個(gè)實(shí)施例的框圖。
[0008]圖5為移動(dòng)設(shè)備的示例性具體實(shí)施的框圖。
【具體實(shí)施方式】
[0009]在以下說明中示出了許多具體細(xì)節(jié)。然而,即使沒有這些具體細(xì)節(jié)也可以實(shí)踐本發(fā)明的實(shí)施例。在其他情況下,未詳細(xì)示出熟知的電路、結(jié)構(gòu)和技術(shù),以免影響對此說明的理解。
[0010]在具有有限的易失性存儲器(例如,隨機(jī)存取存儲器,RAM)容量的設(shè)備上,可能期望或甚至必需將用于一個(gè)進(jìn)程或應(yīng)用程序的存儲器位置分配給另一個(gè)進(jìn)程或應(yīng)用程序。例如,更重要的應(yīng)用程序可能要求更多的存儲器位置,而犧牲較不重要的應(yīng)用程序。
[0011]在一個(gè)實(shí)施例中,當(dāng)非易失性存儲器為固態(tài)存儲器設(shè)備時(shí),可能期望最小化對設(shè)備的磨損并且避免讀取/修改/寫入情形。在一個(gè)實(shí)施例中,當(dāng)數(shù)據(jù)已從易失性存儲器中逐出并移動(dòng)至非易失性存儲器后,允許進(jìn)程或應(yīng)用程序訪問數(shù)據(jù)。
[0012]在一個(gè)實(shí)施例中,使用了兩級分頁機(jī)制。第一級針對進(jìn)程從可收回的存儲器位置收集頁面并將這些頁面壓縮到單個(gè)容器中。第二級將壓縮容器的內(nèi)容發(fā)送至交換文件并可對目標(biāo)存儲器設(shè)備采用最佳的I/o操作。通過使第一分頁器定位壓縮容器中的被請求的頁面以及然后使第二分頁器從交換文件中檢索對應(yīng)頁面,使請求式分頁成為可能。[0013]例如在相比于物理上更大的設(shè)備通常具有更少RAM的移動(dòng)設(shè)備(例如臺式計(jì)算機(jī)或甚至膝上型計(jì)算機(jī))中,該兩級分頁機(jī)制可能有用。例如,平板設(shè)備或筆記本計(jì)算機(jī)或智能電話可包含有限容量的RAM和固態(tài)存儲器設(shè)備(例如,閃存存儲器)。
[0014]圖1為第一存儲器與第二存儲器之間的數(shù)據(jù)移動(dòng)的概念圖。本文所述的技術(shù)可以是總體上適用的,但例子通常針對主存儲器(例如,DRAM)與更大存儲設(shè)備(例如,閃存存儲器)之間的頁面移動(dòng)而提供。
[0015]地址空間110代表可被給定進(jìn)程或應(yīng)用程序使用的存儲器。地址空間110可包含多個(gè)存儲器區(qū)域。存儲器區(qū)域可包含若干虛擬頁面。虛擬頁面可在任何時(shí)候處于以下三種狀態(tài)之一:未分配、駐留或頁面調(diào)出。
[0016]在主機(jī)系統(tǒng)執(zhí)行應(yīng)用程序期間,主(RAM,易失性)存儲器和輔助(SSD,非易失性)存儲器被多個(gè)應(yīng)用程序使用。通常,主存儲器是隨機(jī)存取存儲器,所述隨機(jī)存取存儲器可由執(zhí)行應(yīng)用程序的一個(gè)或多個(gè)處理器訪問。地址空間110可使用主機(jī)系統(tǒng)內(nèi)的隨機(jī)存取存儲器中的全部或一部分。其他地址空間用于支持系統(tǒng)中的其他進(jìn)程,并且它們均爭奪主存儲器(RAM)的有限資源。
[0017]隨機(jī)存取存儲器用于支持多個(gè)進(jìn)程,并且每個(gè)進(jìn)程可具有其自己的地址空間以供利用。地址空間Iio具有一個(gè)或多個(gè)存儲器區(qū)域(例如,112、114、116),所述存儲器區(qū)域被進(jìn)程使用以存儲一頁或多頁數(shù)據(jù)。
[0018]在圖1的例子中,存儲器區(qū)域112、114和116可被分配給進(jìn)程。在一個(gè)實(shí)施例中,每個(gè)進(jìn)程具有相關(guān)的優(yōu)先級,所述相關(guān)的優(yōu)先級可用于例如解決資源沖突。例如,當(dāng)進(jìn)程需要附加的存儲器位置且空間不足的存儲器為可用時(shí),具有較低優(yōu)先級的進(jìn)程可使其頁面的一些或全部被逐出,使得存儲器區(qū)域可重新分配給較高優(yōu)先級進(jìn)程。
[0019]因此,在操作期間,存儲器區(qū)域112、114和116可被指定用于逐出。逐出進(jìn)程使頁面從存儲器區(qū)域112、114和116移動(dòng)至非易失性存儲器150。在一個(gè)實(shí)施例中,該進(jìn)程包括壓縮容器130的利用。壓縮容器130可為地址空間110外的系統(tǒng)RAM中的區(qū)域或結(jié)構(gòu),或者壓縮容器130可位于與系統(tǒng)RAM連接的不同存儲器設(shè)備中。在一個(gè)實(shí)施例中,壓縮容器130位于操作系統(tǒng)內(nèi)核地址空間內(nèi)。
[0020]在一個(gè)實(shí)施例中,來自存儲器區(qū)域112、114和116的頁面以更緊湊的方式(例如,連續(xù)地、以最少數(shù)量的頁面的方式等)存儲在壓縮容器130內(nèi)。在另一個(gè)實(shí)施例中,頁面的指針可存儲在壓縮容器130中。在一個(gè)實(shí)施例中,存儲器區(qū)域112、114和116的內(nèi)容被復(fù)制到非易失性存儲器150。在一個(gè)實(shí)施例中,各頁面在單次寫入操作中,或者在每個(gè)頁面的單次寫入操作中,被復(fù)制到非易失性存儲器150。
[0021]當(dāng)需要已移動(dòng)至非易失性存儲器150的頁面時(shí),非易失性存儲器150中的數(shù)據(jù)的位置可通過壓縮容器130來確定。然后可將頁面從非易失性存儲器150傳輸回至地址空間110??墒褂孟嗤拇鎯ζ鲄^(qū)域,或者可使用不同的存儲器區(qū)域。
[0022]圖2為用于第一存儲器與第二存儲器之間的數(shù)據(jù)移動(dòng)的技術(shù)的一個(gè)實(shí)施例的流程圖。圖2的技術(shù)可用于例如在圖1中示出的存儲器類型之間傳輸頁面。
[0023]當(dāng)進(jìn)程的頁面被指定用于逐出時(shí),在210處,凍結(jié)對應(yīng)于該進(jìn)程的地址空間(例如,圖1的112、114、116)。當(dāng)?shù)刂房臻g被凍結(jié)時(shí),阻止進(jìn)程向存儲器位置寫入以及改變存儲器位置的內(nèi)容。因此,要傳輸?shù)拇鎯ζ鞯膬?nèi)容將與進(jìn)程一致。[0024]在220處,遍歷進(jìn)程的地址空間。當(dāng)遍歷進(jìn)程的地址空間時(shí),收集與已凍結(jié)且要傳輸出RAM的存儲器的頁面有關(guān)的信息。在一個(gè)實(shí)施例中,在230處,針對要傳輸出RAM的頁面,將駐留頁面的指針移動(dòng)至壓縮容器。在另一個(gè)實(shí)施例中,存儲器位置的內(nèi)容可被復(fù)制到要傳輸出RAM的壓縮容器。在一個(gè)實(shí)施例中,在多個(gè)進(jìn)程之間共享數(shù)據(jù)的頁面不是逐出的候選。
[0025]在240處,然后將頁面從RAM復(fù)制到非易失性存儲器(例如,閃存存儲器)。在一個(gè)實(shí)施例中,頁面在單次I/o操作中寫入到非易失性存儲器,這可有助于降低對非易失性存儲器的磨損。在替代性實(shí)施例中,可執(zhí)行多個(gè)寫入操作。
[0026]在250處,對已為其移動(dòng)頁面的地址空間位置進(jìn)行收回。收回的存儲器位置然后可被其他進(jìn)程使用。對于其他進(jìn)程而言也可重復(fù)圖2的進(jìn)程。
[0027]圖3為用于將數(shù)據(jù)從非易失性存儲器傳輸至RAM的技術(shù)的一個(gè)實(shí)施例的流程圖。圖3的進(jìn)程可用于例如當(dāng)進(jìn)程已于此前凍結(jié)和/或數(shù)據(jù)已被逐出時(shí)(例如,如上關(guān)于圖2所述)從閃存存儲器檢索頁面。
[0028]在310處,針對已逐出頁面接收到請求。該請求可為此前已凍結(jié)進(jìn)程的再啟動(dòng)或解凍的結(jié)果。該請求可針對進(jìn)程的此前已逐出頁面的一部分,或者該請求可針對進(jìn)程的此前已逐出頁面的全部。
[0029]在320處,跟蹤地址空間中(例如,RAM中)存儲器位置到壓縮容器的鏈路。該鏈路和/或其他信息可用于確定壓縮容器中的數(shù)據(jù)的位置和/或狀態(tài)。在330處,確定頁面位置。
[0030]在340處,然后將頁面從非易失性存儲器復(fù)制到RAM。在一個(gè)實(shí)施例中,通過單次讀取將頁面檢索到非易失性存儲器。在350處,然后可將非易失性存儲器位置用于其他數(shù)據(jù)。
[0031]圖4為用于對第一存儲器與第二存儲器之間的數(shù)據(jù)移動(dòng)進(jìn)行管理的代理的一個(gè)實(shí)施例的框圖。數(shù)據(jù)傳輸代理400包括控制邏輯410和/或硬件,其中所述控制邏輯執(zhí)行邏輯功能控制以引導(dǎo)數(shù)據(jù)傳輸代理400進(jìn)行操作,所述硬件則與引導(dǎo)數(shù)據(jù)傳輸代理400的操作相關(guān)聯(lián)。邏輯可以是硬件邏輯電路和/或軟件例程。在一個(gè)實(shí)施例中,數(shù)據(jù)傳輸代理400包括一個(gè)或多個(gè)應(yīng)用程序412,該應(yīng)用程序代表向控制邏輯410提供指令的代碼序列和/或程序。
[0032]數(shù)據(jù)傳輸代理400包括存儲器414,該存儲器代表存儲器設(shè)備和/或?qū)τ糜诖鎯?shù)據(jù)和/或指令的存儲器資源的訪問。存儲器414可包括數(shù)據(jù)傳輸代理400的本地存儲器,以及或作為另外一種選擇包括數(shù)據(jù)傳輸代理400所駐留的主機(jī)系統(tǒng)的存儲器。數(shù)據(jù)傳輸代理400還包括一個(gè)或多個(gè)接口 416,該一個(gè)或多個(gè)接口代表相對于數(shù)據(jù)傳輸代理400外部的實(shí)體(電子設(shè)備或人)到/來自數(shù)據(jù)傳輸代理400的訪問接口(例如,輸入/輸出接口、應(yīng)用程序編程接口)。
[0033]數(shù)據(jù)傳輸代理400還包括數(shù)據(jù)傳輸引擎420,該數(shù)據(jù)傳輸引擎代表一項(xiàng)或多項(xiàng)功能,該一項(xiàng)或多項(xiàng)功能使得數(shù)據(jù)傳輸代理400能夠按本文所述對頁面進(jìn)行放大和/或縮小。可包括在數(shù)據(jù)傳輸引擎420中的示例性模塊包括進(jìn)程存儲器模塊430、壓縮容器管理器440、鏈路管理器450和存儲器傳輸模塊460。如本文所用,模塊是指例程、子系統(tǒng)等,而不論其是否已實(shí)現(xiàn)為硬件、軟件、固件或它們的某種組合。[0034]進(jìn)程存儲器模塊430運(yùn)行以確定每個(gè)進(jìn)程的狀態(tài)并且還可管理其他參數(shù),例如,與進(jìn)程相關(guān)的優(yōu)先級或可允許的存儲器空間消耗等。進(jìn)程存儲器模塊430也可控制進(jìn)程的狀態(tài)。進(jìn)程存儲器模塊430可運(yùn)行以在較高優(yōu)先級進(jìn)程要求附加的存儲器時(shí)凍結(jié)進(jìn)程。
[0035]壓縮容器管理器440運(yùn)行以控制如本文所述的壓縮容器的操作和功能。壓縮容器管理器440可管理壓縮容器內(nèi)的數(shù)據(jù)結(jié)構(gòu),以及鏈接壓縮容器的操作和組織以提供本文所述的功能。
[0036]鏈路管理器450運(yùn)行以跟蹤并保持?jǐn)?shù)據(jù)結(jié)構(gòu)與存儲器位置之間(例如,壓縮容器與非易失性存儲器之間)的鏈路。鏈路管理器450可運(yùn)行以響應(yīng)于對要傳輸回至RAM的數(shù)據(jù)的請求而定位非易失性存儲器中的數(shù)據(jù)。
[0037]存儲器傳輸管理器460運(yùn)行以控制對非易失性存儲器的讀取和寫入以及來自非易失性存儲器的讀取和寫入。在一個(gè)實(shí)施例中,存儲器傳輸管理器460使數(shù)據(jù)以最少數(shù)量的寫入操作而寫入非易失性存儲器。類似地,存儲器傳輸管理器460使數(shù)據(jù)以最少數(shù)量的讀取而從非易失性存儲器中讀取。這可降低對非易失性存儲器的磨損。
[0038]圖5為移動(dòng)設(shè)備的示例性具體實(shí)施的框圖500。移動(dòng)設(shè)備可包括存儲器接口 502、一個(gè)或多個(gè)數(shù)據(jù)處理器、圖像處理器和/或中央處理單元504以及外圍設(shè)備接口 506。存儲器接口 502、一個(gè)或多個(gè)處理器504和/或外圍設(shè)備接口 506可為單獨(dú)組件,或者可集成到一個(gè)或多個(gè)集成電路中。移動(dòng)設(shè)備中的各個(gè)組件可由一條或多條通信總線或信號線連接。
[0039]可將傳感器、設(shè)備和子系統(tǒng)連接至外圍設(shè)備接口 506以方便多個(gè)功能。例如,可將運(yùn)動(dòng)傳感器510、光傳感器512以及接近傳感器514連接至外圍設(shè)備接口 506以方便取向、照明和接近功能。也可將其他傳感器516連接至外圍設(shè)備接口 506,例如定位系統(tǒng)(例如,GPS接收器)、溫度傳感器、生物測定傳感器或其他傳感設(shè)備,以方便相關(guān)功能。
[0040]可利用照相機(jī) 子系統(tǒng)520和光學(xué)傳感器522(例如,電荷耦合器件(CXD)或互補(bǔ)金屬氧化物半導(dǎo)體(CMOS)光學(xué)傳感器)來方便照相機(jī)功能,例如拍攝照片和視頻剪輯。
[0041]可通過一個(gè)或多個(gè)無線通信子系統(tǒng)524來方便通信功能,所述一個(gè)或多個(gè)無線通信子系統(tǒng)可包括射頻接收器及發(fā)射器和/或光學(xué)(例如,紅外)接收器及發(fā)射器。通信子系統(tǒng)524的具體設(shè)計(jì)與實(shí)現(xiàn)可取決于移動(dòng)設(shè)備打算通過其運(yùn)行的通信網(wǎng)絡(luò)。例如,移動(dòng)設(shè)備可包括設(shè)計(jì)用于通過GSM網(wǎng)絡(luò)、GPRS網(wǎng)絡(luò)、EDGE網(wǎng)絡(luò)、W1-Fi或WiMax網(wǎng)絡(luò)以及Bluetooth?網(wǎng)絡(luò)運(yùn)行的通信子系統(tǒng)524。具體地講,無線通信子系統(tǒng)524可包括主機(jī)協(xié)議,使得移動(dòng)設(shè)備可配置為用于其他無線設(shè)備的基站。
[0042]可將音頻子系統(tǒng)526連接至揚(yáng)聲器528和麥克風(fēng)530以方便啟用語音的功能,例如語音識別、語音復(fù)制、數(shù)字記錄和電話功能。
[0043]I/O子系統(tǒng)540可包括觸摸屏控制器542和/或其他輸入控制器544。觸摸屏控制器542可連接至觸摸屏546。觸摸屏546和觸摸屏控制器542可例如使用多種觸摸靈敏度技術(shù)中的任一者以及其他接近傳感器陣列或用于確定與觸摸屏546接觸的一個(gè)或多個(gè)點(diǎn)的其他元件,來檢測接觸和移動(dòng)或它們的間斷,所述多種觸摸靈敏度技術(shù)包括但不限于電容、電阻、紅外和表面聲波技術(shù)。
[0044]可將其他輸入控制器544連接至其他輸入/控制設(shè)備548,例如一個(gè)或多個(gè)按鈕、搖臂開關(guān)、拇指滾輪、紅外線端口、USB端口和/或指針設(shè)備(例如觸控筆)。所述一個(gè)或多個(gè)按鈕(未不出)可包括用于揚(yáng)聲器528和/或麥克風(fēng)530的音量控制的向上/向下按鈕。[0045]在一個(gè)具體實(shí)施中,持續(xù)第一時(shí)長的該按鈕的按壓可解開觸摸屏546的鎖,持續(xù)第二時(shí)長的該按鈕的按壓可打開或關(guān)閉移動(dòng)設(shè)備的電源,所述第二時(shí)長長于所述第一時(shí)長。用戶能夠自定義一個(gè)或多個(gè)按鈕的功能。觸摸屏546還可例如用于執(zhí)行虛擬或軟按鈕和/或鍵盤。
[0046]在一些具體實(shí)施中,移動(dòng)設(shè)備可呈現(xiàn)記錄的音頻和/或視頻文件,例如MP3、AAC和MPEG文件。在一些具體實(shí)施中,移動(dòng)設(shè)備可包括MP3播放器的功能,例如iPod?。因此,移動(dòng)設(shè)備可包括與iPod?兼容的32針連接器。也可使用其他輸入/輸出及控制設(shè)備。
[0047]存儲器接口 502可連接至存儲器550。存儲器550可包括高速隨機(jī)存取存儲器和/或非易失性存儲器,例如一個(gè)或多個(gè)磁盤存儲設(shè)備、一個(gè)或多個(gè)光學(xué)存儲設(shè)備,和/或閃存存儲器(例如,NAND, N0R)。存儲器550可存儲操作系統(tǒng)552,例如Darwin、RTXC, LINUX、UNIX、OS X、WINDOWS或嵌入式操作系統(tǒng)(例如VxWorks)。操作系統(tǒng)552可包括用于處理基礎(chǔ)系統(tǒng)服務(wù)以及用于執(zhí)行硬件相關(guān)任務(wù)的指令。在一些具體實(shí)施中,操作系統(tǒng)552可為內(nèi)核(例如,UNIX內(nèi)核)。存儲器接口 502還可與非易失性存儲器575連接,所述非易失性存儲器可為例如閃存存儲器。
[0048]存儲器550還可存儲通信指令554以方便與一個(gè)或多個(gè)附加設(shè)備、一個(gè)或多個(gè)計(jì)算機(jī)和/或一個(gè)或多個(gè)服務(wù)器通信。存儲器550可包括用于方便圖形用戶界面處理的圖形用戶界面指令556 ;用于方便與傳感器相關(guān)的處理及功能的傳感器處理指令558 ;用于方便與電話相關(guān)的進(jìn)程及功能的電話指令560 ;用于方便與電子消息處理相關(guān)的進(jìn)程及功能的電子消息處理指令562 ;用于方便與網(wǎng)頁瀏覽相關(guān)的進(jìn)程及功能的網(wǎng)頁瀏覽指令564 ;用于方便與媒體處理相關(guān)的進(jìn)程及功能的媒體處理指令566 ;用于方便與GPS及導(dǎo)航相關(guān)的進(jìn)程及功能的GPS/導(dǎo)航指令568 ;用于方便與照相機(jī)相關(guān)的進(jìn)程及功能的照相機(jī)指令570 ;和/或用于方便其他進(jìn)程及功能(例如,訪問控制管理功能)的其他軟件指令572。
[0049]存儲器550還可存儲其他軟件指令(未示出),例如用于方便與網(wǎng)頁視頻相關(guān)的進(jìn)程及功能的網(wǎng)頁視頻指令和/或用于方便與網(wǎng)上購物相關(guān)的進(jìn)程及功能的網(wǎng)上購物指令。在一些具體實(shí)施中,媒體處理指令566可分為音頻處理指令和視頻處理指令,例如分別用于方便與音頻處理相關(guān)的進(jìn)程及功能以及與視頻處理相關(guān)的進(jìn)程及功能。還可將啟動(dòng)記錄和國際移動(dòng)設(shè)備識別碼(IMEI) 574或類似硬件標(biāo)識符存儲在存儲器550中。
[0050]本說明書中提到的“一個(gè)實(shí)施例”或“實(shí)施例”是指,結(jié)合實(shí)施例所描述的具體特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個(gè)實(shí)施例中。本說明書中多處出現(xiàn)“在一個(gè)實(shí)施例中”短語,這并不一定表示它們?nèi)傅氖峭粚?shí)施例。
[0051]在以上說明書中,結(jié)合本發(fā)明的具體實(shí)施例描述了本發(fā)明。但顯而易見的是,在不脫離本發(fā)明的更廣泛的精神和范圍的情況下,可對這些實(shí)施例進(jìn)行各種修改和變更。相應(yīng)地,說明書和附圖應(yīng)被視為是例證性的而非限制性的。
【權(quán)利要求】
1.一種方法,包括: 針對進(jìn)程從易失性存儲器中的多個(gè)可收回的存儲器位置收集數(shù)據(jù); 將所述數(shù)據(jù)的一個(gè)或多個(gè)指針復(fù)制到單個(gè)容器; 使用所選輸入/輸出(I/O)地址將所述數(shù)據(jù)復(fù)制到非易失性存儲器。
2.根據(jù)權(quán)利要求1所述的方法,其中針對進(jìn)程從易失性存儲器中的多個(gè)可收回的存儲器位置收集數(shù)據(jù)包括: 確定對應(yīng)于所述易失性存儲器的存儲器空間中的所述進(jìn)程的所述存儲器位置,其中所述存儲器空間支持多個(gè)并發(fā)進(jìn)程; 遍歷對應(yīng)于所述進(jìn)程的所述存儲器位置; 確定相應(yīng)存儲器位置是否為從所述易失性存儲器逐出的候選;以及 記錄作為逐出的候選的存儲器位置的指針。
3.根據(jù)權(quán)利要求2所述的方法,其中在多個(gè)進(jìn)程之間共享頁面的存儲器位置不是逐出的候選。
4.根據(jù)權(quán)利要求1所述的方法,還包括: 收回對應(yīng)于所述進(jìn)程的所述存儲器位置;以及 將所述存儲器位置分配給另一個(gè)進(jìn)程。
5.根據(jù)權(quán)利要求1所述的 方法,其中所述容器包括存儲器的頁面。
6.根據(jù)權(quán)利要求1所述的方法,其中所述單個(gè)容器包括操作系統(tǒng)內(nèi)核地址空間中的一組存儲器位置。
7.根據(jù)權(quán)利要求1所述的方法,其中所述易失性存儲器包括系統(tǒng)隨機(jī)存取存儲器(RAM),并且所述非易失性存儲器包括閃存存儲器。
8.根據(jù)權(quán)利要求1所述的方法,其中將所述數(shù)據(jù)復(fù)制到所述非易失性存儲器是在對所述非易失性存儲器的單次寫入操作中完成的。
9.根據(jù)權(quán)利要求2所述的方法,還包括: 定位所述非易失性存儲器中的具有所選數(shù)據(jù)的頁面;以及 將所述頁面復(fù)制到所述容器。
10.根據(jù)權(quán)利要求9所述的方法,還包括: 定位所述存儲器空間中的原始位置;以及 將所述頁面?zhèn)鬏斨了鲈嘉恢谩?br>
11.根據(jù)權(quán)利要求9所述的方法,其中復(fù)制所述頁面是在對所述易失性存儲器的單次讀取?呆作中完成的。
12.—種其上存儲有指令的計(jì)算機(jī)可讀介質(zhì),所述指令在被執(zhí)行時(shí)使一個(gè)或多個(gè)處理器: 針對進(jìn)程從易失性存儲器中的多個(gè)可收回的存儲器位置收集數(shù)據(jù); 將所述數(shù)據(jù)的一個(gè)或多個(gè)指針復(fù)制到單個(gè)容器; 使用所選輸入/輸出(I/O)地址將所述數(shù)據(jù)復(fù)制到非易失性存儲器。
13.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其中使所述一個(gè)或多個(gè)處理器針對進(jìn)程從易失性存儲器中的多個(gè)可收回的存儲器位置收集數(shù)據(jù)的所述指令包括在被執(zhí)行時(shí)使所述一個(gè)或多個(gè)處理器執(zhí)行以下操作的指令:確定對應(yīng)于所述易失性存儲器的存儲器空間中的所述進(jìn)程的所述存儲器位置,其中所述存儲器空間支持多個(gè)并發(fā)進(jìn)程; 遍歷對應(yīng)于所述進(jìn)程的所述存儲器位置; 確定相應(yīng)存儲器位置是否為從所述易失性存儲器逐出的候選;以及 記錄作為逐出的候選的存儲器位置的指針。
14.根據(jù)權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),其中在多個(gè)進(jìn)程之間共享頁面的存儲器位置不是逐出的候選。
15.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),還包括在被執(zhí)行時(shí)使所述一個(gè)或多個(gè)處理器執(zhí)行以下操作的指令: 收回對應(yīng)于所述進(jìn)程的所述存儲器位置;以及 將所述存儲器位置分配給另一個(gè)進(jìn)程。
16.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其中所述容器包括存儲器的頁面。
17.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其中所述單個(gè)容器包括操作系統(tǒng)內(nèi)核地址空間中的一組存儲器位置。
18.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其中所述易失性存儲器包括系統(tǒng)隨機(jī)存取存儲器(RAM),并且所述非易失性存儲器包括閃存存儲器。
19.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其中將所述數(shù)據(jù)復(fù)制到所述非易失性存儲器是在對所述非易失性存儲器的單次寫入操作中完成的。
20.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),還包括在被執(zhí)行時(shí)使所述一個(gè)或多個(gè)處理器執(zhí)行以下操作的指令:` 定位所述非易失性存儲器中的具有所選數(shù)據(jù)的頁面;以及 將所述頁面復(fù)制到所述容器。
21.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)可讀介質(zhì),還包括在被執(zhí)行時(shí)使所述一個(gè)或多個(gè)處理器執(zhí)行以下操作的指令: 定位所述存儲器空間中的原始位置;以及 將所述頁面?zhèn)鬏斨了鲈嘉恢谩?br>
22.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)可讀介質(zhì),其中復(fù)制所述頁面是在對所述非易失性存儲器的單次讀取操作中完成的。
23.—種設(shè)備,包括: 用于針對進(jìn)程從易失性存儲器中的多個(gè)可收回的存儲器位置收集數(shù)據(jù)的裝置; 用于將所述數(shù)據(jù)的一個(gè)或多個(gè)指針復(fù)制到單個(gè)容器的裝置; 用于使用所選輸入/輸出(I/O)地址將所述數(shù)據(jù)復(fù)制到非易失性存儲器的裝置。
24.根據(jù)權(quán)利要求23所述的設(shè)備,其中用于針對進(jìn)程從易失性存儲器中的多個(gè)可收回的存儲器位置收集數(shù)據(jù)的所述裝置包括: 確定對應(yīng)于所述易失性存儲器的存儲器空間中的所述進(jìn)程的所述存儲器位置,其中所述存儲器空間支持多個(gè)并發(fā)進(jìn)程; 用于遍歷對應(yīng)于所述進(jìn)程的所述存儲器位置的裝置; 用于確定相應(yīng)存儲器位置是否為從所述易失性存儲器逐出的候選的裝置;以及 用于記錄作為逐出的候選的存儲器位置的指針的裝置。
25.根據(jù)權(quán)利要求23所述的設(shè)備,還包括:用于收回對應(yīng)于所述進(jìn)程的所述存儲器位置的裝置;以及用于將所述存儲器位置分配給另一個(gè)進(jìn)程的裝置。
26.根據(jù)權(quán)利要求23所述的設(shè)備,還包括:用于定位所述非易失性存儲器中的具有所選數(shù)據(jù)的頁面的裝置;以及用于將所述頁面復(fù)制到所述容器的裝置。
27.根據(jù)權(quán)利要求26所述的設(shè)備,還包括:用于定位所述存儲器空間中的原始位置的裝置;以及用于將所述頁面?zhèn)鬏斨了鲈嘉恢玫难b置。
【文檔編號】G06F12/12GK103649927SQ201280032928
【公開日】2014年3月19日 申請日期:2012年6月27日 優(yōu)先權(quán)日:2011年7月1日
【發(fā)明者】F·巴布-德斯-普雷斯, N·G·克瑞恩, L·D·德塞, 約瑟夫·索科爾 申請人:蘋果公司