用于嵌入式操作系统的内核对象访问方法和装置与流程

文档序号:17644478发布日期:2019-05-11 00:54阅读:260来源:国知局
用于嵌入式操作系统的内核对象访问方法和装置与流程
本发明属于计算机领域,具体涉及一种用于嵌入式操作系统的内核对象访问方法和装置。
背景技术
:嵌入式操作系统(embeddedoperatingsystem)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。其中,内核是一个操作系统的核心,其可以为操作系统提供最基本的功能。现有的嵌入式操作系统设计中,为了减少系统本身的开销,往往将一些与硬件紧密相关的(如中断处理程序、设备驱动程序等)、基本的、公共的、关键的、运行频率较高的数据模块(如时钟管理、进程调度等)独立出来,使之常驻内存,并对其进行保护。进一步来讲,内核对象就是在内核中分配和管理的内存中的数据。内核对象具备数据结构,该数据结构的成员负责维护该内核对象的各种信息。操作系统创建和操作多种类型的内核对象,例如:存取符号对象、事件对象、文件对象、文件映射对象、i/o完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象、信标对象、线程对象和等待计时器对象等。在现有技术中,嵌入式操作系统可以被分为多个子系统,例如,驱动子系统、线程同步子系统、用户子系统、图形子系统等,每个子系统均包括多个内核对象,同时,不同子系统对内核对象的访问权限不同。一般的,将公用的内核对象划分到用户子系统中,即任意子系统都具有用户子系统中内核对象的访问权限,而将非公用的内核对象划分到其对应的功能子系统中,以保持其独立性和安全性,即用户子系统不具有对其他功能子系统中内核对象的访问权限,进而导致开发人员对系统的开发效率降低。技术实现要素:针对在现有技术中,由于嵌入式操作系统中的用户子系统仅能访问属于用户子系统的内核对象,无法访问各功能子系统中的内核对象,使得系统的开发效率较低的技术问题,本发明提供了一种用于嵌入式操作系统的内核对象访问方法和装置。其中,所述方法包括:响应于通过用户子系统发出的内核对象访问请求,根据待访问内核对象的对象名称,查找所述待访问内核对象所属的功能子系统的路径链接;访问在所述路径链接对应的第一路径下的待访问内核对象。本发明实施例通过在用户子系统中增加用于访问其他功能子系统中内核对象的路径链接,以使用户子系统具备访问其他功能子系统中内核对象的权限,进而提高开发人员对系统的开发效率。为了达到上述目的,本发明的技术方案是这样实现的:第一方面,本发明实施例提供了一种内核对象访问方法,所述方法包括:响应于通过用户子系统发出的内核对象访问请求,根据待访问内核对象的对象名称,查找所述待访问内核对象所属的功能子系统的路径链接;访问在所述路径链接对应的第一路径下的待访问内核对象。在上述实施例的基础上,所述响应于通过用户子系统发出的内核对象访问请求,根据待访问内核对象的对象名称,查找所述待访问内核对象所属的功能子系统的路径链接之前,还包括:在所述用户子系统的路径下,预先创建可授权访问的内核对象所在的路径链接。在上述实施例的基础上,所述响应于通过用户子系统发出的内核对象访问请求,根据待访问内核对象的对象名称,查找所述待访问内核对象所属的功能子系统的路径链接之前,还包括:响应于应用程序的运行指令,在用户子系统中初始化用户进程,并为所述用户进程分配内核对象句柄表;其中,所述用户进程用于运行所述用户程序;所述内核对象句柄表用于记录在所述用户进程中所打开的内核对象句柄;对应的,所述访问在所述路径链接对应的第一路径下的待访问内核对象,包括:在所述内核对象句柄表中,加入所述待访问内核对象的句柄;返回所述句柄的索引值至所述用户程序;基于所述内核对象链接访问所述待访问内核对象。在上述实施例的基础上,所述方法还包括:销毁所述内核对象句柄表。在上述实施例的基础上,所述方法还包括:当所述待访问内核对象属于所述用户子系统时,在所述用户子系统中查找所述待访问内核对象所在的第二路径;访问所述第二路径下的所述待访问内核对象。第二方面,本发明实施例提供了一种用于嵌入式操作系统的内核对象访问装置,所述装置包括:判断模块,用于根据待访问内核对象的对象名称,判断所述访问内核对象是否属于所述用户子系统;第一查找模块,用于响应于通过用户子系统发出的内核对象访问请求,根据待访问内核对象的对象名称,查找所述待访问内核对象所属的功能子系统的路径链接;第一访问模块,用于访问在所述路径链接对应的第一路径下的待访问内核对象。在上述实施例的基础上,所述装置还包括:包括:路径创建模块,用于在所述用户子系统的路径下,预先创建可授权访问的内核对象所在的路径链接;在上述实施例的基础上,所述装置还包括:初始化模块,用于响应于应用程序的运行指令,在用户子系统中初始化用户进程,并为所述用户进程分配内核对象句柄表;其中,所述用户进程用于运行所述用户程序;所述内核对象句柄表用于记录在所述用户进程中所打开的内核对象句柄;对应的,第一访问模块包括:句柄增加单元,用于在所述内核对象句柄表中,加入所述待访问内核对象的句柄;索引值返回单元,用于返回所述句柄的索引值至所述用户程序;访问单元,用于基于所述内核对象链接访问所述待访问内核对象。在上述实施例的基础上,所述装置还包括销毁模块,用于销毁所述内核对象句柄表。在上述实施例的基础上,所述装置还包括第二查找模块,用于当所述待访问内核对象属于所述用户子系统时,在所述用户子系统中查找所述待访问内核对象所在的第二路径;第二访问模块,用于访问所述第二路径下的所述待访问内核对象。第三方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被执行以实现本发明实施例所述的内核对象访问方法步骤。本发明实施例提供的技术方案具有以下有益效果:利用上述技术方案解决了在现有技术中,由于嵌入式操作系统中的用户子系统仅能访问属于用户子系统的内核对象,无法访问各功能子系统中的内核对象,使得系统的开发效率较低的技术问题。本发明实施例通过在用户子系统中增加用于访问其他功能子系统中内核对象的路径链接,使得用户子系统具备访问其他功能子系统中内核对象的权限,进而提高开发人员对系统的开发效率。应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举说明本发明的具体实施方式。附图说明通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文所述的有点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:图1为根据本发明一实施例的一种用于嵌入式操作系统的内核对象访问方法流程示意图;图2为根据本发明又一实施例的一种用于嵌入式操作系统的内核对象访问方法流程示意图;图3为根据本发明一实施例的一种用于嵌入式操作系统的内核对象访问方法装置的示意图;图4示出了根据本发明实施例的计算机可读存储介质的示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。在本发明中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。本实施例中所述的内核对象可以理解为是操作系统内核中进行资源分配和管理的一种数据结构,其只能由操作系统内核访问。本实施例中所述的进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。即,进程就是应用程序的执行过程。具体的,每一个应用程序的执行操作都需要进程来承载。在一些实施例中,进程句柄表仅供内核对象使用。它只是一个由数据结构组成的数组;具体的,每个数据结构均包含一个指向一个内核对象的指针、一个访问掩码和一些标志。在另外一些实施例中,进程首次初始化的时候,其对应的进程句柄表为空,当线程调用内核对象的创建函数来创建内核对象时,内核将对进程句柄表进行初始化。对应的,创建函数会返回一个与该进程相关的句柄,该句柄可以由处于一个进程中运行的所有线程使用。更为具体的,当用户子系统需要获取一个内核对象的句柄作为参数时,这个函数会首先查找进程的进程句柄表,以获得目标内核对象地址,然后根据目标内核对象地址来操纵内核对象的数据结构。本实施例中,专有命名空间相当于可供我们在其中创建内核对象的目录,该目录包括多个内核对象的存储路径。和其他目录一样,专有命名空间还具有一个和它相关联的安全描述符,这个描述符是在创建专有命名空间的时候设置的。下面将具体介绍本发明实施例中的用于嵌入式操作系统的内核对象访问方法,请参阅图1,图1示出了本发明一实施例的一种用于嵌入式操作系统的内核对象访问方法流程示意图。应当理解的是,本发明实施例的方法的执行主体可以是安装有嵌入式操作系统的智能设备。具体来说,本发明实施例的方法包括:s110、响应于通过用户子系统发出的内核对象访问请求,根据待访问内核对象的对象名称,查找所述待访问内核对象所属的功能子系统的路径链接。其中,内核对象访问请求由用户通过点击用户子系统下的内核对象发出,待访问内核对象即当前时刻需要访问的内核对象,每一个内核对象都有其对应的对象名称,本实施例中所述的待访问内核对象可以是嵌入式操作系统中除用户子系统之外的任意功能子系统中的任意内核对象。本实施例将根据待访问内核对象的对象名称完成对待访问内核对象的访问。待访问内核对象的对象名称可以是在内核对象访问请求中携带的,或者是通过其它单独途径传递而获得的,这在以下实施例中亦是如此。命名空间也称名称空间、名字空间,英文名称为namespace。最初命名空间是为了解决相同作用域下的命名问题,即使用命名空间可以在不同的空间下使用相同的变量、函数或类的名称。而在嵌入式操作系统中,通过使用命名空间为嵌入式操作系统下的多个子系统进行命名,可以为各个子系统划定不同的范围,从而相应的限定了不同的权限。即,用户子系统中的进程不能直接访问非用户子系统下的内核对象,而只能访问自己命名空间下的内核对象。进一步的,所述使用命名空间为操作系统下的用户子系统的根名称命名为/usr。由于对内核对象的具体应用不同,嵌入式操作系统的子系统的划分也各不相同,例如:子系统可以包括:驱动子系统、线程同步子系统、用户子系统、图形子系统等。在一些实施例中,不同子系统对内核对象的访问权限不同。一般的,将公用的内核对象划分到用户子系统中,即任意子系统都具有用户子系统中内核对象的访问权限;而将非公用的内核对象划分到其对应的功能子系统中,即用户子系统不具有对其他功能子系统中内核对象的访问权限。可以选择的,本实施例在对待访问内核对象的访问之前,可以首先根据的预先设定的命名空间来判断,所述访问内核对象是否属于所述用户子系统。本实施例中,所述用户子系统下的内核对象包括:事件对象、文件对象、作业对象、信箱对象、进程对象、线程对象、非用户子系统中的内核对象在用户子系统下的链接等。用户子系统通过访问非用户子系统中的内核对象在用户子系统下的链接来访问所述非用户子系统中的该内核对象。其中,上述用户子系统下的内核对象的根名称均为/usr。所述路径链接可以理解为从用户子系统进入到各功能子系统的便捷路径,进而使用户子系统可以访问到各功能子系统中的内核对象。在一种可能的实现方式中,所述路径链接可以与所述待访问内核对象所在功能子系统的路径具备映射关系,当用户触发该路径链接时,该实现方式可以基于该映射关系访问到待访问内核对象所在功能子系统的绝对路径(或相对路径),然后通过对象名称来完成对该待访问内核对象的访问。例如,当绝对路径为d:b/c的a功能子系统中包括对象名称为1.xx的内核对象,则待访问内核对象所在的绝对路径为d:b/c/1.xx,当用户子系统中的路径链接d:b/c/1.xx与绝对路径d:b/c/1.xx建立了映射关系时,用户就可以通过触发该路径链接d:b/c/1.xx访问到待访问内核对象所在的绝对路径d:b/c/1.xx,从而访问到该待访问内核对象1.xx。本实施例中,开发人员可以在用户子系统中,为需要被访问到的功能子系统,预先设置分别对应的路径链接,进而可以使用户子系统具备访问所有功能子系统的权限,进而可以访问到全部功能子系统的内核对象。本实施例中嵌入式操作系统中包括的不同子系统的根名称不同,进而可以根据预先设定的命名空间(例如,内核对象的根名称)来判断该内核对象是否属于用户子系统,具体的,当判断所述待内核对象的根名称不是/usr时,则判断所述待访问内核对象不属于用户子系统。s120、访问在所述路径链接对应的第一路径下的待访问内核对象。其中,所述第一路径即用户子系统通过路径链接可以访问到的路径,同时,所述第一路径也是所述待访问内核对象所在的路径。在本实施例中,所述第一路径中可以包括多个对象名称,但各内核对象的对象名称不同,因此可以根据内核对象的对象名称来确定第一路径中的待访问对象,并完成访问。本发明实施例通过响应于通过用户子系统发出的内核对象访问请求,根据待访问内核对象的对象名称,查找所述待访问内核对象所属的功能子系统的路径链接;访问在所述路径链接对应的第一路径下的待访问内核对象。本发明实施例通过在用户子系统中增加用于访问其他功能子系统中内核对象的路径链接,以使用户子系统具备访问其他功能子系统中内核对象的权限,进而提高开发人员对系统的开发效率。不同于上述实施例,本实施例将详细描述访问所述与路径链接对应的第一路径下的待访问内核对象的过程,下面结合图2进一步描述本发明实施例,图2为根据本发明又一实施例的一种用于嵌入式操作系统的内核对象访问方法流程示意图,如图2所示,所述内核对象访问方法包括:s210、在所述用户子系统的路径下,预先创建可授权访问的内核对象所在的路径链接。本实施例预先确定各功能子系统中的内核对象,那些应该被设定为需要访问到的内核对象,进而在用户子系统下创建这些内核对象所在路径的路径链接。s220、响应于应用程序的运行指令,在用户子系统中初始化用户进程,并为所述用户进程分配内核对象句柄表。其中,所述用户进程用于运行所述用户程序;所述内核对象句柄表用于记录在所述用户进程中所打开的内核对象句柄。本实施例中,所述进程被初始化时,为所述进程分配对应的内核对象句柄表。具体的,当一个进程被初始化时,操作系统要为该进程分配一个内核对象句柄表。该内核对象句柄表只用于内核对象的访问。进一步的,所述内核对象句柄表包括空位和句柄,或者仅包括空位,所述空位和句柄均包括索引和索引对应值;其中,所述空位的索引的值为空位的值,所述空位的索引对应值为空,所述句柄的索引的值为句柄的值,所述句柄的索引对应值为内核对象的引用。s230、响应于通过用户子系统发出的内核对象访问请求,根据待访问内核对象的对象名称,查找所述待访问内核对象所属的功能子系统的路径链接。s240、根据待访问内核对象的对象名称,在所述内核对象句柄表中,加入所述待访问内核对象的句柄。表1索引内核对象地址标志10xf00000040x0000000020xf00000080x0000000430xf00000120x00000000在一种可能的实现方式中,如表1所示,句柄表中的每一个句柄对应于表中的一行,且可以包括索引、内核对象地址和标志三个字段,其中,索引为句柄标识值,在对句柄表的访问过程中,可以通过要访问句柄的索引来完成对该句柄的访问,内核地址即内核对象的存储地址,标志用于标识相应句柄是否可以被子进程继承,例如,标志为0x00000000的句柄可以被子进程继承,而标志为0x00000004的句柄不可以被子进程继承。在一种可能的实现方式中,当接收到对某一内核对象的访问请求时,可以先根据访问请求中携带的要访问的句柄的索引,确定用于存储对应于要访问的句柄的内核对象的地址,进而根据该地址完成对内核对象的访问。例如,访问请求中携带的要访问的句柄的索引为1时,对应于要访问的句柄的内核对象的地址为0xf0000004,此时对存储地址为0xf0000004的存储区域完成对要访问的内核对象的访问。在一种可能的实现方式中,所述句柄表的数据结构可以为一个数组。当所述句柄表刚被分配给进程时,其仅包括空位;当所述句柄表已经被用于访问内核对象时,其包括索引值以及每个指向内核对象内存块的指针,其中索引值为所述被访问的内核对象的引用。句柄表可以包括固定大小的句柄表或者可动态扩充大小的句柄表。实际应用中,可动态扩充大小的句柄表较为常用,因为其更加节省内存空间。本实施例中,用户子系统在初次访问待访问内核对象时,会在内核对象句柄表中加入所述待访问内核对象的句柄,便于在之后的访问过程中,可以根据所述内核对象句柄表中的信息就可以便捷的访问到内核对象。s250、返回所述句柄的索引值至所述用户程序。本实施例中将句柄的索引值返回至所述用户程序的目的在于,可以使用户程序可以便捷访问到与句柄的索引值对应的内核对象。具体的,在所述用户子系统中,当所述进程需要访问所述内核对象的时候,接收所述进程使用所述内核对象的名字提出的访问请求;根据所述访问请求在所述用户子系统中找到与所述内核对象的名字对应的所述内核对象;在与所述进程对应的所述句柄表中按照从前往后的顺序找到第一个空位,设置所述空位的索引对应值为所述内核对象的引用,将所述空位的索引返回给所述进程;令所述进程使用所述索引对所述内核对象进行访问。s260、基于所述内核对象链接访问所述待访问内核对象。s270、当所述待访问内核对象属于所述用户子系统时,在所述用户子系统中查找所述待访问内核对象所在的第二路径。其中,本实施例所述的第二路径,即用户子系统中包括的内核对象所在的路径,为了技术方案的完整性,本实施例增加了用户子系统对其内部的内核对象访问过程。s280、访问所述第二路径下的所述待访问内核对象。s290、销毁所述内核对象句柄表。具体的,每个进程都需要操作系统分配一个对应的句柄表。通常在进程结束的时候,需要用户通过指令关闭句柄表。如果用户没有关闭句柄表,则当退出进程的时候,操作系统会将该句柄表销毁,从而可以有效的避免内存泄露。本发明实施例通过响应于通过用户子系统发出的内核对象访问请求,根据待访问内核对象的对象名称,查找所述待访问内核对象所属的功能子系统的路径链接;访问在所述路径链接对应的第一路径下的待访问内核对象。本发明实施例通过在用户子系统中增加用于访问其他功能子系统中内核对象的路径链接,以使用户子系统具备访问其他功能子系统中内核对象的权限,进而提高开发人员对系统的开发效率。下面结合图3描述用于实现上述用于嵌入式操作系统的内核对象访问装置。如图3所示,示出了根据本发明又一实施例的用于嵌入式操作系统的内核对象访问装置的示意图。该内核对象访问装置包括:第一查找模块310和第一访问模块320。其中,第一查找模块310,用于响应于通过用户子系统发出的内核对象访问请求,根据待访问内核对象的对象名称,查找所述待访问内核对象所属的功能子系统的路径链接;第一访问模块320,用于访问在所述路径链接对应的第一路径下的待访问内核对象。利用上述技术方案解决了在现有技术中,由于嵌入式操作系统中的用户子系统仅能访问属于用户子系统的内核对象,无法访问各功能子系统中的内核对象,使得系统的开发效率较低的技术问题。本发明实施例通过在用户子系统中增加用于访问其他功能子系统中内核对象的路径链接,以使用户子系统具备访问其他功能子系统中内核对象的权限,进而提高开发人员对系统的开发效率。在上述实施例的基础上,所述装置还包括:路径创建模块,用于在所述用户子系统的路径下,预先创建可授权访问的内核对象所在的路径链接。在上述实施例的基础上,所述装置还包括:初始化模块,用于响应于应用程序的运行指令,在用户子系统中初始化用户进程,并为所述用户进程分配内核对象句柄表;其中,所述用户进程用于运行所述用户程序;所述内核对象句柄表用于记录在所述用户进程中所打开的内核对象句柄;对应的,第一访问模块包括:句柄增加单元,用于在所述内核对象句柄表中,加入所述待访问内核对象的句柄;索引值返回单元,用于返回所述句柄的索引值至所述用户程序;访问单元,用于基于所述内核对象链接访问所述待访问内核对象。在上述实施例的基础上,所述装置还包括:销毁模块,用于销毁所述内核对象句柄表。在上述实施例的基础上,第二查找模块,用于当所述待访问内核对象属于所述用户子系统时,在所述用户子系统中查找所述待访问内核对象所在的第二路径;第二访问模块,用于访问所述第二路径下的所述待访问内核对象。根据本发明的又一实施例,还提供了一种计算机可读存储介质。如图4所示,示出了根据本发明一实施例的计算机可读存储介质400的示意图,该计算机可读存储介质上存储有计算机指令,该计算机指令被处理器执行时实现如上所述的用于嵌入式操作系统的内核对象访问方法。该计算机可读存储介质400可以采用便携式紧凑盘只读存储器(cd-rom)。然而,本发明的计算机可读存储介质400不限于此,在本文件中,计算机可读存储介质可以是任何包含或存储计算机指令的有形介质。利用上述技术方案解决了在现有技术中,由于嵌入式操作系统中的用户子系统仅能访问属于用户子系统的内核对象,无法访问各功能子系统中的内核对象,使得系统的开发效率较低的技术问题。本发明实施例通过使用命名空间为嵌入式操作系统下的用户子系统和多个功能子系统进行命名,为各个子系统划定了不同的范围,从而提高了程序的开发效率。附图中的流程图和框图,图示了按照本公开各种实施例的方法、装置和计算机可读存储介质的可能实现的体系架构、功能和操作。应当注意,流程图中的每个方框所表示的步骤未必按照标号所示的顺序进行,有时可以基本并行地执行,有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的硬件来实现,或者可以用硬件与计算机指令的组合来实现。描述于本公开实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。通过以上对实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1