CN101484876A - 多任务虚拟机的堆组织 - Google Patents
多任务虚拟机的堆组织 Download PDFInfo
- Publication number
- CN101484876A CN101484876A CNA2006800553408A CN200680055340A CN101484876A CN 101484876 A CN101484876 A CN 101484876A CN A2006800553408 A CNA2006800553408 A CN A2006800553408A CN 200680055340 A CN200680055340 A CN 200680055340A CN 101484876 A CN101484876 A CN 101484876A
- Authority
- CN
- China
- Prior art keywords
- task
- application
- heap
- virtual machine
- multitasking virtual
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Abstract
本文描述了多任务虚拟机的堆组织。堆组织可以包括用于并发执行多个任务的执行引擎和与该执行引擎相耦合的多个堆。在一些实施例中,所述多个堆可以包括系统堆和与该系统堆相分离的任务堆。系统堆可以存储可由所述多个任务访问的系统数据。任务堆可以存储仅可由所述多个任务中的一个任务访问的任务数据。
Description
背景技术
堆组织(heap organization)是可以用于为由多任务虚拟机并发执行的多个任务存储数据的存储区。所述数据可以包括用于所有任务的程序对象和元数据。
常规上,有两类堆组织,即共享堆和分离堆。对于共享堆类型,多任务虚拟机可以使用单个堆来存储可由所有任务访问的数据。对于分离堆类型,多任务虚拟机可以使用逻辑上分离的多个堆。可以分配每个分离堆来存储仅可由单个任务访问的数据。
附图说明
在附图中,通过示例而非限制来说明本文阐述的发明。为了使说明简洁清楚,附图中所示的元件并不一定是按照比例绘制的。例如,为了清楚,某些元件的尺寸相对于其它元件的尺寸可能会被放大。此外,在认为适当的情况下,在多张附图中重复使用了附图标记,以表示对应或类似的元件。
图1示出了包括多任务虚拟机的计算平台的实施例;
图2示出了多任务虚拟机的实施例;
图3示出了图2的多任务虚拟机中的堆组织的实施例;
图4示出了将任务堆添加到图3的堆组织中的方法的实施例;
图5示出了从图3的堆组织回收任务堆的方法的实施例;
图6示出了图2的多任务虚拟机中的堆组织的另一个实施例;以及
图7示出了图2的多任务虚拟机中的堆组织的又一个实施例。
具体实施方式
下面的说明描述了用于多任务虚拟机的堆组织的技术。在以下说明中,为了提供对本发明的更透彻的理解,阐述了许多具体细节,诸如逻辑实现、伪代码、指定操作数的方法、资源分区/共享/复制实现、系统组件的类型和相互关系、以及逻辑分区/集成选择。但不使用这些具体细节也可以实践本发明。在其它实例中,没有详细示出控制结构、门级电路和完整的软件指令序列,以免对本发明造成模糊。本领域技术人员借助于该说明书就可以实现适合的功能,而无需不当的实验。
说明书中提到的“一个实施例”、“实施例”和“示例性实施例”等表示所述的实施例可以包括特定的特征、结构或特点,但并不是每个实施例都必须要包括所述特定的特征、结构或特点。此外,这种短语并不一定指代同一实施例。而且,当结合某一实施例描述该特定的特征、结构或特点时,结合其它实施例(不管是否明确说明)来实现这样的特征、结构或特点也被认为是在本领域技术人员的知识范围内。
可以以硬件、固件、软件或它们的任意组合来实现本发明的实施例。还可以将本发明的实施例实现为存储在机器可读介质上的指令,所述指令可由一个或多个处理器读取和执行。机器可读介质可以包括以机器(例如,计算装置)可读的形式存储或传输信息的任何机制。例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储媒体;光存储媒体;闪存装置;和电、光、声或其它形式的传播信号(例如载波、红外信号、数字信号等)等。
图1示出了包括多任务虚拟机的计算平台10的实施例。计算平台10的示例可以包括个人计算机、工作站、服务器计算机、个人数字助理(PDA)、移动电话、以及游戏机。
计算平台l0可以包括一个或多个处理器101、存储器102、芯片组103、I/O装置104、固件105和可能的其它组件。一个或多个处理器101可以经由诸如处理器总线之类的一条或多条总线可通信地耦合到各个组件(例如芯片组103)。可以将处理器101实现为在适当的架构(例如包括,由位于加州Santa Clara的英特尔公司出品的英特至强TM、英特奔腾TM、英特安腾TM架构)下的具有一个或多个可以执行代码的处理核心的集成电路(IC)。
存储器102可以存储多个软件应用1021、多任务虚拟机1022和操作系统1023的形式的指令和数据。存储器102的示例可以包括以下半导体装置之一或其任意组合:例如,同步动态随机存取存储器(SDRAM)装置、RAMBUS动态随机存取存储器(RDRAM)装置、双倍数据速率(DDR)存储器装置、静态随机存取存储器(SRAM)、以及闪存装置。
可以从诸如I/O装置106之类的任何适当装置输入多个软件应用1021。在其它实施例中,还可以通过计算平台10中的其它组件来生成软件应用。软件应用1021的示例可以包括JAVA应用(例如JAVA.class文件)、.NET应用(例如.NET代码)、或可能的其它编程语言形式的应用。
多任务虚拟机1022可以运行在操作系统1023之上,以并发执行多个软件应用1021。每个软件应用1021可以包括一个或多个任务,每个任务可以代表单个软件应用1021的一个实例化。在JAVA虚拟机中,如果两个“任务”共享相同的类路径(即,类文件的相同有序表),则这两个“任务”可以属于一个应用。
多任务虚拟机1022的示例可以包括由位于加州Santa Clara的Sun微系统公司出品的多任务JAVA虚拟机、以及由位于华盛顿州Redmond的公司出品的多任务.NET虚拟机。操作系统1023可以包括但不限于不同版本的和诸如之类的实时操作系统等。
在一个实施例中,芯片组103可以提供在一个或多个处理器101、存储器102、和诸如I/O装置104和固件105之类的其它组件之间的一条或多条通信路径。芯片组103可以包括存储器控制中心1031、输入/输出控制中心1032和固件中心1033。
在一个实施例中,存储器控制中心1031可以提供到处理器总线(其可与处理器101连接)和到适当装置(诸如存储器102)的通信链路。存储器控制中心102可以耦合到I/O控制中心1032,以提供到计算平台的I/O装置104的接口。I/O装置104的示例可以包括键盘、鼠标、网络接口、存储装置、照相机、蓝牙装置和天线。
在一个实施例中,存储器控制中心1031可以经由输入/输出控制中心1032可通信地耦合到固件中心1033。固件中心1033可以耦合到固件105,所述固件可以存储BIOS例程和/或EFI例程,所述BIOS例程在系统启动期间被计算平台执行,以初始化处理器101、芯片组103、以及该计算平台的其它组件,所述EFI例程使固件105与计算机平台的操作系统通过接口进行连接并提供用于引导该操作系统的标准环境。
其它的实施例可以实现用于计算平台10的结构的其它技术。例如,多任务虚拟机1022可以在虚拟机的一个实例化中执行一个软件应用1021。换句话说,多任务虚拟机1022可以在虚拟机的一个实例化中并发地执行属于一个应用的多个任务,并且所述多个任务是该应用的各个实例化。
图2示出了图1的多任务虚拟机1022的实施例。根据该实施例,多任务虚拟机1022可以包括加载器201、执行引擎202、堆组织203、堆管理器204和可能的其它组件。
加载器201可以加载来自各种资源的文件(包括类、接口、本地方法)。例如,加载器201可以加载来自多任务虚拟机厂商、程序员和任何第三方的多个软件应用1021、库、运行时环境变量、以及可能的其它文件。库可以包括向用户程序提供基本功能的各种函数和例程,例如自举(bootstrap)类库和非自举类库。运行时环境变量可以包括用于帮助多任务虚拟机寻找应用资源的配置。加载器的示例可以包括类加载器、本地方法接口、和可能的其它加载模块。
执行引擎202可以并发执行与软件应用1021相关联的多个任务。更具体而言,执行引擎202可以并发地解释(translate)软件应用并执行经解释的代码。
堆组织203可以存储用于多任务虚拟机1022的数据,例如元数据和程序对象。元数据可以包括关于从加载器201或其它组件加载的文件(例如,软件应用、库、运行时环境变量等)、来自执行引擎202的文件的经解释的代码、以及可能的其它数据的信息。元数据的示例可以包括JAVA类、方法、字段、字节码、JIT(即时)代码等的虚拟机内部表示。程序对象可以包括在执行所加载的文件时生成的对象。程序对象的示例可以包括用户定义的类加载器和类文件的实例。
例如在加载器201的帮助下,堆管理器204可以管理堆组织203。
图3示出了图2的堆组织203的实施例。
堆组织203可以包括多个在逻辑上分开的堆,其中每个堆可以包括多个逻辑上邻接的存储块,在两个堆之间没有块重叠。
在图3的实施例中,堆组织203可以包括系统堆301、多个应用堆3021-N、以及多个任务堆3031-N。
系统堆可以存储可由多任务虚拟机1022执行的所有任务共享的系统数据。在系统堆中存储的数据的寿命(lifespan)可以与多任务虚拟机1022的一个实例化相同。系统数据的示例可以包括全局共享库(例如自举类库、全局共享运行时环境、平台定义信息)的元数据、与多任务虚拟机的实例化具有相同寿命的程序对象(例如在执行自举类程序时生成的对象)、和用于该系统的可能的其它数据。在图3的实施例中,系统堆301是单例的(singleton),并不会被回收(reclaim)甚至压缩。
可以将应用堆3021-N中的每一个分配给多个软件应用1021中的每个“活(live)”应用,其中“活”应用可以具有由多任务虚拟机1022执行的至少一个任务。任务可以是其应用的实例化。应用堆3021-N中的每一个可以存储可由属于该应用并和该应用持续同样寿命的所有任务访问的应用数据。对于JAVA虚拟机规范,如果两个“任务”属于一个应用,则这两个“任务”可以共享相同的类路径,即它们可以共享类文件的相同有序表。有鉴于此,应用可以代表用于其任务的可执行二进制代码(binaries)(包括动态加载的二进制代码)和运行时环境。
在应用堆3021-N的每一个中存储的应用数据可以包括应用的元数据和可以与该应用具有相同寿命的程序对象。该应用的元数据的示例可以包括关于应用类文件、应用类文件的经解释的代码、应用库和用于解释并执行应用类文件的运行时环境变量、以及用于该应用的可能的其它数据的信息。程序对象的示例可以包括当初始化应用类文件时生成的对象。在图3的实施例中,如果该应用的最后一个任务被终止,则可以回收该应用堆。
可以将任务堆3031-N中的每一个分配给由多任务虚拟机1022执行的每个“活”任务。任务堆3031-N中的每一个可以存储仅可由相关任务访问的任务数据,这意味着禁止由其它任务来访问该任务数据。任务数据可以具有和相关任务相同的寿命。任务数据的示例可以包括当执行该任务时生成的程序对象和用于执行该任务的运行时环境变量。在图3的实施例中,如果相关任务被终止,则可以回收任务堆。
如图3所示,任务可以访问在其任务堆中存储的任务数据和在系统堆中存储的系统数据。任务还可以访问在该任务所属的应用的应用堆中存储的应用数据。由于一个应用可以具有由多任务虚拟机1022正执行的多于一个的任务,因此一个应用堆可以具有与其绑定的多于一个的任务堆。例如,应用堆3021可以具有与其绑定的两个任务堆3031-3032。但是,任务无法访问在该任务不属于的其它应用的其它应用堆中存储的其它应用数据。
其它实施例可以实现用于图3的堆组织203的结构的其它技术。例如,如果多任务虚拟机1022在一个实例期间执行一个应用1023,则堆组织203可以包括用于存储系统数据和应用数据的系统堆、以及用于存储任务数据的多个任务堆。
图4示出了将任务堆添加到如图3所示的堆组织203中的方法的实施例。
在块401中,堆管理器204或其它适当的装置可以确定为多任务虚拟机1022执行的任务创建任务堆。在块402中,堆管理器204或其它适当的装置可以确定该任务所属的应用。如上所述,应用可以代表用于其任务的可执行二进制代码(包括动态加载的二进制代码)和运行时环境,因此,堆管理器204或其它适当的装置可以通过自检(introspect)该任务的可执行二进制代码和运行时环境来确定该应用。
在块403,堆管理器204或其它适当的装置可以确定是否有应用堆已被分配给该应用。在块403的一个实施例中,堆管理器204或其它适当的装置可以维护记录着所有“活”应用的一个“活”应用表。每个“活”应用可以具有由多任务虚拟机1022执行的至少一个任务,因此每个“活”应用可以被分配有应用堆。通过这种方式,如果该应用被列在“活”应用表中,则堆管理器204或其它适当的装置可以确定应用堆已被分配给该应用,而如果没有列出,则可以确定应用堆还没有被分配给该应用。
如果该应用还没被分配有应用堆,则在块404中,堆管理器204或其它适当的装置可以为该应用创建应用堆。在块405中,堆管理器203或其它适当的装置可以将应用数据加载到该应用堆中。应用数据可以包括该应用的元数据和与该应用具有相同寿命的程序对象。
在块406中,堆管理器203或其它适当的装置可以标记出所创建的应用堆的存在。在块408的一个实施例中,堆管理器203或其它适当的装置可以将与该应用堆相对应的应用添加到“活”应用表中。
在块407中,堆管理器203或其它适当的装置可以将该任务绑定到在块404中创建的应用堆,从而该任务可以访问该应用堆中的应用数据。在块407的一个实施例中,堆管理器203或其它适当的装置可以将该任务添加到为该应用维护的、记录着属于该应用的并由多任务虚拟机1022执行的每个任务的“活”任务表中。
随后,在块408中,堆管理器203或其它适当的装置可以为由多任务虚拟机1022执行的该任务创建任务堆。可以通过将任务堆地址、应用堆地址和系统堆地址添加到该任务的栈中来创建任务堆,从而该任务可以访问这些堆中的数据。最后,在块409中,多任务虚拟机1022的执行引擎202可以在该任务的任务堆上运行该任务。
返回到块403,如果已经将应用堆分配给了与该任务相对应的应用,则堆管理器203或其它适当的装置可以在块407中将该任务绑定到该应用堆,在块408中为该任务创建任务堆,从而在块409中,执行引擎202可以在该任务的任务堆上运行该任务。
图5示出了从堆组织203回收任务堆的方法的实施例。
在块501中,例如当执行引擎202完成任务的执行时,该任务可以被终止。在块502中,堆管理器203或其它适当的装置可以释放分配给该任务的任务堆。在块502的一个实施例中,堆管理器203可以将该任务堆的存储区域作为整体返还给操作系统。随后,在块503中,堆管理器203或其它适当的装置可以确定该任务是否是其所属的应用的最后一个任务。堆管理器203或其它适当的装置可以以各种方式实现块203,例如,通过检查上述的为该应用维护的“活”任务表来确定该任务是否是“活”任务表中的最后一个任务。
如果该任务不是该应用的最后一个任务,则在块506中,堆管理器203或其它适当的装置可以将该任务与分配给该应用的应用堆解除绑定。可以通过从为该应用维护的“活”任务表中删除该任务来实现解除绑定。然而,如果该任务是该应用的最后一个任务,则在块504中,堆管理器203或其它适当的装置可以回收该应用的应用堆。堆管理器203或其它适当的装置可以以各种方式实现块504,例如,通过将该应用堆的存储区域作为整体返还给操作系统。随后,在块505中,例如通过从上述“活”应用表中删除对应的应用,堆管理器203或其它适当的装置可以标记该应用堆的回收。
图6示出了图2的堆组织203的另一个实施例。
堆组织203可以包括多个应用堆6011-N和多个任务堆6021-N。可以将应用堆6011-N中的每一个分配给一个应用1021。每个应用堆可以包括仅可由属于该应用并和该应用持续相同寿命的(多个)任务访问的系统数据和应用数据。系统数据可以包括全局共享库和全局共享运行时环境的元数据和程序对象,应用数据可以包括应用类、应用库和应用运行时环境的元数据和程序对象。
可以将任务堆6021-N中的每一个分配给由多任务虚拟机执行的每个任务。每个任务堆可以存储仅可由相关任务访问的、并和相关任务持续相同寿命的任务数据。任务数据可以包括该任务的程序对象和运行时环境。可以将任务堆6021-N中的每一个绑定到应用堆6011-N其中之一,从而该任务能够访问任务堆和应用任务中的数据。
其它实施例可以实现用于图6的堆组织的结构的其它技术。例如,可以将系统数据复制到每个任务堆6021-N中,而不复制到每个应用堆6011-N中。
图7示出了图2的堆组织203的又一个实施例。
如图所示,堆组织203可以包括系统堆701和多个任务堆7021-N。系统堆701可以存储可由多任务虚拟机1022执行的全部任务访问的、并和多任务虚拟机1022的实例化持续相同寿命的系统数据。系统数据可以包括全局共享库和全局共享运行时环境变量的元数据、以及与该多任务虚拟机的实例化持续相同寿命的程序对象、以及可能的其它系统数据。
可以将任务堆7021-N中的每一个分配给由多任务虚拟机1022执行的每个任务。每个任务堆可以存储仅可由相关任务访问的任务数据和应用数据。应用数据可以包括应用类、应用库和运行时环境的元数据和程序对象,以及该应用的可能的其它数据。任务数据可以包括该任务的程序对象和运行时环境变量。
尽管已经结合某些实施例描述了本发明,但应当理解,可以采取各种修改和变更,而不偏离本领域技术人员所很容易理解的本发明的精神和范围。这样的修改和变更被认为是涵盖在本发明和所附权利要求的范围内。
Claims (29)
1、一种多任务虚拟机,包括:
执行引擎,用于并发执行多个任务;
多个堆,其耦合到所述执行引擎,其中,所述多个堆包括:
系统堆,用于存储可由所述多个任务访问的系统数据;以及
任务堆,其被分配给所述多个任务中的一个任务,以存储仅可由所分配的任务访问的任务数据。
2、如权利要求1所述的多任务虚拟机,其中,所述系统数据包括全局共享库和全局共享运行时环境变量的系统元数据。
3、如权利要求1所述的多任务虚拟机,其中,所述系统数据包括程序对象,所述程序对象的寿命与所述多任务虚拟机的寿命相同。
4、如权利要求1所述的多任务虚拟机,其中,所述任务数据包括程序对象,所述程序对象的寿命与所分配的任务的寿命相同。
5、如权利要求1所述的多任务虚拟机,其中,所述多个堆还包括:
应用堆,其被分配给应用,以存储所述应用的应用数据,其中,所述应用数据仅可由所述多个任务中与所述应用相关联的至少一个任务来访问。
6、如权利要求5所述的多任务虚拟机,其中,所述应用数据包括应用类文件、应用库和应用运行时环境变量的应用元数据。
7、如权利要求5所述的多任务虚拟机,其中,所述应用数据包括程序对象,所述程序对象的寿命与所述应用的寿命相同。
8、如权利要求1所述的多任务虚拟机,还包括:
堆管理器,用于如果所分配的任务被终止则回收所述任务堆。
9、如权利要求5所述的多任务虚拟机,还包括:
堆管理器,用于如果与所述应用相关联的所述至少一个任务被终止则回收所述应用堆。
10、一种多任务虚拟机,包括:
执行引擎,用于并发执行多个任务;
多个堆,其耦合到所述执行引擎,其中,所述多个堆包括:
任务堆,其被分配给所述多个任务中的一个任务,以存储仅可由所分配的任务访问的任务数据;以及
应用堆,其被分配给应用,以存储仅可由所述多个任务中的至少一个任务访问的应用数据,其中,所述至少一个任务与所述应用相关联并包括所分配的任务。
11、如权利要求10所述的多任务虚拟机,其中,所述应用数据包括全局共享库和全局共享运行时环境变量的系统元数据,以及应用类文件、应用库和应用运行时环境变量的应用元数据。
12、如权利要求10所述的多任务虚拟机,其中,所述应用数据包括应用类文件、应用库和应用运行时环境变量的应用元数据,并且其中,所述任务数据包括全局共享库和全局共享运行时环境变量的系统元数据。
13、如权利要求10所述的多任务虚拟机,其中,所述应用数据包括程序对象,所述程序对象的寿命与所述应用的寿命相同。
14、如权利要求10所述的多任务虚拟机,其中,所述任务数据包括程序对象,所述程序对象的寿命与所述任务的寿命相同。
15、如权利要求10所述的多任务虚拟机,还包括:
堆管理器,用于如果所述任务被终止则回收所述任务堆。
16、如权利要求10所述的多任务虚拟机,还包括:
堆管理器,用于如果与所述应用相关联的所述至少一个任务被终止则回收所述应用堆。
17、一种多任务虚拟机的方法,包括:
提供被分配给多个任务中的一个任务的任务堆,其中,所述任务堆存储仅可由所分配的任务访问的任务数据;以及
确定是否存在被分配给应用的应用堆,其中,所述应用堆存储仅可由所述多个任务中的至少一个任务访问的应用数据,其中,所述至少一个任务与所述应用相关联并包括所分配的任务。
18、如权利要求17所述的方法,其中,所述确定还包括:
确定与所分配的任务相关联的所述应用;以及
确定所述应用是否存在于活应用表中,所述活应用表记录具有由所述多任务虚拟机执行的所述多个任务中的至少一个任务的每个应用。
19、如权利要求17所述的方法,还包括:
如果所述应用堆并不存在于所述多任务虚拟机中,则提供所述应用堆。
20、如权利要求17所述的方法,还包括:
标记所述应用堆的存在。
21、如权利要求20所述的方法,其中,所述标记还包括:
将所述应用添加到活应用表中,所述活应用表记录具有由所述多任务虚拟机执行的所述多个任务中的至少一个任务的每个应用。
22、如权利要求17所述的方法,还包括:
将所分配的任务绑定到所述应用堆,使得所分配的任务能够访问在所述应用堆中存储的应用数据。
23、如权利要求22所述的方法,其中,所述绑定还包括:
将所分配的任务添加到所述应用的活任务表中,其中,所述活任务表记录与所述应用相关联的并由所述多任务虚拟机执行的每个任务。
24、一种包括多个指令的机器可读介质,所述多个指令当被执行时使多任务处理机:
从所述多任务虚拟机回收被分配给多个任务中的一个任务的任务堆,其中,所述任务堆存储仅可由所分配的任务访问的任务数据;以及
确定是否从所述多任务虚拟机回收被分配给应用的应用堆,其中,所述应用堆存储仅可由所述多个任务中的至少一个任务访问的应用数据,其中,所述至少一个任务与所述应用相关联并包括所分配的任务。
25、如权利要求24所述的机器可读介质,其中,使所述多任务虚拟机确定是否回收所述应用堆的多个指令还使所述多任务虚拟机:
确定所分配的任务是否是活任务表中列出的最后一个任务,所述活任务表记录与所述应用相关联的并由所述多任务虚拟机执行的每个任务;以及
如果所分配的任务是所述活任务表中的最后一个任务,则确定回收所述应用堆。
26、如权利要求24所述的方法,其中,所述多个指令还使所述多任务虚拟机:
响应于确定不回收所述应用堆,将所分配的任务与所述应用堆解除绑定。
27、如权利要求26所述的方法,其中,使所述多任务虚拟机将所述任务解除绑定的多个指令还使所述多任务虚拟机:
从活任务表中删除所分配的任务,所述活任务表记录与所述应用相关联的并由所述多任务虚拟机执行的每个任务。
28、如权利要求24所述的方法,其中,所述多个指令还使所述多任务虚拟机:
从所述多任务虚拟机回收所述应用堆;以及
标记所述应用堆的回收。
29、如权利要求28所述的方法,其中,使所述多任务虚拟机标记所述回收的多个指令还使所述虚拟机:
从活应用表中删除所述应用,所述活应用表记录具有由所述多任务虚拟机执行的所述多个任务中的至少一个任务的每个应用。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2006/001688 WO2008009176A1 (en) | 2006-07-14 | 2006-07-14 | Heap organization for a multitasking virtual machine |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101484876A true CN101484876A (zh) | 2009-07-15 |
CN101484876B CN101484876B (zh) | 2012-12-19 |
Family
ID=38956520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800553408A Expired - Fee Related CN101484876B (zh) | 2006-07-14 | 2006-07-14 | 多任务虚拟机的堆组织 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20100050174A1 (zh) |
EP (1) | EP2052321A4 (zh) |
JP (1) | JP2009543236A (zh) |
KR (1) | KR101059633B1 (zh) |
CN (1) | CN101484876B (zh) |
WO (1) | WO2008009176A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102736984A (zh) * | 2011-03-29 | 2012-10-17 | 微软公司 | 用于存储器管理的使用并发标记和并发扫掠的保守垃圾收集 |
CN110908771A (zh) * | 2019-11-14 | 2020-03-24 | 杭州趣链科技有限公司 | 一种基于java的智能合约的内存管理方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8490050B2 (en) * | 2008-04-17 | 2013-07-16 | Microsoft Corporation | Automatic generation of user interfaces |
US9286080B2 (en) * | 2008-07-02 | 2016-03-15 | Hewlett-Packard Development Company, L.P. | Memory management for hypervisor loading |
US8843742B2 (en) | 2008-08-26 | 2014-09-23 | Hewlett-Packard Company | Hypervisor security using SMM |
KR101104454B1 (ko) * | 2010-06-29 | 2012-01-12 | 삼성에스디에스 주식회사 | 백그라운드에서 사용자용 가상머신의 상태를 설정할 수 있는 단말장치와 그 방법 |
US9218206B2 (en) | 2011-06-20 | 2015-12-22 | Microsoft Technology Licensing, Llc | Memory management model and interface for new applications |
US10635491B2 (en) | 2014-01-21 | 2020-04-28 | Oracle International Corporation | System and method for use of a multi-tenant application server with a multitasking virtual machine |
DE102015015735A1 (de) * | 2015-12-01 | 2017-06-01 | Giesecke & Devrient Gmbh | Teilnehmeridentitätsmodul mit mehreren Profilen und Heap-Speicher |
KR102266324B1 (ko) * | 2020-02-28 | 2021-06-17 | 숭실대학교산학협력단 | 머신 러닝 실행 관리 플랫폼에서의 워커 노드 관리 방법 및 그를 위한 플랫폼 시스템 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2345159B (en) * | 1998-12-23 | 2003-08-20 | Ibm | Virtual machine memory management |
US6694346B1 (en) * | 1999-04-30 | 2004-02-17 | International Business Machines Corporation | Long running, reusable, extendible, virtual machine |
US6694396B1 (en) * | 1999-06-18 | 2004-02-17 | Sony Corporation | Interfacing an NRSS-A smart card within an NRSS-B PCMCIA |
FR2801118B1 (fr) * | 1999-11-17 | 2001-12-21 | Bull Cp8 | Procede de chargement d'applications dans un systeme embarque multi-application, systeme embarque correspondant, et procede d'execution d'une application du systeme embarque |
US6971097B1 (en) * | 2000-06-09 | 2005-11-29 | Sun Microsystems, Inc. | Method and apparatus for implementing concurrently running jobs on an extended virtual machine using different heaps managers |
US6901586B1 (en) * | 2000-11-06 | 2005-05-31 | Sun Microsystems, Inc. | Safe language static variables initialization in a multitasking system |
US7165255B2 (en) * | 2001-03-15 | 2007-01-16 | Sun Microsystems, Inc. | Method and apparatus for managing surplus memory in multitasking system |
GB0107921D0 (en) * | 2001-03-30 | 2001-05-23 | Ibm | Computer system with multiple heaps and heap reset facility |
US6754796B2 (en) * | 2001-07-31 | 2004-06-22 | Sun Microsystems, Inc. | Frameworks for implementation of java heaps |
JP2004287870A (ja) * | 2003-03-24 | 2004-10-14 | Hitachi Ltd | ごみ集め方法及びコンパイル方法 |
US7707583B2 (en) * | 2004-05-20 | 2010-04-27 | Sap Ag | Robust sharing of runtime systems |
US7788300B2 (en) * | 2004-09-15 | 2010-08-31 | Sap Ag | Garbage collection for shared data entities |
CN100342342C (zh) * | 2005-12-14 | 2007-10-10 | 浙江大学 | 支持多进程的Java虚拟机实现方法 |
WO2008017204A1 (en) * | 2006-08-01 | 2008-02-14 | Intel Corporation | Heap manager for a multitasking virtual machine |
-
2006
- 2006-07-14 CN CN2006800553408A patent/CN101484876B/zh not_active Expired - Fee Related
- 2006-07-14 KR KR1020097000604A patent/KR101059633B1/ko not_active IP Right Cessation
- 2006-07-14 WO PCT/CN2006/001688 patent/WO2008009176A1/en active Application Filing
- 2006-07-14 JP JP2009518699A patent/JP2009543236A/ja active Pending
- 2006-07-14 EP EP06761435A patent/EP2052321A4/en not_active Withdrawn
- 2006-07-14 US US12/309,392 patent/US20100050174A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102736984A (zh) * | 2011-03-29 | 2012-10-17 | 微软公司 | 用于存储器管理的使用并发标记和并发扫掠的保守垃圾收集 |
CN110908771A (zh) * | 2019-11-14 | 2020-03-24 | 杭州趣链科技有限公司 | 一种基于java的智能合约的内存管理方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2052321A1 (en) | 2009-04-29 |
CN101484876B (zh) | 2012-12-19 |
KR20090029798A (ko) | 2009-03-23 |
KR101059633B1 (ko) | 2011-08-25 |
US20100050174A1 (en) | 2010-02-25 |
EP2052321A4 (en) | 2010-09-22 |
WO2008009176A1 (en) | 2008-01-24 |
JP2009543236A (ja) | 2009-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101484876B (zh) | 多任务虚拟机的堆组织 | |
US20090307292A1 (en) | Dynamically changing a garbage collector in a managed runtime system | |
CN100492301C (zh) | 避免软件冲突的方法和系统 | |
US10089119B2 (en) | API namespace virtualization | |
US6799173B2 (en) | Method and apparatus for sharing code containing references to non-shared objects | |
EP2365436B1 (en) | Overriding outputs in a producer graph oriented programming and execution system | |
US9336018B2 (en) | Mechanism for class data sharing using extension and application class-loaders | |
WO2019152442A1 (en) | Systems and methods for updating containers | |
CN102693188B (zh) | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 | |
US8135899B1 (en) | Expansion of virtualized physical memory of virtual machine | |
US10296353B2 (en) | Protecting basic input/output (BIOS) code | |
US9563446B2 (en) | Binary file generation | |
CN101233489A (zh) | 具有多个处理器的计算机系统中的自适应进程分派 | |
CN103109286A (zh) | 计算平台的异质处理器之间的共享虚拟存储器中的虚函数共享 | |
CN1894662A (zh) | 作为用于执行引导码的ram的处理器缓存存储器 | |
US20120311531A1 (en) | Optimizing an object-oriented program by transforming invocations of synthetic accessor methods | |
US20210141645A1 (en) | Just-in-Time Containers | |
JP2022545012A (ja) | メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存 | |
KR101140522B1 (ko) | 객체 관리 시스템 및 방법 | |
KR20100110710A (ko) | 동적 라이브러리를 갖는 인터페이스를 간단히 하는 방법, 시스템 및 컴퓨터 프로그램 제품 | |
EP4020297A1 (en) | Method for managing a volatile memory and java card device | |
CN110941433B (zh) | 一种边缘辅助部署第三方应用到微控制器方法及系统 | |
US20090327666A1 (en) | Method and system for hardware-based security of object references | |
CN113867776A (zh) | 中台应用的发布方法、装置、电子设备和存储介质 | |
JP5646591B2 (ja) | マルチタスク仮想マシンのためのヒープ組織 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121219 Termination date: 20130714 |