CN114462388A - 句柄管理或通信方法、电子设备、存储介质及程序产品 - Google Patents

句柄管理或通信方法、电子设备、存储介质及程序产品 Download PDF

Info

Publication number
CN114462388A
CN114462388A CN202210130565.6A CN202210130565A CN114462388A CN 114462388 A CN114462388 A CN 114462388A CN 202210130565 A CN202210130565 A CN 202210130565A CN 114462388 A CN114462388 A CN 114462388A
Authority
CN
China
Prior art keywords
kernel
handle
operating system
programs
abstraction layer
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
Application number
CN202210130565.6A
Other languages
English (en)
Inventor
姚秋果
毛熠璐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba China Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210130565.6A priority Critical patent/CN114462388A/zh
Publication of CN114462388A publication Critical patent/CN114462388A/zh
Priority to PCT/CN2023/074192 priority patent/WO2023151503A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/211Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Abstract

本申请实施例提供了一种句柄管理或通信方法、电子设备、存储介质及程序产品。应用于操作系统中,操作系统包括抽象层、内核,抽象层位于内核之外,操作系统中运行有若干个程序,内核包括多个为内核资源维护的内核对象,抽象层用于向内核申请创建或删除维护内核资源的内核对象,句柄管理方法包括:通过抽象层,响应于若干个程序调用内核资源的调用请求,分别为若干个程序确定内核中为所请求的内核资源维护的内核对象,并生成内核对象关联的句柄;通过抽象层,将句柄返回至对应的程序,以使得若干个程序通过各自获得的句柄操作内核对象。本实施例提供的方案,可以通过抽象层对句柄进行统一管理,且操作系统同时兼容多个操作系统内核。

Description

句柄管理或通信方法、电子设备、存储介质及程序产品
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种句柄管理或通信方法、电子设备、存储介质及程序产品。
背景技术
根据应用的需要,工作在用户层的程序需要进行隔离,以防一个应用运行过程出现错误后,会连带其他应用也出现错误。
但是,上述隔离方案会导致程序在用户层实现通信的难度较大。为此,会使得多个程序操作同一个操作系统内核提供的内核资源,通过该内核资源实现多个程序间的通信。然而,由于该内核资源被多个程序操作,导致内核资源的管理难度较大。
有鉴于此,现有技术亟需解决的技术问题是如何提供一种内核资源的管理方案。
发明内容
有鉴于此,本申请实施例提供一种句柄管理方案,以至少部分解决上述问题。
根据本申请实施例的第一方面,提供了一种句柄管理方法,应用于操作系统的抽象层,所述操作系统包括抽象层、内核,所述操作系统中运行有若干个程序,所述内核包括多个为内核资源维护的内核对象,所述抽象层用于向所述内核申请创建或删除维护内核资源的内核对象,所述方法包括:通过所述抽象层,响应于若干个程序调用内核资源的调用请求,分别为若干个程序确定所述内核中为所请求的内核资源维护的内核对象,并生成所述内核对象关联的句柄;通过所述抽象层,将所述句柄返回至对应的程序,以使得所述若干个程序通过各自获得的句柄操作所述内核对象。
根据本申请实施例的第二方面,提供了一种通信方法,应用于操作系统,所述操作系统包括抽象层、内核,所述操作系统运行有若干个程序,所述内核包括多个为内核资源维护的内核对象,所述抽象层用于向所述内核申请创建或删除维护内核资源的内核对象,所述方法包括:通过所述若干个程序,分别向操作系统抽象层发送针对同一内核资源的调用请求,以使得所述操作系统的抽象层根据所述调用请求,为所述若干个程序分别生成为被调用的内核资源维护的内核对象关联的句柄;所述若干个程序通过各自获得的句柄操作所述内核对象,以通过所述内核对象实现所述若干个程序间的通信。
根据本申请实施例的第三方面,提供了一种操作系统,包括:用户层、内核层,所述内核层包括抽象层以及至少一个内核,若干个程序运行在所述用户层或者内核层中;所述若干个程序用于发送调用内核资源的调用请求;所述抽象层用于向操作系统内核申请创建内核资源对应的内核对象,以及用于根据所述若干个程序的调用内核资源的调用请求,分别为若干个程序生成与所述内核资源对应的内核对象关联的句柄,以使得所述若干个程序通过各自获得的句柄操作所述内核对象;所述内核用于为内核资源维护所述内核对象。
根据本申请实施例的第四方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如上所述的句柄管理方法或者通信方法对应的操作。
根据本申请实施例的第五方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的句柄管理方法或者通信方法。
根据本申请实施例的第四方面,提供了一种计算机程序产品,包括计算机指令,所述计算机指令指示计算设备执行如上所述的句柄管理方法或者通信方法对应的操作。
根据本申请实施例提供的方案,操作系统中包括抽象层和内核,内核包括多个为内核资源维护的内核对象,抽象层向操作系统的内核申请创建或删除内核资源对应的内核对象,在进行句柄管理时,通过操作系统的抽象层为若干个程序(用户层程序或者内核层程序)生成与内核对象关联的句柄,使得操作系统中的程序通过抽象层提供的句柄操作内核对象,便于通过操作系统的抽象层对内核对象的句柄进行统一管理,以实现对内核对象的统一管理,减小了内核对象的管理难度,另外,本申请实施例提供的方案,通过抽象层对内核对象的句柄进行统一管理,无需考虑不同的操作系统内核之间的差异,使得本实施例提供的方案不仅可以兼容不同的操作系统内核,还可使得操作系统同时兼容多个操作系统内核。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种操作系统的结构示意图;
图2A为本申请实施例的一种句柄管理方法的步骤流程图;
图2B为图2A所示实施例中的一种场景示例的示意图;
图3A为本申请实施例的一种句柄管理方法的步骤流程图;
图3B为图2A所示实施例中的一种场景示例的示意图;
图3C为图3A所示实施例中的一种句柄管理方法的任务流程图;
图4为本申请实施例的一种通信方法的步骤流程图;
图5为本申请实施例的一种电子设备的结构示意图。
具体实施方式
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请实施例保护的范围。
下面结合本申请实施例附图进一步说明本申请实施例具体实现。
图1为本申请实施例提供的一种操作系统的结构示意图,如图所示,操作系统可以包括用户层、内核层,内核层中可以包括抽象层以及至少一个操作系统的内核。
用户层中运行有若干个普通的程序,用户层的应用程序的运行权限一般较低,其不能直接访问操作系统内核中的内核资源。程序在需要调用内核资源时,可以向操作系统的抽象层发送调用内核资源的调用请求。
示例地,参见图1,用户层可以运行有多个程序,分别可以为程序1、程序2、程序3,多个应用程序之间相互隔离。示例地,程序可以通过open(name)或者create()等方式请求调用内核资源。
内核层是操作系统内核、虚拟存储空间和驱动程序运行的层。本实施例中,内核层可以包括:操作系统的内核、位于内核之外的抽象层。内核层中还可以运行有程序,例如程序4。
操作系统的内核是指操作系统的核心部分。操作系统内核主要用于管理存储器、文件、外设和系统资源等核心资源。操作系统内核通常运行进程,并提供进程间的通信。
操作系统中可以包括多个操作系统内核。操作系统的内核中为内核资源维护有内核对象,内核对象具体为操作系统内核分配的只能由内核访问的内存块,内存块是一种数据结构,数据结构中维护有内核资源的各种信息。该数据结构仅能由内核访问。示例地,参见图1,内核中分别为内核资源1-N维护有对应的内核对象1-N。
抽象层aos位于操作系统的内核之外,将操作系统的内核和操作系统中的程序隔开,其作用为将内核中的各个内核对象抽象化,隐藏部分内核对象的接口细节,屏蔽不同内核的内核对象之间的差异,使其提供的对外接口具有内核无关的特性,进而使得操作系统可以兼容多种操作系统内核,且用户层感知不到操作系统内核之间的差异。
抽象层可以将操作系统内核提供的内核对象封装为对外接口供程序调用,用户层或者内核层的程序可以通过调用对外接口发送调用内核资源的调用请求。
抽象层可以响应于程序调用内核资源的调用请求,为程序确定所述内核中为所请求的内核资源维护的内核对象,并生成所述内核对象关联的句柄,并将句柄返回至程序,以使得程序通过句柄操作内核对象。具体地,句柄是一个标识符,是用来标识对象或者项目,程序可以通过引用句柄来生成操作请求,并将包含句柄的操作请求传输至操作系统的内核,由内核操作所述内核对象。
示例地,用户层的程序1、程序3以及内核层的程序4可以向抽象层发送调用内核资源1的调用请求,抽象层可以根据内核资源1对应的内核对象1,生成与内核对象1关联的句柄1、句柄2、句柄3,并可以将生成的三个句柄返回至对应的程序。抽象层还可以用于向操作系统内核申请创建或删除内核资源对应的内核对象。
示例地,本实施例中每个内核对象可以关联有若干个句柄,则每个内核对象可以对应有用于存储句柄的句柄列表。具体地,本实施例中,可以通过内核层程序管理内核对象的句柄列表handlelist。
需要说明的是,本实施例的操作系统可以为实时操作系统(Real-time operatingsystem,RTOS),也可以为其他操作系统,只要操作系统是面向对象的操作系统即可,本实施例对此不进行限定。
根据本申请实施例提供的方案,操作系统中包括抽象层和内核,且抽象层位于内核之外,内核包括多个为内核资源维护的内核对象,在进行句柄管理时,通过操作系统的抽象层向操作系统的内核申请创建或删除内核资源对应的内核对象,并可以通过抽象层为若干个程序(用户层程序或者内核层程序)生成与内核对象关联的句柄,使得操作系统中的程序通过抽象层提供的句柄操作内核对象,便于通过操作系统的抽象层对内核对象的句柄进行统一管理,以实现对内核对象的统一管理,减小了内核对象的管理难度,另外,本申请实施例提供的方案,通过抽象层对内核对象的句柄进行统一管理,无需考虑不同的操作系统内核之间的差异,使得本实施例提供的方案不仅可以兼容不同的操作系统内核,还可使得操作系统同时兼容多个操作系统内核。
图2A为本申请实施例提供的一种句柄管理方法的流程示意图,本实施例提供的方案主要用于上述实施例中的抽象层,如图所示,其包括:
S201、响应于若干个程序调用内核资源的调用请求,分别为若干个程序确定所述内核中为所请求的内核资源维护的内核对象,并生成所述内核对象关联的句柄。
本实施例中,所述操作系统的抽象层用于向操作系统内核申请创建或删除内核资源对应的内核对象。另外,发送调用内核资源的调用请求的程序包括用户层程序和\或内核层程序。
本实施例中,抽象层设置在操作系统的内核之外,并可以向操作系统内核申请创建或删除内核资源对应的内核对象,还可以接收用户层程序或者内核层程序调用操作系统内核中内核资源的请求,由此,可以通过抽象层将操作系统内核与操作系统中运行的程序隔离。
当程序需要使用内核资源时,可以向抽象层发送内核资源的调用请求。
抽象层可以确定是否存在为被调用的内核资源维护的内核对象,若存在,则可以生成与内核对象关联的句柄;或者,若抽象层确定不存在为被调用的内核资源维护的内核对象,则抽象层可以向内核请求生成为内核资源维护的内核对象,并获得内核对象的信息,从而可以根据获得的内核对象的信息生成内核对象关联的句柄。
句柄(handle)可以用于标识内核对象,程序可以通过句柄来操作句柄标识的内核对象。
S202、将所述句柄返回至对应的程序,以使得所述若干个程序通过各自获得的句柄操作所述内核对象。
若干个程序可以通过各自获得的句柄操作内核对象,借此实现若干个程序之间的通信。
示例地,若内核对象为消息队列内核对象controlblock,则程序a可以通过句柄向内核对象中写入消息,程序b可以通过句柄读取内核对象中的消息,从而通过内核对象实现程序a和程序b之间的通信。
具体通过句柄操作内核对象的方法可参考相关技术,在此不再赘述。
下面通过一具体场景,对本申请实施例提供的方案进行示例性说明。
参见图2B,示出了两个程序process1、process2。
Process1可以向抽象层aos发送调用内核资源A的调用请求,抽象层在接收到调用请求后,可以向操作系统的内核发送申请内核资源A的申请,操作系统内核响应于抽象层的申请,创建内核资源A对应的内核对象A’,并将内核对象A’的信息返回至抽象层。
抽象层接收到内核对象A’的信息后,可以为process1生成与内核对象A’关联的句柄aoshandle0,并将句柄aoshandle0返回至process1,process1可以根据获得的句柄aoshandle0操作内核对象A’。
若程序process2需要操作内核资源A,则可以发送内核资源A的调用请求至抽象层,抽象层可以根据已有的内核对象A’,为process2生成与内核对象A’关联的句柄aoshandle1,并将句柄aoshandle1返回至process2,process2可以根据获得的句柄aoshandle1操作内核对象A’。程序process1或者process2可以通过操作同一内核对象A实现程序间的通信。
若程序process1或者process2不再对内核资源A进行操作,可以向抽象层发送资源关闭请求,抽象层可以响应于请求,解除程序对应的句柄与内核对象A’的关联,并删除对应的句柄。
本实施例中,操作系统中包括抽象层和内核,且抽象层位于内核之外,内核包括多个为内核资源维护的内核对象,在进行句柄管理时,通过操作系统的抽象层向操作系统的内核申请创建或删除内核资源对应的内核对象,并可以通过抽象层为若干个程序(用户层程序或者内核层程序)生成与内核对象关联的句柄,使得操作系统中的程序通过抽象层提供的句柄操作内核对象,便于通过操作系统的抽象层对内核对象的句柄进行统一管理,以实现对内核对象的统一管理,减小了内核对象的管理难度,另外,本申请实施例提供的方案,通过抽象层对内核对象的句柄进行统一管理,无需考虑不同的操作系统内核之间的差异,使得本实施例提供的方案不仅可以兼容不同的操作系统内核,还可使得操作系统同时兼容多个操作系统内核。
本实施例的句柄管理方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如手机、PAD等)和PC机等。
图3A为本申请实施例提供的一种句柄管理方法的流程示意图,与上述实施例相同,本申请实施例也主要用于操作系统的抽象层,如图所示,其包括:
S301、接收一程序调用内核资源的调用请求。
本实施例中,参见图3B,示出了三个程序,分别为程序1、2、3,程序2可以通过open(“name”)或者creat(),来发送内核资源的调用请求,其中,open(“name”)可以用于请求打开内核对象,name可以为内核对象的标识;creat()可以用于请求创建内核资源对应的内核对象。
S302、若确定被调用的内核资源不对应有维护其的内核对象,则通过所述抽象层向所述内核发送内核对象创建请求,获得所述内核返回的被创建内核对象的信息。
本实施例中,抽象层可以自身维护有内核对象列表。示例地,内核对象列表中可以记录有内核对象的名称、内核对象对应的内核资源的信息、内核对象的创建时间等。参见图3B,抽象层可以维护内核对象的对象列表objectlist,对象列表objectlist中用于存储操作系统内核中内核对象标识。具体地,内核对象aos_object的标识可以为object1、2、3等。抽象层可以根据被调用的内核资源查询内核对象列表,若未查询到内核对象,则可以确定被调用的内核资源不对应有内核对象,则所述抽象层可以向所述内核发送内核对象创建请求。
可选地,本实施例中,操作系统中可以兼容有多个操作系统内核,则,所述操作系统的抽象层用于向操作系统内核申请创建内核资源对应的内核对象时,可以包括:
按照预设的内核优先权,确定可提供所请求的内核资源且优先权位于前列的操作系统内核;向确定的操作系统内核申请创建内核资源对应的内核对象。由此,可以按照优先级,优先调用优先权位于前列的操作系统内核。
本实施例中,操作系统内核的优先权可以由用户设置。
示例地,操作系统内核具体可以包括犀牛内核(rhino内核)、免费实时操作系统内核(free RTOS内核)、莱瑞德内核(rheread内核)中的一个或多个,不同的内核可以创建有相同或不同的内核对象。
操作系统的内核可以响应于抽象层的内核对象创建请求,创建内核资源对应的内核对象,并将内核对象的信息返回抽象层。
内核创建内核对象后,可以返回内核对象的信息供抽象层生成句柄,使得句柄可以与内核中的内核对象关联。
本实施例中,抽象层可以根据获得的内核对象的信息进行封装,封装后的内核对象的信息的数据结构可以包括:内核对象的信息、内核对象关联的句柄列表。
本实施例中,内核对象的信息可以包括内核对象的名称、内核对象对应的内核资源、内核对象的创建时间等。内核对象关联的句柄列表具体可以包括:内核对象关联的句柄列表的标识。
示例地,创建的内核对象Control Block的数据结构可以为:
typedef struct aos_object{
dlist_thandle_list;
uint16_tref_cnt;
}aos_object_t
其中,typedef struct aos_object指示创建的为内核对象aos_object;dlist_thandle_list用于记录内核对象关联句柄的句柄列表;uint16_tref_cnt用于记录内核对象对应的内核资源的类别,内核资源的类别可以例如:互斥量、信号量、事件、消息队列等;aos_object_t中的t用于作为内核对象的编号,object_t可以作为内核对象的标识,存储于抽象层维护的内核对象列表中。
示例地,参见图3B,内核对象具体可以包括:事件内核对象controlblock、互斥量内核对象controlblock、信号量内核对象controlblock、消息队列内核对象controlblock、任务内核对象controlblock等。
抽象层aos可以向内核申请创建消息队列(内核资源)的内核对象;内核可以创建消息队列对应的内核对象contorlblock,并将该内核对象的信息返回至抽象层,抽象层可以将返回的内核对象的信息封装为数据结构objict1,并将object1存储在内核对象列表中。
Object 1关联的句柄列表handlelist中可以存储有与消息队列内核对象关联的句柄,分别为handle 1、handle 2、handle 3。
另外需要说明的是,上述数据结构中的内核资源类别可以包含于操作系统内核返回至抽象层的内核对象的信息中,上述数据结构中的句柄列表,可以在抽象层得到内核对象的信息时创建。
S303、根据获得的内核对象的信息,为程序生成与所述内核对象关联的句柄。
抽象层在获得内核对象的信息后,可以根据内核对象的信息为程序生成对应的句柄,句柄或者句柄的标识可以记录在内核对象关联句柄的句柄列表中。
为了保证程序能够根据句柄操作内核对象,内核对象关联的句柄的数据结构包括:内核对象的信息、句柄所属的句柄列表。
示例地,创建的内核对象的句柄的数据结构可以为:
typedef struct aos_handle{
uint32_tmagic;
uint32_tlock;
uint16_tattr;
uint8_ttype;
dlist_tnode;
klist_twaitq;
void*object;
}aos_handle_t
其中,typedef struct aos_handle指示创建的为内核对象关联的句柄aos_handle;uint32_tmagic用于记录内核对象是否有效;uint32_tlock用于记录内核对象是否已经安全删除;uint16_tattr用于记录内核对象的属性,属性的内容可以由本领域的技术人员按需确定;uint8_ttype用于记录内核对象对应的内核资源类别,内核资源的类别可以例如:互斥量、信号量、事件、消息队列等;dlist_tnode用于记录内核对象关联句柄的句柄列表;klist_twaitq用于记录句柄加入的句柄删除列表,klist_twaitq在句柄使用过程中为空,在接收到程序关闭内核资源的请求后,可以更新句柄的数据结构中的klist_twaitq,以将其加入句柄删除列表;void*object可以用于记录句柄关联至的内核对象;aos_handle_t中的t用于作为句柄的编号。
上述数据结构中的内核对象相关的信息可以根据抽象层中内核对象的数据结构确定。
在接收到程序调用内核资源的调用请求后,抽象层可以按照上述数据结构生成与内核对象关联的句柄,并将句柄的编号增加至内核对象关联句柄的句柄列表中。
S304、通过操作系统的抽象层,将所述句柄返回至对应的程序,以使得程序通过获得的句柄操作所述内核对象。
本实施例中,返回至程序的可以为句柄的编号,也可以为按照上述句柄的数据结构句生成的句柄,本实施例对此不进行限定。
具体程序通过获得的句柄操作所述内核对象的方法可参考相关技术,在此不再赘述。
可选地,本实施例中,为了关闭内核对象,方法还可以包括以下步骤:
S305、通过操作系统的抽象层,接收目标程序关闭内核对象的关闭请求。
本实施例中,目标程序为对应有句柄的程序,当目标程序不再需要操作内核对象时,可以发送内核对象的关闭请求到抽象层,抽象层可以接收到关闭请求。
S306、响应于关闭请求,解除目标程序对应的第一句柄与所述内核对象的关联,以及,确定所述内核对象是否存在其他关联的第二句柄。
本实施例中,解除目标程序对应的第一句柄与内核对象的关联,具体可以为将第一句柄从内核对象关联句柄的句柄列表中删除。
另外,本实施例中,由于内核对象可能存在多个关联的句柄,则本实施例中,若内核对象存在其他关联的第二句柄,则表征仍有程序有操作内核对象的需求,此时可以执行步骤S307;反之,若内核对象不存在其他关联的第二句柄,则表征不存在需要操作内核对象的程序,此时可以执行步骤S308。
可选地,本实施例中,为了尽量降低管理句柄耗费的资源,可以通过计数方式对句柄进行管理。具体地,在生成句柄时,可以分别为若干个程序生成与所述内核资源对应的内核对象关联的句柄,并更新内核对象对应的句柄数量;在解除句柄与内核对象的关联时,可以将所述句柄增加至句柄删除列表,并更新内核对象对应的句柄数量。
由此,可以在解除目标程序对应的第一句柄与所述内核对象的关联时,通过计数方式判断内核对象是否存在关联的第二句柄。
可选地,本实施例中,所述确定所述内核对象是否存在关联的句柄,包括:删除所述句柄删除列表中的待删除句柄,并在删除完成后根据内核对象对应的句柄数量,确定所述内核对象是否存在关联句柄。由此,可以避免还存在未删除的句柄,但已经完成内核对象删除操作的情况,降低了内核对象管理过程中发生错误的情况。
S307、将关闭结果返回至发送关闭请求的所述程序。
S308、向所述操作系统的内核发送内核对象删除请求,获得所述操作系统返回的关闭结果,并将关闭结果返回至发送关闭请求的所述程序。
由此,可以在程序请求关闭时,仅删除程序对应的句柄,只有在确定内核对象不存在对应的句柄时,才会删除内核对象,保证了程序在操作某一内核对象时,被操作的内核对象并未被其他程序删除。
示例地,本实施例中,在删除句柄的过程中存在两类任务,其中一类任务用于解除该程序对应的句柄与所述内核对象的关联,另一类任务用于确定所述内核对象是否存在关联的句柄,并用于删除内核对象。当然,本实施例对任务的数量不进行限定,在实际使用时,若多个程序同时发送内核资源的调用请求,需要生成一个或者多个内核对象关联的句柄,则上述的一类任务可以与接收到的内核资源的请求数量相同,另一类任务的数量可以与内核对象的数量相同。
参见图3C,两类任务分别为task1、task2。
通过task1,可以在接收到程序调用内核资源的调用请求后,对其进行验证handleverify(例如,是否能够操作句柄的操作权限验证等);若验证未通过,则直接结束任务;若验证通过,则为程序生成内核对象关联的句柄,并增加内核对象对应的句柄数量,即handlelock++;在接收到程序关闭内核资源的关闭请求objectoperation后,可以减少内核对象对应的句柄数量,即handlelock--,并触发句柄调度任务schedule后,结束任务task1。
本实施例中task1可以在接收到调用内核资源的调用请求后创建,且可以与调用请求一一对应。
task2可以在接收到句柄调度任务后执行,也可以在执行句柄重调度任务时执行,task2可以对调度任务进行验证handleverify(例如,操作权限验证等);若验证未通过,则直接结束任务;若验证通过,则判断内核对象对应的句柄数量是否为零handlelock==0;若不为零,则将句柄调度任务对应的句柄增加至句柄删除列表中,即puttaskin waitq,waitq即为句柄删除列表,其中存储的为等待删除的句柄,此处还可以更新句柄的数据结构,以向句柄结构中增加waitq,并可以等待进行句柄重调度;在进行句柄重调度taskreschedule时将句柄删除列表中的句柄删除;若为零,则直接删除句柄,即deletehandle,并向操作系统内核发送内核对象删除请求,即deletehandle,以删除内核对象,随后结束任务task2。
界面中task1与task2之间的虚线,标识task1中的步骤会对task2中虚线指向的步骤产生影响。例如,执行handlelock++后,handlelock不等于0,则task2无法删除句柄;task1中handlelock--,并触发句柄调度任务schedule后,说明句柄并未使用,此时task2可以执行句柄重调度taskreschedule。
通过上述方案,可以无需耗费过多的资源,即可实现内核对象关联句柄的管理以及内核对象的删除。
本实施例的句柄管理方法或者通信方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如手机、PAD等)和PC机等。
图4本申请实施例提供的一种通信方法的流程示意图,本实施例提供的方案应用于上述操作系统,具体执行步骤的主体在下述说明,如图所示,其包括:
S401、通过所述若干个程序,分别向操作系统抽象层发送针对同一内核资源的调用请求。
S402、通过所述操作系统的抽象层,根据所述调用请求,为所述若干个程序分别生成为被调用的内核资源维护的内核对象关联的句柄,其中,所述操作系统的抽象层用于向操作系统内核申请创建或删除内核资源对应的内核对象。
S403、若干个程序通过各自获得的句柄操作所述内核对象,以通过所述内核对象实现所述若干个程序间的通信。
示例地,本实施例中,若干个程序请求的内核资源具体可以为同一个消息队列,其中,若干个程序可以通过各自对应的句柄向消息队列中写入消息或者读取并处理消息队列中的消息,由此,可以通过消息队列实现第一程序和第二程序的通信。
示例地,若干个程序请求的内核资源可以为某一操作的操作权限,获得该操作权的程序可以执行对应的操作,并在执行完成后可以释放对应的权限;除获得操作权限外的其他程序可以持续请求操作权限,直至请求成功。由此,可以通过内核提供的操作权限控制若干个程序逐个执行操作权限对应的操作。
本实施例中,通过操作系统的抽象层向操作系统内核申请创建内核资源对应的内核对象,并可以通过抽象层为若干个程序(用户层程序或者内核层程序)生成与内核对象关联的句柄,使得操作系统中的程序通过抽象层提供的句柄操作内核对象,便于通过操作系统的抽象层对内核对象的句柄进行统一管理,以实现对内核对象的统一管理,减小了内核对象的管理难度,另外,通过抽象层可以对程序屏蔽操作系统内核的差异,提高了操作系统的兼容性,并且,通过多个程序调用同一个内核资源,可以方便地实现程序间的通信。
本实施例的句柄管理方法或者通信方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如手机、PAD等)和PC机等。
参照图5,示出了本申请实施例提供的一种电子设备的结构示意图,本申请具体实施例并不对电子设备的具体实现做限定。
如图5所示,该电子设备可以包括:处理器(processor)502、通信接口(Communications Interface)504、存储器(memory)506、以及通信总线508。
其中:
处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。
通信接口504,用于与其它电子设备或服务器进行通信。
处理器502,用于执行程序510,具体可以执行上述句柄管理方法或者通信方法实施例中的相关步骤。
具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。
处理器502可能是处理器CPU,或者是特定集成电路ASIC(Application SpecificIntegrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。智能设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器506,用于存放程序510。存储器506可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序510中各步骤的具体实现可以参见上述句柄管理方法或者通信方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
本申请实施例还提供了一种计算机程序产品,包括计算机指令,该计算机指令指示计算设备执行上述多个方法实施例中的句柄管理方法或者通信方法对应的操作。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的句柄管理方法或者通信方法。此外,当通用计算机访问用于实现在此示出的句柄管理方法或者通信方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的句柄管理方法或者通信方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
以上实施方式仅用于说明本申请实施例,而并非对本申请实施例的限制,有关技术领域的普通技术人员,在不脱离本申请实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本申请实施例的范畴,本申请实施例的专利保护范围应由权利要求限定。

Claims (11)

1.一种句柄管理方法,应用于操作系统的抽象层,所述操作系统包括抽象层、内核,所述操作系统中运行有若干个程序,所述内核包括多个为内核资源维护的内核对象,所述抽象层用于向所述内核申请创建或删除维护内核资源的内核对象,所述方法包括:
通过所述抽象层,响应于若干个程序调用内核资源的调用请求,分别为若干个程序确定所述内核中为所请求的内核资源维护的内核对象,并生成所述内核对象关联的句柄;
通过所述抽象层,将所述句柄返回至对应的程序,以使得所述若干个程序通过各自获得的句柄操作所述内核对象。
2.根据权利要求1所述的方法,其中,所述通过所述抽象层,响应于若干个程序调用内核资源的调用请求,分别为若干个程序确定所述内核中为所请求的内核资源维护的内核对象,并生成所述内核对象关联的句柄,包括:
通过所述抽象层,接收一程序调用内核资源的调用请求;
若确定被调用的内核资源不对应有维护其的内核对象,则通过所述抽象层向所述内核发送内核对象创建请求,获得所述内核返回的被创建内核对象的信息;
根据所述内核对象的信息,为程序生成与所述内核对象关联的句柄。
3.根据权利要求2所述的方法,其中,所述抽象层为管理内核对象创建的数据结构包括:内核对象的信息、内核对象关联的句柄列表;
或者,所述内核对象关联的句柄的数据结构包括:内核对象的信息、句柄所属的句柄列表。
4.根据权利要求1所述的方法,其中,所述方法还包括:
通过操作系统的抽象层,接收目标程序关闭内核对象的关闭请求;
响应于关闭请求,解除目标程序对应的第一句柄与所述内核对象的关联,以及,确定所述内核对象是否存在其他关联的第二句柄;
若存在,则将关闭结果返回至发送关闭请求的所述目标程序;
或者,若不存在,则向所述操作系统的内核发送内核对象删除请求,获得所述操作系统返回的关闭结果,并将关闭结果返回至发送关闭请求的所述目标程序。
5.根据权利要求4所述的方法,其中,所述分别为若干个程序生成与所述内核资源对应的内核对象关联的句柄,包括:
分别为若干个程序生成与所述内核资源对应的内核对象关联的句柄,并更新内核对象关联的句柄的数量;
所述解除该程序对应的句柄与所述内核对象的关联包括:
将所述句柄增加至句柄删除列表,并更新内核对象对应的句柄数量。
6.根据权利要求5所述的方法,其中,所述确定所述内核对象是否存在关联的句柄,包括:
删除所述句柄删除列表中的待删除句柄,并在删除完成后根据内核对象对应的句柄数量,确定所述内核对象是否存在关联句柄。
7.一种通信方法,应用于操作系统,所述操作系统包括抽象层、内核,所述操作系统运行有若干个程序,所述内核包括多个为内核资源维护的内核对象,所述抽象层用于向所述内核申请创建或删除维护内核资源的内核对象,所述方法包括:
通过所述若干个程序,分别向操作系统抽象层发送针对同一内核资源的调用请求,以使得所述操作系统的抽象层根据所述调用请求,为所述若干个程序分别生成为被调用的内核资源维护的内核对象关联的句柄;
所述若干个程序通过各自获得的句柄操作所述内核对象,以通过所述内核对象实现所述若干个程序间的通信。
8.一种操作系统,包括:用户层、内核层,所述内核层包括抽象层以及至少一个内核,若干个程序运行在所述用户层或者内核层中;
所述若干个程序用于发送调用内核资源的调用请求;
所述抽象层用于向操作系统内核申请创建内核资源对应的内核对象,以及用于根据所述若干个程序的调用内核资源的调用请求,分别为若干个程序生成与所述内核资源对应的内核对象关联的句柄,以使得所述若干个程序通过各自获得的句柄操作所述内核对象;
所述内核用于为内核资源维护所述内核对象。
9.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-6中任一项所述的句柄管理方法或者如权利要求7所述的通信方法对应的操作。
10.一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-6中任一所述的句柄管理方法或者如权利要求7所述的通信方法。
11.一种计算机程序产品,包括计算机指令,所述计算机指令指示计算设备执行如权利要求1-6中任一所述的句柄管理方法或者如权利要求7所述的通信方法对应的操作。
CN202210130565.6A 2022-02-11 2022-02-11 句柄管理或通信方法、电子设备、存储介质及程序产品 Pending CN114462388A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210130565.6A CN114462388A (zh) 2022-02-11 2022-02-11 句柄管理或通信方法、电子设备、存储介质及程序产品
PCT/CN2023/074192 WO2023151503A1 (zh) 2022-02-11 2023-02-02 句柄管理或通信方法、电子设备、存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210130565.6A CN114462388A (zh) 2022-02-11 2022-02-11 句柄管理或通信方法、电子设备、存储介质及程序产品

Publications (1)

Publication Number Publication Date
CN114462388A true CN114462388A (zh) 2022-05-10

Family

ID=81413506

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210130565.6A Pending CN114462388A (zh) 2022-02-11 2022-02-11 句柄管理或通信方法、电子设备、存储介质及程序产品

Country Status (2)

Country Link
CN (1) CN114462388A (zh)
WO (1) WO2023151503A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023151503A1 (zh) * 2022-02-11 2023-08-17 阿里云计算有限公司 句柄管理或通信方法、电子设备、存储介质及程序产品

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106203077B (zh) * 2016-06-28 2019-06-07 珠海豹趣科技有限公司 一种复制信息的处理方法、装置及电子设备
CN109543400B (zh) * 2017-09-21 2022-08-09 华为技术有限公司 一种动态管理内核节点的方法和设备
CN109740310A (zh) * 2018-12-29 2019-05-10 北京嘉楠捷思信息技术有限公司 用于嵌入式操作系统的内核对象访问方法和装置
US20210049036A1 (en) * 2019-08-13 2021-02-18 Facebook Technologies, Llc Capability Space
CN113849310A (zh) * 2021-09-27 2021-12-28 杭州海康消防科技有限公司 一种数据处理方法、装置、设备及机器可读存储介质
CN114462388A (zh) * 2022-02-11 2022-05-10 阿里巴巴(中国)有限公司 句柄管理或通信方法、电子设备、存储介质及程序产品

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023151503A1 (zh) * 2022-02-11 2023-08-17 阿里云计算有限公司 句柄管理或通信方法、电子设备、存储介质及程序产品

Also Published As

Publication number Publication date
WO2023151503A1 (zh) 2023-08-17

Similar Documents

Publication Publication Date Title
CA3000422C (en) Workflow service using state transfer
US8161453B2 (en) Method and apparatus for implementing task management of computer operations
JP4690437B2 (ja) ネットワークアプリケーションにおける通信方法、通信装置及びそのためのプログラム
US20070011291A1 (en) Grid automation bus to integrate management frameworks for dynamic grid management
US20060206894A1 (en) Method of scheduling jobs using database management system for real-time processing
US10303529B2 (en) Protocol for communication of data structures
US20230110628A1 (en) QUANTUM COMPUTING SERVICE WITH QUALITY OF SERVICE (QoS) ENFORCEMENT VIA OUT-OF-BAND PRIORITIZATION OF QUANTUM TASKS
US20220179711A1 (en) Method For Platform-Based Scheduling Of Job Flow
CN109359092B (zh) 文件管理方法、桌面显示方法、装置、终端及介质
WO2023151503A1 (zh) 句柄管理或通信方法、电子设备、存储介质及程序产品
CN109558235B (zh) 一种处理器的调度方法、装置及计算机设备
CN114327894A (zh) 资源分配方法、装置、电子设备及存储介质
CN113590320A (zh) 分布式批量任务调度的资源处理方法、装置、设备及介质
CN113342554A (zh) Io多路复用方法、介质、设备和操作系统
CN112241398A (zh) 一种数据迁移方法和系统
US8353013B2 (en) Authorized application services via an XML message protocol
CN114675954A (zh) 任务调度方法及装置
CN114979286A (zh) 容器服务的访问控制方法、装置、设备及计算机存储介质
CN112749020A (zh) 一种物联网操作系统的微内核优化方法
WO2019228237A1 (zh) 数据处理方法以及计算机设备
CN110879747B (zh) 资源管理方法及装置
CN112910673B (zh) 一种确定网元部署信息的方法、装置、设备及存储介质
US11743200B2 (en) Techniques for improving resource utilization in a microservices architecture via priority queues
CN116723105A (zh) 虚拟网络功能的部署方法和部署装置
CN117827487A (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
TA01 Transfer of patent application right

Effective date of registration: 20220825

Address after: No.12 Zhuantang science and technology economic block, Xihu District, Hangzhou City, Zhejiang Province

Applicant after: Aliyun Computing Co.,Ltd.

Address before: Room 508, 5 / F, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Applicant before: Alibaba (China) Co.,Ltd.

TA01 Transfer of patent application right