CN115061779A - 一种用户态虚拟机的内核锁管理方法及装置 - Google Patents
一种用户态虚拟机的内核锁管理方法及装置 Download PDFInfo
- Publication number
- CN115061779A CN115061779A CN202210688928.8A CN202210688928A CN115061779A CN 115061779 A CN115061779 A CN 115061779A CN 202210688928 A CN202210688928 A CN 202210688928A CN 115061779 A CN115061779 A CN 115061779A
- Authority
- CN
- China
- Prior art keywords
- lock
- core
- kernel
- virtual
- ticket number
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 45
- 238000000034 method Methods 0.000 claims description 62
- 238000009987 spinning Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 7
- 230000003247 decreasing effect Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 description 19
- 101150033305 rtcB gene Proteins 0.000 description 9
- 230000004044 response Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种用户态虚拟机的内核锁管理方法及装置,其技术方案包括:当不拥有内核锁的虚拟核尝试获取内核锁时,把全局内核锁获取票号作为该虚拟核的内核锁获取票号,并对全局内核锁获取票号递增第一设定值;当该虚拟核的内核锁获取票号与全局内核锁获取票号相等时,该虚拟核成功获取内核锁;该虚拟核释放内核锁时,对全局内核锁服务票号递增第一设定值。本发明的技术方案使各虚拟核的内核锁获取票号不同,不会出现同时成功获得内核锁情况,提高了操作系统的实用性,降低了操作系统的复杂度。
Description
技术领域
本发明涉及操作系统领域,尤其涉及一种用户态虚拟机的内核锁管理方法及装置。
背景技术
现有支持多任务多虚拟核的嵌入式操作系统,虚拟核需要互斥的访问内核资源时,会使用内核锁来保证对内核资源的互斥访问。
现有的内核锁是不确定性的,多个虚拟核同时获取内核锁时,不能确定那个虚拟核先获取内核锁,从而影响了操作系统的实时性。现有的内核锁不能以任务为单位管理内核锁、也不支持内核锁的嵌套获取,从而增加了操作系统的复杂性,影响了操作的适用性。
发明内容
有鉴于此,本发明实施例提供了一种用户态虚拟机的内核锁管理方法及装置,其技术方案包括:当不拥有内核锁的虚拟核尝试获取内核锁时,把全局内核锁获取票号作为该虚拟核的内核锁获取票号,并对全局内核锁获取票号递增第一设定值;当该虚拟核的内核锁获取票号与全局内核锁获取票号相等时,该虚拟核成功获取内核锁;该虚拟核释放内核锁时,对全局内核锁服务票号递增第一设定值。本发明的技术方案使各虚拟核的内核锁获取票号不同,不会出现同时成功获得内核锁情况,提高了操作系统的实用性,降低了操作系统的复杂度。
在一些实施例中,还通过内核锁嵌套获取次数实现以任务为粒度的内核锁嵌套获取与释放,使任务重调度过程更加简洁,提升操作系统的可维护性,增加操作系统的可用性以及适用范围。在一些实施例中,虚拟核在自旋获取内核锁过程中,恢复当前虚拟核的全局中断开关,减少中断的最大延迟响应时间,增加操作系统的实时性。
第一方面,本发明实施例提供了一种用户态虚拟机的内核锁管理方法,包括:当不拥有内核锁的一个虚拟核尝试获取内核锁时,该虚拟核原子性获取全局内核锁获取票号作为该虚拟核的内核锁获取票号,并对全局内核锁获取票号原子性递增第一设定值;以及当一个虚拟核的内核锁获取票号与全局内核锁服务票号相等时,该虚拟核获取内核锁成功;当一个虚拟核释放内核锁且释放后不拥有内核锁时,对全局内核锁服务票号原子性递增第一设定值,并把该虚拟核的内核锁获取票号设置为0。
由上,当不拥有内核锁的一个虚拟核尝试获取内核锁时,该虚拟核原子性获取全局内核锁获取票号作为该虚拟核的内核锁获取票号,从而使各虚拟核的内核锁获取票号不同,不会出现同时成功获得内核锁情况,提高了操作系统的实用性,降低了操作系统的复杂度。
在第一方面的一种可能的实施方式中,一种用户态虚拟机的内核锁管理方法还包括:当一个虚拟核获取内核锁成功时,把该虚拟核当前运行任务的内核锁嵌套次数递增1,一个任务的内核锁嵌套次数位于该任务的任务控制块中;当一个虚拟核释放内核锁时,该虚拟核当前运行任务的内核锁嵌套次数递减1。
由上,通过内核锁嵌套获取次数实现以任务为粒度的内核锁嵌套获取与释放,使任务重调度过程更加简洁,提升操作系统的可维护性,增加操作系统的可用性以及适用范围
在第一方面的一种可能的实施方式中,当一个虚拟核尝试获取内核锁时,该虚拟核通过自旋方式尝试获取内核锁,且在所述自旋获取的每轮循环开始时禁止该虚拟核的全局中断和在所述自旋获取的每轮循环最后恢复该虚拟核的全局中断开关。
由上,虚拟核在自旋获取内核锁过程中,恢复当前虚拟核的全局中断开关,减少中断的最大延迟响应时间,增加操作系统的实时性。
在第一方面的一种可能的实施方式中,一种用户态虚拟机的内核锁管理方法还包括:当一个虚拟核释放内核锁且该当前运行任务的内核锁嵌套次数大于1时,恢复该虚拟核的全局中断开关;当一个虚拟核释放内核锁且该当前运行任务的内核锁嵌套次数等于1时,使能该虚拟核的全局中断开关。
由上,在内核锁嵌套释放时,内核锁嵌套次数确定是恢复还是使能虚拟核的全局中断开关,便于管理虚拟核的全局中断的状态,降低了操作系统的复杂度,增加操作系统的可用性。
在第一方面的一种可能的实施方式中,一种用户态虚拟机的内核锁管理方法还包括:在一个虚拟核对切入任务重调度时,当切入任务的内核锁嵌套次数等于0时,对全局内核锁服务票号原子性递增第一设定值,该虚拟核的内核锁获取票号设置为0。
由上,虚拟核对切入任务重调度时根据内核锁嵌套次数管理切入任务对内核锁需求,降低了操作系统的复杂度,增加操作系统的可用性。
在第一方面的一种可能的实施方式中,用户态虚拟机设置全局内核锁变量,其包括:所述全局内核锁获取票号,所述全局内核锁服务票号,内核锁拥有者,各虚拟核的内核锁获取票号,所述内核锁拥有者为当前拥有内核锁的虚拟核。
由上,通过全局内核锁变量,使内核锁管理更加方便,降低了操作系统的复杂度,增加操作系统的可用性。
在第一方面的一种可能的实施方式中,一种用户态虚拟机的内核锁管理方法还包括:在内核锁初始化时,设置所述全局内核锁获取票号和所述全局内核锁服务票号均为1,设置所述内核锁拥有者为空,设置各虚拟核的内核锁获取票号为0。
由上,通过内核锁初始化,便于内核锁的状态,使内核锁管理更加方便。
第二方面,本发明实施例提供了一种用户态虚拟机的内核锁管理装置,包括:内核锁获取模块,用于当不拥有内核锁的一个虚拟核尝试获取内核锁时,该虚拟核原子性获取全局内核锁获取票号作为该虚拟核的内核锁获取票号,并对全局内核锁获取票号原子性递增第一设定值;以及内核锁获取模块,还用于当一个虚拟核的内核锁获取票号与全局内核锁服务票号相等时,该虚拟核成功获取内核锁;内核锁释放模块,用于当一个虚拟核释放内核锁且释放后不拥有内核锁时,对全局内核锁服务票号原子性递增第一设定值,并把该虚拟核的内核锁获取票号设置为0。
由上,当不拥有内核锁的一个虚拟核尝试获取内核锁时,该虚拟核原子性获取全局内核锁获取票号作为该虚拟核的内核锁获取票号,从而使各虚拟核的内核锁获取票号不同,不会出现同时成功获得内核锁情况,提高了操作系统的实用性,降低了操作系统的复杂度。
在第二方面的一种可能的实施方式中,内核锁获取模块还用于当一个虚拟核获取内核锁成功时,把该虚拟核当前运行任务的内核锁嵌套次数递增1,一个任务的内核锁嵌套次数位于该任务的任务控制块中;内核锁释放模块还用于当一个虚拟核释放内核锁时,该虚拟核当前运行任务的内核锁嵌套次数递减1。
由上,通过内核锁嵌套获取次数实现以任务为粒度的内核锁嵌套获取与释放,使任务重调度过程更加简洁,提升操作系统的可维护性,增加操作系统的可用性以及适用范围
在第二方面的一种可能的实施方式中,内核锁获取模块具体用于当一个虚拟核尝试获取内核锁时,该虚拟核通过自旋方式尝试获取内核锁,且在所述自旋获取的每轮循环开始时禁止该虚拟核的全局中断和在所述自旋获取的每轮循环最后,恢复该虚拟核的全局中断开关。
由上,虚拟核在自旋获取内核锁过程中,恢复当前虚拟核的全局中断开关,减少中断的最大延迟响应时间,增加操作系统的实时性。
在第二方面的一种可能的实施方式中,内核锁释放模块还用于当一个虚拟核释放内核锁且该当前运行任务的内核锁嵌套次数大于1时,恢复该虚拟核的全局中断开关;当一个虚拟核释放内核锁且该当前运行任务的内核锁嵌套次数等于1时,使能该虚拟核的全局中断开关。
由上,在内核锁嵌套释放时,内核锁嵌套次数确定是恢复还是使能虚拟核的全局中断开关,便于管理虚拟核的全局中断的状态,降低了操作系统的复杂度,增加操作系统的可用性。
在第二方面的一种可能的实施方式中,一种用户态虚拟机的内核锁管理装置还包括:任务重调度模块,用于在一个虚拟核对切入任务重调度时,当切入任务的内核锁嵌套次数等于0时,对全局内核锁服务票号原子性递增第一设定值,该虚拟核的内核锁获取票号设置为0。
由上,虚拟核对切入任务重调度时根据内核锁嵌套次数管理切入任务对内核锁需求,降低了操作系统的复杂度,增加操作系统的可用性。
在第二方面的一种可能的实施方式中,用户态虚拟机设置全局内核锁变量,其包括:所述全局内核锁获取票号,所述全局内核锁服务票号,内核锁拥有者,各虚拟核的内核锁获取票号,所述内核锁拥有者为当前拥有内核锁的虚拟核。
由上,通过全局内核锁变量,使内核锁管理更加方便,降低了操作系统的复杂度,增加操作系统的可用性。
在第二方面的一种可能的实施方式中,一种用户态虚拟机的内核锁管理装置还包括:内核锁初始化模块,用于在内核锁初始化时,设置所述全局内核锁获取票号和所述全局内核锁服务票号均为1,设置所述内核锁拥有者为空,设置各虚拟核的内核锁获取票号为0。
由上,通过内核锁初始化,便于内核锁的状态,使内核锁管理更加方便。
第三方面,本发明实施例提供了一种操作系统,执行第一方面任一实施方式所述方法。
第四方面,本发明实施例提供了一种计算设备,包括,
总线;
通信接口,其与所述总线连接;
至少一个处理器,其与所述总线连接;以及
至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行本发明第一方面任一所述实施方式。
第五方面,本发明实施例提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行第一方面任一所述实施方式。
附图说明
图1为本发明的各实施例应用场景的结构示意图;
图2为本发明的一种用户态虚拟机的内核锁管理方法实施例一的流程示意图;
图3为本发明的一种用户态虚拟机的内核锁管理方法实施例二的流程示意图;
图4为本发明的内核锁获取方法实施例的流程示意图;
图5为本发明的内核锁释放方法实施例的流程示意图;
图6为本发明的任务重调度方法实施例的流程示意图;
图7为本发明的一种用户态虚拟机的内核锁管理装置实施例一的结构示意图;
图8为本发明的一种用户态虚拟机的内核锁管理装置实施例二的结构示意图;
图9本发明各实施例的一种计算设备的结构示意图。
具体实施方式
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三等”或模块A、模块B、模块C等,仅用于区别类似的对象,或用于区别不同的实施例,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
在以下的描述中,所涉及的表示步骤的标号,如S110、S120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
本发明各实施例提供了一种用户态虚拟机的内核锁管理方法及装置。
下面首先介绍本发明各实施例的应用场景的结构,本场景为一个包括一种虚拟机系统,其包括用户态和核心态。
其中,用户态包括多个用户态虚拟机,每个用户态虚拟机运行多个虚拟核上并调度多个任务。
示例地,图1示出了用户态虚拟机1、用户态虚拟机2和用户态虚拟机3,以用户态虚拟机1为示例说明每个用户态虚拟机,用户态虚拟机1运行在虚拟核11、虚拟核12和虚拟核13上,当任务101、任务102或任务103使用内核锁访问内核资源时,通过多虚拟核内核锁管理单元管理内核锁。
其中,实际系统可以需要配置任意数目的用户态虚拟机,每个用户态虚拟机根据实际需求运行任意数目的虚拟核上,每个用户态虚拟机根据实际需求通过多虚拟核任务调度单元调度任意数目的任务。
其中,核心态包括多虚拟机多核调度单元和各物理核,各个物理核通过多虚拟机多核调度单元映射成各用户态虚拟机的虚拟核。
下面根据图2至图6介绍本发明的各方法实施例。
首先根据图2介绍本发明的一种用户态虚拟机的内核锁管理方法实施例一。
在本实施例中,用户态虚拟机设置全局内核锁变量,表示为kernelLockVar,其包括:
全局内核锁获取票号kernelLockVar.lockTicket;
全局内核锁服务票号kernelLockVar.unlockTicket。
为了叙述方便,以第一虚拟核获取内核锁为例进行说明。
一种用户态虚拟机的内核锁管理方法实施例一在图1的各用户态虚拟机中运行,本实例设置全局内核锁获取票号和全局内核锁服务票号,当不拥有内核锁的虚拟核尝试获取内核锁时,把全局内核锁获取票号作为该虚拟核的内核锁获取票号,并对全局内核锁获取票号递增第一设定值;当该虚拟核的内核锁获取票号与全局内核锁获取票号相等时,该虚拟核成功获取内核锁;该虚拟核释放内核锁时,对全局内核锁服务票号递增第一设定值。本实例通过设置全局内核锁获取票号和全局内核锁服务票号,使各虚拟核的内核锁获取票号不同,不会出现同时成功获得内核锁情况,提高了操作系统的实用性,降低了操作系统的复杂度。
图2示出了本发明的一种用户态虚拟机的内核锁管理方法实施例一的流程,其包括步骤S110至S140。
S110:对内核锁进行初始化。
其中,在内核锁初始化时,对用户态虚拟机设置内核锁变量kernelLockVar进行如下设置:
全局内核锁获取票号kernelLockVar.lockTicket设置为1;
全局内核锁服务票号kernelLockVar.unlockTicket设置为1。
S120:不拥有内核锁的第一虚拟核获取内核锁,并对全局内核锁获取票号原子性递增第一设定值。
其中,第一虚拟核获取内核锁时,执行步骤S121至S122。
S121:第一虚拟核原子性获取全局内核锁获取票号作为第一虚拟核的内核锁获取票号,并对全局内核锁获取票号原子性递增第一设定值。
示例地,第一设定值为递增的步长,可以大于等于1的任意整数,示例地,第一设定值为2。
由上,通过本步骤的方法各虚拟核的内核锁获取票号不同,使各虚拟核有序获取内核锁。
S122:第一虚拟核自旋获取内核锁,在获取过程中判断第一虚拟核的内核锁获取票号与全局内核锁服务票号是否相等。
其中,如果第一虚拟核的内核锁获取票号与全局内核锁服务票号相等,则第一虚拟核获取内核锁成功,则跳出自旋获取的循环,向下执行步骤S130;如果一虚拟核的内核锁获取票号与全局内核锁服务票号不相等,则继续执行自旋获取内核锁和判断第一虚拟核的内核锁获取票号与全局内核锁服务票号是否相等。
其中,第一虚拟核的内核锁获取票号与全局内核锁服务票号相等有两种情况:
第一虚拟核在开始尝试获取内核锁时,无虚拟核拥有内核锁,第一虚拟核的内核锁获取票号与全局内核锁服务票号直接相等;
第一虚拟核等待成功获取内核锁过程,其他虚拟核释放了内核锁,全局内核锁服务票号增加第一设定值,使第一虚拟核的内核锁获取票号与全局内核锁服务票号相等。
由上,通过本步骤的方法各虚拟核的内核锁获取票号不同,使各虚拟核有序获取内核锁。
S130:第一虚拟核访问内核资源。
其中,因为第一虚拟核拥有内核锁,该访问内核资源为互斥访问内核资源。
S140:第一虚拟核释放内核锁,对全局内核锁服务票号原子性递增第一设定值。
其中,当第一虚拟核访问完内核资源后,立即释放内核锁,以提高内核资源访问效率。
示例地,第一设定值为递增的步长,可以大于等于1的任意整数,示例地,第一设定值为2。
由上,通过本步骤的对全局内核锁服务票号原子性递增第一设定值,便于尝试获取内核锁的虚拟核有序获取内核锁。
综上,一种用户态虚拟机的内核锁管理方法实施例一设置全局内核锁获取票号和全局内核锁服务票号,当不拥有内核锁的虚拟核尝试获取内核锁时,把全局内核锁获取票号作为该虚拟核的内核锁获取票号,并对全局内核锁获取票号递增第一设定值,使各虚拟核的内核锁获取票号不同;同时一个虚拟核的内核锁获取票号与全局内核锁获取票号相等时,该虚拟核才能成功获取内核锁,从而不会出现虚拟核同时成功获得内核锁情况,提高了操作系统的实用性,降低了操作系统的复杂度。
不会出现同时成功获得内核锁情况,提高了操作系统的实用性,降低了操作系统的复杂度。
下面根据图3至图6介绍本发明的一种用户态虚拟机的内核锁管理方法实施例二。
在本实施例中,为了便于描述,用NVCPUS表示一个用户态虚拟机上的最大虚拟核数;用rTcb表示当前运行任务的任务控制块,rTcb.kernelLockNestCount表示当前运行任务的内核锁嵌套获取次数,以支持内核锁的嵌套获取。
在本实施例中,用户态虚拟机在全局内核锁变量kernelLockVar增加以下数据:
内核锁拥有者kernelLockVar.cpuOwner;
各虚拟核的内核锁获取票号kernelLockVar.cpuLockTicket[i],i=1,2,…,NVCPUS。
为了叙述方便,以第一虚拟核获取内核锁为例进行说明。
一种用户态虚拟机的内核锁管理方法实施例二在图1的各用户态虚拟机中运行,在一种用户态虚拟机的内核锁管理方法实施例一的基础上通过在任务控制块中设置内核锁嵌套获取次数和在全局内核锁变量中增加各虚拟核的内核锁获取票号,实现以任务为粒度的内核锁获取与释放,使任务重调度过程更加简洁,提升操作系统的可维护性;同时还实现内核锁嵌套获取与释放,增加操作系统的可用性以及适用范围。另外,虚拟核在自旋获取内核锁过程中,恢复当前虚拟核的全局中断开关,减少中断的最大延迟响应时间,增加操作系统的实时性。
图3示出了本发明的一种用户态虚拟机的内核锁管理方法实施例二的流程,其包括步骤S210至S260。
S210:对内核锁进行初始化。
其中,在内核锁初始化时,对用户态虚拟机设置内核锁变量kernelLockVar进行如下设置:
全局内核锁获取票号kernelLockVar.lockTicket设置为1;
全局内核锁服务票号kernelLockVar.unlockTicket设置为1;
内核锁拥有者kernelLockVar.cpuOwner设置为NONE;
各虚拟核的内核锁获取票号kernelLockVar.cpuLockTicket[i]设置为0,i=1,2,…,NVCPUS。
S220:第一虚拟核通过当前运行任务自旋获取内核锁,直至获取成功,包括当前运行任务嵌套获取内核锁。
其中,本步骤获取内核锁以任务为粒度,包括两种情况:
不拥有内核锁的第一虚拟核通过当前运行任务获取内核锁;
拥有内核锁的第一虚拟核的当前运行任务嵌套获取内核锁。
本步骤详细方法请参照内核锁获取方法实施例。
S230:第一虚拟核的当前运行任务访问内核资源。
其中,因为第一虚拟核拥有内核锁,该访问内核资源为互斥访问内核资源。
S240:判断是否有任务的状态或者优先级的改变导致任务重调度。
其中,如果有任务的状态或者优先级的改变导致任务重调度,则执行步骤S250进行任务重调度,第一虚拟核直接进行任务重调度或其他虚拟核进行任务的重调度,否则,执行步骤S260。
S250:第一虚拟核的当前运行任务直接进行任务重调度或其他虚拟核在响应服务中断时进行任务的重调度。
其中,本步骤包括以下两种情况:
1)如果本次任务的改变只影响到第一虚拟核,第一虚拟核直接进行任务的重调度;
2)如果本次任务的改变影响到其他虚拟核,则第一虚拟核向其他虚拟核发送服务中断,其他虚拟核在响应此服务中断时会进行任务的重调度。
其中,第一虚拟核进行的任务重调度或其他虚拟核在响应服务中断时进行的任务重调度,重调度的详细流程相同,请参照一任务重调度方法实施例。
S260:第一虚拟核通过当前运行任务释放内核锁,包括当前运行任务嵌套释放内核锁。
其中,本步骤包括两种情况:
第一虚拟核通过当前运行任务释放内核锁后不再拥有内核锁,当前运行任务的内核锁嵌套获取次的值从1变为0;
第一虚拟核通过当前运行任务释放内核锁后还拥有内核锁,当前运行任务的内核锁嵌套获取次的值递减后还大于0。
其中,本步骤详细方法请参照内核锁管理方法实施例二的内核锁释放方法实施例。
下面结合图4介绍内核锁获取方法实施例。
为了叙述方便,以第一虚拟核获取内核锁为例进行说明。本实施例以任务为粒度,包括以下两种情况:
不拥有内核锁的第一虚拟核通过当前运行任务获取内核锁;
拥有内核锁的第一虚拟核的当前运行任务嵌套获取内核锁。
同时,第一虚拟核成功获取内核锁后,禁止虚拟核的全局中断,从而保证当前虚拟核和其他虚拟核对内核资源的互斥访问。但为了减少中断的最大延迟响应时间,第一虚拟核在获取内核锁过程中,恢复其全局中断开关,增加操作系统的实时性。
图4示出了内核锁获取方法实施例的流程,其包括S2210至S2230。
S2210:第一虚拟核自旋获取内核锁,在自旋获取的每轮循环过程中,第一虚拟核依次执行步骤S2211至S2216,且循环执行。
S2211:禁止第一虚拟核的全局中断。
其中,通过本步骤,在第一虚拟核成功获取内核锁后,禁止其全局中断。
S2212:获取第一虚拟核的内核锁获取票号。
其中,本步骤包括以下流程:
1)获取当前虚拟核的索引号,记录到局部变量rVCpuId;
2)从kernelLockVar.cpuLockTicket[rVCpuId]获取当前虚拟核的内核锁获取票号,并保存到局部变量currentTicket。
S2213:判断第一虚拟核的内核锁获取票号是否为0。
其中,第一虚拟核的内核锁获取票号为0,表示第一虚拟核还没有获取过内核锁,执行步骤S2214,设置第一虚拟核的内核锁获取票号;否则第一虚拟核已经尝试获取过内核锁或已经拥有内核锁,执行步骤S2215。
S2214:设置第一虚拟核的内核锁获取票号。
其中,本步骤包括以下步骤:
1)原子性地获取全局内核锁获取票号kernelLockVar.lockTicket,同时赋值给currentTicket,并原子性地对全局内核锁获取票号kernelLockVar.lockTicket递增第一设定值,示例地,第一设定值为2;
2)将currentTicket赋值给第一虚拟核的内核锁获取票号kernelLockVar.cpuLockTicket[rVCpuId]。
由上,第一虚拟核从不拥有内核锁开始获取内核锁时,设置第一虚拟核的内核锁获取票号为全局内核锁获取票号,从而使各个虚拟核的内核锁获取票号不同,使各虚拟核有序获取内核锁,不会出现同时获取情况。
S2215:判断第一虚拟核的内核锁获取票号与全局内核锁服务票号是否相等。
其中,本步骤具体执行时,判断currentTicket的值与kernelLockVar.unlockTicke的值是否相等。如果二者相等,则第一虚拟核的内核锁获取票号与全局内核锁服务票号相等,表示成功获取内核锁,跳出尝试获取的循环,向下执行步骤S2220,否则,第一虚拟核还未成功获取内核锁,执行步骤S2216,然后继续执行本步骤。
其中,本步骤包括两种情况之一的判断:
(1)第一虚拟核已经拥有内核锁,本次获取为其当前运行任务的嵌套获取,currentTicket的值与kernelLockVar.unlockTicket的值都是相等的,即第一虚拟核的内核锁获取票号与全局内核锁服务票号是相等的;
(2)第一虚拟核不拥有内核锁,本次获取内核锁是第一虚拟核的第一次获取内核锁。此时如果内核锁空闲,则currentTicket的值与kernelLockVar.unlockTicket的值都是相等的,即第一虚拟核的内核锁获取票号与全局内核锁服务票号是相等的,此时如果内核锁不空闲,则第一虚拟核的内核锁需要等待其他虚拟核释放内核锁后,全局内核锁服务票号才会与第一虚拟核的内核锁获取票号相等,即currentTicket的值与kernelLockVar.unlockTicket的值都是相等的。
S2216:恢复第一虚拟核的全局中断开关,减少中断延迟。
由上,在虚拟核获取内核锁过程中,恢复其全局中断开关,减少中断延迟,增加操作系统的实时性。
S2220:设置内核锁拥有者为第一虚拟核,即设置kernelLockVar.cpuOwner为rVCpuId。
由上,通过设置内核锁拥有者,当前运行任务获取内核锁时,能够判断设置内核锁拥有者是否时本虚拟核,从而支持当前运行任务嵌套内核锁。
S2230:当前运行任务的内核锁嵌套获取次数加1,即rTcb.kernelLockNestCount递增1。
由上,通过内核锁嵌套获取次数支持当前运行任务嵌套获取内核锁。
下面结合图5介绍内核锁释放方法实施例。
为了叙述方便,以第一虚拟核释放内核锁为例进行说明。本实施例以任务为粒度,包括以下两种情况:
第一虚拟核通过当前运行任务释放内核锁后不再拥有内核锁,当前运行任务的内核锁嵌套获取次的值从1变为0;
第一虚拟核通过当前运行任务释放内核锁后还拥有内核锁,当前运行任务的内核锁嵌套获取次的值递减后还大于0。
第一虚拟核完全成功释放内核锁后,会使能第一虚拟核的全局中断,从而保证当前虚拟核继续响应中断和其他虚拟核对内核资源的继续访问。
图5示出了内核锁释放方法实施例的流程,其包括步骤S2610至S2640。
S2610:判断第一虚拟核是否是内核锁拥有者。
其中,当第一虚拟核是内核锁拥有者时,执行步骤S2620,否则结束本方法的流程。
其中,在具体执行本步骤时,包括:获取第一虚拟核的索引号并赋值给局部变量rVCpuId,判断rVCpuId的值与kernelLockVar.cpuOwner值是否相等来判断第一虚拟核是否是内核锁拥有者。
S2620:判断第一虚拟核当前运行任务的内核锁嵌套获取次数是否为1。
其中,通过判断rTcb.kernelLockNestCount是否为1判断第一虚拟核当前运行任务的内核锁嵌套获取次数是否为1。当rTcb.kernelLockNestCount为1时,执行步骤S2630,第一虚拟核释放内核锁后不再拥有内核锁,否则执行步骤S2640,第一虚拟核的当前运行任务释放内核锁嵌套一次。
S2630:第一虚拟核释放内核锁且不再拥有内核锁,当前运行任务的内核锁嵌套获取次数设置为0,并使能第一虚拟核的全局中断开关。
其中,本步骤包括以下步骤:
1)设置当前运行任务的内核锁嵌套获取次数rTcb.kernelLockNestCount为0;
2)设置当前虚拟核的内核锁获取票号kernelLockVar.cpuLockTicket[rVCpuId]为0;
3)设置内核锁的拥有者kernelLockVar.cpuOwnerkernelLockVar.cpuOwner为空;
4)原子性地对全局内核锁服务票号kernelLockVar.unlockTicket递增第一设定值,示例地,第一设定值为2。
5)使能第一虚拟核的全局中断开关。
S2640:第一虚拟核的当前运行任务释放内核锁嵌套一次,前运行任务嵌套获取内核锁的次数递减1,即对rTcb.kernelLockNestCount递减1,且恢复当前虚拟核的全局中断开关。
下面结合图6介绍任务重调度方法实施例。
在任务重调度过程中,在切入到新的运行任务时,如果新的运行任务的嵌套获取内核锁的次数kernelLockNestCount不为0,表示新的运行任务在恢复到之前切走的点时是需要获取内核锁的,从而保证任务需要继续对内核资源进行互斥访问;否则新的运行任务在恢复到之前切走的点时是不需要获取内核锁的。
创建任务时,任务的嵌套获取内核锁的次数kernelLockNestCount为0。新的运行任务是创建的任务首次运行时,嵌套获取内核锁的次数kernelLockNestCount为0,恢复到任务入口处运行时是不需要获取内核锁的;否则是恢复到任务在内核中上次被切走的点继续执行,此时嵌套获取内核锁的次数kernelLockNestCount不为0,恢复到之前切走的点时是需要获取内核锁的,从而保证任务需要继续对内核资源进行互斥访问。
为了叙述方便,以第二虚拟核进行任务重调度为例进行说明。第二虚拟核是一种用户态虚拟机的内核锁管理方法实施例二中的第一虚拟核,也可以不是一种用户态虚拟机的内核锁管理方法实施例二中的第一虚拟核。
图6示出了任务重调度方法实施例的流程,其包括步骤S310至S410。
S310:第二虚拟核判断自身是否在中断处理过程中。
其中,如果第二虚拟核是否在中断处理过程中,则重调度结束,否则执行步骤S330至S410。
S330:第二虚拟核自旋获取内核锁,直至获取成功。
其中,本步骤参照方法实施例二的内核锁获取方法。
其中,如果第二虚拟核不是第一虚拟核上时,则第二虚拟核需要等待第一虚拟核释放内核锁后且不再拥有内核锁时,才能成功获取内核锁。如果第二虚拟核是第一虚拟核上时,本次为第二虚拟核上当前运行任务嵌套获取内核锁。
S340:获取第二虚拟核的索引号,记录到局部变量rVCpuId。
S350:获取当前运行任务的任务控制块,记录到局部变量rTcb,以便于保存,获取新的运行任务的任务控制块,记录到局部变量nTcb,以进行任务切换。
S360:判断当前运行任务与新的运行任务是不是同一个运行任务。
其中,如果不是同一个运行任务,则进行任务切换,执行步骤S370,否则执行S410,通过当前运行任务释放内核锁。
S370:保存被切走任务的任务控制块中的上下文即rTcb的上下文,以便于将来恢复。
S380:判断新的运行任务的内核锁嵌套获取次数是否为0,即判断nTcb中kernelLockNestCount是否为0。
其中,如果nTcb中kernelLockNestCount为0,则新的运行任务不需要内核锁,执行步骤S390后再恢复被切入任务的上下文,否则执行步骤S400,直接恢复被切入任务的上下文。
S390:把第二虚拟核设置为释放内核锁的状态。包括:
1)设置第二虚拟核的内核锁获取票号kernelLockVar.cpuLockTicket[rVCpuId]为0;
2)设置内核锁拥有者kernelLockVar.cpuOwnerkernelLockVar.cpuOwner为空;
3)原子性地对全局内核锁服务票号kernelLockVar.unlockTicket递增2。
S400:恢复被切入任务的上下文即nTcb中的上下文。
其中,经过本步骤后,被切入的任务变为当前运行任务。
S410:第二虚拟核的当前运行任务释放内核锁。
其中,本步骤参照方法实施例二的内核锁释放方法。
综上,一种用户态虚拟机的内核锁管理方法实施例二在一种用户态虚拟机的内核锁管理方法实施例一的基础上,通过在任务控制块中设置内核锁嵌套获取次数和在全局内核锁变量中增加内核锁拥有者及各虚拟核的内核锁获取票号,实现以任务为粒度的内核锁获取与释放,使任务重调度过程更加简洁,提升操作系统的可维护性;同时还实现内核锁嵌套获取与释放,增加操作系统的可用性以及适用范围。另外,虚拟核在自旋获取内核锁过程中,恢复当前虚拟核的全局中断开关,减少中断的最大延迟响应时间,增加操作系统的实时性。
下面基于图7至图8介绍本发明的一种用户态虚拟机的内核锁管理装置实施例。
图7示出了一种用户态虚拟机的内核锁管理装置实施例一,其包括:内核锁初始化模块710、内核锁获取模块720、内核资源访问模块730和内核锁释放模块740。
内核锁初始化模块710用于对内核锁进行初始化,其原理和优点请参照一种用户态虚拟机的内核锁管理方法实施例一的步骤S110。
内核锁获取模块720用于不拥有内核锁的第一虚拟核获取内核锁,并对全局内核锁获取票号原子性递增第一设定值,其原理和优点请参照一种用户态虚拟机的内核锁管理方法实施例一的步骤S120。
内核资源访问模块730用于第一虚拟核访问内核资源,其原理和优点请参照一种用户态虚拟机的内核锁管理方法实施例一的步骤S130。
内核锁释放模块740用于第一虚拟核释放内核锁,对全局内核锁服务票号原子性递增第一设定值,其原理和优点请参照一种用户态虚拟机的内核锁管理方法实施例一的步骤S140。
图8示出了一种用户态虚拟机的内核锁管理装置实施例二,其包括:内核锁初始化模块810、内核锁获取模块820、内核资源访问模块830、任务判断模块840、任务重调度模块850和内核锁释放模块860。
内核锁初始化模块810用于对内核锁进行初始化,其原理和优点请参照一种用户态虚拟机的内核锁管理方法实施例二的步骤S210。
内核锁获取模块820用于第一虚拟核通过当前运行任务自旋获取内核锁,直至获取成功,包括当前运行任务嵌套获取内核锁,其原理和优点请参照一种用户态虚拟机的内核锁管理方法实施例二的步骤S220。
内核资源访问模块830用于第一虚拟核的当前运行任务访问内核资源,其原理和优点请参照一种用户态虚拟机的内核锁管理方法实施例二的步骤S230。
任务判断模块840用于判断是否有任务的状态或者优先级的改变导致任务重调度,其原理和优点请参照一种用户态虚拟机的内核锁管理方法实施例二的步骤S240。
任务重调度模块850用于第一虚拟核的当前运行任务直接进行任务重调度或其他虚拟核在响应服务中断时进行任务重调度,其原理和优点请参照一种用户态虚拟机的内核锁管理方法实施例二的步骤S250
内核锁释放模块860用于第一虚拟核通过当前运行任务释放内核锁,包括当前运行任务嵌套释放内核锁,其原理和优点请参照一种用户态虚拟机的内核锁管理方法实施例二的步骤S260。
本发明实施例还提供了一种操作系统,其执行本发明的各方法实施例。
本发明实施例还提供了一种计算设备,下面结合图9详细介绍。
该计算设备900包括,处理器910、存储器920、通信接口930、总线940。
应理解,该图所示的计算设备900中的通信接口930可以用于与其他设备之间进行通信。
其中,该处理器910可以与存储器920连接。该存储器920可以用于存储该程序代码和数据。因此,该存储器920可以是处理器910内部的存储单元,也可以是与处理器910独立的外部存储单元,还可以是包括处理器910内部的存储单元和与处理器910独立的外部存储单元的部件。
可选的,计算设备900还可以包括总线940。其中,存储器920、通信接口930可以通过总线940与处理器910连接。总线940可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(EFStended Industry StandardArchitecture,EISA)总线等。所述总线940可以分为地址总线、数据总线、控制总线等。为便于表示,该图中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
应理解,在本发明实施例中,该处理器910可以采用中央处理单元(centralprocessing unit,CPU)。该处理器还可以是其它通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器910采用一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。
该存储器920可以包括只读存储器和随机存取存储器,并向处理器910提供指令和数据。处理器910的一部分还可以包括非易失性随机存取存储器。例如,处理器910还可以存储设备类型的信息。
在计算设备900运行时,所述处理器910执行所述存储器920中的计算机执行指令执行各方法实施例的操作步骤。
应理解,根据本发明实施例的计算设备900可以对应于执行根据本发明各实施例的方法中的相应主体,并且计算设备900中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括,U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行各方法实施例的操作步骤。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括,具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,均属于本发明保护范畴。
Claims (10)
1.一种用户态虚拟机的内核锁管理方法,其特征在于,包括:
当不拥有内核锁的一个虚拟核尝试获取内核锁时,该虚拟核原子性获取全局内核锁获取票号作为该虚拟核的内核锁获取票号,并对全局内核锁获取票号原子性递增第一设定值;以及
当一个虚拟核的内核锁获取票号与全局内核锁服务票号相等时,该虚拟核获取内核锁成功;
当一个虚拟核释放内核锁且释放后不拥有内核锁时,对全局内核锁服务票号原子性递增第一设定值,并把该虚拟核的内核锁获取票号设置为0。
2.根据权利要求1所述方法,其特征在于,还包括:
当一个虚拟核获取内核锁成功时,把该虚拟核当前运行任务的内核锁嵌套次数递增1,一个任务的内核锁嵌套次数位于该任务的任务控制块中;
当一个虚拟核释放内核锁时,该虚拟核当前运行任务的内核锁嵌套次数递减1。
3.根据权利要求2所述方法,其特征在于,
当一个虚拟核尝试获取内核锁时,该虚拟核通过自旋方式尝试获取内核锁,且在所述自旋获取的每轮循环开始时禁止该虚拟核的全局中断和在所述自旋获取的每轮循环最后恢复该虚拟核的全局中断开关。
4.根据权利要求2所述方法,其特征在于,还包括:
当一个虚拟核释放内核锁且该当前运行任务的内核锁嵌套次数大于1时,恢复该虚拟核的全局中断开关;
当一个虚拟核释放内核锁且该当前运行任务的内核锁嵌套次数等于1时,使能该虚拟核的全局中断开关。
5.根据权利要求2所述方法,其特征在于,还包括:在一个虚拟核对切入任务重调度时,当切入任务的内核锁嵌套次数等于0时,对全局内核锁服务票号原子性递增第一设定值,该虚拟核的内核锁获取票号设置为0。
6.根据权利要求1至5任一所述方法,其特征在于,用户态虚拟机设置全局内核锁变量,其包括:所述全局内核锁获取票号,所述全局内核锁服务票号,内核锁拥有者,各虚拟核的内核锁获取票号,所述内核锁拥有者为当前拥有内核锁的虚拟核。
7.根据权利要求6所述方法,其特征在于,还包括:
在内核锁初始化时,设置所述全局内核锁获取票号和所述全局内核锁服务票号均为1,设置所述内核锁拥有者为空,设置各虚拟核的内核锁获取票号为0。
8.一种用户态虚拟机的内核锁管理装置,其特征在于,包括:
内核锁获取模块,用于当不拥有内核锁的一个虚拟核尝试获取内核锁时,该虚拟核原子性获取全局内核锁获取票号作为该虚拟核的内核锁获取票号,并对全局内核锁获取票号原子性递增第一设定值;以及
内核锁获取模块,还用于当一个虚拟核的内核锁获取票号与全局内核锁服务票号相等时,该虚拟核成功获取内核锁;
内核锁释放模块,用于当一个虚拟核释放内核锁且释放后不拥有内核锁时,对全局内核锁服务票号原子性递增第一设定值,并把该虚拟核的内核锁获取票号设置为0。
9.一种操作系统,其特征在于,执行权利要求1至7任一所述方法。
10.一种计算设备,其特征在于,包括,
总线;
通信接口,其与所述总线连接;
至少一个处理器,其与所述总线连接;以及
至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行权利要求1至7任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210688928.8A CN115061779B (zh) | 2022-06-16 | 2022-06-16 | 一种用户态虚拟机的内核锁管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210688928.8A CN115061779B (zh) | 2022-06-16 | 2022-06-16 | 一种用户态虚拟机的内核锁管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115061779A true CN115061779A (zh) | 2022-09-16 |
CN115061779B CN115061779B (zh) | 2023-12-15 |
Family
ID=83201490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210688928.8A Active CN115061779B (zh) | 2022-06-16 | 2022-06-16 | 一种用户态虚拟机的内核锁管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115061779B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110119667A1 (en) * | 2009-11-16 | 2011-05-19 | Srinivasan Kattiganehalli Y | Monitoring spin locks in virtual machines in a computing system environment |
US20190121659A1 (en) * | 2017-10-25 | 2019-04-25 | Red Hat, Inc. | Housekeeping virtual processor overcommit for real time virtualization |
US10592281B1 (en) * | 2017-09-28 | 2020-03-17 | Amazon Technologies, Inc. | Wait optimizer for recording an order of first entry into a wait mode by a virtual central processing unit |
US20200387440A1 (en) * | 2017-11-28 | 2020-12-10 | Yale University | Systems and methods of formal verification |
US20220174154A1 (en) * | 2019-03-18 | 2022-06-02 | Virtual Hold Technology Solutions, Llc | System and method for enhanced virtual queuing |
-
2022
- 2022-06-16 CN CN202210688928.8A patent/CN115061779B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110119667A1 (en) * | 2009-11-16 | 2011-05-19 | Srinivasan Kattiganehalli Y | Monitoring spin locks in virtual machines in a computing system environment |
US10592281B1 (en) * | 2017-09-28 | 2020-03-17 | Amazon Technologies, Inc. | Wait optimizer for recording an order of first entry into a wait mode by a virtual central processing unit |
US20190121659A1 (en) * | 2017-10-25 | 2019-04-25 | Red Hat, Inc. | Housekeeping virtual processor overcommit for real time virtualization |
US20200387440A1 (en) * | 2017-11-28 | 2020-12-10 | Yale University | Systems and methods of formal verification |
US20220174154A1 (en) * | 2019-03-18 | 2022-06-02 | Virtual Hold Technology Solutions, Llc | System and method for enhanced virtual queuing |
Non-Patent Citations (1)
Title |
---|
REMZI ARPACI-DUSSEAU & ANDREA ARPACI-DUSSEAU: "操作系统导论 Operating System: Three Easy Pieces", vol. 3, 人民邮电出版社, pages: 219 - 247 * |
Also Published As
Publication number | Publication date |
---|---|
CN115061779B (zh) | 2023-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7406699B2 (en) | Enhanced runtime hosting | |
CN106462395B (zh) | 多线程处理器架构中的线程等待 | |
EP3701377B1 (en) | Method and apparatus for updating shared data in a multi-core processor environment | |
US9384049B2 (en) | Preventing unnecessary context switching by employing an indicator associated with a lock on a resource | |
JP5516398B2 (ja) | マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法 | |
CN112000455B (zh) | 一种多线程任务处理方法、装置及电子设备 | |
JP4568292B2 (ja) | キャッシュライン・ポーリングを実行する方法、装置、プログラム及び情報処理システム | |
EP3436944B1 (en) | Fast transfer of workload between multiple processors | |
US9086911B2 (en) | Multiprocessing transaction recovery manager | |
CN107797848B (zh) | 进程调度方法、装置和主机设备 | |
CN106681836B (zh) | 一种信号量的创建方法及装置 | |
EP1693743A2 (en) | System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock | |
US9582340B2 (en) | File lock | |
CN114791854B (zh) | 用户态虚拟机任务的调度方法、装置、设备及存储介质 | |
CN115061779A (zh) | 一种用户态虚拟机的内核锁管理方法及装置 | |
JP2008225641A (ja) | コンピュータシステム、割り込み制御方法及びプログラム | |
US9223637B1 (en) | Method and apparatus to advise spin and yield decisions | |
CN115145688B (zh) | 一种用户态虚拟机虚拟核的暂停方法及装置 | |
CN116028204B (zh) | 进程管控方法和电子设备 | |
CN114880075B (zh) | 一种用户态虚拟机虚拟核间任务的调度方法及装置 | |
CN104267929A (zh) | 计算系统以及在该计算系统中操作锁的方法 | |
US20220413898A1 (en) | Handling ownership of process threads | |
JP2006004092A (ja) | コンピュータシステム | |
KR20070047122A (ko) | 멀티스래딩 제어 시스템 및 그 방법 | |
CN115454657A (zh) | 一种用户态虚拟机任务间的同步与互斥的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |