进程处理方法及相关产品与流程

文档序号:25543360发布日期:2021-06-18 20:40阅读:71来源:国知局
进程处理方法及相关产品与流程

本申请涉及人工智能技术领域,具体涉及一种进程处理方法及相关产品。



背景技术:

随着人工智能技术的发展,处理器开始得到广泛的应用,可以将处理器应用到各个技术领域中。例如,将处理器,应用到图像的智能处理、数据的分析等等领域中。

现有技术中,处理器中的进程会进入到内核运行态,或者,进程可以进入到用户运行态;其中,内核运行态,简称为内核态;用户运行态,简称为用户态。在处理器中配置有临界区域,临界区域指的是一个访问共用资源的程序片段,而这些共用资源是无法同时被多个线程访问的。处理器在具有内核态和用户态的时候,内核态可以发起一个进程去访问临界区域,用户态也可以发起一个进程去访问临界区域。

然而现有技术中,在内核态发起的进程、用户态发起的进程都需要访问临界区域的时候,即,内核态发起的进程用户态发起的进程都需要访问共用资源,由于这些共用资源是无法同时被多个线程所访问,进而造成内核态发起的进程、用户态发起的进程无法正常进入临界区域、无法访问到共用资源,造成进程访问资源的失败或者错误。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种进程处理方法及相关产品。

第一方面,本申请提供了一种进程处理方法,包括:

在确定用户运行态发起第一进程以访问临界区域,和/或,确定内核运行态发起第二进程以访问所述临界区域时,判断所述临界区域是否正在被其他进程所访问;

若确定所述临界区域未正在被其他进程所访问,允许所述第一进程或所述第二进程访问所述临界区域。

在一些实施例中,所述方法,还包括:

若确定所述临界区域正在被其他进程所访问,则等待所述其他进程退出所述临界区域,并在确定所述其他进程退出所述临界区域时,允许所述第一进程或所述第二进程访问所述临界区域。

在一些实施例中,判断所述临界区域是否正在被其他进程所访问,包括:

调用原子操作,并采用所述原子操作检测预设的配置参数的数值;

若采用所述原子操作确定所述配置参数的数值为预设值,则确定所述临界区域未正在被其他进程所访问;

若采用所述原子操作确定所述配置参数的数值不为预设值,则确定所述临界区域正在被其他进程所访问。

在一些实施例中,在允许所述第一进程或所述第二进程访问所述临界区域之后,还包括:

在允许所述第一进程访问所述临界区域时,采用所述原子操作将所述配置参数的数值,设置为所述第一进程的进程标识;

在允许所述第二进程访问所述临界区域时,采用所述原子操作将所述配置参数的数值,设置为所述第二进程的进程标识。

在一些实施例中,采用所述原子操作将所述配置参数的数值,设置为所述第一进程的进程标识,包括:

采用所述原子操作,利用所述用户运行态的虚拟地址,将内存单元中的所述配置参数的数值设置为所述第一进程的进程标识;

采用所述原子操作将所述配置参数的数值,设置为所述第二进程的进程标识,包括:

采用所述原子操作,利用所述内核运行态的虚拟地址,将内存单元中的所述配置参数的数值设置为所述第二进程的进程标识。

在一些实施例中,在采用所述原子操作将所述配置参数的数值,设置为所述第一进程的进程标识之后,还包括:

在确定所述第一进程退出所述临界区域时,采用所述原子操作将所述配置参数的数值,设置为所述预设值;

在采用所述原子操作将所述配置参数的数值,设置为所述第二进程的进程标识之后,还包括:

在确定所述第二进程退出所述临界区域时,采用所述原子操作将所述配置参数的数值,设置为所述预设值。

在一些实施例中,允许所述第一进程或所述第二进程访问所述临界区域,包括:

确定所述第一进程的发起时间和所述第二进程的发起时间;在所述第一进程的发起时间早于所述第二进程的发起时间时,允许所述第一进程访问所述临界区域,在所述第二进程的发起时间早于所述第一进程的发起时间时,允许所述第二进程访问所述临界区域;

或者,所述第一进程具有优先级,所述第二进程具有优先级;允许所述第一进程和第二进程中优先级最高的进程,访问所述临界区域。

在一些实施例中,所述方法,还包括:

在检测到发生进程异常退出情况时,调用原子操作;

在采用所述原子操作检测到预设的配置参数的数值,是发生异常退出的进程的进程标识时,采用所述原子操作,将所述配置参数的数值,设置为预设值。

第二方面,本申请实施例提供了一种处理器,所述处理器,包括:

第一确定单元,用于在确定用户运行态发起第一进程以访问临界区域,和/或,确定内核运行态发起第二进程以访问所述临界区域时,判断所述临界区域是否正在被其他进程所访问;

第二确定单元,用于若确定所述临界区域未正在被其他进程所访问,允许所述第一进程或所述第二进程访问所述临界区域。

在一些实施例中,所述处理器,还包括:

第三确定单元,用于若确定所述临界区域正在被其他进程所访问,则等待所述其他进程退出所述临界区域,并在确定所述其他进程退出所述临界区域时,允许所述第一进程或所述第二进程访问所述临界区域。

在一些实施例中,所述第一确定单元,包括:

检测模块,用于调用原子操作,并采用所述原子操作检测预设的配置参数的数值;

第一确定模块,用于若采用所述原子操作确定所述配置参数的数值为预设值,则确定所述临界区域未正在被其他进程所访问;

第二确定模块,用于若采用所述原子操作确定所述配置参数的数值不为预设值,则确定所述临界区域正在被其他进程所访问。

在一些实施例中,所述处理器,还包括:

第一配置单元,用于在所述第二确定单元允许所述第一进程或所述第二进程访问所述临界区域之后,在允许所述第一进程访问所述临界区域时,采用所述原子操作将所述配置参数的数值,设置为所述第一进程的进程标识;

或者,第二配置单元,用于在所述第二确定单元允许所述第一进程或所述第二进程访问所述临界区域之后,在允许所述第二进程访问所述临界区域时,采用所述原子操作将所述配置参数的数值,设置为所述第二进程的进程标识。

在一些实施例中,第一配置单元,具体用于:

采用所述原子操作,利用所述用户运行态的虚拟地址,将内存单元中的所述配置参数的数值设置为所述第一进程的进程标识;

所述第二配置单元,具体用于:

采用所述原子操作,利用所述内核运行态的虚拟地址,将内存单元中的所述配置参数的数值设置为所述第二进程的进程标识。

在一些实施例中,所述处理器,还包括:

第三配置单元,用于在所述第一配置单元采用所述原子操作将所述配置参数的数值,设置为所述第一进程的进程标识之后,在确定所述第一进程退出所述临界区域时,采用所述原子操作将所述配置参数的数值,设置为所述预设值;

所述处理器,还包括:

第四配置单元,用于在所述第二配置单元采用所述原子操作将所述配置参数的数值,设置为所述第二进程的进程标识之后,在确定所述第二进程退出所述临界区域时,采用所述原子操作将所述配置参数的数值,设置为所述预设值。

在一些实施例中,所述第二确定单元,具体用于:

确定所述第一进程的发起时间和所述第二进程的发起时间;在所述第一进程的发起时间早于所述第二进程的发起时间时,允许所述第一进程访问所述临界区域,在所述第二进程的发起时间早于所述第一进程的发起时间时,允许所述第二进程访问所述临界区域;

或者,所述第一进程具有优先级,所述第二进程具有优先级;允许所述第一进程和第二进程中优先级最高的进程,访问所述临界区域。

在一些实施例中,所述处理器,还包括:

调用单元,用于在检测到发生进程异常退出情况时,调用原子操作;

第五配置单元,用于在采用所述原子操作检测到预设的配置参数的数值,是发生异常退出的进程的进程标识时,采用所述原子操作,将所述配置参数的数值,设置为预设值。

第三方面,本申请提供了一种组合处理装置,所述进程处理装置包括一个或多个本申请第一方面所述的处理器,用于从其他处理装置中获取数据,并执行指定的进程处理运算,将执行结果通过i/o接口传递给其他处理装置;

当所述进程处理装置包含多个所述处理器时,所述多个所述处理器间可以通过特定的结构进行连接并传输数据;

其中,多个所述处理器通过快速外部设备互连总线pcie总线进行互联并传输数据;多个所述处理器共享同一控制系统或拥有各自的控制系统;多个所述处理器共享内存单元或者拥有各自的内存单元。

第三方面,本申请提供了一种组合处理装置,包括如本申请第二方面所述的进程处理装置,通用互联接口和其他处理装置;

所述进程处理装置与所述其他处理装置进行交互,共同完成用户指定的操作。

第四方面,本申请提供了一种芯片,所述芯片包括如本申请第二方面所述的进程处理装置或如本申请第三方面所述的组合处理装置。

第五方面,本申请提供了一种板卡,所述板卡包括如本申请第四方面所述的芯片。

第六方面,本申请提供了一种电子装置,所述电子装置包括如本申请第四方面所述的芯片或者如本申请第五方面所述的板卡。

以上,本申请实施例的方案中,在确定用户运行态发起第一进程以访问临界区域,和/或,确定内核运行态发起第二进程以访问临界区域时,判断临界区域是否正在被其他进程所访问;若确定临界区域未正在被其他进程所访问,允许第一进程或第二进程访问临界区域。处理器中进入用户运行态的进程需要访问临界区域,或者,处理器中进入内核运行态的进程需要访问临界区域;或者,处理器中进入用户运行态的进程需要访问临界区域,并且处理器中进入内核运行态的另一进程需要访问临界区域;但是,临界区域所指示的共用资源是无法同时被多个线程访问的,从而,处理器只允许进入用户运行态的进程、或者进入内核运行态的进程访问临界区域,并且,处理器需要确定当前状态下临界区域没有被其他进程所访问,然后,处理器确定允许进入用户运行态的进程、进入内核运行态的进程,两者其中的一个进程访问临界区域的共用资源。进而,处理器中的进程可以正常进入临界区域,正常访问到共用资源;使得其中一个进程可以成功的访问资源,以完成处理任务。

附图说明

图1为本申请实施例提供的应用场景示意图一;

图2为本申请实施例提供的应用场景示意图二;

图3为本申请实施例提供的一种进程处理方法的示意图;

图4为本申请实施例提供的另一种进程处理方法的示意图;

图5为本申请实施例提供的一种处理器的示意图;

图6为本申请实施例提供的另一种处理器的示意图;

图7为本申请实施例提供的一种进程处理装置的示意图;

图8为本申请实施例提供的一种组合处理装置的示意图;

图9为本申请实施例提供的一种芯片的示意图一;

图10为本申请实施例提供的一种芯片的示意图二;

图11为本申请实施例提供的一种芯片的示意图三;

图12为本申请实施例提供的一种板卡的示意图;

图13为本申请实施例提供的一种电子装置的示意图一;

图14为本申请实施例提供的一种电子装置的示意图二;

图15为本申请实施例提供的一种电子装置的示意图三。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应当理解,本申请的权利要求、说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本申请的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本申请。如在本申请说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本申请说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

现有的人工智能技术中,处理器可以进行各种智能处理,例如,处理器进行图像的智能处理、数据的智能分析等等。

图1为本申请实施例提供的应用场景示意图一,如图1所示,可以将人工智能芯片和处理器应用到人脸识别中,采用人工智能芯片或者处理器直接对人脸图像进行识别,就可以得到识别结果,识别结果可以是图像或者其他数据。

图2为本申请实施例提供的应用场景示意图二,如图2所示,可以将人工智能芯片和处理器应用到服务器的数据计算中,进而对大数据进行处理,或者对精密数据进行准确计算。

处理器中的进程会进入到内核运行态,或者,进程可以进入到用户运行态;其中,内核运行态,简称为内核态;用户运行态,简称为用户态。其中,用户态是一种非特权状态,在用户态下,限制了进程的一些操作权限;内核态,指的是,进程执行处理器的调用而陷入内核代码中执行时的状态。

在处理器中配置有临界区域,临界区域指的是一个访问共用资源的程序片段,而这些共用资源是无法同时被多个线程访问的。当有线程进入临界区域时,其他线程或是进程必须等待(例如:boundedwaiting等待法)。

在具有内核态和用户态的时候,内核态可以发起一个进程去访问临界区域,用户态也可以发起一个进程去访问临界区域。

从而,由于内核态发起的进程、用户态发起的进程都需要访问临界区域的时候,内核态发起的进程用户态发起的进程都需要访问共用资源,但是这些共用资源是无法同时被多个线程所访问,进而造成内核态发起的进程、用户态发起的进程无法正常进入临界区域、无法访问到共用资源,造成进程访问资源的失败或者错误。

为了解决上述现有技术中存在的问题,本申请提供了一种进程处理方法及相关产品,以防止进程访问资源的失败或者错误。

在一些实施例中,图3为本申请实施例提供的一种进程处理方法的示意图,如图3所示,该方法,包括:

101、在确定用户运行态发起第一进程以访问临界区域,和/或,确定内核运行态发起第二进程以访问临界区域时,判断临界区域是否正在被其他进程所访问。

示例性地,本实施例的执行主体可以是处理器,此时处理器是一个硬件单元、硬件器件。或者,本实施例的执行主体可以是进程处理装置,此时进程处理装置是一个独立的硬件单元或者硬件器件,进程处理装置也可以是设置在处理器中的逻辑单元。

本实施例中以执行主体为处理器进行介绍。

处理器可以发起多个进程,每一个进程可以完成相应的任务处理。处理器中的进程可以进入到内核运行态,此时是内核运行态发起进程;处理器中的进程也可以进入到用户运行态,此时是用户运行态发起进程。

在处理器中配置有临界区域,临界区域指的是一个访问共用资源的程序片段,而这些共用资源是无法同时被多个线程访问的。进程是被允许访问临界区域的,但是临界区域无法同时被多个线程访问。

从而,处理器在确定用户运行态发起第一进程,且第一进程需要访问处理器的临界区域的时候,处理器为了使得第一进程可以访问临界区域,处理器需要判断临界区域是否正在被其他进程所访问。

或者,处理器在确定内核运行态发起第二进程,且第二进程需要访问处理器的临界区域的时候,处理器为了使得第二进程可以访问临界区域,处理器需要判断临界区域是否正在被其他进程所访问。

或者,存在用户运行态发起了第一进程,并且,内核运行态发起了第二进程的情况,此时,处理器在确定用户运行态发起第一进程、且第一进程需要访问处理器的临界区域,并且确定内核运行态发起第二进程、且第二进程需要访问处理器的临界区域的时候,处理器需要判断临界区域是否正在被其他进程所访问。

其中,用户运行态发起的第一进程所处理的任务、内核运行态发起的第二进程所处理的任务,两者可以相同或不同。例如,第一进程需要处理智能识别任务,第二进程需要处理智能计算任务;又例如,第一进程需要处理智能识别任务中的处理过程1,第二进程需要处理智能识别任务中的处理过程2。

102、若确定临界区域未正在被其他进程所访问,允许第一进程或第二进程访问临界区域。

示例性地,处理器若确定临界区域正在被其他进程所访问,由于临界区域所指示的共用资源是无法同时被多个线程访问的,从而,处理器确定不允许第一进程访问临界区域,也不允许第二进程访问临界区域。

处理器在确定用户运行态发起的第一进程需要访问临界区域时,处理器若确定临界区域没有正在被其他进程所访问,则处理器确定允许第一进程访问临界区域,以使得第一进程可以访问共用资源。

处理器在确定内核运行态发起的第二进程需要访问临界区域时,处理器若确定临界区域没有正在被其他进程所访问,则处理器确定允许第二进程访问临界区域,以使得第二进程可以访问共用资源。

处理器在确定用户运行态发起的第一进程需要访问临界区域、且内核运行态发起第二进程的需要访问临界区域的时候,处理器若确定临界区域没有正在被其他进程所访问,则处理器确定允许第一进程或者第二进程访问临界区域,以使得第一进程或者第二进程可以访问共用资源。

举例来说,处理器在确定用户运行态发起的第一进程需要访问临界区域、且内核运行态发起的第二进程需要访问临界区域的时候,处理器可以根据进程所处理的任务的优先级,选择第一进程或者第二进程访问临界区域,例如,处理器确定第一进程所处理的任务的优先级较高,则先允许第一进程访问临界区域。或者,处理器可以根据进程所处理的任务的计算量,选择第一进程或者第二进程访问临界区域,例如,处理器确定第一进程所处理的任务的计算量较大,则先允许第一进程访问临界区域。

本实施例,通过在确定用户运行态发起第一进程以访问临界区域,和/或,确定内核运行态发起第二进程以访问临界区域时,判断临界区域是否正在被其他进程所访问;若确定临界区域未正在被其他进程所访问,允许第一进程或第二进程访问临界区域。处理器中进入用户运行态的进程需要访问临界区域,或者,处理器中进入内核运行态的进程需要访问临界区域;或者,处理器中进入用户运行态的进程需要访问临界区域,并且处理器中进入内核运行态的另一进程需要访问临界区域;但是,临界区域所指示的共用资源是无法同时被多个线程访问的,从而,处理器只允许进入用户运行态的进程、或者进入内核运行态的进程访问临界区域,并且,处理器需要确定当前状态下临界区域没有被其他进程所访问,然后,处理器确定允许进入用户运行态的进程、进入内核运行态的进程,两者其中的一个进程访问临界区域的共用资源。进而,处理器中的进程可以正常进入临界区域,正常访问到共用资源;使得其中一个进程可以成功的访问资源,以完成处理任务。

在一些实施例中,图4为本申请实施例提供的另一种进程处理方法的示意图,如图4所示,该方法,包括:

201、在确定用户运行态发起第一进程以访问临界区域,和/或,确定内核运行态发起第二进程以访问临界区域时,调用原子操作,并采用原子操作检测预设的配置参数的数值。

示例性地,本实施例的执行主体可以是处理器,此时处理器是一个硬件单元、硬件器件。或者,本实施例的执行主体可以是进程处理装置,此时进程处理装置是一个独立的硬件单元或者硬件器件,进程处理装置也可以是设置在处理器中的逻辑单元。

本实施例中以执行主体为处理器进行介绍。

处理器可以发起多个进程,每一个进程可以完成相应的任务处理。处理器中的进程可以进入到内核运行态,此时是内核运行态发起进程;处理器中的进程也可以进入到用户运行态,此时是用户运行态发起进程。

在处理器中配置有临界区域,临界区域指的是一个访问共用资源的程序片段,而这些共用资源是无法同时被多个线程访问的。进程是被允许访问临界区域的,但是临界区域无法同时被多个线程访问。

为了可以完成进程访问临界区域,处理器可以调用原子操作完成进程的处理。首先,处理器开辟一个内存区域,该内存区域用于放置原子操作的配置参数,配置参数表征了原子操作的标识;处理器为原子操作的配置操作,预先设置了预设值;当原子操作的配置参数是该预设值时,临界区域没有正在被其他进程所访问;当原子操作的配置参数不是该预设值时,临界区域正在被其他进程所访问。一个实例中,预设值可以是零。上述内存区域,也可以称为内存单元。

其中,原子操作(atomicoperation)是指不会被线程调度机制打断的操作。原子操作一旦开始,就一直运行到结束,中间不会有任何contextswitch(例如,切换到另一个线程)。

举例来说,当处理器采用linux系统时,在一个驱动的linux内核中设置一个内存区域,该内存区域可以存放整数,即,内存区域用于存放一个配置参数;并且,将内存区域中所存放的配置参数,设置为0。

从而,处理器在确定用户运行态发起第一进程,且第一进程需要访问处理器的临界区域的时候,处理器为了使得第一进程可以访问临界区域,处理器可以调用原子操作。

然后,处理器从内存区域中获取原子操作的配置参数;一个示例中,处理器利用原子操作,从内存区域中获取原子操作的配置参数。

进而,处理器可以判断所获取到的原子操作的配置参数,是否为预设值。例如,判断配置参数的取值是否为0。由于处理器利用原子操作的配置参数去判断临界区域是否正在被进程所访问,基于原子操作不会被打断的原理,处理器可以快速、准确的判断出临界区域是否正在被进程所访问。

并且,在装载驱动的时候,处理器将配置参数初始化为预设参数,同时,处理器将与内核运行态对应的内核控件的虚拟地址,映射到与用户运行态对应的用户空间的虚拟地址上。例如,与内核运行态对应的内核控件的虚拟地址为int*addr_kernel,用户运行态对应的用户空间的虚拟地址为int*addr_user。并且,在初始的时候,addr_kernel与addr_user为同一个物理地址。

202、若采用原子操作确定配置参数的数值为预设值,则确定临界区域未正在被其他进程所访问。

示例性地,在步骤201之后,处理器采用原子操作,对原子操作的配置参数的数值进行判断;处理器若确定所获取到的配置参数的数值为预设值,由于预设值表征了临界区域没有正在被其他进程所访问,从而处理器可以确定当前状态下临界区域没有正在被其他进程所访问。

203、若确定临界区域未正在被其他进程所访问,允许第一进程或第二进程访问临界区域。

一个示例中,步骤203具体包括以下几种实现方式:

步骤203的第一种实现方式、确定第一进程的发起时间和第二进程的发起时间;在第一进程的发起时间早于第二进程的发起时间时,允许第一进程访问临界区域,在第二进程的发起时间早于第一进程的发起时间时,允许第二进程访问临界区域。

步骤203的第二种实现方式、第一进程具有优先级,第二进程具有优先级;允许第一进程和第二进程中优先级最高的进程,访问临界区域。

示例性地,在步骤202之后,处理器确定临界区域未正在被其他进程所访问,处理器确定临界区域可以允许第一进程或者第二进程去访问的。

步骤203的具体实施方式包括以下几种:

步骤203的第一种实施方式:处理器在确定用户运行态发起的第一进程需要访问临界区域时,处理器确定允许第一进程访问临界区域,以使得第一进程可以访问共用资源;处理器在确定内核运行态发起的第二进程需要访问临界区域时,处理器确定允许第二进程访问临界区域,以使得第二进程可以访问共用资源。

步骤203的第二种实施方式:处理器在确定用户运行态发起的第一进程需要访问临界区域、且内核运行态发起的第二进程需要访问临界区域的时候,处理器选择第一进程和第二进程中一个进程,去允许访问临界区域,没有被选择的另一个进程进行等待,以在临界区域没有被访问时再进行访问。

一个示例中,处理器可以读取到第一进程的发起时间、第二进程的发起时间;然后,处理器判断第一进程的发起时间是否早于第二进程的发起时间。处理器若确定第一进程的发起时间早于第二进程的发起时间,则处理器确定允许第一进程进入临界区域,进而用户运行态发起的第一进程访问临界区域的共用资源;从而,第二进程进入等待状态,处理器在确定第一进程的访问结束之后,处理器允许的第二进程进入并访问临界区域。处理器若确定第二进程的发起时间早于第一进程的发起时间,则处理器确定允许第二进程进入临界区域,进而内核运行态发起的第二进程访问临界区域的共用资源;从而,第一进程进入等待状态,处理器在确定第二进程的访问结束之后,处理器允许的第一进程进入并访问临界区域。

一个示例中,可以为进程配置优先级,进而在发起进程时,各个进程具有各自对应的优先级;从而,用户运行态发起的第一进程具有优先级,内核运行态发起的第二进程也具有优先级;处理器可以判断第一进程的优先级,是否高于第二进程的优先级;处理器若确定第一进程的优先级高于第二进程的优先级,则处理器确定允许第一进程进入临界区域,进而用户运行态发起的第一进程访问临界区域的共用资源;从而,第二进程进入等待状态,处理器在确定第一进程的访问结束之后,处理器允许的第二进程进入并访问临界区域。处理器若确定第二进程的优先级高于第一进程的优先级,则处理器确定允许第二进程进入临界区域,进而内核运行态发起的第二进程访问临界区域的共用资源;从而,第一进程进入等待状态,处理器在确定第二进程的访问结束之后,处理器允许的第一进程进入并访问临界区域。

一个示例中,处理器可以确定进程所处理的任务的计算量;处理器判断第一进程所处理的任务的计算量,是否小于第二进程所处理的任务的计算量;处理器若确定第一进程所处理的任务的计算量,小于第二进程所处理的任务的计算量,则处理器确定允许第一进程进入临界区域,进而用户运行态发起的第一进程访问临界区域的共用资源;从而,第二进程进入等待状态,处理器在确定第一进程的访问结束之后,处理器允许的第二进程进入并访问临界区域。处理器若确定第二进程所处理的任务的计算量,小于等于第一进程所处理的任务的计算量,则处理器确定允许第二进程进入临界区域,进而内核运行态发起的第二进程访问临界区域的共用资源;从而,第一进程进入等待状态,处理器在确定第二进程的访问结束之后,处理器允许的第一进程进入并访问临界区域。

一个示例中,处理器判断第一进程所处理的任务的计算量,等于第二进程所处理的任务的计算量,则处理器根据进程的优先级,选择优先级最高的进程访问临界区域。

204、在允许第一进程访问临界区域时,采用原子操作将配置参数的数值,设置为第一进程的进程标识。

一个示例中,步骤204具体包括:采用原子操作,利用用户运行态的虚拟地址,将内存单元中的配置参数的数值设置为第一进程的进程标识。

示例性地,在步骤203中,处理器已经完成了对第一进程和第二进程的选择,处理器在确定允许第一进程访问临界区域时,第一进程就可以进入临界区域去访问临界区域的共用资源;并且,为了防止其他进程在第一进程访问临界区域时来进入临界区域,处理器需要改变原子操作的配置参数的数值,使得配置参数的数值不再是上述预设值。

此时,由于是用户运行态发起的第一进程在访问临界区域,从而,处理器可以采用用户运行态的虚拟地址,将原子操作的配置参数,变更为第一进程的进程标识(processid,简称pid)。此时,由于配置参数存储在内存单元中,进而,处理器将配置参数变更为第一进程的进程标识时,内存单元中的配置参数的取值为第一进程的进程标识。

205、在确定第一进程退出临界区域时,采用原子操作将配置参数的数值,设置为预设值。

示例性地,在步骤204之后,处理器还需要实时的检测第一进程不再访问临界区域,从而,处理器在检测到第一进程退出临界区域时,为了使得其他进程或者第二进程可以访问临界区域,处理器需要修改配置参数的数值。

此时,处理器可以利用原子操作,将原值操作的配置参数的数值设置为预设值。由于预设值表征了临界区域没有正在被进程所访问,从而第二进程或者进程可以进入到临界区域去访问共用资源。

206、在允许第二进程访问临界区域时,采用原子操作将配置参数的数值,设置为第二进程的进程标识。

一个示例中,步骤206具体包括:采用原子操作,利用内核运行态的虚拟地址,将内存单元中的配置参数的数值设置为第二进程的进程标识。

示例性地,在步骤203中,处理器已经完成了对第一进程和第二进程的选择,处理器在确定允许第二进程访问临界区域时,第二进程就可以进入临界区域去访问临界区域的共用资源;并且,为了防止其他进程在第二进程访问临界区域时来进入临界区域,处理器需要改变原子操作的配置参数的数值,使得配置参数的数值不再是上述预设值。

此时,由于是内核运行态发起的第二进程在访问临界区域,从而,处理器可以采用内核运行态的虚拟地址,将原子操作的配置参数,变更为第二进程的进程标识pid。此时,由于配置参数存储在内存单元中,进而,处理器将配置参数变更为第二进程的进程标识时,内存单元中的配置参数的取值为第二进程的进程标识。

207、在确定第二进程退出临界区域时,采用原子操作将配置参数的数值,设置为预设值。

示例性地,在步骤206之后,处理器还需要实时的检测第二进程不再访问临界区域,从而,处理器在检测到第二进程退出临界区域时,为了使得其他进程或者第一进程可以访问临界区域,处理器需要修改配置参数的数值。

此时,处理器可以利用原子操作,将原值操作的配置参数的数值设置为预设值。由于预设值表征了临界区域没有正在被进程所访问,从而第一进程或者进程可以进入到临界区域去访问共用资源。

208、若采用原子操作确定配置参数的数值不为预设值,则确定临界区域正在被其他进程所访问。

示例性地,在步骤201之后,处理器采用原子操作,对原子操作的配置参数的数值进行判断;处理器若确定所获取到的配置参数的数值不为预设值;由于预设值表征了临界区域没有正在被其他进程所访问,但是配置参数的数值的取值却不是该预设值,从而,处理器可以确定当前状态下临界区域正在被其他进程所访问。从而,用户运行态发起的第一进程、内核运行态发起的第二进程,都不可以进入临界区域。

209、若确定临界区域正在被其他进程所访问,则等待其他进程退出临界区域,并在确定其他进程退出临界区域时,允许第一进程或第二进程访问临界区域。

示例性地,在步骤208之后,处理器确定当前状态下临界区域正在被其他进程所访问,若此时只有用户运行态发起第一进程,则处理器确定第一进程进入等待状态;处理器检测到访问临界区域的其他进程退出临界区域时,处理器可以将配置参数的取值变更为上述预设值,进而,处理器允许用户运行态发起的第一进程,进入临界区域以访问临界区域的共用资源。

或者,在步骤208之后,处理器确定当前状态下临界区域正在被其他进程所访问,若此时只有内核运行态发起第二进程,则处理器确定第二进程进入等待状态;处理器检测到访问临界区域的其他进程退出临界区域时,处理器可以将配置参数的取值变更为上述预设值,进而,处理器允许内核运行态发起的第二进程,进入临界区域以访问临界区域的共用资源。

或者,在步骤208之后,处理器确定当前状态下临界区域正在被其他进程所访问,若此时用户运行态发起第一进程、且内核运行态发起第二进程,则处理器确定第二进程进入等待状态;处理器检测到访问临界区域的其他进程退出临界区域时,处理器可以将配置参数的取值变更为上述预设值,进而,处理器选择第一进程和第二进程中一个进程,进入临界区域以访问临界区域的共用资源。

举例来说,处理器利用原子操作确定配置参数不为0时,处理器确定当前有其他进程已经进入了临界区域,处理器确定不允许当前的进程进入临界区域;处理器持续检测配置参数的数值,处理器等待配置参数的数值为0的时候,处理器再允许当前的进程,进入临界区域。进而,处理器在确定进程退出临界区域的时候,处理器利用原子操作将配置参数的数值设置为0;处理器再允许当前的进程,进入临界区域。

一个示例中,在上述任一步骤的实施过程中,还可以执行以下步骤:

在检测到发生进程异常退出情况时,调用原子操作;在采用原子操作检测到预设的配置参数的数值,是发生异常退出的进程的进程标识时,采用原子操作,将配置参数的数值,设置为预设值。

示例性地,本实施例还提供了异常处理的机制。在进程访问临界区域的过程中,由于正在访问临界区域的进程的本身原因、或者处理器的其他进程的干扰,正在访问临界区域的进程会出现异常退出情况;此时,临界区域不再被该进程所访问;处理器需要及时的进行处理,以保证其他进程可以正常访问到临界区域,避免资源的浪费,且加快处理器的运行效率。

进而,处理器在检测到进程异常退出情况的时候,处理器采用原子操作,检测内存单元中的配置参数的数值的取值,进而确定该取值是否为异常退出的进程的进程标识pid;若是,则处理器利用原子操作,将内存单元中的配置参数的数值,设置为预设值,例如将配置参数设置为0;由于预设值表征了临界区域没有正在被其他进程所访问,进而其他进程可以被调用去访问临界区域。

本实施例,在上述实施例的基础上,处理器利用原子操作的配置参数去判断临界区域是否正在被进程所访问,基于原子操作不会被打断的原理,处理器可以快速、准确的判断出临界区域是否正在被进程所访问。并且,处理器在允许第一进程访问临界区域时,采用原子操作将配置参数的数值设置为第一进程的进程标识,或者,处理器在允许第二进程访问临界区域时,采用原子操作将配置参数的数值设置为第二进程的进程标识,基于原子操作不会被打断的原理,处理器可以快速准确的将内存单元中的配置参数修改为正在访问临界区域的进程的标识,进而其他进程不可以再访问临界区域,保证了当前进程可以成功的访问临界区域的共用资源。并且,处理器在确定进程退出临界区域、或者检测到访问临界区域的进程发送异常退出情况的时候,处理器采用原子操作将配置参数的数值设置为预设值,基于原子操作不会被打断的原理,处理器可以快速准确的将内存单元中的配置参数修改为预设值,进而保证其他进程可以快速、成功的访问临界区域。

在一些实施例中,图5为本申请实施例提供的一种处理器的示意图,如图5所示,处理器,包括:

第一确定单元31,用于在确定用户运行态发起第一进程以访问临界区域,和/或,确定内核运行态发起第二进程以访问临界区域时,判断临界区域是否正在被其他进程所访问。

第二确定单元32,用于若确定临界区域未正在被其他进程所访问,允许第一进程或第二进程访问临界区域。

本实施例的各单元和模块的原理和技术效果,参见上述方法实施例,不再赘述。

在一些实施例中,图6为本申请实施例提供的另一种处理器的示意图,在图5所示实施例的基础上,如图6所示,处理器,还包括:

第三确定单元41,用于若确定临界区域正在被其他进程所访问,则等待其他进程退出临界区域,并在确定其他进程退出临界区域时,允许第一进程或第二进程访问临界区域。

一个示例中,第一确定单元31,包括:

检测模块311,用于调用原子操作,并采用原子操作检测预设的配置参数的数值。

第一确定模块312,用于若采用原子操作确定配置参数的数值为预设值,则确定临界区域未正在被其他进程所访问。

第二确定模块313,用于若采用原子操作确定配置参数的数值不为预设值,则确定临界区域正在被其他进程所访问。

一个示例中,处理器,还包括:

第一配置单元42,用于在第二确定单元32允许第一进程或第二进程访问临界区域之后,在允许第一进程访问临界区域时,采用原子操作将配置参数的数值,设置为第一进程的进程标识。

或者,第二配置单元43,用于在第二确定单元32允许第一进程或第二进程访问临界区域之后,在允许第二进程访问临界区域时,采用原子操作将配置参数的数值,设置为第二进程的进程标识。

一个示例中,第一配置单元42,具体用于:采用原子操作,利用用户运行态的虚拟地址,将内存单元中的配置参数的数值设置为第一进程的进程标识。

第二配置单元43,具体用于:采用原子操作,利用内核运行态的虚拟地址,将内存单元中的配置参数的数值设置为第二进程的进程标识。

一个示例中,处理器,还包括:

第三配置单元44,用于在第一配置单元42采用原子操作将配置参数的数值,设置为第一进程的进程标识之后,在确定第一进程退出临界区域时,采用原子操作将配置参数的数值,设置为预设值。

处理器,还包括:

第四配置单元45,用于在第二配置单元43采用原子操作将配置参数的数值,设置为第二进程的进程标识之后,在确定第二进程退出临界区域时,采用原子操作将配置参数的数值,设置为预设值。

一个示例中,第二确定单元32,具体用于:确定第一进程的发起时间和第二进程的发起时间;在第一进程的发起时间早于第二进程的发起时间时,允许第一进程访问临界区域,在第二进程的发起时间早于第一进程的发起时间时,允许第二进程访问临界区域。

或者,第二确定单元32,具体用于:第一进程具有优先级,第二进程具有优先级;允许第一进程和第二进程中优先级最高的进程,访问临界区域。

一个示例中,处理器,还包括:

调用单元46,用于在检测到发生进程异常退出情况时,调用原子操作。

第五配置单元47,用于在采用原子操作检测到预设的配置参数的数值,是发生异常退出的进程的进程标识时,采用原子操作,将配置参数的数值,设置为预设值。

本实施例的各单元和模块的原理和技术效果,参见上述方法实施例,不再赘述。

上述各单元可以是硬件电路包括数字电路,模拟电路等等。硬件电路的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。上述处理器中的单元和模块可以是任何适当的硬件处理器,比如cpu、gpu、fpga、dsp和asic等等。上述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如rram,dram,sram,edram,hbm,hmc等等。

在一些实施例中,图7为本申请实施例提供的一种进程处理装置的示意图,如图7所示,进程处理装置包括一个或多个上述的处理器,用于从其他处理装置中获取数据或者接收线程任务,并执行指定的进程处理运算,将执行结果通过i/o接口传递给其他处理装置。

当进程处理装置包含多个处理器时,多个处理器间可以通过特定的结构进行连接并传输数据。

其中,多个处理器通过快速外部设备互连总线pcie总线进行互联并传输数据。多个处理器共享同一控制系统或拥有各自的控制系统。多个处理器共享内存单元或者拥有各自的内存单元。多个处理器的互联方式是任意互联拓扑。该进程处理装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。

在一些实施例中,图8为本申请实施例提供的一种组合处理装置的示意图,如图8所示,组合处理装置,包括如上述的进程处理装置,通用互联接口和其他处理装置。

进程处理装置与其他处理装置进行交互,共同完成用户指定的操作。

上述组合装置可以作为手机、机器人、无人机等智能设备的系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。

在一些实施例中,图9为本申请实施例提供的一种芯片的示意图一,如图9所示,芯片包括如上述的进程处理装置。

一个示例中,芯片中包括至少一个上述进程处理装置。

在一些实施例中,图10为本申请实施例提供的一种芯片的示意图二,如图10所示,芯片包括如上述的组合处理装置。

一个示例中,芯片中包括至少一个上述组合处理装置。

在一些实施例中,图11为本申请实施例提供的一种芯片的示意图三,如图11所示,芯片包括如上述的进程处理装置和如上述的组合处理装置。

一个示例中,芯片中包括至少一个进程处理装置、以及至少一个组合处理装置。进程处理装置与组合处理装置之间可以进行数据交互,也可以不进行数据交互。

在一些实施例中,图12为本申请实施例提供的一种板卡的示意图,如图12所示,板卡包括如上述的芯片。

一个示例中,板卡中设置有至少一个芯片。

在一些实施例中,图13为本申请实施例提供的一种电子装置的示意图一,图14为本申请实施例提供的一种电子装置的示意图二,图15为本申请实施例提供的一种电子装置的示意图三,如图13-图15所示,本申请提供了一种电子装置,电子装置包括如上述的芯片或者如上述的板卡,或者,电子装置包括如上述的芯片以及如上述的板卡。

其中,该电子装置包括:数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。

上述交通工具包括飞机、轮船和/或车辆;上述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、b超仪和/或心电图仪。

在本申请中提及“实施例”,表示结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其他实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其他实施例相结合。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1