掌桥专利:专业的专利平台
掌桥专利
首页

一种基于扩展操作系统内核的应用层编程方法及系统

文献发布时间:2023-06-19 13:29:16


一种基于扩展操作系统内核的应用层编程方法及系统

技术领域

本发明属于计算机技术领域,具体涉及一种基于扩展操作系统内核的应用层编程方法及系统。

背景技术

软件在开发过程中,其程序通常包括两类:应用层程序和驱动层程序。应用层程序可以实现一些基于操作系统的业务逻辑,例如:影音播放器、压缩软件、即时通讯工具等。如果应用层程序需要处理操作系统提供的数据,例如进程启停、文件读写、网络连接/发送/接收、注册表读写等信息,就需要有驱动层程序作为中间件。驱动层程序获取操作系统组件接口的数据,并返回给应用层程序处理。应用层程序无法直接调用操作系统组件接口来获取数据。

一般情况下,操作系统的驱动层程序开发门槛很高,开发人员需要有相应的技术积累,普通开发人员不能胜任。并且不合格的第三方驱动可能会导致操作系统不稳定,出现蓝屏、死机、程序无响应等异常情况。驱动层程序发布需要操作系统提供公司的官方签名,过程复杂,操作系统驱动层程序的更新还需要重启电脑,软件开发效率低。

发明内容

针对现有技术中的缺陷,本发明提供一种基于扩展操作系统内核的应用层编程方法及系统,提高软件开发效率。

第一方面,一种基于扩展操作系统内核的应用层编程方法,包括以下步骤:

接收来自应用层程序的预执行脚本;

对所述预执行脚本进行检查,以获得检查结果;

如果检查结果为通过时,对所述预执行脚本进行序列化,以得到预执行MAP格式文件;

根据所述预执行MAP格式文件调用驱动层程序库中对应的驱动层程序;

接收所述驱动层程序返回的执行结果;

将所述执行结果返回给所述应用层程序。

优选地,所述对所述预执行脚本进行检查具体包括:

对所述预执行脚本进行安全性检查和脚本合规性检查。

优选地,该方法在所述获得检查结果之后,还包括:

如果检查结果为不通过时,生成检查不通过指令;

将所述检查不通过指令返回给所述应用层程序。

优选地,所述执行结果为所述驱动层程序返回的二进制流。

优选地,所述将所述执行结果返回给所述应用层程序具体包括:

将所述二进制流封装为json格式后,返回给所述应用层程序。

第二方面,一种基于扩展操作系统内核的应用层编程系统,所述应用层编程系统加载在操作系统中;所述应用层编程系统包括:

脚本解析模块:用于接收来自应用层程序的预执行脚本,对所述预执行脚本进行检查,以获得检查结果;如果检查结果为通过时,对所述预执行脚本进行序列化,以得到预执行MAP格式文件;所述脚本解析模块还用于将执行结果返回给所述应用层程序;

核心处理模块:与所述脚本解析模块连接;所述核心处理模块用于根据所述预执行MAP格式文件调用内核交互模块中对应的驱动层程序;所述核心处理模块还用于将执行结果返回给脚本解析模块;

内核交互模块:与所述核心处理模块连接;所述内核交互模块用于设有存储有多个驱动层程序的驱动层程序库;所述内核交互模块用于接收所述驱动层程序返回的执行结果,并将所述执行结果返回给核心处理模块。

优选地,所述脚本解析模块具体用于:

对所述预执行脚本进行安全性检查和脚本合规性检查。

优选地,所述脚本解析模块还用于:

如果检查结果为不通过时,生成检查不通过指令;

将所述检查不通过指令返回给所述应用层程序。

优选地,所述执行结果为所述驱动层程序返回的二进制流。

优选地,所述脚本解析模块具体用于:

将所述二进制流封装为json格式后,返回给所述应用层程序。

由上述技术方案可知,本发明提供的基于扩展操作系统内核的应用层编程方法及系统,将常见的驱动层程序进行封装,应用层程序可以通过脚本语言调用驱动层程序,不需要开发人员开发驱动层程序,提高软件开发效率。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。

图1为实施例一提供的应用层编程方法的流程图。

图2为实施例二提供的应用层编程系统的框架流程图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

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

实施例一:

一种基于扩展操作系统内核的应用层编程方法,参见图1,包括以下步骤:

S1:接收来自应用层程序的预执行脚本;

S2:对所述预执行脚本进行检查,以获得检查结果;

S3:如果检查结果为通过时,对所述预执行脚本进行序列化,以得到预执行MAP格式文件;

S4:根据所述预执行MAP格式文件调用驱动层程序库中对应的驱动层程序;

S5:接收所述驱动层程序返回的执行结果;

S6:将所述执行结果返回给所述应用层程序。

具体地,预执行脚本可以是在预先定义的多个脚本中选择得到,或者是通过直接定义得到。应用层程序在开发过程中,如果需要调用驱动层程序,可以获取对应的预执行脚本。然后对与执行脚本进行检查,检查过程包括对所述预执行脚本进行安全性检查和脚本合规性检查。其中脚本合规则性检查是指对脚本的语法、函数、类的常规检查,相当于一般程序编译检查。安全性检查是对脚本的调用者进行安全性检查,相当于开发者证书的颁发。

如果预执行脚本通过了安全性检查和脚本合规性检查,对所述预执行脚本进行序列化,以得到预执行MAP格式文件。其中序列化是将对象的状态信息转换为可以存储或传输的形式的过程。当序列化完成后,根据预执行MAP格式文件调用驱动层程序库中对应的驱动层程序;如果驱动层程序调用失败时,可以向应用层程序返回调用失败。如果驱动层程序调用成功时,执行驱动层程序,获取驱动层程序输出的执行结果,将执行结果返回给所述应用层程序,这样开发者使用时,不需要开发驱动层程序,应用层程序就可以处理操作系统提供的数据。

例如开发者A需要获取操作系统的文件读写信息,传统方法需要写一个驱动层程序来解决。开发者B需要获取DNS解析的信息,传统方法需要写一个驱动层程序来解决。开发者C需要获取操作系统线程信息传统方法需要写一个驱动层程序来解决。而该应用层编程方法将操作系统接口数据封装成组件,通过脚本语言调用,方便快捷。降低了驱动层程序的开发门槛,而且还能保持操作系统对于进程、线程等事件的监控注册的限制。

该基于扩展操作系统内核的应用层编程方法,将常见的驱动层程序进行封装,应用层程序可以通过脚本语言调用驱动层程序,不需要开发人员开发驱动层程序,提高软件开发效率,降低了程序故障率,让操作系统持续并稳定地提供服务。

优选地,该方法在所述获得检查结果之后,还包括:

如果检查结果为不通过时,生成检查不通过指令;

将所述检查不通过指令返回给所述应用层程序。

具体地,如果预执行脚本未能通过安全性检查和脚本合规性检查,那么可以生成检查不通过指令返回给所述应用层程序,向应用层程序告知驱动层程序调用失败。

优选地,所述执行结果为所述驱动层程序返回的二进制流。

具体地,驱动层程序执行完后会输出二进制流,作为执行结果。

优选地,所述脚本解析模块具体用于:

将所述二进制流封装为json格式后,返回给所述应用层程序。

具体地,为了方便应用层程序识别,该方法还将执行结果转换为json格式后,再返回给应用层程序。

实施例二:

一种基于扩展操作系统内核的应用层编程系统,所述应用层编程系统加载在操作系统中;参见图2,所述应用层编程系统包括:

脚本解析模块:用于接收来自应用层程序的预执行脚本,对所述预执行脚本进行检查,以获得检查结果;如果检查结果为通过时,对所述预执行脚本进行序列化,以得到预执行MAP格式文件;所述脚本解析模块还用于将执行结果返回给所述应用层程序;

核心处理模块:与所述脚本解析模块连接;所述核心处理模块用于根据所述预执行MAP格式文件调用内核交互模块中对应的驱动层程序;所述核心处理模块还用于将执行结果返回给脚本解析模块;

内核交互模块:与所述核心处理模块连接;所述内核交互模块用于设有存储有多个驱动层程序的驱动层程序库;所述内核交互模块用于接收所述驱动层程序返回的执行结果,并将所述执行结果返回给核心处理模块。

具体地,开发者使用前,先在操作系统上安装该应用层编程系统,应用层编程系统支持通过脚本语言调用驱动层程序,实现驱动层程序与应用层程序的交互。应用层编程系统包括脚本解析模块、核心处理模块和内核交互模块。

开发者在应用层程序中调用脚本,传递给脚本解析模块,脚本解析模块对预执行脚本进行安全性检查和脚本合规性检查,检查不通过返回检查不通过指令给应用层程序,检查通过后,解析预执行脚本,生成私有的预执行MAP格式文件,并传递给核心处理模块。核心处理模块收到MAP格式文件后,调用内核交互模块,如果驱动层程序调用失败后,将返回值返回给应用层程序。如果驱动层程序调用成功,接收驱动层程序输出的二进制流,并通过脚本解析模块解析成json格式,返回给应用层程序。

该基于扩展操作系统内核的应用层编程系统,将常见的驱动层程序进行封装,应用层程序可以通过脚本语言调用驱动层程序,不需要开发人员开发驱动层程序,提高软件开发效率,降低了程序故障率,让操作系统持续并稳定地提供服务。

优选地,所述脚本解析模块具体用于:

对所述预执行脚本进行安全性检查和脚本合规性检查。

优选地,所述脚本解析模块还用于:

如果检查结果为不通过时,生成检查不通过指令;

将所述检查不通过指令返回给所述应用层程序。

优选地,所述执行结果为所述驱动层程序返回的二进制流。

优选地,所述脚本解析模块具体用于:

将所述二进制流封装为json格式后,返回给所述应用层程序。

例如:如果开发者想要在应用层程序中获取操作系统当前用户的TCP/IP连接信息,包括以下步骤:

1、写一个Braise脚本,脚本名称定义:GettcpipAnalyse();

2、应用层程序读取脚本GettcpipAnalyse(),并将脚本GettcpipAnalyse()发给脚本解析模块;

3、脚本解析模块将收到的脚本解析成Map格式文件,并发送给核心处理模块;

4、核心处理模块收到Map格式文件后,调用内核交互模块,告诉内核交互模块需要获取TCP/IP连接信息;

5、内核交互模块注册操作系统事件回调,获取到TCP/IP连接信息;

6、内核交互模块用二进制流的方式,返回TCP/IP连接信息给核心处理模块;

7、核心处理模块收到二进制流的TCP/IP连接信息,并转发给脚本解析模块;

8、脚本解析模块收到二进制流的TCP/IP连接信息,封装成json格式,返回给调用的应用层程序;

9、应用层程序收到json格式数据,解析得到TCP/IP连接信息。

本发明实施例所提供的系统,为简要描述,实施例部分未提及之处,可参考前述实施例中相应内容。

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

相关技术
  • 一种基于扩展操作系统内核的应用层编程方法及系统
  • 基于TEE扩展的操作系统内核强制访问控制方法及系统
技术分类

06120113694127