CN105550029B - 一种进程调度方法及装置 - Google Patents
一种进程调度方法及装置 Download PDFInfo
- Publication number
- CN105550029B CN105550029B CN201510991456.3A CN201510991456A CN105550029B CN 105550029 B CN105550029 B CN 105550029B CN 201510991456 A CN201510991456 A CN 201510991456A CN 105550029 B CN105550029 B CN 105550029B
- Authority
- CN
- China
- Prior art keywords
- scheduling
- core cpu
- thread
- mark
- scheduling controlling
- 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.)
- Active
Links
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
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明的实施例提供了一种进程调度方法及装置,涉及计算机技术领域,用于在Linux用户态中实现VxWorks中任务调度的抢占锁定功能。该方法包括:当CPU核心处于用户态,设置CPU核心对应的调度控制标识;当CPU核心处于内核态,获取CPU核心对应的调度控制标识,其中CPU核心用于进程或线程调度,当调度控制标识允许调度时,在CPU核心进行进程或线程调度。本发明的实施例用于进程或线程调度。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种进程调度方法及装置。
背景技术
VxWorks操作***和Linux操作***都是嵌入式操作***,随着数据通信技术的发展,VxWorks操作***已经无法满足通信设备厂商在硬件、成本和功能上逐渐增长的需求。在这样的背景下,通信设备厂商逐步尝试将通信设备由VxWorks操作***迁移到Linux操作***,在这一过程中,出于对成本的考虑,需要将许多原先运行在VxWorks操作***上的软件移植到Linux操作***上。
但由于VxWorks操作***与Linux操作***的设计思想和***架构差异较大,如果不提供相应的适配机制,在将原先运行在VxWorks操作***上的软件移植到Linux操作***上的过程中,将会遇到较多困难,并且需要对原先运行在VxWorks操作***上的软件进行较大改动,使将原先运行在VxWorks操作***上的软件移植到Linux操作***上所需成本提高,并降低了软件移植所带来的收益。
发明内容
本发明的实施例提供的一种进程调度方法及装置,能够在Linux中实现VxWorks中任务调度的抢占锁定功能,降低从VxWorks移植软件到Linux所需成本,提高从VxWorks移植软件到Linux所带来的收益。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供了一种进程调度方法,应用于包含一个或多个CPU核心的Linux设备,包括当CPU核心处于用户态,设置CPU核心对应的调度控制标识;当CPU核心处于内核态,获取CPU核心对应的调度控制标识,其中CPU核心用于进程或线程调度;当调度控制标识允许调度时,在CPU核心进行进程或线程调度。
在第一方面的第一种可能的实现方式中,所述设置CPU核心对应的调度控制标识,包括在共享内存设置CPU核心对应的调度控制标识,共享内存位于Linux设备;获取CPU核心对应的调度控制标识,包括在共享内存读取CPU核心对应的调度控制标识。
在第一方面的第二种可能的实现方式中,所述获取所述CPU核心对应的调度控制标识,具体包括获取CPU核心的标识;根据CPU核心的标识获取CPU核心的调度控制标识。
在第一方面的第三种可能的实现方式中,进程调度方法还包括当调度控制标识不允许调度时,不在CPU核心进行进程或线程调度。
结合第一方面第二种可能的实现方式,在第四种可能的实现方式中,当调度控制标识为允许调度时,在CPU核心进行进程或线程调度,具体包括当调度控制标识为零时,在CPU核心进行进程或线程调度;当调度控制标识不允许调度时,不在CPU核心进行进程或线程调度,具体包括当调度控制标识为非零时,不在CPU核心进行进程或线程调度。
结合第一方面,或者第一方面第一至第四种任意一种可能的实现方式,在第五种可能的实现方式中,获取CPU核心对应的调度控制标识前,还包括关闭内核抢占;进程调度方法还包括清除进程或线程对应的重调度标识,开启内核抢占,重调度标识用于标识进程或线程是否需要调度。
结合第一方面,或者第一方面第一至第四种任意一种可能的实现方式,在第六种可能的实现方式中,还包括:当CPU核心禁止进程或线程调度时,将CPU核心的调度控制标识加1;当CPU核心允许进程或线程调度时,将CPU核心的调度控制标识减1。
第二方面,本发明实施例提供了一种进程调度装置,位于包含一个或多个CPU核心的Linux设备,包括设置单元,用于当CPU核心处于用户态,设置CPU核心对应的调度控制标识;获取单元,用于当CPU核心处于内核态,获取CPU核心对应的调度控制标识,其中CPU核心用于进程或线程调度;调度单元,用于当调度控制标识允许调度时,在CPU核心进行进程或线程调度。
在第二方面的第一种可能的实现方式中,设置单元具体用于当CPU核心处于用户态,在共享内存设置CPU核心对应的调度控制标识,共享内存位于Linux设备;获取单元具体用于:当CPU核心处于内核态,在共享内存读取CPU核心对应的调度控制标识。
在第二方面的第二种可能的实现方式中,获取单元具体用于获取CPU核心的标识;根据CPU核心的标识获取CPU核心的调度控制标识。
在第二方面的第三种可能的实现方式中,调度单元还用于当调度控制标识不允许调度时,不在CPU核心进行进程或线程调度。
结合第二方面第三种可能的实现方式,在第四种可能的实现方式中,调度单元具体用于当调度控制标识为零时,在CPU核心进行进程或线程调度;当调度控制标识为非零时,不在CPU核心进行进程或线程调度。
结合第二方面,或者第二方面第一至第四种任意一种可能的实现方式,在第五种可能的实现方式中,进程调度装置还包括管理单元,用于在获取单元获取CPU核心对应的调度控制标识前,关闭内核抢占;管理单元还用于清除进程或线程对应的重调度标识,开启内核抢占,重调度标识用于标识进程或线程是否需要调度。
结合第二方面,或者第二方面第一至第四种任意一种可能的实现方式,在第六种可能的实现方式中,进程调度装置还包括标识单元,用于当CPU核心禁止进程或线程调度时,将CPU核心的调度控制标识加1,当CPU核心允许进程或线程调度时,将CPU核心的调度控制标识减1。
本发明的实施例提供的进程调度方法及装置,通过根据需要在用户态下设置Linux设备中的CPU核心是否可以进行进程或线程调度的标识,在内核态下获取Linux设备中CPU核心是否可以进行进程或线程调度的标识,并根据该标识确定Linux设备中任一CPU核心是否可以进行进程或线程调度,当可以进行进程或线程调度时,在该CPU核心上进行进程或线程调度。本发明的实施例提供的进程调度方法在Linux设备的CPU核心运行重要性较高的进程或线程时,避免该CPU核心被进程调度机制切换到运行其他进程或线程,使原先运行在VxWorks上的软件在Linux中运行时,不会因重要性较高的进程或线程在运行时被切换出CPU核心而出现错误,从而在Linux中实现VxWorks中任务调度的抢占锁定功能,降低从VxWorks移植软件到Linux所需成本,提高从VxWorks移植软件到Linux所带来的收益。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种进程调度方法的流程示意图;
图2为本发明实施例提供的另一种进程调度方法的流程示意图;
图3为本发明实施例提供的一种进程调度装置的示意性结构图;
图4为本发明实施例提供的另一种进程调度装置的示意性结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形的术语如“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。同时还应当理解,本申请中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
通常情况下,在Linux中,进程是具有独立功能的程序对某个数据集在处理机上的执行过程和分配资源的基本单位,而线程是进程中的一个实体,是被***独立调度和分派的基本单位,因此在Linux中进程或线程和任务的概念是等价的。在VxWorks中把每个相互独立的程序称为任务,任务是VxWorks资源分配的单位,也是处理器调度的基本单位。
由于在VxWorks中,所有任务共存于单一的线性地址空间,当多个任务共享全局的数据结构时,需要通过互斥访问机制访问临界区,因此需要在任务调度层次上提供对互斥访问进行保护的机制,即在临界区内禁止任务的抢占调度,保证重要性较高的任务在运行时独享CPU,使该CPU不会被调度切换为用于运行其他任务。但是在Linux中,进程采用的是抢占式多任务处理或公平调度多任务处理,所以当Linux***处于用户态时,没有能够保证进程或线程在运行时能够独占CPU的机制,在将原先运行在VxWorks上的软件移植到Linux上时,可能会因为在运行重要性较高的进程时将运行此进程的CPU调度切换为运行其他进程,从而造成从VxWorks上移植到Linux上的软件运行出错。
基于上述在VxWorks与Linux中进行进程调度的原理,参照图1所示,本发明的实施例提供一种进程调度方法,应用于包含一个或多个CPU核心的Linux设备,其中Linux设备是指运行有Linux***的设备,具体包括如下步骤:
101、当CPU核心处于用户态,设置CPU核心对应的调度控制标识。
其中用户态是指,当进程或线程在Linux设备中执行用户自己的代码时,该进程或线程处于用户态。CPU核心处于用户态,是指运行在该CPU核心上的程序处于用户态下。
其中CPU核心指用来运行Linux***中进程或线程的处理器,调度控制标识用来标识与该调度控制标识对应的CPU核心是否允许进行进程或线程调度,其中进程或线程调度是指将CPU核心立即分配给被调度到该CPU核心的进程或线程,若在此之前该CPU核心上已运行有进程或线程,则该进程或线程将被迫放弃该CPU核心。调度控制标识可以为与每一个CPU核心对应的包括至少两个状态的变量,该变量至少包括的两个状态分别用来表示该CPU核心允许进行进程或线程调度或不允许进行进程或线程调度,该变量可以为逻辑型变量或数值型变量;调度控制标识也可以为与每一个CPU核心对应的包括至少两个标识符号的标识符号组,该标志符号组至少包括的两个标识符号分别用来表示该CPU核心允许进行进程或线程调度或不允许进行进程或线程调度,只要调度控制标识能够对对应的CPU核心是否允许进行进程或线程调度的状态进行标识即可。调度控制标识以可读写的方式储存在Linux设备上,具体的调度控制标识可以储存在一块内存区域中,也可以储存在硬盘的储存空间中,只要将调度控制标识以可读写的方式储存在Linux设备上即可。
设置CPU核心对应的调度控制标识,是指对储存在Linux设备上的与CPU核心对应的调度控制标识进行设置。
102、当CPU核心处于内核态,获取CPU核心对应的调度控制标识。
其中内核态是指,当进程或线程在Linux设备中执行内核代码时,该进程或线程处于内核态。CPU核心处于内核态,是运行在该CPU核心上的程序处于内核态下。
获取CPU核心对应的调度控制标识,是指读取储存在Linux设备上的与CPU核心对应的调度控制标识。
示例性的:
Linux设备中包含4个CPU核心,调度控制标识为储存在Linux设备的整形变量,当调度控制标识值为0时,该调度控制标识对应的CPU核心允许进行进程或线程调度,当调度控制标识值为非0时,该调度控制标识对应的CPU核心不允许进行进程或线程调度。当需要确定第一CPU核心是否允许进行进程或线程调度时,从Linux设备中读取与第一CPU核心所对应的调度控制标识B1,B1为1,即非0。
103、确定调度控制标识是否允许调度。
确定调度控制标识是否允许调度,是指对步骤101中获取的CPU核心对应的调度控制标识进行处理,从而确定该调度控制标识所对应的CPU核心是否允许调度。
示例性的:
调度控制标识为整形变量,当调度控制标识值为0时,该调度控制标识对应的CPU核心允许进行进程或线程调度,当调度控制标识值为非0时,该调度控制标识对应的CPU核心不允许进行进程或线程调度,获取的第一CPU核心对应的调度控制标识B1值为1即非0,因此第一CPU核心不允许进行进程或线程调度。
根据步骤102的判断结果,当调度控制标识允许调度,则进行如下步骤:
103、在CPU核心进行进程或线程调度。
根据步骤102判断结果,当调度控制标识允许与该调度控制标识对应的CPU核心进行进程调度,将该CPU核心立即分配给被调度到该CPU核心的进程或线程,若在此之前该CPU核心上已运行有进程或线程,则该进程或线程不继续运行在该CPU核心上。
本发明的实施例提供的进程调度方法,首先当CPU处于用户态,设置CPU核心对应的调度控制标识;当CPU核心处于内核态,获取CPU核心对应的调度控制标识;确定调度控制标识是否允许调度,最后当调度控制标识允许调度,在CPU核心进行进程或线程调度。因此上述实施例提供的进程调度方法,通过根据需要在用户态下设置Linux设备中的CPU核心是否可以进行进程或线程调度的标识,在内核态下获取Linux设备中CPU核心是否可以进行进程或线程调度的标识,并根据该标识确定Linux设备中任一CPU核心是否可以进行进程或线程调度,当可以进行进程或线程调度时,在该CPU核心上进行进程或线程调度。本发明的实施例提供的进程调度方法在Linux设备的CPU核心运行重要性较高的进程或线程时,避免该CPU核心被进程调度机制切换到运行其他进程或线程,使原先运行在VxWorks上的软件在Linux中运行时,不会因重要性较高的进程或线程在运行时被切换出CPU核心而出现错误,从而在Linux中实现VxWorks中任务调度的抢占锁定功能,降低从VxWorks移植软件到Linux所需成本,提高从VxWorks移植软件到Linux所带来的收益。
基于上述在VxWorks与Linux中进行进程调度的原理,参照图2所示,本发明的实施例提供一种进程调度方法,应用于包含一个或多个CPU核心的Linux设备,其中Linux设备是指运行有Linux***的设备,具体包括如下步骤:
201、当CPU核心处于用户态,设置CPU核心对应的调度控制标识。
其中用户态是指,当进程或线程在Linux设备中执行用户自己的代码时,该进程或线程处于用户态。CPU核心处于用户态,是指运行在该CPU核心上的程序处于用户态下。
其中CPU核心指用来运行Linux***中进程或线程的处理器,调度控制标识用来标识与该调度控制标识对应的CPU核心是否允许进行进程或线程调度,其中进程或线程调度是指将CPU核心立即分配给被调度到该CPU核心的进程或线程,若在此之前该CPU核心上已运行有进程或线程,则该进程或线程将被迫放弃该CPU核心。调度控制标识可以为与每一个CPU核心对应的包括至少两个状态的变量,该变量至少包括的两个状态分别用来表示该CPU核心允许进行进程或线程调度或不允许进行进程或线程调度,该变量可以为逻辑型变量或数值型变量;调度控制标识也可以为与每一个CPU核心对应的包括至少两个标识符号的标识符号组,该标志符号组至少包括的两个标识符号分别用来表示该CPU核心允许进行进程或线程调度或不允许进行进程或线程调度,只要调度控制标识能够对对应的CPU核心是否允许进行进程或线程调度的状态进行标识即可。调度控制标识以可读写的方式储存在Linux设备上,其中,调度控制标识可以是储存在Linux设备上的共享内存中,也可以是储存在Linux设备上的硬盘或其它储存介质中,只要能够从Linux设备中写入或读取调度控制标识,即将读取调度控制标识以可读写的方式存储在Linux设备中即可。
设置CPU核心对应的调度控制标识,是指对储存在Linux设备上的与CPU核心对应的调度控制标识进行设置。
202、当CPU核心处于内核态,关闭内核抢占。
其中内核态是指,当进程或线程在Linux设备中执行内核代码时,该进程或线程处于内核态。CPU核心处于内核态,是运行在该CPU核心上的程序处于内核态下。
内核抢占指运行在Linux设备中CPU核心上的进程或线程可以被暂时挂起,比该进程或线程优先级高的其他进程或线程能够在该CPU核心上运行。关闭内核抢占,是指在Linux中不允许优先级高的进程或线程替换优先级低的进程或线程在CPU核心上运行。
203、获取CPU核心的标识。
其中CPU核心指用来运行Linux***中进程或线程的处理器,调度控制标识用来标识与该调度控制标识对应的CPU核心是否允许进行进程或线程调度,其中进程或线程调度是指将CPU核心立即分配给被调度到该CPU核心的进程或线程,若在此之前该CPU核心上已运行有进程或线程,则该进程或线程将被迫放弃该CPU核心。
CPU核心标识与Linux设备中每一个CPU核心对应,用来标识Linux设备中每一个CPU核心的身份。CPU核心标识可以为对Linux设备中一个或多个CPU核心以数值或符号形式进行的标识,示例性的,Linux设备中包括4个CPU核心,第一CPU核心对应1,第二CPU核心对应2,第三CPU核心对应3,第四CPU核心对应4。
204、根据CPU核心的标识获取CPU核心的调度控制标识。
其中,每一个CPU核心的标识具有对应的调度控制标识,即每个CPU核心具有对应的调度控制标识。调度控制标识是用来标识与该调度控制标识对应的CPU核心是否允许进行进程或线程调度,其中进程或线程调度是指将CPU核心立即分配给被调度到该CPU核心的进程或线程,若在此之前该CPU核心上已运行有进程或线程,则该进程或线程将被迫放弃该CPU核心。调度控制标识可以为与每一个CPU核心对应的包括至少两个状态的变量,该变量至少包括的两个状态分别用来表示该CPU核心允许进行进程或线程调度或不允许进行进程或线程调度,该变量可以为逻辑型变量或数值型变量;调度控制标识也可以为与每一个CPU核心对应的包括至少两个标识符号的标识符号组,该标志符号组至少包括的两个标识符号分别用来表示该CPU核心允许进行进程或线程调度或不允许进行进程或线程调度,只要调度控制标识能够标识相应的CPU核心是否允许进行进程或线程调度的状态即可。调度控制标识以可读写的方式储存在Linux设备上,具体的调度控制标识可以储存在一块内存区域中,也可以储存在硬盘的储存空间中,只要将调度控制标识以可读写的方式储存在Linux设备上即可。
根据CPU核心的标识获取CPU核心对应的调度控制标识,是指根据CPU核心的标识读取储存在Linux设备上的与CPU核心对应的调度控制标识。
示例性的:
调度控制标识以数组方式存储在Linux设备的内存中,表现为kernel_sched_lock[NR_CPUS],储存调度控制标识的内存空间大小为一页,默认为4096字节,调度控制标识在该内存空间中所占大小为4*C,C为该Linux设备所包含CPU核数,其中NR_CPUS表示CPU核心数,若kernel_sched_lock[NR_CPUS]中对应任一CPU核心的调度控制标识的值为0,表示该CPU核心允许进行进程调度;若kernel_sched_lock[NR_CPUS]中对应任一CPU核心的调度控制标识的值为非0,则表示该CPU核心不允许进行进程调度。若Linux设备包括4个CPU核心,当需要确认第一CPU核心是否允许进行进程或线程调度时,因第一CPU核心的标识为1,通过指向该数组的kernel_sched_lock指针访问这块区域,得到kernel_sched_lock[1]的值为1,则表示第一CPU核心的调度控制标识值为非0,因此第一CPU核心不允许进行进程调度。
205、确定调度控制标识是否为零。
根据在步骤203中获取的调度控制标识,判断该调度控制标识对应的CPU核心是否允许进行进程或线程调度,即确定该调度控制标识是否为零,当该调度控制标识为零时,允许在对应的CPU核心进行进程或线程调度,当该调度控制标识为非零时,不允许在对应的CPU核心进行进程或线程调度。
根据步骤204的判断结果,当调度控制标识为非零时,则进行如下步骤:
206、不在CPU核心进行进程或线程调度。
根据步骤204判断结果,当调度控制标识为非零,即不允许与该调度控制标识对应的CPU核心进行进程调度,若在此之前该CPU核心上已运行有进程或线程,则保持该进程或线程继续运行在该CPU核心上。
根据步骤204的判断结果,当调度控制标识为零时,则进行如下步骤:
207、在CPU核心进行进程或线程调度。
根据步骤204判断结果,当调度控制标识为零,即允许与该调度控制标识对应的CPU核心进行进程调度,则将该CPU核心立即分配给被调度到该CPU核心的进程或线程,若在此之前该CPU核心上已运行有进程或线程,则该进程或线程不继续运行在该CPU核心上。
208、清除进程或线程对应的重调度标识。
其中重调度标识是用来标明相应的进程或线程是否处于需要进程或线程调度的状态。清除进程或线程对应的重调度标识,是对在步骤205中不进行调度的进程或线程,或在步骤206中进行调度的进程或线程,将其对应的重度调度标识设置为不需要进行进程或线程调度的状态。
209、开启内核抢占。
开启内核抢占,是指在Linux中允许优先级高的进程或线程替换优先级低的进程或线程在CPU核心上运行。
更进一步的,进程调度方法还可以包括:
210、确定是否CPU核心禁止进程或线程调度。
确定是否CPU核心禁止进程或线程调度,是指确定相应的CPU核心上是否存在重要性或优先级较高的或不可中断运行的进程或线程正在运行,或相应的CPU核心上正在运行的进程或线程是否处于重要性或优先级较高的或不可中断运行的时刻,若在此CPU核心上进行进程或线程调度,则会出现错误。
211、将CPU核心的调度控制标识减1。
将CPU核心的调度控制标识减1,即表示在相应的CPU核心上并没有运行重要程度较高或优先级较高或不允许中断运行的进程或线程,可以将另一进程或线程调入该CPU核心运行。
212、将CPU核心的调度控制标识加1。
将CPU核心的调度控制标识加1,即表示在相应的CPU核心上运行的进程或线程重要程度或优先级较高或不允许中断运行,在该进程或线程运行在该CPU核心上时,不允许将该进程或线程切换出该CPU核心并调入另一进程或线程。
本发明的实施例提供的进程调度方法,首先当CPU核心处于用户态,设置CPU核心对应的调度控制标识;其次当CPU核心处于内核态,关闭内核抢占;获取CPU核心的标识;根据CPU核心的标识获取CPU核心的调度控制标识;确定调度控制标识是否为零;调度控制标识是为非零则不在CPU核心进行进程或线程调度;调度控制标识是为零则在CPU核心进行进程或线程调度;清除进程或线程对应的重调度标识;开启内核抢占;确定是否CPU核心禁止进程或线程调度;若不禁止则将CPU核心的调度控制标识减1;若禁止则将CPU核心的调度控制标识加1。因此本发明的实施例提供的进程调度方法,通过根据需要在用户态下设置Linux设备中的CPU核心是否可以进行进程或线程调度的标识,在内核态下关闭内核抢占后,通过获取Linux设备中每一个CPU核心的标识,并根据该CPU核心的标识获取该CPU核心的调度控制标识即该CPU核心是否可以进行进程或线程调度的标识,通过判断该标识是否为零,确定Linux设备中任一CPU核心是否可以进行进程或线程调度,当在该CPU核心上允许进行进程或线程调度时,在该CPU核心上进行进程或线程调度,当在该CPU核心上不允许进行进程或线程调度时,不在该CPU核心上进行进程或线程调度,之后清除进程或线程对应的重调度标识,开启内核抢占,同时在该CPU核心禁止进程或线程调度时将该CPU核心对应的调度控制标识加1,在该CPU核心允许进程或线程调度时将该CPU核心的调度控制标识减1,从而控制Linux设备中CPU核心上是否可以进行进程调度,使原先运行在VxWorks上的软件在Linux中运行时,不会因重要性较高的进程或线程在运行时被切换出CPU核心而导致出现错误,因此本发明的实施例提供的进程调度方法能够在Linux中实现VxWorks中任务调度的抢占锁定功能,降低从VxWorks移植软件到Linux所需成本,提高从VxWorks移植软件到Linux所带来的收益。
本发明的实施例还提供一种进程调度装置,用于执行如图1所示的进程调度方法,如图3所示,该装置包括:设置单元301、获取单元302、调度单元303。
设置单元301,用于当CPU核心处于用户态,设置CPU核心对应的调度控制标识。
其中用户态是指,当进程或线程在Linux设备中执行用户自己的代码时,该进程或线程处于用户态。CPU核心处于用户态,是运行在该CPU核心上的程序处于用户态下。
其中CPU核心指用来运行Linux***中进程或线程的处理器,调度控制标识用来标识与该调度控制标识对应的CPU核心是否允许进行进程或线程调度,其中进程或线程调度是指将CPU核心立即分配给被调度到该CPU核心的进程或线程,若在此之前该CPU核心上已运行有进程或线程,则该进程或线程将被迫放弃该CPU核心。调度控制标识可以为与每一个CPU核心对应的包括至少两个状态的变量,该变量至少包括的两个状态分别用来表示该CPU核心允许进行进程或线程调度或不允许进行进程或线程调度,该变量可以为逻辑型变量或数值型变量;调度控制标识也可以为与每一个CPU核心对应的包括至少两个标识符号的标识符号组,该标志符号组至少包括的两个标识符号分别用来表示该CPU核心允许进行进程或线程调度或不允许进行进程或线程调度,只要调度控制标识能够对对应的CPU核心是否允许进行进程或线程调度的状态进行标识即可。其中,调度控制标识可以是储存在Linux设备上的共享内存中,也可以是储存在Linux设备上的硬盘或其它储存介质中,只要能够从Linux设备中写入或读取调度控制标识,即将读取调度控制标识以可读写的方式存储在Linux设备中即可。
设置CPU核心对应的调度控制标识,是指对储存在Linux设备上的与CPU核心对应的调度控制标识进行设置。
获取单元302,用于当CPU核心处于内核态,获取CPU核心对应的调度控制标识。
其中内核态是指,当进程或线程在Linux设备中执行内核代码时,该进程或线程处于内核态。CPU核心处于内核态,是运行在该CPU核心上的程序处于内核态下。
获取CPU核心对应的调度控制标识,是指读取储存在Linux设备上的与CPU核心对应的调度控制标识。
示例性的:
Linux设备中包含4个CPU核心,调度控制标识为储存在Linux设备的整形变量,当调度控制标识值为0时,该调度控制标识对应的CPU核心允许进行进程或线程调度,当调度控制标识值为非0时,该调度控制标识对应的CPU核心不允许进行进程或线程调度。当需要确定第一CPU核心是否允许进行进程或线程调度时,从Linux设备中读取与第一CPU核心所对应的调度控制标识B1,B1为1,即非0。
调度单元303,用于确定调度控制标识是否允许调度,当调度控制标识允许调度,在CPU核心进行进程或线程调度。
确定调度控制标识是否允许调度,是指调度单元303对获取单元302获取的CPU核心对应的调度控制标识进行处理,从而确定该调度控制标识所对应的CPU核心是否允许调度。当调度控制标识允许与该调度控制标识对应的CPU核心进行进程调度,调度单元303将该CPU核心立即分配给被调度到该CPU核心的进程或线程,若在此之前该CPU核心上已运行有进程或线程,则该进程或线程不继续运行在该CPU核心上。
本发明的实施例提供的进程调度装置,包括设置单元,用于当CPU核心处于用户态,设置CPU核心对应的调度控制标识;获取单元,当CPU核心处于内核态,用于获取CPU核心对应的调度控制标识;调度单元,用于确定调度控制标识是否允许调度,当调度控制标识允许调度,在CPU核心进行进程或线程调度;因此上述实施例提供的进程调度方法,通过根据需要在用户态下设置Linux设备中的CPU核心是否可以进行进程或线程调度的标识,在内核态下获取Linux设备中CPU核心是否可以进行进程或线程调度的标识,并根据该标识确定Linux设备中任一CPU核心是否可以进行进程或线程调度,当可以进行进程或线程调度时,在该CPU核心上进行进程或线程调度。本发明的实施例提供的进程调度方法在Linux设备的CPU核心运行重要性较高的进程或线程时,避免该CPU核心被进程调度机制切换到运行其他进程或线程,使原先运行在VxWorks上的软件在Linux中运行时,不会因重要性较高的进程或线程在运行时被切换出CPU核心而出现错误,从而在Linux中实现VxWorks中任务调度的抢占锁定功能,降低从VxWorks移植软件到Linux所需成本,提高从VxWorks移植软件到Linux所带来的收益。
更进一步的,本发明的实施例还提供一种进程调度装置,用于执行如图2所示的进程调度方法,如图4所示,该装置包括:设置单元301、获取单元302、调度单元303、处理单元304、标识单元305。
设置单元301,用于当CPU核心处于用户态,设置CPU核心对应的调度控制标识。
其中用户态是指,当进程或线程在Linux设备中执行用户自己的代码时,该进程或线程处于用户态。CPU核心处于用户态,是运行在该CPU核心上的程序处于用户态下。
其中CPU核心指用来运行Linux***中进程或线程的处理器,调度控制标识用来标识与该调度控制标识对应的CPU核心是否允许进行进程或线程调度,其中进程或线程调度是指将CPU核心立即分配给被调度到该CPU核心的进程或线程,若在此之前该CPU核心上已运行有进程或线程,则该进程或线程将被迫放弃该CPU核心。调度控制标识可以为与每一个CPU核心对应的包括至少两个状态的变量,该变量至少包括的两个状态分别用来表示该CPU核心允许进行进程或线程调度或不允许进行进程或线程调度,该变量可以为逻辑型变量或数值型变量;调度控制标识也可以为与每一个CPU核心对应的包括至少两个标识符号的标识符号组,该标志符号组至少包括的两个标识符号分别用来表示该CPU核心允许进行进程或线程调度或不允许进行进程或线程调度,只要调度控制标识能够对对应的CPU核心是否允许进行进程或线程调度的状态进行标识即可。调度控制标识以可读写的方式储存在Linux设备上,具体的调度控制标识可以储存在一块内存区域中,也可以储存在硬盘的储存空间中,只要将调度控制标识以可读写的方式储存在Linux设备上即可。
设置CPU核心对应的调度控制标识,是指对储存在Linux设备上的与CPU核心对应的调度控制标识进行设置。
获取单元302,用于获取CPU核心的标识,根据CPU核心的标识获取CPU核心的调度控制标识。
其中CPU核心标识与Linux设备中每一个CPU核心对应,用来标识Linux设备中每一个CPU核心的身份。CPU核心标识可以为对Linux设备中一个或多个CPU核心以数值或符号形式进行的标识,示例性的,Linux设备中包括4个CPU核心,第一CPU核心对应1,第二CPU核心对应2,第三CPU核心对应3,第四CPU核心对应4。
Linux设备中每一个CPU核心的标识具有对应的调度控制标识,即每个CPU核心具有对应的调度控制标识,调度控制标识是用来标识与该调度控制标识对应的CPU核心是否允许进行进程或线程调度,其中进程或线程调度是指将CPU核心立即分配给被调度到该CPU核心的进程或线程,若在此之前该CPU核心上已运行有进程或线程,则该进程或线程将被迫放弃该CPU核心。调度控制标识可以为与每一个CPU核心对应的包括至少两个状态的变量,该变量至少包括的两个状态分别用来表示该CPU核心允许进行进程或线程调度或不允许进行进程或线程调度,该变量可以为逻辑型变量或数值型变量;调度控制标识也可以为与每一个CPU核心对应的包括至少两个标识符号的标识符号组,该标志符号组至少包括的两个标识符号分别用来表示该CPU核心允许进行进程或线程调度或不允许进行进程或线程调度,只要调度控制标识能够标识相应的CPU核心是否允许进行进程或线程调度的状态即可。调度控制标识以可读写的方式储存在Linux设备上,具体的调度控制标识可以储存在一块内存区域中,也可以储存在硬盘的储存空间中,只要将调度控制标识以可读写的方式储存在Linux设备上即可。
根据CPU核心的标识获取CPU核心对应的调度控制标识,是指获取单元302根据CPU核心的标识读取储存在Linux设备上的与CPU核心对应的调度控制标识。
示例性的:
调度控制标识以数组方式存储在Linux设备的内存中,表现为kernel_sched_lock[NR_CPUS],储存调度控制标识的内存空间大小为一页,默认为4096字节,调度控制标识在该内存空间中所占大小为4*C,C为该Linux设备所包含CPU核数,其中NR_CPUS表示CPU核心数,若kernel_sched_lock[NR_CPUS]中对应任一CPU核心的调度控制标识的值为0,表示该CPU核心允许进行进程调度;若kernel_sched_lock[NR_CPUS]中对应任一CPU核心的调度控制标识的值为非0,则表示该CPU核心不允许进行进程调度。若Linux设备包括4个CPU核心,当需要确认第一CPU核心是否允许进行进程或线程调度时,因第一CPU核心的标识为1,通过指向该数组的kernel_sched_lock指针访问这块区域,得到kernel_sched_lock[1]的值为1,则表示第一CPU核心的调度控制标识值为非0,因此第一CPU核心不允许进行进程调度。
调度单元303,用于确定调度控制标识是否为零,当调度控制标识为非零时不在CPU核心进行进程或线程调度,当调度控制标识为零时在CPU核心进行进程或线程调度。
根据获取单元302获取的调度控制标识,判断该调度控制标识对应的CPU核心是否允许进行进程或线程调度,即确定该调度控制标识是否为零,当该调度控制标识为零时,允许在对应的CPU核心进行进程或线程调度,当该调度控制标识为非零时,不允许在对应的CPU核心进行进程或线程调度。
当调度控制标识为非零,即不允许与该调度控制标识对应的CPU核心进行进程调度,若在此之前该CPU核心上已运行有进程或线程,则保持该进程或线程继续运行在该CPU核心上。
当调度控制标识为零,即允许与该调度控制标识对应的CPU核心进行进程调度,则将该CPU核心立即分配给被调度到该CPU核心的进程或线程,若在此之前该CPU核心上已运行有进程或线程,则该进程或线程不继续运行在该CPU核心上。
处理单元304,用于在获取单元302获取CPU核心对应的调度控制标识前,当CPU核心处于用户态,关闭内核抢占;处理单元304还用于清除进程或线程对应的重调度标识,开启内核抢占。
其中用户态是指,当进程或线程在Linux设备中执行用户自己的代码时,该进程或线程处于用户态。CPU核心处于用户态,是运行在该CPU核心上的程序处于用户态下。
内核抢占指运行在Linux设备中CPU核心上的进程或线程可以被暂时挂起,比该进程或线程优先级高的其他进程或线程能够在该CPU核心上运行。关闭内核抢占,是指在Linux中不允许优先级高的进程或线程替换优先级低的进程或线程在CPU核心上运行;开启内核抢占,是指在Linux中允许优先级高的进程或线程替换优先级低的进程或线程在CPU核心上运行。
其中重调度标识是用来标明相应的进程或线程是否处于需要进程或线程调度的状态。清除进程或线程对应的重调度标识,是将进程或线程对应的重度调度标识设置为不需要进行进程或线程调度的状态。
更进一步的,进程调度装置还可以包括:
标识单元305,用于当CPU核心禁止进程或线程调度时,将CPU核心的调度控制标识加1,当CPU核心允许进程或线程调度时,将CPU核心的调度控制标识减1。
CPU核心禁止进程或线程调度,是指因相应的CPU核心上存在重要性或优先级较高的或不可中断运行的进程或线程正在运行,或相应的CPU核心上正在运行的进程或线程处于重要性或优先级较高的或不可中断运行的时刻,该CPU核心禁止进程或线程调度,若在此CPU核心上进行进程或线程调度,则会出现错误。
将CPU核心的调度控制标识减1,即表示在相应的CPU核心上并没有运行重要程度较高或优先级较高或不允许中断运行的进程或线程,可以将另一进程或线程调入该CPU核心运行。
将CPU核心的调度控制标识加1,即表示在相应的CPU核心上运行的进程或线程重要程度或优先级较高或不允许中断运行,在该进程或线程运行在该CPU核心上时,不允许将该进程或线程切换出该CPU核心并调入另一进程或线程。
本发明的实施例提供的进程调度装置,包括设置单元,用于当CPU核心处于用户态,设置CPU核心对应的调度控制标识;获取单元,用于当CPU核心处于内核态,获取CPU核心的标识,根据CPU核心的标识获取CPU核心的调度控制标识;调度单元,用于确定调度控制标识是否为零,当调度控制标识为非零时不在CPU核心进行进程或线程调度,当调度控制标识为零时在CPU核心进行进程或线程调度;处理单元,用于在获取单元获取CPU核心对应的调度控制标识前,当CPU核心处于用户态,关闭内核抢占;处理单元还用于清除进程或线程对应的重调度标识,开启内核抢占;标识单元,用于当CPU核心禁止进程或线程调度时,将CPU核心的调度控制标识加1,当CPU核心允许进程或线程调度时,将CPU核心的调度控制标识减1。因此本发明的实施例提供的进程调度方法,通过根据需要在用户态下设置Linux设备中的CPU核心是否可以进行进程或线程调度的标识,在内核态下关闭内核抢占后,通过获取Linux设备中每一个CPU核心的标识,并根据该CPU核心的标识获取该CPU核心的调度控制标识即该CPU核心是否可以进行进程或线程调度的标识,通过判断该标识是否为零,确定Linux设备中任一CPU核心是否可以进行进程或线程调度,当在该CPU核心上允许进行进程或线程调度时,在该CPU核心上进行进程或线程调度,当在该CPU核心上不允许进行进程或线程调度时,不在该CPU核心上进行进程或线程调度,之后清除进程或线程对应的重调度标识,开启内核抢占,同时在该CPU核心禁止进程或线程调度时将该CPU核心对应的调度控制标识加1,在该CPU核心允许进程或线程调度时将该CPU核心的调度控制标识减1,从而控制Linux设备中CPU核心上是否可以进行进程调度,使原先运行在VxWorks上的软件在Linux中运行时,不会因重要性较高的进程或线程在运行时被切换出CPU核心而导致出现错误,因此本发明的实施例提供的进程调度方法能够在Linux中实现VxWorks中任务调度的抢占锁定功能,降低从VxWorks移植软件到Linux所需成本,提高从VxWorks移植软件到Linux所带来的收益。
其中,需要说明的是,本实施例中的各个单元可以为单独设立的处理器或传感器,也可以集成在某一个处理器或传感器中实现,此外,也可以以程序代码的形式存储于触控点识别装置的存储器中,由处理器调用并执行以上各个单元的功能。这里所述的处理器可以是一个中央处理器(英文全称:Central Processing Unit,英文简称:CPU),或者是被配置成实施本发明实施例的一个或多个集成电路(英文全称:Integrated Circuit,英文简称:IC);传感器可以是一个电子元件,或者是多个电子元件组成的电路结构,或是被配置成实施本发明实施例的一个或多个集成电路。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种进程调度方法,应用于包含一个或多个CPU核心的Linux设备,其特征在于,包括:
当CPU核心处于用户态,设置所述CPU核心对应的调度控制标识;
当CPU核心处于内核态,获取所述CPU核心对应的调度控制标识,其中所述CPU核心用于进程或线程调度;
当所述调度控制标识允许调度时,在所述CPU核心进行进程或线程调度;
其中,所述CPU核心对应的调度控制标识储存在Linux设备上的共享内存中。
2.根据权利要求1所述的进程调度方法,其特征在于,所述设置所述CPU核心对应的调度控制标识,包括:
在共享内存设置所述CPU核心对应的调度控制标识,所述共享内存位于所述Linux设备;
所述获取所述CPU核心对应的调度控制标识,包括:
在所述共享内存读取所述CPU核心对应的调度控制标识。
3.根据权利要求1所述的进程调度方法,其特征在于,所述获取所述CPU核心对应的调度控制标识,具体包括:
获取所述CPU核心的标识;
根据所述CPU核心的标识获取所述CPU核心的调度控制标识。
4.根据权利要求1所述的进程调度方法,其特征在于,所述进程调度方法还包括:
当所述调度控制标识不允许调度时,不在所述CPU核心进行进程或线程调度。
5.根据权利要求3所述的进程调度方法,其特征在于,所述当所述调度控制标识为允许调度时,在所述CPU核心进行进程或线程调度,具体包括:
当所述调度控制标识为零时,在所述CPU核心进行进程或线程调度;
所述当所述调度控制标识不允许调度时,不在所述CPU核心进行进程或线程调度,具体包括:
当所述调度控制标识为非零时,不在所述CPU核心进行进程或线程调度。
6.根据权利要求1-5任一项所述的进程调度方法,其特征在于,所述获取CPU核心对应的调度控制标识前,还包括:
关闭内核抢占;
所述进程调度方法还包括:
清除进程或线程对应的重调度标识,开启内核抢占,所述重调度标识用于标识进程或线程是否需要调度。
7.根据权利要求1-5任一项所述的进程调度方法,其特征在于,还包括:
当所述CPU核心禁止进程或线程调度时,将所述CPU核心的调度控制标识加1;
当所述CPU核心允许进程或线程调度时,将所述CPU核心的调度控制标识减1。
8.一种进程调度装置,位于包含一个或多个CPU核心的Linux设备,其特征在于,包括:
设置单元,用于当CPU核心处于用户态,设置所述CPU核心对应的调度控制标识;
获取单元,用于当CPU核心处于内核态,获取所述CPU核心对应的调度控制标识,其中所述CPU核心用于进程或线程调度;
调度单元,用于当所述调度控制标识允许调度时,在所述CPU核心进行进程或线程调度;
其中,所述CPU核心对应的调度控制标识储存在Linux设备上的共享内存中。
9.根据权利要求8所述的进程调度装置,其特征在于,所述设置单元具体用于:
当CPU核心处于用户态,在共享内存设置所述CPU核心对应的调度控制标识,所述共享内存位于所述Linux设备;
所述获取单元具体用于:
当CPU核心处于内核态,在所述共享内存读取所述CPU核心对应的调度控制标识。
10.根据权利要求8所述的进程调度装置,其特征在于,所述获取单元具体用于:
获取所述CPU核心的标识;
根据所述CPU核心的标识获取所述CPU核心的调度控制标识。
11.根据权利要求8所述的进程调度装置,其特征在于,所述调度单元还用于:
当所述调度控制标识不允许调度时,不在所述CPU核心进行进程或线程调度。
12.根据权利要求11所述的进程调度装置,其特征在于,所述调度单元具体用于:
当所述调度控制标识为零时,在所述CPU核心进行进程或线程调度;
当所述调度控制标识为非零时,不在所述CPU核心进行进程或线程调度。
13.根据权利要求8-12任一项所述的进程调度装置,其特征在于,所述进程调度装置还包括:
管理单元,用于在所述获取单元获取CPU核心对应的调度控制标识前,关闭内核抢占;
所述管理单元还用于清除进程或线程对应的重调度标识,开启内核抢占,所述重调度标识用于标识进程或线程是否需要调度。
14.根据权利要求8-12任一项所述的进程调度装置,其特征在于,所述进程调度装置还包括:
标识单元,用于当所述CPU核心禁止进程或线程调度时,将所述CPU核心的调度控制标识加1,当所述CPU核心允许进程或线程调度时,将所述CPU核心的调度控制标识减1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510991456.3A CN105550029B (zh) | 2015-12-24 | 2015-12-24 | 一种进程调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510991456.3A CN105550029B (zh) | 2015-12-24 | 2015-12-24 | 一种进程调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105550029A CN105550029A (zh) | 2016-05-04 |
CN105550029B true CN105550029B (zh) | 2019-07-23 |
Family
ID=55829227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510991456.3A Active CN105550029B (zh) | 2015-12-24 | 2015-12-24 | 一种进程调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105550029B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107797848B (zh) * | 2016-08-29 | 2020-10-23 | 华为数字技术(苏州)有限公司 | 进程调度方法、装置和主机设备 |
CN107315631B (zh) * | 2017-06-23 | 2020-08-14 | 迈普通信技术股份有限公司 | 一种任务调度方法及装置 |
CN109840137B (zh) * | 2017-11-28 | 2021-01-22 | 大唐移动通信设备有限公司 | 一种跨核调度方法和装置 |
CN109254849B (zh) * | 2018-08-31 | 2021-03-30 | 北京小米移动软件有限公司 | 应用程序的运行方法及装置 |
CN109697112B (zh) * | 2018-12-24 | 2023-05-16 | 广东亿迅科技有限公司 | 分布式集约化一站式作业***和实现方法 |
CN109800073B (zh) * | 2019-01-28 | 2021-06-18 | Oppo广东移动通信有限公司 | 实时进程的调度方法、装置、终端及存储介质 |
CN116909801B (zh) * | 2023-09-14 | 2023-12-12 | 飞腾信息技术有限公司 | 一种错误上报方法、微处理器及计算机设备 |
-
2015
- 2015-12-24 CN CN201510991456.3A patent/CN105550029B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105550029A (zh) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105550029B (zh) | 一种进程调度方法及装置 | |
CN100530111C (zh) | 一种多线程访问间接寄存器的调度方法 | |
CN109144679B (zh) | 中断请求的处理方法、装置及虚拟化设备 | |
US7234143B2 (en) | Spin-yielding in multi-threaded systems | |
US9424103B2 (en) | Adaptive lock for a computing system having multiple runtime environments and multiple processing units | |
US7971205B2 (en) | Handling of user mode thread using no context switch attribute to designate near interrupt disabled priority status | |
US8677163B2 (en) | Context state management for processor feature sets | |
US20020065953A1 (en) | Priority in a portable thread environment | |
EP2284703B1 (en) | Scheduling of tasks in a parallel computer system according to defined policies | |
US20090320032A1 (en) | System, method and computer program product for preventing starvations of tasks in a multiple processing entity system | |
US9286108B2 (en) | Method to track application context and application identification | |
CN109582590B (zh) | 存储器管理的***中的指针 | |
GB2499277A (en) | Checking write access to shared resources in a multithreaded processor | |
US20020120665A1 (en) | Portable thread environment | |
CN104272256A (zh) | 任务处理装置 | |
CN101361036A (zh) | 变更虚拟机监控器中的调度器 | |
US20110321059A1 (en) | Stack overflow prevention in parallel execution runtime | |
JP4398116B2 (ja) | 計算制御の別個のフローを再使用可能な抽象データ・オブジェクトとして使用する方法 | |
US20120180056A1 (en) | Heterogeneous Enqueuinig and Dequeuing Mechanism for Task Scheduling | |
US20120204014A1 (en) | Systems and Methods for Improving Divergent Conditional Branches | |
EP1577768A2 (en) | Apparatus and method for interrupt control | |
US20180365080A1 (en) | Architecture and services supporting reconfigurable synchronization in a multiprocessing system | |
AU2011229395B2 (en) | Dual mode reader writer lock | |
US11301304B2 (en) | Method and apparatus for managing kernel services in multi-core system | |
CN101231599B (zh) | 一种定位特定内存被函数非法改写的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |