TWI506538B - 動態記憶體分配技術 - Google Patents

動態記憶體分配技術 Download PDF

Info

Publication number
TWI506538B
TWI506538B TW102114416A TW102114416A TWI506538B TW I506538 B TWI506538 B TW I506538B TW 102114416 A TW102114416 A TW 102114416A TW 102114416 A TW102114416 A TW 102114416A TW I506538 B TWI506538 B TW I506538B
Authority
TW
Taiwan
Prior art keywords
memory
function
segment
value
segments
Prior art date
Application number
TW102114416A
Other languages
English (en)
Other versions
TW201351270A (zh
Inventor
Toshimitsu Kani
Original Assignee
Hewlett Packard Development Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co filed Critical Hewlett Packard Development Co
Publication of TW201351270A publication Critical patent/TW201351270A/zh
Application granted granted Critical
Publication of TWI506538B publication Critical patent/TWI506538B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45566Nested virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Description

動態記憶體分配技術
本發明係有關於動態記憶體分配技術。
發明背景
一種電腦系統環境可被設計以致動複數個使用者共用硬體以及軟體資源。共用的硬體資源可包含,例如,印表機或其他輸出裝置、資料儲存與記憶體裝置以及電腦處理資源。一主機機器以及其之操作系統可管理該等共用資源。此一環境中之一使用者可被提供以存取於此處被稱為虛擬機器之環境子集。一虛擬機器模仿一分別的機器環境(例如,處理器),其被指定至一客戶操作系統(一虛擬機器接著可被複數個使用者所共用,例如,遠距地登入至該虛擬機器)。於此一環境中,與虛擬機器互動之一使用者不會察覺到發生在共用之相同硬體的任何其他虛擬機器上的任何活動。例如,由許多虛擬機器可存取的一電腦記憶體可被劃分,以至於各個虛擬機器具有唯一的存取電腦記憶體之一不同部份。一虛擬機器之一使用者可儲存資料於其之被指定的電腦記憶體部份中,其是不可被不同虛擬機器之使用者存取。因此,各個使用者可以如一個人與一分別 的實際機器互動之相同方式而與一虛擬機器互動。
一網路電腦系統環境可被組態以引動一虛擬機器或客戶操作系統以自一個系統或主機遷移至另一者。在遷移期間,虛擬機器之功能可自一硬體裝置被轉移至另一者。該遷移可能發生而不會有虛擬操作之可察知的中斷。
計算環境中之裝置可依據一標準被組態,例如,進階組態以及電源界面(ACPI)規格。藉由此一標準,該環境中之各裝置在一操作系統之下被表示如一物件。代表一裝置之一物件包含識別裝置型式之一硬體識別符(HID)。各個物件也包含唯一地被指定至一單一裝置(其可共用一HID)之一唯一識別符(UID)。一物件也可包含方法。例如,一狀態方法可能返回一裝置之目前狀態(例如,引動或不引動)。一物件可包含被指定至一特定型式裝置之一個或多個裝置特定方法。
一系統可被組態以當該系統正執行時引動連接或斷開一裝置。此一能力不同地被稱為熱插入或拔出,或動態添加或移除。例如,當該系統正執行時,為引動斷開一裝置,在ACPI之下對應至該裝置的一物件可被提供一排出方法。
依據本發明之一實施例,係特地提出一種方法,其包括呼叫一記憶體分類物件之函數以導致存取該記憶體分類物件之一記憶體列表中之一數值,以便動態地分配供一操作系統存取之一記憶體,該記憶體分類物件代表該記憶 體,並且該數值對應至一記憶體片段之一性質,該記憶體片段是選擇自該記憶體被劃分的複數個記憶體片段。
12‧‧‧電腦系統
16‧‧‧記憶體
18‧‧‧記憶體片段
19‧‧‧客戶操作系統
20‧‧‧處理器
22‧‧‧虛擬機器
22A、22B‧‧‧虛擬機器
24‧‧‧資料儲存裝置
25‧‧‧主機系統
26‧‧‧記憶體分類物件
28‧‧‧記憶體片段表
30‧‧‧函數
32‧‧‧驅動器
100‧‧‧動態記憶體分配方法
110-170‧‧‧動態記憶體分配步驟
於此處所述之範例可當配合附圖閱讀時藉由參考下面之詳細說明而最佳地被了解,於圖中:圖1是對於記憶體資源動態分配範例之應用的系統分解圖解說明;圖2是展示於圖1中之電腦系統機構的分解圖解說明;以及圖3是揭示用於記憶體資源動態分配之方法範例流程圖。
詳細說明
依據記憶體資源動態分配範例,一記憶體裝置之部份是可利用一操作系統存取,例如,一虛擬機器之操作系統。記憶體裝置系統可利用操作系統被處理,如被劃分成為複數個劃分部份之被劃分的記憶體。該等劃分部份於此處被稱為記憶體片段。一些記憶體片段是可利用操作系統而存取的,而其他者可能是不行。該被劃分之記憶體裝置可被劃分成為相等尺度之鄰接的記憶體片段,或可被劃分成為任意大小之鄰接的記憶體片段。一單一操作系統可被同意存取一些或所有的記憶體片段,其可能不是彼此鄰接。
記憶體資源之動態分配("熱插入或拔出")係關連 於一能力,其是在操作系統正於一機器(例如,虛擬機器)上執行時之該機器操作期間,利用一操作系統修改一記憶體片段之接取性。例如,在操作系統操作期間,一個或多個另外的記憶體片段可被添加(存取被引動)或被移除(存取不被引動)。
於缺乏用於動態分配能力之系統中,僅當一機器是將開始或重新開始時,記憶體資源將被分配。分配之任何改變將需要重新開始該虛擬機器。
記憶體資源之動態分配優點可在能支援共用記憶體資源之複數個虛擬機器之系統脈絡內被了解(並且於此處被說明)。但是,記憶體資源動態分配範例可在執行一單一操作系統之一單一實體機器或處理器上被實作,或在採用存取記憶體之任何計算機器、電腦、或處理器上被實作。
例如,依據記憶體資源之動態分配範例,一記憶體裝置可被合併於一主機系統內,或另外以不同方式聯結於主機系統或可利用主機系統存取。一"主機系統"(也被稱為一虛擬機器管理器或"超級管理器(hypervisor)"系統)在此處涉及提供資源至一個或多個虛擬機器(例如,虛擬電腦或處理器)之一機器(例如,一電腦或處理器)。主機系統之記憶體裝置因此可供用於可作為客戶系統在主機系統上執行的一個或多個虛擬機器。一虛擬機器是可利用被安置在遠離該主機系統之位置的使用者裝置(例如,網路終端)所存取。例如,使用者裝置可被組態以經由網路(應了解,如包 含可發送資料之任何有線或無線通訊媒體)與主機系統通訊。
虛擬機器可在一組態規格之下操作,例如,進階組態以及電源界面(ACPI)規格。ACPI韌體可被包含於由可用的各個虛擬機器所組成之資源內。被劃分的記憶體裝置可在ACPI之下被表示(於此被使用作為用於組態或資源管理之表示任何物件為基礎的說明)如一單一物件,其於此處被稱為記憶體分類裝置物件。該記憶體分類物件包含關於可用於虛擬機器之可用的記憶體片段(在記憶體裝置內之記憶體位址範圍)之資訊。記憶體分類物件是可具特徵於一單一硬體識別符(HID),其識別如可劃分成為記憶體片段之一記憶體裝置之對應的硬體裝置。此外,記憶體分類物件是可具特徵於一單一唯一識別符(UID)。記憶體分類物件可包含一記憶體片段表(其可以是關於一組結構、物件、或陣列變量)或界定各個可用的記憶體片段之相似列表(例如,藉由一位址以及尺度)。一可用的記憶體片段是可具特徵於記憶體片段表中之一數值,其對應至記憶體片段之一性質。例如,該數值可指示該記憶體片段是否被引動,並且因此可存取用於資料儲存之虛擬機器,或不被引動並且因此不被虛擬機器所存取。
記憶體分類物件包含引動記憶體裝置以操作之函數或方法,該方法包含可用的記憶體片段之線上增加以及移除。例如,此等函數可包含用以返回記憶體片段資訊以及用以設定或改變記憶體片段狀態(例如,改變狀態至不 引動,以便有效地排出記憶體片段、使記憶體片段不可為一虛擬機器所存取)之函數。一虛擬機器之處理器可呼叫一個或多個記憶體分類物件函數,以便決定一個或多個記憶體片段之狀態,或導致(例如,藉由要求主機系統改變狀態)改變記憶體片段之狀態(例如,動態地增加或移除)。一函數,其存取(例如,讀取或修改)或導致一主機系統或客戶操作系統存取記憶體片段表中之一數值,於此處被稱為導致存取該數值。
記憶體資源之動態分配範例,如於此處所述,在被使用於記憶體資源分配之其他技術上可以是有利的。如於此處所述之動態記憶體分配可引動任何尺度之記憶體分割成為任意小的記憶體片段。單一記憶體分類物件之記憶體片段表的接取以及讀取可引動相對快速以及有效的存取記憶體片段(例如,如相對於存取一相似數量的分別物件)。因此,一任意數量之記憶體片段可有效地被管理,引動小記憶體片段之動態添加或移除(熱插入或拔除)。減低記憶體裝置被劃分之記憶體片段尺度的能力可增加系統彈性以及效能。藉由小的記憶體片段,被分配或重新分配之記憶體數量可更嚴密地被匹配至各虛擬機器之需要。
記憶體資源動態分配範例,如於此處所述,當一虛擬機器自一個主機系統遷移至另一者時,可能是有利的。例如,當遷移時,可存取之記憶體資源(例如,被劃分成為一百萬位元組片段)可自一較小的(例如,一個十億位元組)記憶體裝置被轉移至一較大的(例如,一兆位元組)記憶 體裝置。在此一遷移之後,該虛擬系統是可藉由適當地修改客戶操作系統之記憶體分類物件的記憶體片段表而能夠存取整個較大的記憶體裝置。
小的記憶體片段之分配,如於此處所述,在處理小的記憶體片段方面可能是更有效於一些先前說明之技術,於其中在ACPI之下的各個劃分或記憶體裝置片段將關聯一分別物件。一般,存取大量分別物件所需的時間以及資源數量將是更較大於存取單一記憶體分類物件之記憶體片段表中一相似之大量項目所需的時間數量。於此一先前說明之系統中,例如,自一個十億位元組記憶體裝置遷移至一個一兆位元組記憶體裝置之記憶體資源的遷移範例(同時維持一個一百萬位元組片段尺度)將需要關聯自1024至10242 之記憶體片段的分別物件的所需數量之增加。此一物件數量之增加實質上可減低此一系統之操作速度。如果,另一方面,如果各個記憶體片段尺度將被增加(例如,增加至一個十億位元組,記憶體片段數量保持在1024),重新分配記憶體資源中之系統彈性將被削弱或將需要重新組態客戶操作系統。
一系統可被組態以供用於記憶體資源動態分配範例之應用。
圖1是用於記憶體資源動態分配範例之應用的系統之分解圖解說明圖。
電腦系統12可代表一個或多個相互通訊電腦或伺服器,其可被安置在可以是彼此遠離的各種位置。電腦 系統12可包含,被聯結於,或通訊於,可被主機系統25管理的一個或多個裝置或其他資源,並且組成可用的一個或多個虛擬機器22。例如,該等資源可包含處理器20、記憶體16、或資料儲存裝置24。共用記憶體16之各區域可被不同虛擬機器22之不同客戶操作系統所存取。
一虛擬機器22是可自遠處位置所存取的,例如,利用遠處終端或經由網路與電腦系統12通訊之另一裝置。例如,操作一遠處終端之使用者可能經由網路登入虛擬機器22。此一終端包含一處理器、一輸入裝置(例如,鍵盤、袖珍鍵盤、指示裝置、控制器、麥克風),一輸出裝置(例如,電腦監視器或屏幕、印表機、顯示面板、擴音機、或可產生可見、可聽見的、或觸覺的輸出之其他裝置)、資料儲存裝置、或記憶體裝置之一者或多者。
電腦系統12可被操作以提供資源,例如,用於利用一個或多個虛擬機器22存取之記憶體資源。電腦系統12可被組態以引動記憶體資源之動態分配。電腦系統12可被組態以執行主機系統25或虛擬機器管理器,其分配硬體資源至在客戶操作系統之下執行的一個或多個虛擬機器。例如,一虛擬機器管理器可決定共用記憶體16之一區域(其是可為一虛擬機器所存取),是具特徵於不可供用於共用該共用記憶體16之記憶體資源的所有其他虛擬機器。
圖2是圖1展示之電腦系統機構的分解圖解說明圖。電腦系統12之一個或多個構件可結合於,或連接到一個或多個相互通訊機器。
電腦系統12被組態以供主機系統25以及虛擬機器22A與22B之操作(為清晰起見,僅二個虛擬機器被展示並且僅虛擬機器22A圖解地被詳細說明)。主機系統25以及虛擬機器22A、22B可於電腦系統12處理器20上執行。
主機系統25被組態以管理電腦系統12資源並且引動利用虛擬機器22A以及22B存取資源。利用主機系統25被管理之資源可包含處理器20、記憶體16以及資料儲存裝置24。
處理器20可包含一個或多個處理單元,例如,一個或多個電腦之處理單元。處理器20可被組態以依據被儲存於記憶體16中之程式指令操作。處理器20是可執行用以引動記憶體資源動態分配之一應用。
處理器20可執行一虛擬機器管理器應用以引動主機系統25之操作。
處理器20可與資料儲存裝置24通訊。資料儲存裝置24可包含一個或多個固定式或可移動的非依電性資料儲存裝置。例如,資料儲存裝置24可包含用以儲存用於處理器20操作之程式指令的電腦可讀取媒體。例如,該等程式指令可包含用以引動如此處所述之記憶體資源動態分配的驅動器32。例如,驅動器32可在虛擬機器22A之客戶操作系統19下被操作。應注意,資料儲存裝置24可以是遠端的處理器20。於此等情況中,資料儲存裝置24可以是儲存程式指令之遠處伺服器的儲存裝置,該等程式指令是可被下載以及被安裝以供處理器20執行之安裝封包形式的指令。資 料儲存裝置24可被採用以儲存在操作期間供處理器20使用之資料或參數,或處理器20之操作結果。
處理器20可與記憶體16通訊。記憶體16可包含利用處理器20存取的一個或多個依電性或非依電性記憶體裝置。記憶體16可被採用以儲存,例如,供處理器20操作之程式指令、在操作期間供處理器20使用之資料或參數,或處理器20之操作結果。例如,記憶體16可被採用以儲存供用於虛擬機器22A之客戶操作系統19、引動記憶體資源動態分配之驅動器32、或主機系統25之程式指令。
至少部份之記憶體16可供用於一虛擬機器22A或22B。可用記憶體16部份可包含被劃分成為記憶體片段18之共用記憶體16。
例如,記憶體16可在虛擬機器22A或22B之下被劃分成為複數個記憶體片段18。例如,各個記憶體片段18可代表共用記憶體16之一功能地鄰接區域(例如,相鄰位址)。記憶體片段18可以是相等尺度,或可以是不同尺度。(雖然記憶體16之記憶體片段18被展示如與虛擬機器22A、虛擬機器22B中之尺度相等,但各客戶操作系統19可不同地劃分記憶體16。)
被引動以供虛擬機器22A存取之記憶體16的記憶體片段18利用在虛擬機器22A內之陰影被指示。同樣地,被引動以供虛擬機器22B存取之記憶體16的記憶體片段18利用在虛擬機器22B內之陰影被指示。在主機系統25之內,被引動以供虛擬機器22A或虛擬機器22B存取之記憶體16 的區域分別地利用文字A或B被指示。
客戶操作系統19可包含記憶體分類物件26。記憶體分類物件26可以是可供用於虛擬機器22A(並且可存在虛擬機器22A之虛擬處理器內)。
一記憶體分類物件26可包含,例如,一HID、一UID、以及一狀態之指示(例如,記憶體16是可用或不可用的)。HID可以是唯一於一記憶體裝置,其是如此處所述地經由記憶體分類物件26而可相容於記憶體資源之動態分配。一記憶體分類物件26也可包含引動與不被組態以互動於記憶體分類物件26之客戶操作系統19的相容性之資訊。例如,此一客戶操作系統19可能不包含驅動器32,其引動經由記憶體分類物件26之記憶體資源動態分配。引動相容性之此資訊可包含,例如,一相容識別符(CID)。
例如,一客戶操作系統可包含與動態記憶體分配不相容之驅動器。於此情況中,HID(其在CID之前被檢查)可能不被確認。該CID(當該HID不被確認時,其被檢查)可被詮釋以將記憶體分類物件26當作代表一記憶體裝置之一物件。一資源列表識別(靜態地)記憶體裝置可用的區域(如果HID利用客戶操作系統19之驅動器32被確認,則資源列表被忽略)。如另一範例,客戶操作系統可包含驅動器,其引動藉由利用一分別物件表示各個記憶體片段之動態記憶體分配,各片段利用一分別資源列表被界定。於此情況中,CID可被詮釋,因而將記憶體分類物件26當作代表一記憶體裝置(其之範圍利用資源列表被決定)。但是,因為記憶體分 類物件26缺乏用以斷開記憶體裝置之一標準排出操作,該記憶體裝置被看作是不可排出並且被保護以免於排出它之任何試圖。
記憶體分類物件26包含記憶體片段表28。記憶體片段表28可包含記憶體片段18之一列表或細目(例如,如物件之陣列)。例如,各個記憶體片段18可於記憶體片段表28中被表示如一組旗標、變量、或參數。該等變量可指示一對應的記憶體片段18之性質。此等變量可包含,例如,關於虛擬機器22A之各記憶體片段18的共用記憶體16中之一位置(例如,如一開始位址以及一結束位址,或如一位址以及一尺度),以及各個記憶體片段18之一狀態。
記憶體分類物件26包含一個或多個函數30。函數30可在虛擬機器22A正執行之時被客戶操作系統19所呼叫(不同的虛擬機器,例如,虛擬機器22A以及22B可在不同操作系統之下執行)。於一些情況中,呼叫一函數30可能返回指示一個或多個記憶體片段18之一性質的一數值。例如,該返回的數值可以是一變量之一目前數值,其指示記憶體片段18之一性質。於其他情況中,呼叫一函數可能修改記憶體片段18之一性質。例如,呼叫該函數可能修改決定記憶體片段18之一性質之變量的一數值。
例如,函數30可包含,當被客戶操作系統19所呼叫時,返回記憶體片段表28之一表示的一函數。該表示可包含一些被列出之記憶體片段的表示。記憶體片段表28之表示可包含用於各個記憶體片段18之下列各者:一通用唯 一識別符(UUID)、一狀態之指示(例如,被引動或可供用的,或不被引動或不可用的)、一開始(最小基底)位址、一長度(例如,就記憶體單元或位址而論)、或一排出狀態(例如,該片段是否將被排出)。(該UUID在客戶操作系統19之下可被看作是可與一UID交換的,例如,如代表一分別記憶體片段之一物件。)
函數30可包含一函數,當動態地增加(使得可被正在客戶操作系統19之下執行的虛擬機器22A存取)客戶操作系統19要求(例如,自主機系統25)增加之一個或多個記憶體片段18(例如,各利用它的UUID被辨識)時,該函數可被客戶操作系統19所呼叫。例如,此一函數可能返回包含添加的記憶體片段之記憶體片段表28的更新表示。
函數30可包含一函數,當動態地移除(使得不可被正在客戶操作系統19之下執行的虛擬機器22A存取)客戶操作系統19要求(例如,自主機系統25)移除之一個或多個記憶體片段18(例如,各利用它的UUID被辨識)時,該函數可被客戶操作系統19所呼叫。此一函數可確保被儲存於記憶體片段18上而將被移除之任何資料,在該要求的記憶體片段被排出之前,利用客戶操作系統19被移動至另一之可存取記憶體片段18上。該函數可能返回將被移除的一片段表(例如,各利用它的UUID被辨識)。
函數30可包含可被客戶操作系統19所呼叫之一函數,以排出(動態地移除)一個或多個記憶體片段18(例如,各利用它的UUID被辨識)。一排出的記憶體片段18是 不能再於客戶操作系統19之下正執行時可利用虛擬機器22A存取。例如,一變量或旗標可於記憶體分類物件26之記憶體列表28中被修改以指示該排出的記憶體片段18是不可利用虛擬機器22A存取的。此一函數可返回一指示(例如,旗標或變量),其指示該排出操作是否成功。
函數30可包含可被客戶操作系統19所呼叫之一函數,以使得一個或多個記憶體片段18(例如,各利用它的UUID被辨識)作為不可排出。例如,一變量或旗標可於記憶體分類物件26之記憶體列表28中被修改以指示一記憶體片段18為不可利用虛擬機器22A排出。此一函數可確保一最小數量記憶體保持為可利用正在客戶操作系統19之下執行的一虛擬機器22A所存取。例如,此一最小數量記憶體可能是用以儲存記憶體分類物件26、一客戶操作系統19以及程式指令所必需的,其可能是用以操作一虛擬機器22A或用於記憶體資源動態分配之應用範例所需的。例如,此一函數可返回記憶體片段表28之更新表示。
操作時,處理器20可執行用於記憶體資源動態分配的一方法。圖3是揭示用於記憶體資源動態分配之方法範例的流程圖。
動態記憶體分配方法100可利用於記憶體資源動態分配之系統的處理器被執行。例如,動態記憶體分配方法100可由正執行於虛擬機器之虛擬處理器上之客戶操作系統被執行。動態記憶體分配方法100可回應於一預定事件或情況(例如,當啟動一虛擬機器時、在進行需要記憶體資 源之一活動之前、當接收增加或減少可存取接取記憶體資源數量之要求時、當接收可存取記憶體資源之數量是將被增加或減少之指示時),或當一要求或命令利用使用者被發出或自動地利用另一應用(例如,虛擬機器之客戶操作系統,或利用虛擬機器管理器應用)被發出時,在預定週期區間會自動地被執行。
應了解,有關以圖解說明方法分割成為離散操作的流程圖,為便利以及清楚起見,藉由被選擇之流程圖方塊被表示。圖解說明方法的另外分割成為離散操作是可能具有等效結果。應了解,圖解說明方法之此些另外分割成為離散操作代表圖解說明方法之其他範例。
同樣地,應了解,為便利以及清楚起見,除非被指示,否則,利用流程圖方塊被表示之圖解說明的操作執行順序被選擇。圖解說明方法之操作可以另外順序,或同時地被執行,而具有等效結果。此些圖解說明方法之操作的重新排序應被理解作為代表圖解說明方法的其他範例。
動態記憶體分配方法100包含存取(例如,產生或存取一先前被產生者)對應至被劃分的記憶體裝置之一記憶體分類物件(方塊110)。例如,當虛擬機器啟動(開機)時,或當一記憶體裝置成為可供用於虛擬機器時(例如,當存取記憶體是所需或所要求時,或如虛擬機器管理器應用之操作結果),則記憶體分類物件可利用虛擬機器之客戶操作系統被產生。一旦被產生,該記憶體分類物件可利用操作系統被存取。例如,當啟動時,記憶體分類物件可被存取以 得到所有的記憶體片段資訊。
記憶體分類物件可控制存取被劃分的記憶體裝置之一個或多個記憶體片段。例如,存取一記憶體片段可依據該記憶體片段之一個或多個性質而利用虛擬機器之操作系統被控制。各個記憶體片段之性質可利用記憶體分類物件之一個或多個構件結構而被決定,其可整體地被稱為記憶體片段表。記憶體片段之性質可利用虛擬機器管理器應用或利用客戶操作系統被設定。記憶體片段之性質可藉由利用客戶操作系統呼叫記憶體分類物件之一適當函數而被確定、被設定、或被修改。
在虛擬機器之客戶操作系統操作期間,客戶操作系統可接收一通知以動態增加(使可存取)一記憶體片段(方塊120)。例如,回應於增加可存取記憶體容積之一檢測需要或要求,客戶操作系統可自正於虛擬機器上在客戶操作系統之下執行的一應用接收此一通知。
回應於動態地增加一記憶體片段(或多個片段)之通知,客戶操作系統可呼叫記憶體分類物件之一適當的增加函數以引動一被指示的記憶體片段(方塊130)。例如,依據一預定序列或依據其他準則(例如,近接其他被引動記憶體片段),用於添加之一記憶體片段可被選擇。記憶體片段可利用它之相關的UUID、位址或其他指示被指示。呼叫增加函數可能要求一主機系統以提供一個或多個被引動之記憶體片段。因呼叫增加函數結果,一被更新之記憶體片段表,於其中一個或多個記憶體片段之一個或多個性質被 修改,可被提供以便引動利用虛擬機器之客戶操作系統存取那些記憶體片段。主機系統可確保沒有目前被分配至一不同虛擬機器的記憶體資源將被添加至要求的客戶操作系統。
在虛擬機器之客戶操作系統的操作期間,客戶操作系統可接收動態地移除(使不可存取)一記憶體片段之通知(方塊140)。例如,回應於可用的記憶體資源之餘額的檢測,客戶操作系統可自正在客戶操作系統之下於虛擬機器上執行的一應用,接收此一通知。例如,回應於利用另一虛擬機器之用以增加記憶體資源之需求,此一通知可自一虛擬機器管理器應用被接收。
回應於動態地移除一記憶體片段之通知,客戶操作系統可呼叫記憶體分類物件之一適當的移除函數以備妥供移除之一被指示的記憶體片段(或多個片段)(方塊150)。例如,一供移除之記憶體片段可依據一預定序列或依據其他準則(例如,目前被儲存於各個記憶體片段中之資料的容積、自其他被引動的記憶體片段之距離)被選擇。記憶體片段可利用它之相關的UUID、位址或其他指示被指示。呼叫該移除函數可能導致目前被儲存於被指示的記憶體片段上之任何資料,將被複製至一個或多個其他目前被引動的記憶體片段上,或可能返回一將被移除之記憶體片段表,其之資料內容將利用客戶操作系統被移動至其他記憶體片段。記憶體管理技術可被應用以決定用於任何移動資料之一目的地記憶體片段。一將被移除之記憶體片段表可利用 該函數被返回。
虛擬機器之客戶操作系統可呼叫一適當的排出函數,以排出(移除或使失效)被指示以供移除的一個或多個記憶體片段(方塊160)。呼叫該排出函數可能導致被指示之記憶體片段的一個或多個性質將被修改,以便使虛擬機器之客戶操作系統無法存取該記憶體片段。例如,排出該等記憶體片段之一要求可被送至主機系統。排出操作是否成功可利用自排出函數被返回的一個或多個數值被決定。
虛擬機器可操作,如利用被存取的記憶體分類物件被指示而被分配至虛擬機器的任何記憶體片段,以決定一記憶體片段是否被添加或被移除(方塊170)。記憶體分類物件可如需要地被存取(返回至方塊110)。
依據用於記憶體資源動態分配之一方法範例,被儲存於一電腦-可讀取媒體中(例如,暫存器記憶體、處理器快取、RAM、ROM、硬碟驅動、快閃記憶體、CDROM、磁式媒體,等等)之一電腦程式應用可包含程式碼或可執行的指令,當該等程式碼或指令被執行時可指示或導致一控制器或處理器執行此處討論之方法,例如,用於動態記憶體分配之一方法範例。該電腦可讀取媒體可以是包含除了用於暫態的傳輸信號之外的所有形式以及類型之電腦可讀取媒體的非暫態電腦可讀取媒體。
12‧‧‧電腦系統
16‧‧‧記憶體
20‧‧‧處理器
22‧‧‧虛擬機器
24‧‧‧資料儲存裝置
25‧‧‧主機系統

Claims (14)

  1. 一種方法,其包括呼叫一記憶體分類物件之函數以導致存取該記憶體分類物件之一記憶體列表中之一數值,以便動態地分配供一作業系統存取之一記憶體,該記憶體分類物件代表該記憶體,並且該數值對應至一記憶體片段之一性質,該記憶體片段是選擇自該記憶體被劃分的複數個記憶體片段;其中該作業系統是一虛擬機器之作業系統,並且其中該記憶體被組態而被複數個虛擬機器所共用。
  2. 依據申請專利範圍第1項之方法,其中該數值指示該選擇的記憶體片段是否可被該作業系統存取。
  3. 依據申請專利範圍第2項之方法,其中呼叫該函數以導致存取該數值包括導致該數值之一改變以動態地增加該選擇的記憶體片段。
  4. 依據申請專利範圍第2項之方法,其中呼叫該函數以導致存取該數值包括導致該數值之一改變以動態地退出該選擇的記憶體片段。
  5. 依據申請專利範圍第1項之方法,其中呼叫該函數以導致存取該數值包括取得該記憶體列表之一表示形式。
  6. 依據申請專利範圍第1項之方法,其中呼叫該函數以導致存取該數值包括改變該數值以指示該選擇的記憶體片段是不可退出的。
  7. 依據申請專利範圍第1項之方法,其中呼叫該函數以導 致存取該數值包括要求一主機系統以提供對該數值之存取。
  8. 一種非暫態電腦可讀取儲存媒體,其具有儲存其上的指令,當該等指令藉由一處理器被執行時將導致該處理器進行具下列步驟之一方法:存取一記憶體分類物件,該物件代表一記憶體,該物件包含一記憶體列表,該記憶體列表包含複數個數值,各數值指示該記憶體之對應的複數個記憶體片段之各記憶體片段的一性質,該物件包含一函數,該函數可被呼叫以允許存取該等複數個數值之一數值;以及呼叫該函數以導致存取該等複數個數值之一數值,該數值是對應至該等複數個記憶體片段之一選擇的記憶體片段;其中該記憶體被組態而被複數個虛擬機器所共用。
  9. 如申請專利範圍第8項之非暫態電腦可讀取儲存媒體,其中呼叫該函數包括導致存取該數值以動態地增加該選擇的記憶體片段。
  10. 如申請專利範圍第8項之非暫態電腦可讀取儲存媒體,其中呼叫該函數包括導致存取該數值以動態地退出該選擇的記憶體片段。
  11. 如申請專利範圍第10項之非暫態電腦可讀取儲存媒體,其中該方法進一步包括,呼叫該記憶體分類物件之一函數以於動態地退出該選擇的記憶體片段之前,將資料自該選擇的記憶體片段移動至另一可存取記憶體片 段。
  12. 如申請專利範圍第8項之非暫態電腦可讀取儲存媒體,其中呼叫該函數包括存取該記憶體列表之一表示形式。
  13. 一種系統,其包括:一記憶體;一處理單元,其與一電腦可讀取媒體通訊,其中該電腦可讀取媒體包含一組指令,其中該處理單元被設計以執行該組指令而進行下列動作:產生代表該記憶體之一記憶體分類物件,該物件包含一記憶體列表,該記憶體列表包含複數個數值,各數值指示該經代表的記憶體之對應的複數個記憶體片段之各記憶體片段的一性質,該物件包含一函數,該函數可被呼叫以允許存取該等複數個數值之一數值,該記憶體分類物件包含一硬體識別符,其識別該記憶體作為是可劃分成為可動態分配之片段,並且包含識別該記憶體作為一記憶體之一可相容之識別符;存取該記憶體分類物件;於該硬體識別符是可辨認的事件中,呼叫該函數以導致存取該等複數個數值之一數值,該數值是對應至該等複數個記憶體片段之一選擇的記憶體片段;於該硬體識別符是不可辨認的事件中,存取該可相容識別符以辨識該記憶體。
  14. 如申請專利範圍第13項之系統,其中該處理單元是一主機系統之處理單元,該主機系統被組態以管理複數個虛擬機器,其中各個虛擬機器之一作業系統被組態以執行該組指令。
TW102114416A 2012-04-25 2013-04-23 動態記憶體分配技術 TWI506538B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/034891 WO2013162531A1 (en) 2012-04-25 2012-04-25 Dynamic memory allocation

Publications (2)

Publication Number Publication Date
TW201351270A TW201351270A (zh) 2013-12-16
TWI506538B true TWI506538B (zh) 2015-11-01

Family

ID=49483640

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102114416A TWI506538B (zh) 2012-04-25 2013-04-23 動態記憶體分配技術

Country Status (5)

Country Link
US (1) US20150127916A1 (zh)
EP (1) EP2842039A4 (zh)
CN (1) CN104272273A (zh)
TW (1) TWI506538B (zh)
WO (1) WO2013162531A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201504937A (zh) * 2013-07-31 2015-02-01 Ibm 由實體儲存裝置中所選分區所構成的虛擬儲存裝置
US9690709B2 (en) * 2014-07-14 2017-06-27 Oracle International Corporation Variable handles
US20170060736A1 (en) * 2015-12-09 2017-03-02 Mediatek Inc. Dynamic Memory Sharing
US10430249B2 (en) * 2016-11-02 2019-10-01 Red Hat Israel, Ltd. Supporting quality-of-service for virtual machines based on operational events
US20190286327A1 (en) * 2018-03-15 2019-09-19 Apple Inc. Memory Objects
US11086686B2 (en) * 2018-09-28 2021-08-10 International Business Machines Corporation Dynamic logical partition provisioning

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026462A (en) * 1993-06-01 2000-02-15 International Business Machines Corporation Main storage and expanded storage reassignment facility
TW200406673A (en) * 2002-06-27 2004-05-01 Ibm Procedure for dynamic reconfiguration of resources of logical partitions
TW200805134A (en) * 2005-08-03 2008-01-16 Sandisk Corp Data operations in flash memories utilizing direct data file storage
US20090113422A1 (en) * 2007-10-31 2009-04-30 Toshimitsu Kani Dynamic allocation of virtual machine devices
TW201101330A (en) * 2009-06-17 2011-01-01 Mediatek Inc Apparatus and method that accesses memory

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6983463B1 (en) * 1998-10-02 2006-01-03 Microsoft Corporation Network independent profiling of applications for automatic partitioning and distribution in a distributed computing environment
US20060184938A1 (en) * 2005-02-17 2006-08-17 Intel Corporation Method, apparatus and system for dynamically reassigning memory from one virtual machine to another
US7509392B2 (en) * 2005-03-24 2009-03-24 International Business Machines Corporation Creating and removing application server partitions in a server cluster based on client request contexts
US20090216519A1 (en) * 2008-02-25 2009-08-27 Mohan Parthasarathy Data Processing System And Method
US8516037B2 (en) * 2008-06-16 2013-08-20 International Business Machines Corporation Methods for dynamic partitioning of applications in client-server environments
US8327174B2 (en) * 2009-03-20 2012-12-04 Hewlett-Packard Development Company, L.P. Loading operating systems using memory segmentation and ACPI based context switch
US8935317B2 (en) * 2010-06-23 2015-01-13 Microsoft Corporation Dynamic partitioning of applications between clients and servers

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026462A (en) * 1993-06-01 2000-02-15 International Business Machines Corporation Main storage and expanded storage reassignment facility
TW200406673A (en) * 2002-06-27 2004-05-01 Ibm Procedure for dynamic reconfiguration of resources of logical partitions
TW200805134A (en) * 2005-08-03 2008-01-16 Sandisk Corp Data operations in flash memories utilizing direct data file storage
US20090113422A1 (en) * 2007-10-31 2009-04-30 Toshimitsu Kani Dynamic allocation of virtual machine devices
TW201101330A (en) * 2009-06-17 2011-01-01 Mediatek Inc Apparatus and method that accesses memory

Also Published As

Publication number Publication date
WO2013162531A1 (en) 2013-10-31
CN104272273A (zh) 2015-01-07
EP2842039A1 (en) 2015-03-04
US20150127916A1 (en) 2015-05-07
EP2842039A4 (en) 2015-12-09
TW201351270A (zh) 2013-12-16

Similar Documents

Publication Publication Date Title
TWI506538B (zh) 動態記憶體分配技術
US9870288B2 (en) Container-based processing method, apparatus, and system
EP2940615B1 (en) Method and apparatus for isolating management virtual machine
JP5376496B2 (ja) 仮想マシンデバイスの動的割り当て
JP5510556B2 (ja) 仮想マシンのストレージスペースおよび物理ホストを管理するための方法およびシステム
CN107209683B (zh) 备份映像恢复
WO2017192415A1 (en) Cloning computing device containers
JP2022516486A (ja) リソース管理方法と装置、電子デバイス、及び記録媒体
Wu et al. Container lifecycle‐aware scheduling for serverless computing
JP2014520346A5 (zh)
KR20170057237A (ko) 컨텐츠 변환 없는 컴퓨팅 디바이스에서의 다중 운영 체제 환경들의 지원
CN105190552A (zh) 执行多个管理程序的系统和方法
EP3304294A1 (en) Method and system for allocating resources for virtual hosts
CN108073423A (zh) 一种加速器加载方法、系统和加速器加载装置
US10817205B2 (en) Computer system and storage device
CN111078410A (zh) 内存分配方法、装置、存储介质及电子设备
CN114691300A (zh) 一种虚拟机实例的热迁移方法
CN112596950A (zh) 虚拟机数据备份方法、装置、设备及存储介质
US9971785B1 (en) System and methods for performing distributed data replication in a networked virtualization environment
US20170277632A1 (en) Virtual computer system control method and virtual computer system
CN111444117B (zh) 存储空间碎片化实现方法、装置、存储介质及电子设备
CN107797843B (zh) 一种容器功能增强的方法和装置
KR20140124787A (ko) 계산기, 액세스 관리 방법 및 컴퓨터 판독 가능한 기억 매체
CN110851181B (zh) 数据处理方法、装置及计算设备
CN113377490A (zh) 虚拟机的内存分配方法、装置和系统

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees