一种任务处理的方法和虚拟机技术

技术编号:8593838 阅读:136 留言:0更新日期:2013-04-18 06:59
本发明专利技术公开了一种任务处理的方法和虚拟机,属于计算机技术领域。所述方法包括:为任务在选取一个空闲资源;为全局变量创建全局变量快照;在选取的空闲资源中的私有内存空间中执行任务;当任务执行完毕后,获取全局变量对应的新的全局变量快照,根据本地全局变量快照以及新的全局变量快照获取已更新的全局变量;判断同步任务等待队列中的待执行任务的同步变量是否包括了现在已更新的全局变量,如果有,把这个任务放入执行任务等待队列。本发明专利技术通过虚拟机执行任务时对任务涉及的全局变量的感知,以及在调度任务时对任务涉及的全局变量合理的分配内存,使各任务之间涉及的全局变量的内存地址不冲突,减少虚拟机系统为维护内存一致性所产生的开销。

【技术实现步骤摘要】

本专利技术涉及计算机
,特别涉及一种任务处理的方法和虚拟机
技术介绍
在计算机
中,虚拟技术是一种通过组合或分割现有的计算机资源,使得这些资源表现为一个或多个操作环境,从而提供优于原有资源配置的访问方式的技术。现有技术中通过软件的方式将多个X86系统聚合成一个虚拟的对称多处理机。使用一个虚拟机监视器或者虚拟机仿真器实现单个结点的物理资源的虚拟化,提供统一的运行环境。虚拟机对内存的管理是通过软件的方式实现的,将所有物理资源中的内存在逻辑上视为一个整体的内存,内存是按照虚拟页面划分的。当虚拟机在执行任务时,会随机选取等待队列中的任务,然后按照任务涉及的相关数据所需的内存空间,在逻辑内存中为任务按顺序的分配内存地址,是一种按需分配内存的机制。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题由于虚拟机系统是按照页面来划分是否存在数据冲突的,当两个不同的任务所涉及的数据被分配在同一个虚拟页面之后,两个任务同时访问该虚拟页面中的两个不同地址,虚拟机会认为两个任务访问的是同一个数据,因此会认为两个任务发生了数据共享冲突,会中端两个任务的执行过程,而事实上并未发生真正的共享冲突,即产生了假共享现象,影响任务的执行。
技术实现思路
为了解决现有技术的问题,本专利技术实施例提供了一种任务处理的方法和虚拟机。所述技术方案如下第一方面,本专利技术实施例提供的一种任务处理的方法,包括当接收到虚拟指令层下发的创建任务的指令时,为所述任务选取一个用于执行所述任务的空闲资源,其中所述指令中至少包括所述任务运行时的起始地址,所述任务涉及的全局变量的地址信息和同步变量的地址信息;根据所述全局变量的地址信息获取与所述全局变量地址信息对应的全局变量状态息;根据全局变量状态信息为全局变量创建本地全局变量快照;根据所述本地全局变量快照在选取的所述空闲资源中预先分配的私有内存空间中执行所述任务;当所述任务执行完毕后,获取所述全局变量对应的新的全局变量快照,根据所述本地全局变量快照以及所述新的全局变量快照获取已更新的全局变量;判断同步任务等待队列中的待执行任务的同步变量是否包括了现在已更新的全局变量,如果有,把这个任务放入执行任务等待队列;其中所述同步任务等待队列中的任务是等待同步变量触发的任务所在的队列,当同步任务等待队列中的任务的同步变量触发后,将任务放入所述执行任务等待队列中排队等待调度;所述执行任务等待队列中的任务是等待调度执行的任务所在的队列。在第一方面的第一种可能的实现方式中,所述判断同步任务等待队列中的待执行任务的同步变量是否包括了现在已更新的全局变量,如果有,把这个任务放入执行任务等待队列,包括在执行任务等待队列中选取一个第一特定任务由第一空闲资源来运行,其中,所述第一特定任务涉及的全局变量的地址信息与当前执行的所有任务所涉及的全局变量的地址信息不冲突;或,在执行任务等待队列中选取一个第二特定任务由第二空闲资源来运行,其中,所述第二特定任务涉及的全局变量的地址信息与第二空闲资源已执行完毕的任务所涉及的全局变量的地址信息尽可能多的相同或相近,以增加数据亲和性。在第一方面的第二种可能的实现方式中,所述全局变量状态信息包括所述全局变量的内存地址,创建时间以及版本标记,所述根据全局变量状态信息为全局变量创建全局变量快照包括根据所述全局变量状态信息,将所述全局变量状态信息进行复制,生成所述全局变量的全局变量快照;相应的,所述根据所述本地全局变量快照以及所述新的全局变量快照获取已更新的全局变量包括判断所述本地全局变量快照中的版本标记与所述新的全局变量快照的版本标记是否相同,如果相同则表示所述全局变量未被其他任务更新;如果不相同则表示所述全局变量已被其他任务更新。根据第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述根据所述本地全局变量快照以及所述新的全局变量快照获取已更新的全局变量之后,所述方法还包括当全局变量未被其他任务更新时,在执行所述任务的资源中的公用内存空间中保存所述本地全局变量快照,并更新全局变量的内存地址为执行所述任务的资源中的公用内存空间中保存所述全局变量快照的内存地址,将所述本地全局变量快照更新为所述本地全局变量快照。结合第一方面或第一方面的第一种可能的实现方式或第二种可能的实现方式中任一项的实现方式,在第四种可能的实现方式中,所述根据所述全局变量快照在选取的所述空闲资源中预先分配的私有内存空间中执行所述任务之后,所述方法还包括执行所述任务发生缺页错误时,则查询所述全局变量快照的内存地址实际的状态;当所述任务对应的全局变量快照的内存地址在其他资源的公用内存空间中,将所述全局变量快照的内存地址对应的实际内容拷贝到本地;当所述任务对应的全局变量快照的内存地址在本地的公用内存空间中,则在本地的公用内存空间中进行获取。第二方面,本专利技术实施例提供的一种任务处理的虚拟机,包括调度器节点,分布式共享内存管理节点,任务执行容器节点;所述调度器节点包括选取模块,用于当接收到虚拟指令层下发的创建任务的指令时,为所述任务选取一个用于执行所述任务的空闲资源,其中所述指令中至少包括所述任务运行时的起始地址,所述任务涉及的全局变量的地址信息和同步变量的地址信息;第一获取模块,用于当所述任务执行完毕后,获取所述全局变量对应的新的全局变量快照,根据所述本地全局变量快照以及所述新的全局变量快照获取已更新的全局变量;判断模块,用于判断同步任务等待队列中的待执行任务的同步变量是否包括了现在已更新的全局变量,如果有,把这个任务放入执行任务等待队列;其中所述同步任务等待队列中的任务是等待同步变量触发的任务所在的队列,当同步任务等待队列中的任务的同步变量触发后,将任务放入所述执行任务等待队列中排队等待调度;所述执行任务等待队列中的任务是等待调度执行的任务所在的队列;所述分布式共享内存管理节点包括第二获取模块,用于根据所述全局变量的地址信息获取与所述全局变量地址信息对应的全局变量状态信息;创建模块,用于根据全局变量状态信息为全局变量创建本地全局变量快照;所述任务执行容器节点包括执行模块,用于根据所述本地全局变量快照在选取的所述空闲资源中预先分配的私有内存空间中执行所述任务。在第二方面的第一种可能的实现方式中,所述判断模块,包括第一处理单元,用于在执行任务等待队列中选取一个第一特定任务由第一空闲资源来运行,其中,所述第一特定任务涉及的全局变量与当前执行的所有任务所涉及的全局变量不冲突;第二处理单元,用于在执行任务等待队列中选取一个第二特定任务由第二空闲资源来运行,其中,所述第二特定任务涉及的全局变量与第二空闲资源已执行完毕的任务所涉及的全局变量尽可能多的相同或相近,以增加数据亲和性。在第二方面的第二种可能的实现方式中,所述全局变量状态信息包括所述全局变量的内存地址,创建时间以及版本标记,所述创建模块包括根据所述全局变量状态信息,将所述全局变量状态信息进行复制,生成所述全局变量的全局变量快照;相应的,所述第一获取模块具体用于判断所述本地全局变量快照中的版本标记与所述新的全局变量快照的版本标记是否相同,如果相同则表示所述全局变量未被其他任务更新;如果不相同则表示所述全局变量已被其他任务更新。根据第二方面的第二种可能的实现方式,在第三种可能的实现方本文档来自技高网...

【技术保护点】
一种任务处理的方法,其特征在于,所述方法包括:当接收到虚拟指令层下发的创建任务的指令时,为所述任务选取一个用于执行所述任务的空闲资源,其中所述指令中至少包括所述任务运行时的起始地址,所述任务涉及的全局变量的地址信息和同步变量的地址信息;根据所述全局变量的地址信息获取与所述全局变量地址信息对应的全局变量状态信息;根据全局变量状态信息为全局变量创建本地全局变量快照;根据所述本地全局变量快照在选取的所述空闲资源中预先分配的私有内存空间中执行所述任务;当所述任务执行完毕后,获取所述全局变量对应的新的全局变量快照,根据所述本地全局变量快照以及所述新的全局变量快照获取已更新的全局变量;判断同步任务等待队列中的待执行任务的同步变量是否包括了现在已更新的全局变量,如果有,把这个任务放入执行任务等待队列;其中所述同步任务等待队列中的任务是等待同步变量触发的任务所在的队列,当同步任务等待队列中的任务的同步变量触发后,将任务放入所述执行任务等待队列中排队等待调度;所述执行任务等待队列中的任务是等待调度执行的任务所在的队列。

【技术特征摘要】
1.一种任务处理的方法,其特征在于,所述方法包括 当接收到虚拟指令层下发的创建任务的指令时,为所述任务选取一个用于执行所述任务的空闲资源,其中所述指令中至少包括所述任务运行时的起始地址,所述任务涉及的全局变量的地址信息和同步变量的地址信息; 根据所述全局变量的地址信息获取与所述全局变量地址信息对应的全局变量状态信息; 根据全局变量状态信息为全局变量创建本地全局变量快照; 根据所述本地全局变量快照在选取的所述空闲资源中预先分配的私有内存空间中执行所述任务; 当所述任务执行完毕后,获取所述全局变量对应的新的全局变量快照,根据所述本地全局变量快照以及所述新的全局变量快照获取已更新的全局变量; 判断同步任务等待队列中的待执行任务的同步变量是否包括了现在已更新的全局变量,如果有,把这个任务放入执行任务等待队列; 其中所述同步任务等待队列中的任务是等待同步变量触发的任务所在的队列,当同步任务等待队列中的任务的同步变量触发后,将任务放入所述执行任务等待队列中排队等待调度;所述执行任务等待队列中的任务是等待调度执行的任务所在的队列。2.根据权利要求1所述的方法,其特征在于,所述判断同步任务等待队列中的待执行任务的同步变量是否包括了现在已更新的全局变量,如果有,把这个任务放入执行任务等待队列,包括 在执行任务等待队列中选取一个第一特定任务由第一空闲资源来运行,其中,所述第一特定任务涉及的全局变量的地址信息与当前执行的所有任务所涉及的全局变量的地址信息不冲突;或, 在执行任务等待队列中选取一个第二特定任务由第二空闲资源来运行,其中,所述第二特定任务涉及的全局变量的地址信息与第二空闲资源已执行完毕的任务所涉及的全局变量的地址信息尽可能多的相同或相近,以增加数据亲和性。3.根据权利要求1所述的方法,其特征在于,所述全局变量状态信息包括所述全局变量的内存地址,创建时间以及版本标记,所述根据全局变量状态信息为全局变量创建全局变量快照包括根据所述全局变量状态信息,将所述全局变量状态信息进行复制,生成所述全局变量的全局变量快照; 相应的,所述根据所述本地全局变量快照以及所述新的全局变量快照获取已更新的全局变量包括 判断所述本地全局变量快照中的版本标记与所述新的全局变量快照的版本标记是否相同,如果相同则表示所述全局变量未被其他任务更新;如果不相同则表示所述全局变量已被其他任务更新。4.根据权利要求3所述的方法,其特征在于,所述根据所述本地全局变量快照以及所述新的全局变量快照获取已更新的全局变量之后,所述方法还包括 当全局变量未被其他任务更新时,在执行所述任务的资源中的公用内存空间中保存所述本地全局变量快照,并更新全局变量的内存地址为执行所述任务的资源中的公用内存空间中保存所述全局变量快照的内存地址,将所述本地全局变量快照更新为所述本地全局变量快照。5.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述全局变量快照在选取的所述空闲资源中预先分配的私有内存空间中执行所述任务之后,所述方法还包括 执行所述任务发生缺页错误时,则查询所述全局变量快照的内存地址实际的状态;当所述任务对应的全局变量快照的内存地址在其他资源的公用内存空间中,将所述全局变量快照的内存地址对应的实际内容拷贝到本地; 当所述任务对应的全局变量快照的内存地址在本地的公用内存空间中,则在本地的公用...

【专利技术属性】
技术研发人员:顾磷马志强盛中华文刘飞
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1