CN114064236A - 任务执行方法、装置、设备和存储介质 - Google Patents
任务执行方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN114064236A CN114064236A CN202111258619.9A CN202111258619A CN114064236A CN 114064236 A CN114064236 A CN 114064236A CN 202111258619 A CN202111258619 A CN 202111258619A CN 114064236 A CN114064236 A CN 114064236A
- Authority
- CN
- China
- Prior art keywords
- task
- atomic operation
- user
- executed
- interrupt
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000012545 processing Methods 0.000 claims abstract description 48
- 238000000926 separation method Methods 0.000 claims abstract description 13
- 230000008569 process Effects 0.000 claims description 31
- 230000006870 function Effects 0.000 claims description 27
- 238000007689 inspection Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 17
- 230000001960 triggered effect Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种任务执行方法、装置、设备和存储介质,应用于双态分离架构的操作系统,所述操作系统划分为用户空间和内核空间,所述方法包括:在所述操作系统中执行任务时,接收中断请求;基于所述中断请求,进入所述内核空间进行中断处理;若当前执行的任务是在所述用户空间执行的用户态任务,且当前执行所述任务的操作为原子操作时,将所述任务的执行流回退到所述原子操作的原子操作入口,以在所述任务恢复后重新执行所述任务的原子操作。本申请实施例在任务中存在原子操作时,无需通过关中断操作、开中断方式的系统调用方式来保证原子操作不被其他任务影响,提高了操作系统的系统性能。
Description
技术领域
本申请实施例涉及计算机技术领域,特别是涉及一种任务执行方法和装置、一种电子设备和一种存储介质。
背景技术
原子操作(atomic operation)是一类极为基础的操作,是不可中断的一个或一系列操作,在原子操作执行完毕之前不会被任何其它任务或事件中断。原子操作是实现其他操作的基础,比如锁、引用计数器等等。
在某些CPU(Central Processing Unit,中央处理器)的架构上只提供了简单的原子操作,原子操作通常通过关中断方式来实现。然而,在双态分离架构(一种应用代码运行在用户空间,系统代码运行在内核空间的操作系统架构)上,用户态代码需通过系统请求调用关中断操作,每次原子操作需要一次关中断操作、一次开中断操作,即需要两次系统调用,极大影响了系统性能。
发明内容
本申请实施例提供了一种任务执行方法,以解决在任务中存在原子操作时,影响操作系统的系统性能的问题。
相应的,本申请实施例还提供了一种任务执行装置、一种电子设备以及一种存储介质,用以保证上述方法的实现及应用。
为了解决上述问题,本申请实施例公开了一种任务执行方法,应用于双态分离架构的操作系统,所述操作系统划分为用户空间和内核空间,所述方法包括:
在所述操作系统中执行任务时,接收中断请求;
基于所述中断请求,进入所述内核空间进行中断处理;
若当前执行的任务是在所述用户空间执行的用户态任务,且当前执行所述任务的操作为原子操作时,将所述任务的执行流回退到所述原子操作的原子操作入口,以在所述任务恢复后重新执行所述任务的原子操作。
可选地,在所述基于所述中断请求,进入所述内核空间进行中断处理之后,所述方法还包括:
若当前执行的所述任务是在所述内核空间执行的内核态任务,或者,所述当前执行的所述任务是用户态任务但当前没有执行所述任务的原子操作时,则在所述内核空间进行中断处理。
可选地,所述基于所述中断请求,进入所述内核空间进行中断处理,包括:
在所述用户空间中执行任务;
接收中断处理请求,将所述任务从所述用户空间切换至所述内核空间进行中断处理;
记录所述任务的上下文信息;所述上下文信息用于在将所述任务从所述内核空间切换至所述用户空间时,恢复至所述任务从所述用户空间切换至所述内核空间前的状态。
可选地,通过如下方式当前执行的任务是用户态任务:
读取所述任务对应的进程的任务控制块;
在所述任务控制块中的进程结构不为空,则确定所述任务是所述用户态任务。
可选地,通过如下方式确定当前执行所述任务的操作为原子操作:
读取所述任务对应的进程的进程结构体中的原子操作函数入口地址和检查长度;
通过比对所述原子操作函数入口地址和所述检查长度与所述上下文信息,以确定当前是否执行所述任务的原子操作。
可选地,所述方法还包括:
在当前执行的所述任务为内核态任务,且所述内核态任务包括原子操作时进行关中断操作;
在所述任务的原子操作执行完成后,进行开中断操作。
可选地,应用于为单核处理器的双态分离架构的操作系统。
本申请实施例还公开了一种任务执行装置,应用于双态分离架构的操作系统,所述操作系统划分为用户空间和内核空间,所述装置包括:
中断请求接收模块,用于在所述操作系统中执行任务时,接收中断请求;
中断处理模块,用于基于所述中断请求,进入所述内核空间进行中断处理;
用户态原子操作处理模块,用于若当前执行的任务是在所述用户空间执行的用户态任务,且当前执行所述任务的操作为原子操作时,将所述任务的执行流回退到所述原子操作的原子操作入口,以在所述任务恢复后重新执行所述任务的原子操作。
可选地,所述装置还包括:内核态任务执行模块,用于若当前执行的所述任务是在所述内核空间执行的内核态任务,或者,所述当前执行的所述任务是用户态任务但当前没有执行所述任务的原子操作时,则在所述内核态进行中断处理。
可选地,所述中断处理模块,用于在所述用户空间中执行任务;接收中断处理请求,将所述任务从所述用户空间切换至所述内核空间进行中断处理;记录所述任务的上下文信息;所述上下文信息用于在将所述任务从所述内核态切换至所述用户态时,恢复至所述任务从所述用户态切换至所述内核态前的状态。
可选地,所述装置还包括:用户态任务确定模块,用于读取所述任务对应的进程的任务控制块;在所述任务控制块中的进程结构不为空,则确定所述任务是所述用户态任务。
可选地,所述装置还包括:原子操作确定模块,用于读取所述任务对应的进程的进程结构体中的原子操作函数入口地址和检查长度;通过比对所述原子操作函数入口地址和所述检查长度与所述上下文信息,以确定当前是否执行所述任务的原子操作。
可选地,所述装置还包括:内核态原子操作处理模块,用于在当前执行的所述任务为内核态任务,且所述内核态任务包括原子操作时进行关中断操作;在所述任务的原子操作执行完成后,进行开中断操作。
可选地,应用于为单核处理器的双态分离架构的操作系统。
本申请实施例还公开了一种电子设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例中一个或多个所述的任务执行方法。
本申请实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例中一个或多个所述的任务执行方法。
与现有技术相比,本申请实施例包括以下优点:
在本申请实施例中,在操作系统中执行任务时,若接收到中断请求则进入内核空间进行中断处理,其中,若当前执行的任务是用户态任务,且当前执行任务的操作为原子操作时,将任务的执行流回退到该原子操作的原子操作入口,以在用户态任务恢复后重新执行任务的原子操作。本申请实施例在任务中存在原子操作时,无需通过关中断操作、开中断操作的方式的系统调用方式来保证原子操作不被其他任务影响,提高了操作系统的系统性能。
附图说明
为了更清楚地说明本申请的技术方案,下面将对本申请的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的一种任务执行方法实施例的步骤流程图;
图2是本申请的一种操作系统中任务执行的示意图;
图3是本申请的另一种任务执行方法实施例的步骤流程图;
图4是本申请的一种上下文信息的内存布局的示意图;
图5是本申请的一种双态分离架构的物联网操作系统上的原子操作的示意图;
图6是本申请的一种任务执行装置实施例的结构框图;
图7是本申请一实施例提供的装置的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
对于本申请实施例涉及的一些技术术语进行说明:
内核态:特权运行状态,可以访问所有系统资源。
用户态:非特权的运行状态,访问权限受到控制。
双态分离架构:一种应用代码运行在用户态,系统代码运行在内核态的操作系统架构。
原子操作:不可中断的一个或一系列操作。
CAS(Compare And Swap):一种比较交换操作,如果指定地址上的值和期望的值相等,则往该地址写新值,否则不做任何事。
参照图1,是本申请的一种任务执行方法实施例的步骤流程图,应用于双态分离架构的操作系统,所述操作系统划分为用户空间和内核空间。
在具体实现中,操作系统可以是物联网操作系统,可以应用于共享汽车、智能家居、手机、平板电脑等物联网设备中,其中,物联网操作系统可以包括但不限于:FreeRTOS、RT-Thread、ThreadX、ARMmbed、Zephyr、LiteOS、TinyOS等等。在具体实现中,由于物联网操作系统等操作系统的资源是有限的,如果访问资源的操作过多,必然会消耗过多的资源,如果不对这些操作加以区分,很可能造成资源访问的冲突,因此为了减少有限资源的访问和使用冲突,对不同的操作赋予不同的执行等级。
以物联网操作系统为例,在物联网操作系统中,分为用户态(User mode)和内核态(Kernel mode)两种运行级别,用于区分不同任务的执行等级。具体地,内核态拥有资源多的状态,或者说访问资源多的状态,因此也称为特权态。相对来说,用户态是非特权态,访问的资源将受到限制。如果一个任务(进程)运行在内核态,该任务可以访问计算机的任何资源,即该任务的资源访问权限不受限制,而如果一个任务运行在用户态,其资源需求将受到各种限制,例如,从硬盘读取数据,或者从键盘获取输入等访问操作,则需要进入到内核态。其中,用户态具有对应的用户空间,内核态具有对应的内核空间,当任务运行在内核空间时处于内核态,任务运行在用户空间则时处于用户态。
具体而言,所述任务执行方法可以包括如下步骤:
步骤102、在所述操作系统中执行任务时,接收中断请求。
步骤104、基于所述中断请求,进入所述内核空间进行中断处理。
在具体实现中,任务可以在用户空间执行也可以在内核空间执行,其中,在用户空间执行的任务为用户态任务,需要在内核空间执行的任务为内核态任务。
在本申请实施例中,当异步事件发生时,例如,外设向操作系统的CPU发送中断请求,比如串口收到数据、网卡收到数据等,进入内核态时基于中断请求进行中断处理。其中,如果任务在用户空间中执行的用户态任务,则需要将任务从用户空间切换至内核空间,以进入内核空间进行中断处理。
对中断处理进行示例性说明:当CPU执行某个任务的时候,如果外设向操作系统的CPU发出中断请求,那么CPU在满足响应的情况下,将发出中断响应信号,与此同时关闭中断操作,表示CPU将不再受理另外一个设备的中断请求,此时,CPU将寻找中断请求源是哪一个设备,并保存CPU自己的程序计数器(PC)的内容,然后,转移到处理该中断源的中断服务程序,CPU保存现场信息,设备服务(如交换数据)以后将恢复现场信息,最后可以进行开中断操作,并返回到原来被中断的任务继续执行。
步骤106、若当前执行的任务是在所述用户空间执行的用户态任务,且当前执行所述任务的操作为原子操作时,将所述任务的执行流回退到所述原子操作的原子操作入口,以在所述任务恢复后重新执行所述任务的原子操作。
其中,任务是通常由一个或者以上的操作组成,任务中的操作可以包括原子操作。具体地,原子操作是不可分割的,在执行完毕不会被任何其它任务或事件中断,如果原子操作中的任何一步操作没有完成,那么所有完成的操作步骤都必须回滚,以保证要么所有操作步骤都未完成,要么所有操作步骤都被完成。在相关技术中,为了保证原子操作的原子性(即不会被其他任务中断),在用户态通过关中断系统调用实现原子操作,具体地,先发起系统调用禁用中断,然后执行原子操作,最后再次发起系统调用使能中断(关中断),可以理解,通过关中断系统调用方式来保证原子操作的原子性,不仅效率低,而且开关中断服务不适合作为系统服务开放给用户态。
在本申请实施例中,在触发中断处理时,需要操作系统的介入,开展管理工作,由于操作系统的管理工作(例如进程切换、分配IO设备等)需要使用特权指令,因此如果在用户空间,则需要从用户空间切换为内核空间,其中,如果在从用户空间切换至内核空间前,在用户空间中执行用户态任务,并且当前正在执行的是该用户态任务中的原子操作,为了保证原子操作的原子性,将任务的执行流回退到原子操作的原子操作入口,以在用户态的任务恢复后,可以重新执行任务的原子操作。
为了更好地说明本申请实施例,下面采用具体示例进行说明。参照图2,所述为本申请的一种操作系统中任务执行的示意图,操作系统包括用户空间和内核空间,任务可以在用户空间或者内核空间中执行,在接收到中断请求时,进入内核空间,其中,如果任务是用户空间执行的用户态任务且当前执行任务的操作为原子操作时,则将任务的执行流回退到该原子操作的原子操作入口,从而继续执行该原子操作。
在上述任务执行方法中,在操作系统中执行任务时,若接收到中断请求则进入内核空间进行中断处理,其中,若当前执行的任务是用户态任务,且当前执行任务的操作为原子操作时,将任务的执行流回退到该原子操作的原子操作入口,以在用户态任务恢复后重新执行任务的原子操作。本申请实施例在任务中存在原子操作时,无需通过关中断操作、开中断方式的系统调用方式来保证原子操作不被其他任务影响,提高了操作系统的系统性能。
参照图3,是本申请的一种任务执行方法实施例的步骤流程图,应用于双态分离架构的操作系统,所述操作系统划分为用户空间和内核空间,所述方法包括如下步骤:
步骤302、在所述操作系统中执行任务时,接收中断请求。
步骤304、基于所述中断请求,进入所述内核空间进行中断处理。
在具体实现中,在触发中断时,在操作系统的内核态进行中断处理,其中,如果在触发中断时处于用户态,则需要从用户空间切换至内核空间中。
在一示例性实施例中,所述步骤304、基于所述中断请求,进入所述内核空间进行中断处理,可以包括如下步骤:
在所述用户空间中执行任务;
接收中断处理请求,将所述任务从所述用户空间切换至所述内核空间进行中断处理;
记录所述任务的上下文信息;所述上下文信息用于在将所述任务从所述内核空间切换至所述用户空间时,恢复至所述任务从所述用户空间切换至所述内核空间前的状态。
其中,上下文信息是指任务在CPU上执行的状态集合,由通用寄存器、控制寄存器、栈地址、程序计数器等其他寄存器中信息组成。上下文信息包括PC(Program Counter,程序执行位置)。
具体地,在用户空间中执行任务时,如果接收到中断处理请求,将进入中断处理,则需要将任务从用户空间切换至内核空间,其中,在切换至内核空间前,需要先保存现场,具体地,在切换至内核空间前,需要记录任务的上下文信息,然后再切换至内核空间,通过保存现场,从而在从内核空间再切换至用户空间时,能够恢复从用户空间切换至内核空间前的状态。
步骤306、若当前执行的任务是用户态任务,且当前执行所述任务的操作为原子操作时,将所述任务的执行流回退到所述原子操作的原子操作入口,以在所述任务恢复后重新执行所述任务的原子操作。
在一示例性实施例中,通过如下方式当前执行的任务是用户态任务:
读取所述任务对应的进程的任务控制块;
在所述任务控制块中的进程结构不为空,则确定所述任务是所述用户态任务。
在具体实现中,对于用户态任务,是属于某个进程,因此用户态任务的任务控制块的task_group域不为NULL(空),而内核态任务的task_group域为NULL,因此在本申请实施例中,通过读取任务对应的进程的任务控制块的task_group域,如果task_group域不为空,则可以确定该任务是用户态任务。
在一示例性实施例中,通过如下方式确定当前执行所述任务的操作为原子操作:
读取所述任务对应的进程的进程结构体中的原子操作函数入口地址和检查长度;
通过比对所述原子操作函数入口地址和所述检查长度与所述上下文信息,以确定当前是否执行所述任务的原子操作。
在具体实现中,可以获取当前的用户态任务所在进程结构体task_group_t,该进程结构体内记录了原子操作的原子操作函数入口地址(cmpxchg_start)和检查长度(cmpxchg_check_scope)。
作为一个具体示例,当用户态任务进入内核空间时,该用户态任务的上下文消息被保存下来,上下文信息的内存布局的示意图可以参照图4,假设指针ctx指向保存从上下文信息的内存区域,则通过语句ctx->pc可以获得PC。
在从上下文信息获得PC后,比对cmpxchg_start、cmpxchg_check_scope和PC确定是否满足如下条件:
cmpxchg_start<pc<cmpxchg_start+cmpxchg_check_scope
如果cmpxchg_start、cmpxchg_check_scope和PC满足上述条件,则可以判定当前的用户态任务正在执行原子操作,则可以设置用户态任务的上下文信息中的PC值,从而重新回到u_cmpxchg函数的原子操作函数入口地址:ctx->pc=cmpxchg_start,则可以重新从u_cmpxchg函数的原子操作函数入口地址处,执行用户态任务中的原子操作,确保其他任务访问内存不会影响到用户态任务中的原子操作,保证了用户态任务的原子操作的原子性。
步骤308、若当前执行的所述任务是在所述内核空间执行的内核态任务,或者,所述当前执行的所述任务是用户态任务但当前没有执行所述任务的原子操作时,则在所述内核态进行中断处理。
在本申请实施例中,当中断发生时,若系统在用户态中执行用户态任务,并且当前正在执行的是该用户态任务中的原子操作,为了保证原子操作的原子性,将任务的执行流回退到原子操作入口,以在用户态任务恢复后重新执行任务的原子操作。如果当前执行的任务是内核态任务,或者,当前执行的任务是虽然用户态任务,但是当前没有执行任务的原子操作时,无需执行回退操作。
在一示例性实施例中,所述方法还可以包括如下步骤:
在当前执行的所述任务为内核态任务,且所述内核态任务包括原子操作时进行关中断操作;
在所述任务的原子操作执行完成后,进行开中断操作。
在具体实现中,对于内核态任务的原子操作,先执行关中断操作,然后执行内核态任务中的原子操作,最后执行开中断操作,从而保证了内核态任务中原子操作的原子性。可见,本申请实施例既可以保证用户态任务的原子操作的原子性,也可以保证内核态任务中原子操作的原子性。
为了使本领域技术人员更好地理解本申请实施例,以下采用具体示例进行说明,参照图5,是本申请的一种双态分离架构的物联网操作系统上的原子操作的示意图,该操作系统划分用户空间和内核空间。首先,基于普通指令实现用户态任务的原子操作(CAS原子操作)。例如,实现CAS原子操作的接口可以是:
int32_t u_cmpxchg(int32_t oldval,int32_t newval,volatile int32_t*ptr);
其中,oldval表示预期原值,newval表示待写入的新值,ptr是执行原子操作的内存地址。上述接口具体定义为:若地址ptr上的内存值等于old,那么将new写入ptr处,并返回0;否则返回非0值。
在本申请实施例中,基于上述CAS原子操作实现整个原子操作接口集,比如加(add)的原子操作、减(sub)的原子操作、与(and)的原子操作等等。通过原子操作接口集,可以在执行任务中的原子操作时基于接口顺序执行。
其中,由于上述接口是用普通指令实现的,因此不能保证原子操作的原子性。在单核处理器上,原子操作执行过程只会被中断打断,包括任务调度的触发源头也是中断。
针对上述问题,在本申请实施例中,可在中断处理流程中触发原子操作检查操作:
若触发中断处理时,当前为用户态任务且正在执行用户态任务中的u_cmpxchg函数(CAS原子操作),则修改上下文信息,使PC回到u_cmpxchg函数的原子操作函数入口地址处,可以使得在这种情况下被中断打断的用户态任务恢复后,将重新从u_cmpxchg函数的原子操作函数入口地址处执行,确保其他任务访问内存不会影响u_cmpxchg函数的执行;若中断触发时,当前执行的任务是非用户态任务(内核态任务),或者,虽然当前执行的任务是用户态任务,但是没有在执行用户态任务中的u_cmpxchg函数,则检查直接结束。
本申请实施例通过在中断流程中添加原子操作检查操作后,可确保任务中的u_cmpxchg函数的原子性。应用本申请实施例,在不支持完善的原子操作的单核处理器上,通过软件方式实现高性能的原子操作,提高了操作系统的系统性能。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
在上述实施例的基础上,本实施例还提供了一种任务执行装置,应用于终端设备、服务器等电子设备中。
参照图6,示出了本申请的一种任务执行装置实施例的结构框图,应用于双态分离架构的操作系统,所述操作系统划分为用户空间和内核空间,所述装置具体可以包括如下模块:
中断请求接收模块602,用于在所述操作系统中执行任务时,接收中断请求;
中断处理模块604,用于基于所述中断请求,进入所述内核空间进行中断处理;用户态原子操作处理模块606,用于若当前执行的任务是在所述用户空间执行的用户态任务,且当前执行所述任务的操作为原子操作时,将所述任务的执行流回退到所述原子操作的原子操作入口,以在所述任务恢复后重新执行所述任务的原子操作。
在一示例性实施例中,所述装置还可以包括:
内核态任务执行模块,用于若当前执行的所述任务是在所述内核空间执行的内核态任务,或者,所述当前执行的所述任务是用户态任务但当前没有执行所述任务的原子操作时,则在所述内核态进行中断处理。
在一示例性实施例中,所述中断处理模块604,用于在所述用户空间中执行任务;接收中断处理请求,将所述任务从所述用户空间切换至所述内核空间进行中断处理;记录所述任务的上下文信息;所述上下文信息用于在将所述任务从所述内核空间切换至所述用户空间时,恢复至所述任务从所述用户空间切换至所述内核空间前的状态。
在一示例性实施例中,所述装置还可以包括:用户态任务确定模块,用于读取所述任务对应的进程的任务控制块;在所述任务控制块中的进程结构不为空,则确定所述任务是所述用户态任务。
在一示例性实施例中,所述装置还可以包括:原子操作确定模块,用于读取所述任务对应的进程的进程结构体中的原子操作函数入口地址和检查长度;通过比对所述原子操作函数入口地址和所述检查长度与所述上下文信息,以确定当前是否执行所述任务的原子操作。
在一示例性实施例中,所述装置还可以包括:内核态原子操作处理模块,用于在当前执行的所述任务为内核态任务,且所述内核态任务包括原子操作时进行关中断操作;在所述任务的原子操作执行完成后,进行开中断操作。
在一示例性实施例中,应用于可以为单核处理器的双态分离架构的操作系统。
综上,在本申请实施例中,在操作系统中执行任务时,若接收到中断请求则进入内核空间进行中断处理,其中,若当前执行的任务是用户态任务,且当前执行任务的操作为原子操作时,将任务的执行流回退到该原子操作的原子操作入口,以在用户态任务恢复后重新执行任务的原子操作。本申请实施例在任务中存在原子操作时,无需通过关中断操作、开中断方式的系统调用方式来保证原子操作不被其他任务影响,提高了操作系统的系统性能。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例中各方法步骤的指令(instructions)。
本申请实施例提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个所述的方法。本申请实施例中,所述电子设备包括终端设备、服务器(集群)等各类型的设备。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的装置,该装置可包括终端设备、服务器(集群)等电子设备。图7示意性地示出了可被用于实现本申请中所述的各个实施例的示例性装置700。
对于一个实施例,图7示出了示例性装置700,该装置具有一个或多个处理器702、被耦合到(一个或多个)处理器702中的至少一个的控制模块(芯片组)704、被耦合到控制模块704的存储器706、被耦合到控制模块704的非易失性存储器(NVM)/存储设备708、被耦合到控制模块704的一个或多个输入/输出设备710,以及被耦合到控制模块704的网络接口712。
处理器702可包括一个或多个单核或多核处理器,处理器702可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,装置700能够作为本申请实施例中所述终端设备、服务器(集群)等设备。
在一些实施例中,装置700可包括具有指令714的一个或多个计算机可读介质(例如,存储器706或NVM/存储设备708)以及与该一个或多个计算机可读介质相合并被配置为执行指令714以实现模块从而执行本公开中所述的动作的一个或多个处理器702。
对于一个实施例,控制模块704可包括任意适当的接口控制器,以向(一个或多个)处理器702中的至少一个和/或与控制模块704通信的任意适当的设备或组件提供任意适当的接口。
控制模块704可包括存储器控制器模块,以向存储器706提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
存储器706可被用于例如为装置700加载和存储数据和/或指令714。对于一个实施例,存储器706可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,存储器706可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,控制模块704可包括一个或多个输入/输出控制器,以向NVM/存储设备708及(一个或多个)输入/输出设备710提供接口。
例如,NVM/存储设备708可被用于存储数据和/或指令714。NVM/存储设备708可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备708可包括在物理上作为装置700被安装在其上的设备的一部分的存储资源,或者其可被该设备访问可不必作为该设备的一部分。例如,NVM/存储设备708可通过网络经由(一个或多个)输入/输出设备710进行访问。
(一个或多个)输入/输出设备710可为装置700提供接口以与任意其他适当的设备通信,输入/输出设备710可以包括通信组件、音频组件、传感器组件等。网络接口712可为装置700提供接口以通过一个或多个网络通信,装置700可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi、2G、3G、4G、5G等,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器702中的至少一个可与控制模块704的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器702中的至少一个可与控制模块704的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器702中的至少一个可与控制模块704的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器702中的至少一个可与控制模块704的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,装置700可以但不限于是:服务器、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。在各个实施例中,装置700可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置700包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
其中,检测装置中可采用主控芯片作为处理器或控制模块,传感器数据、位置信息等存储到存储器或NVM/存储设备中,传感器组可作为输入/输出设备,通信接口可包括包括网络接口。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程任务执行终端设备的处理器以产生一个机器,使得通过计算机或其他可编程任务执行终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程任务执行终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程任务执行终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种任务执行方法和装置,一种电子设备和一种存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种任务执行方法,其特征在于,应用于双态分离架构的操作系统,所述操作系统划分为用户空间和内核空间,所述方法包括:
在所述操作系统中执行任务时,接收中断请求;
基于所述中断请求,进入所述内核空间进行中断处理;
若当前执行的任务是在所述用户空间执行的用户态任务,且当前执行所述任务的操作为原子操作时,将所述任务的执行流回退到所述原子操作的原子操作入口,以在所述任务恢复后重新执行所述任务的原子操作。
2.根据权利要求1所述的方法,其特征在于,在所述基于所述中断请求,进入所述内核空间进行中断处理之后,所述方法还包括:
若当前执行的所述任务是在所述内核空间执行的内核态任务,或者,所述当前执行的所述任务是用户态任务但当前没有执行所述任务的原子操作时,则在所述内核空间进行中断处理。
3.根据权利要求1所述的方法,其特征在于,所述基于所述中断请求,进入所述内核空间进行中断处理,包括:
在所述用户空间中执行任务;
接收中断处理请求,将所述任务从所述用户空间切换至所述内核空间进行中断处理;
记录所述任务的上下文信息;所述上下文信息用于在将所述任务从所述内核空间切换至所述用户空间时,恢复至所述任务从所述用户空间切换至所述内核空间前的状态。
4.根据权利要求1所述的方法,其特征在于,通过如下方式当前执行的任务是用户态任务:
读取所述任务对应的进程的任务控制块;
在所述任务控制块中的进程结构不为空,则确定所述任务是所述用户态任务。
5.根据权利要求3所述的方法,其特征在于,通过如下方式确定当前执行所述任务的操作为原子操作:
读取所述任务对应的进程的进程结构体中的原子操作函数入口地址和检查长度;
通过比对所述原子操作函数入口地址和所述检查长度与所述上下文信息,以确定当前是否执行所述任务的原子操作。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在当前执行的所述任务为内核态任务,且所述内核态任务包括原子操作时进行关中断操作;
在所述任务的原子操作执行完成后,进行开中断操作。
7.根据权利要求1所述的方法,其特征在于,应用于为单核处理器的双态分离架构的操作系统。
8.一种任务执行装置,其特征在于,应用于双态分离架构的操作系统,所述操作系统划分为用户空间和内核空间,所述装置包括:
中断请求接收模块,用于在所述操作系统中执行任务时,接收中断请求;
中断处理模块,用于基于所述中断请求,进入所述内核空间进行中断处理;
用户态原子操作处理模块,用于若当前执行的任务是在所述用户空间执行的用户态任务,且当前执行所述任务的操作为原子操作时,将所述任务的执行流回退到原子操作入口,以在所述任务恢复后重新执行所述任务的原子操作。
9.一种电子设备,其特征在于,包括:处理器;和
存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如权利要求1-7中一个或多个所述的任务执行方法。
10.一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如权利要求1-7中一个或多个所述的任务执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111258619.9A CN114064236A (zh) | 2021-10-27 | 2021-10-27 | 任务执行方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111258619.9A CN114064236A (zh) | 2021-10-27 | 2021-10-27 | 任务执行方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114064236A true CN114064236A (zh) | 2022-02-18 |
Family
ID=80235626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111258619.9A Pending CN114064236A (zh) | 2021-10-27 | 2021-10-27 | 任务执行方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064236A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114281492A (zh) * | 2021-11-12 | 2022-04-05 | 北京智芯微电子科技有限公司 | 中断处理方法、装置、芯片、电子设备及存储介质 |
CN117255055A (zh) * | 2023-11-15 | 2023-12-19 | 新华三技术有限公司 | 报文转发方法、装置及电子设备 |
-
2021
- 2021-10-27 CN CN202111258619.9A patent/CN114064236A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114281492A (zh) * | 2021-11-12 | 2022-04-05 | 北京智芯微电子科技有限公司 | 中断处理方法、装置、芯片、电子设备及存储介质 |
CN117255055A (zh) * | 2023-11-15 | 2023-12-19 | 新华三技术有限公司 | 报文转发方法、装置及电子设备 |
CN117255055B (zh) * | 2023-11-15 | 2024-02-23 | 新华三技术有限公司 | 报文转发方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10592454B2 (en) | System-on-chip, mobile terminal, and method for operating the system-on-chip | |
US10860332B2 (en) | Multicore framework for use in pre-boot environment of a system-on-chip | |
US20100211769A1 (en) | Concurrent Execution of a Smartphone Operating System and a Desktop Operating System | |
US9058201B2 (en) | Managing and tracking thread access to operating system extended features using map-tables containing location references and thread identifiers | |
US20150186161A1 (en) | Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product | |
CN114064236A (zh) | 任务执行方法、装置、设备和存储介质 | |
US20190227918A1 (en) | Method for allocating memory resources, chip and non-transitory readable medium | |
JP2017538212A (ja) | 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構 | |
WO2017070861A1 (zh) | 一种中断响应方法、装置及基站 | |
US20140115308A1 (en) | Control method, control device and computer system | |
CN115617494B (zh) | 多cpu环境下的进程调度方法、装置、电子设备和介质 | |
US9152509B2 (en) | Transactional memory conflict management | |
KR20180066073A (ko) | 컴퓨팅 디바이스에서 운영 시스템 독립적 에러 제어를 제공하는 시스템 및 방법 | |
CN114356591A (zh) | 进程间通信方法、装置、物联网操作系统以及物联网设备 | |
CN108369519B (zh) | 在使用块-原子执行模型的基于处理器的系统中重放部分执行的指令块 | |
US7934082B2 (en) | Information processing apparatus and exception control circuit | |
US8656133B2 (en) | Managing storage extents and the obtaining of storage blocks within the extents | |
US11385927B2 (en) | Interrupt servicing in userspace | |
KR101250892B1 (ko) | 운영 시스템 고속 런 커맨드 | |
US20200319888A1 (en) | Widening memory access to an aligned address for unaligned memory operations | |
WO2020082354A1 (zh) | 一种系统状态检测方法、系统状态装置及终端设备 | |
KR101395007B1 (ko) | 복수의 프로세서를 이용한 스냅샷 이미지 처리 장치 및 방법 | |
US20240272910A1 (en) | Electronic device and operation method thereof | |
CN108459879B (zh) | 一种防止终端死机的方法、终端 | |
US20140189184A1 (en) | Creating dynamic fixed functionality for a hardware device system |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40066794 Country of ref document: HK |