CN115145699A - 一种接口处理方法和装置 - Google Patents
一种接口处理方法和装置 Download PDFInfo
- Publication number
- CN115145699A CN115145699A CN202110343755.1A CN202110343755A CN115145699A CN 115145699 A CN115145699 A CN 115145699A CN 202110343755 A CN202110343755 A CN 202110343755A CN 115145699 A CN115145699 A CN 115145699A
- Authority
- CN
- China
- Prior art keywords
- user
- function
- state
- interface
- mode
- 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
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/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
-
- 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]
-
- 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/54—Interprogram communication
-
- 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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请实施例提供了一种接口处理方法和装置,应用于微内核操作系统,所述微内核操作系统包括用于执行用户态程序的用户态,所述方法包括:响应所述用户态程序的执行操作,获取所执行的用户态程序所需调用的预设接口;判断所述用户态是否存在所述所需调用的预设接口;根据所述判断结果从所述用户态调用所述所需调用的预设接口。通过判定用户态中是否存在所需调用的预设接口以实现对用户态接口的优先调用,其无需高级编程语言中覆盖需要高级编程语言的支持,且能够实现微内核操作系统场面用户态和内核态之间的接口覆盖,即实现跨越用户态和内核态的接口覆盖。
Description
技术领域
本申请涉及计算机应用技术领域,特别是涉及一种接口处理方法和一种接口处理装置。
背景技术
通常系统服务层与内核层是集成在一起的,而微内核是内核的一种精简形式,微内核系统中的微内核将系统服务层分离出来,使所分离的系统服务层为可根据需求加入的选件,其中系统服务层所选用的服务器运行在用户态,微内核用于提供作为连接应用与用户态系统服务的多进程调度和多进程通信等。
覆盖(Overrride)可以指的是当系统中存在相同的处理流程时,可以采用其中某一处理流程并将此处理流程覆盖另一处理流程。覆盖通常可以应用在高级编程语言中,高级编程语言中覆盖可以表示在通过子类创建的实例对象调用父类的方法时,将调用子类中所定义的方法,以实现面向对象编程的多态性。然而,将高级编程语言运用在微内核系统,只能够实现用户态之间或者内核态之间的接口覆盖,无法实现跨用户态与内核态的接口覆盖。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种接口处理方法和相应的一种接口处理装置。
为了解决上述问题,本申请实施例公开了一种接口处理方法,应用于微内核操作系统,所述微内核操作系统包括用于执行用户态程序的用户态,所述方法包括:
响应所述用户态程序的执行操作,获取所执行的用户态程序所需调用的预设接口;
判断所述用户态是否存在所述所需调用的预设接口;
根据所述判断结果从所述用户态调用所述所需调用的预设接口。
可选地,所述用户态存在函数指针数据结构体,所述方法还包括:
获取用户态定义函数;所述用户态定义函数为用户自定义的接口函数;
将所述用户态定义函数注册到所述用户态的函数指针数据结构体。
可选地,所述将所述用户态定义函数注册到所述用户态的函数指针数据结构体,包括:
获取所述用户态的函数指针数据结构体的函数指针,将所述用户态定义函数赋值给所述函数指针。
可选地,所述微内核操作系统还包括内核态;所述用户态定义函数与所述内核态中存在的接口函数相同。
可选地,所述根据所述判断结果从所述用户态调用所述所需调用的预设接口,包括:
若所述用户态存在所述所需调用的预设接口,则获取位于所述用户态的预设接口,并调用所述位于所述用户态的预设接口。
可选地,所述所需调用的预设接口包括所执行的用户态程序所需调用的接口函数,所述获取位于所述用户态的预设接口,并调用所述位于所述用户态的预设接口,包括:
获取所执行的用户态程序在所述用户态的函数指针数据结构体;
判断所述用户态的函数指针数据结构体中是否存在与所需调用的接口函数相同的用户态定义函数;
若存在,则从所述用户态的函数指针数据结构体中调用所述用户态定义函数。
可选地,所述从所述用户态的函数指针数据结构体中调用所述用户态定义函数,包括:
确定所需调用的接口函数在所述用户态的函数指针数据结构体中对应的函数指针;
获取所确定的函数指针所指向的赋值;
将所指向的赋值作为当前调用的用户态定义函数,并调用所述用户态定义函数。
可选地,所述微内核操作系统还包括内核态;所述从所述用户态的函数指针数据结构体中调用所述用户态定义函数,还包括:
若所述用户态的函数指针数据结构体中不存在与所需调用的接口函数相同的用户态定义函数,则从所述内核态中调用所述所需调用的接口函数。
可选地,所述从所述内核态中调用所述所需调用的接口函数,包括:
获取在所述用户态中的用户态调用函数;
采用所述用户态调用函数从所述内核态中调用所述所需调用的接口函数。
可选地,所述采用所述用户态调用函数从所述内核态中调用所述所需调用的接口函数,包括:
采用所述用户态调用函数获取所述内核态的函数指针数据结构体,并从所述内核态的函数指针数据结构体中调用所执行的用户态程序所需调用的接口函数。
可选地,所述方法还包括:
响应所述用户态程序的执行操作,通过所述用户态程序获取位于用户态的用户态定义函数,并执行所述用户态定义函数。
本申请实施例还公开了一种接口处理方法,涉及包含用户态的微内核操作系统,所述方法应用于所述微内核操作系统中所执行的用户态程序,所述方法包括:
在所述用户态程序被执行时,所述用户态程序判断所述用户态是否存在用户态定义函数;所述用户态定义函数为用户自定义的接口函数;
若所述用户态存在所述用户态定义函数,则执行所述用户态定义函数。
可选地,所述微内核操作系统还包括内核态;所述方法还包括:
若所述用户态不存在所述用户态定义函数,则获取位于所述内核态的内核态函数,并执行所述内核态函数。
本申请实施例还公开了一种接口处理装置,应用于微内核操作系统,所述微内核操作系统包括用于执行用户态程序的用户态,所述装置包括:
用户态程序响应模块,用于响应所述用户态程序的执行操作,获取所执行的用户态程序所需调用的预设接口;
预设接口判断模块,用于判断所述用户态是否存在所述所需调用的预设接口;
预设接口调用模块,用于根据所述判断结果从所述用户态调用所述所需调用的预设接口。
可选地,所述用户态存在函数指针数据结构体,所述装置还包括:
用户态定义函数获取模块,用于获取用户态定义函数;所述用户态定义函数为用户自定义的接口函数;
用户态定义函数注册模块,用于将所述用户态定义函数注册到所述用户态的函数指针数据结构体。
可选地,所述用户态定义函数注册模块包括:
用户态定义函数赋值子模块,用于获取所述用户态的函数指针数据结构体的函数指针,将所述用户态定义函数赋值给所述函数指针。
可选地,所述微内核操作系统还包括内核态;所述用户态定义函数与所述内核态中存在的接口函数相同。
可选地,所述预设接口调用模块包括:
预设接口调用子模块,用于若所述用户态存在所述所需调用的预设接口,则获取位于所述用户态的预设接口,并调用所述位于所述用户态的预设接口。
可选地,所述所需调用的预设接口包括所执行的用户态程序所需调用的接口函数,所述预设接口调用子模块包括:
函数指针数据结构体获取单元,用于获取所执行的用户态程序在所述用户态的函数指针数据结构体;
用户态定义函数判断单元,用于判断所述用户态的函数指针数据结构体中是否存在与所需调用的接口函数相同的用户态定义函数;
用户态定义函数调用单元,用于若存在,则从所述用户态的函数指针数据结构体中调用所述用户态定义函数。
可选地,所述用户态定义函数调用单元包括:
函数指针确定子单元,用于确定所需调用的接口函数在所述用户态的函数指针数据结构体中对应的函数指针;
指针赋值获取子单元,用于获取所确定的函数指针所指向的赋值;
用户态定义函数调用子单元,用于将所指向的赋值作为当前调用的用户态定义函数,并调用所述用户态定义函数。
可选地,所述微内核操作系统还包括内核态;所述预设接口调用子模块还包括:
内核态函数调用单元,用于若所述用户态的函数指针数据结构体中不存在与所需调用的接口函数相同的用户态定义函数,则从所述内核态中调用所述所需调用的接口函数。
可选地,所述内核态函数调用单元包括:
用户态调用函数获取子单元,用于获取在所述用户态中的用户态调用函数;
内核态函数调用子单元,用于采用所述用户态调用函数从所述内核态中调用所述所需调用的接口函数。
可选地,所述装置还包括:
用户态定义函数执行模块,用于响应所述用户态程序的执行操作,通过所述用户态程序获取位于用户态的用户态定义函数,并执行所述用户态定义函数。
本申请实施例还公开了一种接口处理装置,涉及包含用户态的微内核操作系统,应用于所述微内核操作系统中所执行的用户态程序,所述装置包括:
用户态定义函数判断模块,用于在所述用户态程序被执行时,所述用户态程序判断所述用户态是否存在用户态定义函数;所述用户态定义函数为用户自定义的接口函数;
用户态定义函数执行模块,用于若所述用户态存在所述用户态定义函数,则执行所述用户态定义函数。
可选地,所述微内核操作系统还包括内核态,所述装置还包括:
内核态函数执行模块,用于若所述用户态不存在所述用户态定义函数,则获取位于所述内核态的内核态函数,并执行所述内核态函数。
本申请实施例还公开了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现任一项所述接口处理方法的步骤。
本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现任一项所述接口处理方法的步骤。
本申请实施例包括以下优点:
在本申请实施例中,应用于微内核操作系统,通过响应用户态程序的执行操作,并获取所执行的用户态程序所需调用的预设接口,在调用所需调用的预设接口时首先可以判断用户态中是否存在此所需调用的预设接口,然后根据判断结果从用户态中调用所执行的用户态程序所需调用的预设接口,以便执行所调用的用户态的预设接口。通过判定用户态中是否存在所需调用的预设接口以实现对用户态接口的优先调用,其无需高级编程语言中覆盖需要高级编程语言的支持,且能够实现微内核操作系统场面用户态和内核态之间的接口覆盖,即实现跨越用户态和内核态的接口覆盖。
附图说明
图1是本申请的一种接口处理方法实施例的步骤流程图;
图2是本申请的另一种接口处理方法实施例的步骤流程图;
图3是本申请的又一种接口处理方法实施例的步骤流程图;
图4是本申请实施例中接口处理的应用场景图;
图5是本申请的一种接口处理装置实施例的结构框图;
图6是本申请的另一种接口处理装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
覆盖(Overrride)可以指的是当系统中存在相同的处理流程时,可以采用其中一处理流程并将此处理流程覆盖另一处理流程,处理流程不单单指的是处理方式,还可以指的是在处理过程中所调用的函数、所涉及到的参数等。
对于高级编程语言而言,覆盖可以表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,即相当于通过所调用的子类中所存在的与父类中所定义的完全相同的方法将父类中所定义的方法进行覆盖,以便通过调用子类方法覆盖父类方法的方式实现面向对象编程的多态性。然而,通过调用子类方法覆盖父类方法的方式需要高级编程语言的支持以及只能实现用户态之间或者内核态之间的接口覆盖,无法实现跨用户态和内核态的接口覆盖。
本申请实施例的核心思想之一是当操作系统中存在两个完全相同的接口函数实现时,优先调用用户态中的接口函数,而位于内核态的接口函数将不会被调用,以实现跨越用户态和内核态的接口覆盖。
参照图1,示出了本申请的一种接口处理方法实施例的步骤流程图,应用于微内核操作系统,所述微内核操作系统包括用于执行用户态程序的用户态,具体可以包括如下步骤:
步骤101,响应所述用户态程序的执行操作,获取所执行的用户态程序所需调用的预设接口;
本申请实施例可以应用于微内核操作系统,此微内核操作系统较其他操作系统的区别在于,其他操作系统通常是将系统服务层与内核层集成在一起,而微内核操作系统中将系统服务层分离出来作为可根据需求加入的选件,具体可以是基于C(Client,客户端)/S(Server,服务器)模式,将操作系统中最基本的部分放入内核中,以及把操作系统的绝大部分功能放在微内核外面的一组服务器中实现,这些服务器运行在用户态,且用户所使用的客户端与服务器之间需要借助微内核所提供的消息传递机制实现通信。
其中,内核所提供的多进程调度、多进程通信可以是作为连接客户端应用与用户态系统服务的桥梁,且所有服务器都运行在用户态中,那么服务器与服务器之间同样采用的是微内核所提供的消息传递机制(例如多进程调度、多进程通信等)。
在本申请的一种实施例中,可以响应用户态程序的执行操作,并获取所执行的用户态程序所需调用的预设接口,以便后续在对用户态中是否存在所需调用的预设接口进行判定以实现对用户态接口的优先调用的过程中,能够明确所要判定的接口对象。
步骤102,判断所述用户态是否存在所述所需调用的预设接口;
在本申请的一种实施例中,在明确所要判定的接口对象的情况下,对用户态中是否存在所执行的用户态程序所需调用的预设接口进行判定。
在实际应用中,微内核操作系统可以包括内核态和用户态,微内核操作系统可以默认在内核态提供一组接口实现,且允许用户自定义接口并将所自定义的接口实现放在用户态,以便后续当微内核操作系统中存在两个完全相同的接口函数实现时,能够优先调用其中某一个接口函数,而另一接口函数将不会被调用,其中具体对位于用户态中的接口函数进行调用。
步骤103,根据所述判断结果从所述用户态调用所述所需调用的预设接口。
在实际应用中,为了实现微内核操作系统场面用户态和内核态之间的接口覆盖,当系统在调用与用户自定义接口相同的接口实现时,系统将会调用用户自定义的接口而不再使用系统默认的接口,具体可以表现为根据对用户态中是否存在所需调用的预设接口的判断结果实现。
具体的,根据判断结果对用户态的预设接口进行调用,可以表现为若用户态存在所需调用的预设接口,此时可以获取位于用户态的预设接口,并调用所述位于用户态的预设接口。
其中,所需调用的预设接口具体可以表现为所执行的用户态程序所需调用的接口函数,即在执行此用户态程序的情况下,需要调用或执行的接口函数。
在本申请的一种实施例中,对于调用位于用户态的预设接口的方法,首先可以获取所执行的用户态程序在用户态的函数指针数据结构体,并判断用户态的函数指针数据结构体中是否存在与所需调用的接口函数相同的用户态定义函数;在一种情况下,若存在,则可以从用户态的函数指针数据结构体中调用用户态定义函数。其中,用户态定义函数可以指的是用户自定义并放在用户态的接口函数。
在实际应用中,调用用户态定义函数,可以通过确定所需调用的接口函数在用户态的函数指针数据结构体中对应的函数指针,并获取所确定的函数指针所指向的赋值,以及将所指向的赋值作为当前调用的用户态定义函数实现。
作为一种示例,用户自定义的接口函数(即用户态定义函数)会注册到用户态程序的函数指针数据结构体中,此时如果所确定的在用户态的函数指针数据结构体中对应的函数不是空的,则可以说明存在与所需调用的接口函数相同的用户态定义函数,即存在用户定义的接口,如果用户态定义函数没有注册到用户态程序,相应用户态程序的数据结构体中函数指针所指向的函数为空。
在另一种情况下,若用户态的函数指针数据结构体中不存在与所需调用的接口函数相同的用户态定义函数,那么此时需要从内核态中调用所需调用的接口函数,即调用默认的内核态接口实现。
在实际应用中,内核态对外提供的接口都会有个用户态的接口函数跟它一一对应,用户的应用程序是先调用的用户态接口函数然后在通过系统调用Syscall(为操作系统的一种线程调用函数)调用到内核态的接口。
在具体实现中,针对从内核态中调用所需调用的接口函数的方式,可以获取在用户态中的用户态调用函数,此用户态调用函数可以用于调用在所用户态中面向调用内核态中所需调用的接口函数时所需使用的用户态接口函数,那么此时可以采用用户态调用函数从所述内核态中调用所需调用的接口函数。
在一种优选的实施例中,当需要修改用户态程序所实现的接口时,无需对内核态接口进行修改,可以直接在用户态开发新的用户态程序以供调用,具体可以表现为响应用户态程序的执行操作,通过用户态程序获取位于用户态的用户态定义函数,并执行用户态定义函数。
在本申请实施例中,应用于微内核操作系统,通过响应用户态程序的执行操作,并获取所执行的用户态程序所需调用的预设接口,在调用所需调用的预设接口时首先可以判断用户态中是否存在此所需调用的预设接口,然后根据判断结果从用户态中调用所执行的用户态程序所需调用的预设接口,以便执行所调用的用户态的预设接口。通过判定用户态中是否存在所需调用的预设接口以实现对用户态接口的优先调用,其无需高级编程语言中覆盖需要高级编程语言的支持,且能够实现微内核操作系统场面用户态和内核态之间的接口覆盖,即实现跨越用户态和内核态的接口覆盖。
参照图2,示出了本申请的另一种接口处理方法实施例的步骤流程图,侧重于用户自定义接口实现并放在用户态的过程,具体可以包括如下步骤:
步骤201,获取用户态定义函数;所述用户态定义函数为用户自定义的接口函数;
在本申请的一种实施例中,微内核操作系统可以默认在内核态提供一组接口实现,且允许用户自定义接口并将所自定义的接口实现放在用户态,那么此时可以获取用户态定义函数为用户自定义的接口函数以放在用户态。
其中,微内核操作系统中的接口实现可以分别位于用户态和内核态,其所实现的系统层面的接口重载是高级编程语言中的覆盖无法实现的。
需要说明的是,针对用户自定义接口实现并放在用户态的时机,可以是在执行用户态程序之前,也可以是其他时机,对此,本申请实施例不加以限制。
步骤202,将所述用户态定义函数注册到所述用户态的函数指针数据结构体。
在本申请的一种实施例中,用户态可以存在函数指针数据结构体,将用户态定义函数注册到用户态的函数指针数据结构体,可以表现为将函数指针指向用户自定义的接口函数,或者将接口函数赋值给函数指针,以便后续能够通过函数指针所指向的或者函数指针所赋值的函数调用相关接口函数。
具体的,可以获取用户态的函数指针数据结构体的函数指针,并将用户态定义函数赋值给函数指针。其中,用户态中所存在的函数指针数据结构体,其里面的内容可以默认是空的。
在本申请实施例中,微内核操作系统还包括内核态,用户自定义的接口与内核态中存在的接口函数可以完全相同,实际上用户自定义接口即实现一批操作函数(可以指的是用户态定义函数),此时可以将这些函数赋值给结构体中的函数指针。
在实际应用中,为了实现优先调用用户自定义接口,此时可以将用户自定义接口注册到此默认为空的函数指针数据结构体中,即在优先调用这个结构体中的函数指针时,如果函数指针所指向为空,那么将会通过系统调用内核提供的接口;反之,如果之前有用户自定义的实现往这个结构体中注册过,那么相应的函数指针所指向的并不是空的,则将会通过函数指针去调用用户自定义函数的实现。
在本申请实施例中,通过用户在用户态自定义一组接口实现,以便后续微内核操作系统在实现相同的接口时能够调用用户自定义的接口,并不采用系统默认提供的接口实现;且,操作系统有一套完整的功能接口,当用户自定义来一部分接口时,不仅可以优先使用用户自定义的接口,还可以当用户自定义的接口缺失时,系统将会自动启用原来系统默认提供的接口,以保证基本功能接口可以正常使用。
参照图3,示出了本申请的又一种接口处理方法实施例的步骤流程图,涉及包含用户态的微内核操作系统,所述方法应用于所述微内核操作系统中所执行的用户态程序,具体可以包括如下步骤:
步骤301,在所述用户态程序被执行时,所述用户态程序判断所述用户态是否存在用户态定义函数;所述用户态定义函数为用户自定义的接口函数;
在本申请实施例中,侧重于采用用户态中用户自定义的接口函数进行处理的应用过程。
步骤302,若所述用户态存在所述用户态定义函数,则执行所述用户态定义函数。
在具体实现中,其应用过程可以为当用户态程序执行时,系统将会判断是否有用户态的用户自定义的接口实现,如果有用户态的接口实现,则将会优先调用用户态的接口实现;如果没有用户态的接口实现,则将会调用默认的内核态接口实现。
即在一种情况下,若用户态存在用户态定义函数(即用户自定义的接口),则可以直接执行用户态定义函数;在另一种情况下,微内核操作系统还可以包括内核态,若用户态不存在用户态定义函数,则可以获取位于内核态的内核态函数,并执行内核态函数,即调用以及执行内核态中默认提供的一组接口实现。
在本申请实施例中,为了便于本领域技术人员理解本申请实施例所提出的接口处理方法的应用,下面结合示例进行说明:
作为一种示例,假设所执行的用户态程序为用户应用程序时,在用户应用程序被执行时,默认情况下其串口驱动在内核态,此时需要用户应用程序通过系统调用操作串口驱动。当存在位于用户态的串口驱动时,用户态串口驱动将会预先注册到与用户应用程序相关的函数指针,使得在用户程序访问时,发现对应的函数指针所指向并不是空的,即说明此串口驱动相关的函数指针具有所指向的用户态串口驱动函数,此时将会调用用户态注册的串口驱动函数,从而实现用户态串口驱动的调用。
参照图4,示出了本申请实施例中接口处理的应用场景图,本申请实施例提出的接口处理方法对于上层应用而言,可以应用于支持微内核操作系统的物联网设备,例如智能音箱、网络摄像头等,所支持的微内核操作系统将系统服务层分离出来,以及把操作系统的绝大部分功能放在微内核外面的一组服务器中实现,这些服务器运行在用户态。
在具体示例中,假设物联网设备为智能音箱,为了能够跨平台跨终端,流畅使用Windows、Linux、Android等系统的丰富应用,该智能音箱能够支持微内核操作系统,实现用户通过智能音箱进行电脑游戏游玩操作、上网课操作以及3D(Three Dimensions,三维)渲染体验操作等。
其中,用户通过智能音箱所安装的针对3D渲染的软件实现体验操作,所安装的3D渲染软件可以基于与相应服务器所建立的通信连接提供相关服务,而智能音箱所支持的微内核操作系统可以默认提供针对3D渲染的全部基础功能,即默认的操作系统内核中可以带有针对3D渲染的串口驱动程序。
在实际应用中,当用户在启动所安装的针对3D渲染的软件以执行相关用户程序的过程中,用户程序在默认情况下会使用自带的内核驱动程序,当用户需要基于内核所提供的针对3D渲染的基础功能进行修改,例如在基础功能上增加自定义功能时,传统针对内核驱动程序的修改方式为直接修改内核态中相关内核驱动程序内的函数、参数等,智能音箱所支持的微内核操作系统在应用本申请实施例的接口处理方法后,可以不修改内核自带的驱动程序,而是在用户态中开发自定义的驱动程序,以实现基于3D渲染的基础功能所需实现的自定义功能,那么此时所执行的用户应用程序将会调用新开发的用户态驱动程序。
需要说明的是,在用户态中所开发的自定义驱动程序可能只是基于需实现的自定义功能的相关程序,操作系统可以默认提供全部的基础功能,如果没有用户自定义的功能,将会调用操作系统的基础功能,而当有用户自定义的功能时,会调用用户自定义的功能,以保证在实现功能接口可以正常使用的情况下实现自定义功能。
在本申请实施例中,通过判定用户态中是否存在所需调用的预设接口以实现对用户态接口的优先调用,其无需高级编程语言中覆盖需要高级编程语言的支持,且能够实现微内核操作系统场面用户态和内核态之间的接口覆盖,即实现跨越用户态和内核态的接口覆盖。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图5,示出了本申请的一种接口处理装置实施例的结构框图,应用于微内核操作系统,所述微内核操作系统包括用于执行用户态程序的用户态,具体可以包括如下模块:
用户态程序响应模块501,用于响应所述用户态程序的执行操作,获取所执行的用户态程序所需调用的预设接口;
预设接口判断模块502,用于判断所述用户态是否存在所述所需调用的预设接口;
预设接口调用模块503,用于根据所述判断结果从所述用户态调用所述所需调用的预设接口。
在本申请的一种实施例中,所述用户态存在函数指针数据结构体,所述装置还可以包括如下模块:
用户态定义函数获取模块,用于获取用户态定义函数;所述用户态定义函数为用户自定义的接口函数;
用户态定义函数注册模块,用于将所述用户态定义函数注册到所述用户态的函数指针数据结构体。
在本申请的一种实施例中,用户态定义函数注册模块可以包括如下子模块:
用户态定义函数赋值子模块,用于获取所述用户态的函数指针数据结构体的函数指针,将所述用户态定义函数赋值给所述函数指针。
在本申请的一种实施例中,所述微内核操作系统还包括内核态;所述用户态定义函数与所述内核态中存在的接口函数相同。
在本申请的一种实施例中,预设接口调用模块503可以包括如下子模块:
预设接口调用子模块,用于若所述用户态存在所述所需调用的预设接口,则获取位于所述用户态的预设接口,并调用所述位于所述用户态的预设接口。
在本申请的一种实施例中,所述所需调用的预设接口包括所执行的用户态程序所需调用的接口函数,预设接口调用子模块可以包括如下单元:
函数指针数据结构体获取单元,用于获取所执行的用户态程序在所述用户态的函数指针数据结构体;
用户态定义函数判断单元,用于判断所述用户态的函数指针数据结构体中是否存在与所需调用的接口函数相同的用户态定义函数;
用户态定义函数调用单元,用于若存在,则从所述用户态的函数指针数据结构体中调用所述用户态定义函数。
在本申请的一种实施例中,用户态定义函数调用单元可以包括如下子单元:
函数指针确定子单元,用于确定所需调用的接口函数在所述用户态的函数指针数据结构体中对应的函数指针;
指针赋值获取子单元,用于获取所确定的函数指针所指向的赋值;
用户态定义函数调用子单元,用于将所指向的赋值作为当前调用的用户态定义函数,并调用所述用户态定义函数。
在本申请的一种实施例中,所述微内核操作系统还包括内核态;预设接口调用子模块还可以包括如下单元:
内核态函数调用单元,用于若所述用户态的函数指针数据结构体中不存在与所需调用的接口函数相同的用户态定义函数,则从所述内核态中调用所述所需调用的接口函数。
在本申请的一种实施例中,内核态函数调用单元可以包括如下子单元:
用户态调用函数获取子单元,用于获取在所述用户态中的用户态调用函数;
内核态函数调用子单元,用于采用所述用户态调用函数从所述内核态中调用所述所需调用的接口函数。
在本申请的一种实施例中,所述装置还可以包括如下模块:
用户态定义函数执行模块,用于响应所述用户态程序的执行操作,通过所述用户态程序获取位于用户态的用户态定义函数,并执行所述用户态定义函数。
参照图6,示出了本申请的另一种接口处理装置实施例的结构框图,涉及包含用户态的微内核操作系统,应用于所述微内核操作系统中所执行的用户态程序,具体可以包括如下模块:
用户态定义函数判断模块601,用于在所述用户态程序被执行时,所述用户态程序判断所述用户态是否存在用户态定义函数;所述用户态定义函数为用户自定义的接口函数;
用户态定义函数执行模块602,用于若所述用户态存在所述用户态定义函数,则执行所述用户态定义函数。
在本申请的一种实施例中,所述微内核操作系统还包括内核态;所述装置还可以包括如下模块:
内核态函数执行模块,用于若所述用户态不存在所述用户态定义函数,则获取位于所述内核态的内核态函数,并执行所述内核态函数。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种电子设备,包括:
包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述接口处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述接口处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种接口处理方法和一种接口处理装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (27)
1.一种接口处理方法,其特征在于,应用于微内核操作系统,所述微内核操作系统包括用于执行用户态程序的用户态,所述方法包括:
响应所述用户态程序的执行操作,获取所执行的用户态程序所需调用的预设接口;
判断所述用户态是否存在所述所需调用的预设接口;
根据所述判断结果从所述用户态调用所述所需调用的预设接口。
2.根据权利要求1所述的方法,其特征在于,所述用户态存在函数指针数据结构体,所述方法还包括:
获取用户态定义函数;所述用户态定义函数为用户自定义的接口函数;
将所述用户态定义函数注册到所述用户态的函数指针数据结构体。
3.根据权利要求2所述的方法,其特征在于,所述将所述用户态定义函数注册到所述用户态的函数指针数据结构体,包括:
获取所述用户态的函数指针数据结构体的函数指针,将所述用户态定义函数赋值给所述函数指针。
4.根据权利要求2或3所述的方法,其特征在于,所述微内核操作系统还包括内核态;所述用户态定义函数与所述内核态中存在的接口函数相同。
5.根据权利要求2所述的方法,其特征在于,所述根据所述判断结果从所述用户态调用所述所需调用的预设接口,包括:
若所述用户态存在所述所需调用的预设接口,则获取位于所述用户态的预设接口,并调用所述位于所述用户态的预设接口。
6.根据权利要求5所述的方法,其特征在于,所述所需调用的预设接口包括所执行的用户态程序所需调用的接口函数,所述获取位于所述用户态的预设接口,并调用所述位于所述用户态的预设接口,包括:
获取所执行的用户态程序在所述用户态的函数指针数据结构体;
判断所述用户态的函数指针数据结构体中是否存在与所需调用的接口函数相同的用户态定义函数;
若存在,则从所述用户态的函数指针数据结构体中调用所述用户态定义函数。
7.根据权利要求6所述的方法,其特征在于,所述从所述用户态的函数指针数据结构体中调用所述用户态定义函数,包括:
确定所需调用的接口函数在所述用户态的函数指针数据结构体中对应的函数指针;
获取所确定的函数指针所指向的赋值;
将所指向的赋值作为当前调用的用户态定义函数,并调用所述用户态定义函数。
8.根据权利要求6所述的方法,其特征在于,所述微内核操作系统还包括内核态;所述从所述用户态的函数指针数据结构体中调用所述用户态定义函数,还包括:
若所述用户态的函数指针数据结构体中不存在与所需调用的接口函数相同的用户态定义函数,则从所述内核态中调用所述所需调用的接口函数。
9.根据权利要求8所述的方法,其特征在于,所述从所述内核态中调用所述所需调用的接口函数,包括:
获取在所述用户态中的用户态调用函数;
采用所述用户态调用函数从所述内核态中调用所述所需调用的接口函数。
10.根据权利要求9所述的方法,其特征在于,所述采用所述用户态调用函数从所述内核态中调用所述所需调用的接口函数,包括:
采用所述用户态调用函数获取所述内核态的函数指针数据结构体,并从所述内核态的函数指针数据结构体中调用所执行的用户态程序所需调用的接口函数。
11.根据权利要求2所述的方法,其特征在于,所述方法还包括:
响应所述用户态程序的执行操作,通过所述用户态程序获取位于用户态的用户态定义函数,并执行所述用户态定义函数。
12.一种接口处理方法,其特征在于,涉及包含用户态的微内核操作系统,所述方法应用于所述微内核操作系统中所执行的用户态程序,所述方法包括:
在所述用户态程序被执行时,所述用户态程序判断所述用户态是否存在用户态定义函数;所述用户态定义函数为用户自定义的接口函数;
若所述用户态存在所述用户态定义函数,则执行所述用户态定义函数。
13.根据权利要求12所述的方法,其特征在于,所述微内核操作系统还包括内核态;所述方法还包括:
若所述用户态不存在所述用户态定义函数,则获取位于所述内核态的内核态函数,并执行所述内核态函数。
14.一种接口处理装置,其特征在于,应用于微内核操作系统,所述微内核操作系统包括用于执行用户态程序的用户态,所述装置包括:
用户态程序响应模块,用于响应所述用户态程序的执行操作,获取所执行的用户态程序所需调用的预设接口;
预设接口判断模块,用于判断所述用户态是否存在所述所需调用的预设接口;
预设接口调用模块,用于根据所述判断结果从所述用户态调用所述所需调用的预设接口。
15.根据权利要求14所述的装置,其特征在于,所述用户态存在函数指针数据结构体,所述装置还包括:
用户态定义函数获取模块,用于获取用户态定义函数;所述用户态定义函数为用户自定义的接口函数;
用户态定义函数注册模块,用于将所述用户态定义函数注册到所述用户态的函数指针数据结构体。
16.根据权利要求15所述的装置,其特征在于,所述用户态定义函数注册模块包括:
用户态定义函数赋值子模块,用于获取所述用户态的函数指针数据结构体的函数指针,将所述用户态定义函数赋值给所述函数指针。
17.根据权利要求16所述的装置,其特征在于,所述微内核操作系统还包括内核态;所述用户态定义函数与所述内核态中存在的接口函数相同。
18.根据权利要求15所述的装置,其特征在于,所述预设接口调用模块包括:
预设接口调用子模块,用于若所述用户态存在所述所需调用的预设接口,则获取位于所述用户态的预设接口,并调用所述位于所述用户态的预设接口。
19.根据权利要求18所述的装置,其特征在于,所述所需调用的预设接口包括所执行的用户态程序所需调用的接口函数,所述预设接口调用子模块包括:
函数指针数据结构体获取单元,用于获取所执行的用户态程序在所述用户态的函数指针数据结构体;
用户态定义函数判断单元,用于判断所述用户态的函数指针数据结构体中是否存在与所需调用的接口函数相同的用户态定义函数;
用户态定义函数调用单元,用于若存在,则从所述用户态的函数指针数据结构体中调用所述用户态定义函数。
20.根据权利要求19所述的装置,其特征在于,所述用户态定义函数调用单元包括:
函数指针确定子单元,用于确定所需调用的接口函数在所述用户态的函数指针数据结构体中对应的函数指针;
指针赋值获取子单元,用于获取所确定的函数指针所指向的赋值;
用户态定义函数调用子单元,用于将所指向的赋值作为当前调用的用户态定义函数,并调用所述用户态定义函数。
21.根据权利要求19所述的装置,其特征在于,所述微内核操作系统还包括内核态;所述预设接口调用子模块还包括:
内核态函数调用单元,用于若所述用户态的函数指针数据结构体中不存在与所需调用的接口函数相同的用户态定义函数,则从所述内核态中调用所述所需调用的接口函数。
22.根据权利要求21所述的装置,其特征在于,所述内核态函数调用单元包括:
用户态调用函数获取子单元,用于获取在所述用户态中的用户态调用函数;
内核态函数调用子单元,用于采用所述用户态调用函数从所述内核态中调用所述所需调用的接口函数。
23.根据权利要求15所述的装置,其特征在于,所述装置还包括:
用户态定义函数执行模块,用于响应所述用户态程序的执行操作,通过所述用户态程序获取位于用户态的用户态定义函数,并执行所述用户态定义函数。
24.一种接口处理装置,其特征在于,涉及包含用户态的微内核操作系统,应用于所述微内核操作系统中所执行的用户态程序,所述装置包括:
用户态定义函数判断模块,用于在所述用户态程序被执行时,所述用户态程序判断所述用户态是否存在用户态定义函数;所述用户态定义函数为用户自定义的接口函数;
用户态定义函数执行模块,用于若所述用户态存在所述用户态定义函数,则执行所述用户态定义函数。
25.根据权利要求24所述的装置,其特征在于,所述微内核操作系统还包括内核态,所述装置还包括:
内核态函数执行模块,用于若所述用户态不存在所述用户态定义函数,则获取位于所述内核态的内核态函数,并执行所述内核态函数。
26.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至11或12至13中任一项所述接口处理方法的步骤。
27.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11或12至13中任一项所述接口处理方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110343755.1A CN115145699A (zh) | 2021-03-30 | 2021-03-30 | 一种接口处理方法和装置 |
PCT/CN2022/077738 WO2022206226A1 (zh) | 2021-03-30 | 2022-02-24 | 一种接口处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110343755.1A CN115145699A (zh) | 2021-03-30 | 2021-03-30 | 一种接口处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115145699A true CN115145699A (zh) | 2022-10-04 |
Family
ID=83404114
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110343755.1A Pending CN115145699A (zh) | 2021-03-30 | 2021-03-30 | 一种接口处理方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115145699A (zh) |
WO (1) | WO2022206226A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617496A (zh) * | 2022-12-06 | 2023-01-17 | 摩尔线程智能科技(北京)有限责任公司 | 用户模式与内核模式通信的方法、装置、电子设备和介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8104048B2 (en) * | 2006-08-04 | 2012-01-24 | Apple Inc. | Browsing or searching user interfaces and other aspects |
CN104123229B (zh) * | 2014-07-21 | 2017-10-24 | 上海斐讯数据通信技术有限公司 | 能使报文高效地从内核态提交到用户态的方法及系统 |
CN106909430A (zh) * | 2015-12-22 | 2017-06-30 | 北京奇虎科技有限公司 | 一种兼容的接口创建方法和系统 |
CN111857993B (zh) * | 2020-06-24 | 2022-07-08 | 烽火通信科技股份有限公司 | 一种内核态调用用户态函数的方法 |
-
2021
- 2021-03-30 CN CN202110343755.1A patent/CN115145699A/zh active Pending
-
2022
- 2022-02-24 WO PCT/CN2022/077738 patent/WO2022206226A1/zh active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617496A (zh) * | 2022-12-06 | 2023-01-17 | 摩尔线程智能科技(北京)有限责任公司 | 用户模式与内核模式通信的方法、装置、电子设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022206226A1 (zh) | 2022-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10885713B2 (en) | Method, apparatus, and system for generating an AR application and rendering an AR instance | |
CN105607895B (zh) | 一种基于应用程序编程接口的应用程序的运行方法和装置 | |
US20130219415A1 (en) | Method for executing hybrid web application and apparatus therefor | |
WO2017124025A1 (en) | Identifiers across application instances | |
US10996997B2 (en) | API-based service command invocation | |
CN104216709B (zh) | 操作系统中直接控制硬件设备的方法和装置 | |
CN114064024B (zh) | 微应用的开发方法、装置、设备、存储介质及程序产品 | |
EP3748500B1 (en) | Inversion-of-control component service models for virtual environments | |
US20240111549A1 (en) | Method and apparatus for constructing android running environment | |
CN111625293A (zh) | 一种基于linux内核的终端双系统及其硬件访问管理方法 | |
WO2017107851A1 (zh) | 一种桌面应用组件发布、更新方法及装置 | |
CN112121411A (zh) | 震动控制方法、装置、电子设备和计算机可读存储介质 | |
CN108376066B (zh) | 代码处理装置及代码处理方法 | |
CN115145699A (zh) | 一种接口处理方法和装置 | |
CN104375831B (zh) | 实现终端设备上的网页和应用间通信的方法、装置和系统 | |
CN108268261B (zh) | 一种智能终端的ui定制方法、存储介质及智能终端 | |
CN109814915A (zh) | 基于lua的参数配置方法、装置、介质和电子设备 | |
US11071151B2 (en) | Methods and apparatuses for connecting a wireless access point through an application in a user equipment | |
CN114356083B (zh) | 虚拟个人助理控制方法、装置、电子设备及可读存储介质 | |
CN115291900A (zh) | 高精地图sdk部署方法、装置、设备及存储介质 | |
CN111208979B (zh) | 一种基于平台框架的装配式开发方法及系统 | |
CN111581578B (zh) | 接口请求处理方法和装置 | |
CN108363582A (zh) | 一种智能终端主页升级的方法和装置 | |
CN112306710A (zh) | 一种业务处理系统、接口调用方法及装置 | |
CN107643954B (zh) | Sdk接入系统和方法 |
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 |