用于系统服务的权能管理方法、权能管理方法及装置与流程

文档序号:14072904阅读:324来源:国知局

本申请涉及权能管理技术,具体涉及一种用于系统服务的权能管理方法及装置。本申请同时涉及一种用于运行程序的方法及装置,一种权能管理方法及装置,一种操作系统,以及一种电子设备。



背景技术:

支撑各种电子设备正常工作的软件系统中,例如:基于linux的android系统、yunos系统等,通常会运行一些系统服务,通常情况下这些系统服务需要执行某些需要特殊权能才可进行的操作,因此需要一套权能管理机制。

从linux2.2版本的内核开始,linux系统底层提供了一套权能(capability)机制,该机制将进程可以享有的各种特权划分为若干权能,不同的权能可以独立的启用或关闭,内核则根据运行系统服务程序的进程(简称系统服务进程)拥有的权能来进行特权操作的访问控制。不同系统采用的权能管理方式也不完全相同,例如:在android系统中,由系统服务程序自身在源代码中配置和管理权能;在有的桌面系统(例如linux)中,则在执行用于运行系统服务程序的exec操作或者类似操作时,由内核根据系统服务程序对应的可执行文件的文件权能和进程的现有权能计算执行exec操作或者类似操作后的进程权能。

上述权能管理方式存在以下缺陷:

1)android的系统服务权能管理机制实际上将权能的分配和管理交给了各个系统服务程序自身,容易造成权能管理的混乱,并且系统服务程序在进行权能分配时还存在一定的安全隐患。

2)在执行exec操作时计算进程权能的方式,由于需要依赖系统服务程序所对应的可执行文件的文件权能,同样容易造成权能管理的混乱,而且由于可执行文件易被攻击,也存在安全风险。



技术实现要素:

本申请实施例提供一种用于系统服务的权能管理方法和装置,以解决现有技术由于没有对系统服务权能进行集中管理、造成的权能管理混乱以及存在安全隐患的问题。本申请实施例还提供一种用于运行程序的方法和装置,一种权能管理方法和装置,以及一种操作系统。

本申请提供一种用于系统服务的权能管理方法,包括:

创建用于运行系统服务程序的系统服务进程;

根据所述系统服务程序的权能配置信息设置所述系统服务进程的权能;

内核接收所述系统服务进程发送的运行所述系统服务程序的请求后,并在确认所述系统服务进程已被设置权能后,将所述系统服务程序对应的可执行文件加载到所述系统服务进程中,以使所述系统服务程序运行;其中,所述系统服务程序按所述已设置的权能运行。

可选的,所述方法由系统服务管理进程触发执行,所述系统服务管理进程包括:init进程,或者systemd进程。

可选的,在创建用于运行系统服务程序的系统服务进程之后,在内核接收所述系统服务进程发送的运行所述系统服务程序的请求之前,还包括:为所述系统服务进程设置标签;

所述确认所述系统服务进程已被设置权能,包括:确认所述系统服务进程具有所述标签。

可选的,所述为所述系统服务进程设置标签,包括:在内核数据中为所述系统服务进程设置标签。

可选的,所述在内核数据中为所述系统服务进程设置标签,包括:

所述系统服务进程向内核发送设置标签的请求;

内核接收所述请求后,在对应于所述系统服务进程的内核数据中设置标签;

相应的,所述确认所述系统服务进程具有所述标签,包括:

所述内核检查对应于所述系统服务进程的内核数据中是否已设置所述标签,并在检查结果为是时确认所述系统服务进程具有所述标签。

可选的,对应于所述系统服务进程的内核数据,包括:所述系统服务进程的进程描述符。

可选的,所述内核接收所述设置标签的请求后,还包括:

判断所述系统服务进程是否满足预设的安全性要求,并在满足时,执行所述在对应于所述系统服务进程的内核数据中设置标签的步骤、以及根据所述系统服务程序的权能配置信息设置所述系统服务进程的权能的步骤。

可选的,在所述根据所述系统服务程序的权能配置信息设置所述系统服务进程的权能之前,包括:

从所述系统服务程序的配置文件中读取权能配置信息;

所述根据所述系统服务程序的权能配置信息设置所述系统服务进程的权能,包括:根据所述已读取的权能配置信息设置所述系统服务进程的权能。

可选的,在确认所述系统服务进程具有已设置的所述标签后,在将所述系统服务程序对应的可执行文件加载到所述系统服务进程中之前,包括:

清除为所述系统服务进程设置的所述标签。

相应的,本申请还提供一种用于系统服务的权能管理装置,包括:

系统服务进程创建单元,用于创建用于运行系统服务程序的系统服务进程;

进程权能设置单元,用于根据所述系统服务程序的权能配置信息设置所述系统服务进程的权能;

系统服务加载运行单元,用于接收所述系统服务进程发送的运行所述系统服务程序的请求后,并在确认所述系统服务进程已被设置权能后,将所述系统服务程序对应的可执行文件加载到所述系统服务进程中,以使所述系统服务程序运行,其中,所述系统服务程序按所述已设置的权能运行;其中,所述系统服务加载运行单元运行在内核空间;

所述系统服务加载运行单元,包括:

运行请求接收子单元,用于接收所述系统服务进程发送的运行所述系统服务程序的请求;

权能设置确认子单元,用于在所述运行请求接收子单元接收请求后,确认所述系统服务进程已被设置权能;

加载子单元,用于将所述系统服务程序对应的可执行文件加载到所述系统服务进程中,以使所述系统服务程序运行,其中,所述系统服务程序按所述已设置的权能运行。

可选的,所述装置还包括:

标签设置单元,用于在创建用于运行系统服务程序的系统服务进程之后,在内核接收所述系统服务进程发送的运行所述系统服务程序的请求之前,为所述系统服务进程设置标签;

所述权能设置确认子单元,具体用于确认所述系统服务进程具有所述标签。

可选的,所述标签设置单元,具体用于在内核数据中为所述系统服务进程设置标签。

可选的,所述标签设置单元包括:

设置标签请求发送子单元,用于由所述系统服务进程向内核发送设置标签的请求;

设置标签请求接收子单元,用于接收所述设置标签请求发送子单元发送的请求;

内核设置标签子单元,用于在所述设置标签请求接收子单元接收请求后,在对应于所述系统服务进程的内核数据中设置标签;

所述权能设置确认子单元,具体用于检查对应于所述系统服务进程的内核数据中是否已设置所述标签,并在检查结果为是时确认所述系统服务进程具有所述标签;

其中,所述设置标签请求接收子单元、所述内核设置标签子单元、和所述权能设置确认子单元运行在内核空间。

可选的,所述标签设置单元,还包括:

安全性判断子单元,用于在所述设置标签请求接收子单元接收请求后,判断所述系统服务进程是否满足预设的安全性要求,并在满足时,触发所述内核设置标签子单元工作,在所述内核设置标签子单元工作完毕后触发所述进程权能设置单元工作。

可选的,所述装置还包括:

权能配置信息读取单元,用于在所述进程权能设置单元工作前,从所述系统服务程序的配置文件中读取权能配置信息;

所述进程权能设置单元,具体用于根据所述已读取的权能配置信息设置所述系统服务进程的权能。

可选的,所述系统服务加载运行单元,还包括:

标签清除子单元,用于在所述权能设置确认子单元确认所述系统服务进程具有所述标签后,清除为所述系统服务进程设置的所述标签,并触发所述加载子单元工作。

此外,本申请还提供一种用于运行程序的方法,包括:

接收进程发送的运行程序的请求;

当所述进程已被设置权能时,将所述程序对应的可执行文件加载到所述进程中,以使所述程序运行;其中,所述程序按所述已设置的权能运行。

可选的,所述进程已被设置权能,包括:所述进程具有表征其权能被集中管理的标签。

可选的,当所述进程具有所述标签时,在将所述程序对应的可执行文件加载到所述进程之前,还包括:

清除所述进程的所述标签。

可选的,所述方法还包括:当所述进程未被设置权能时,根据所述程序对应的可执行文件的文件权能和所述进程的权能确定新权能,用得到的新权能设置所述进程的权能;并将所述程序对应的可执行文件加载到所述进程中,以使所述程序运行;其中,所述程序按所述新权能运行。

相应的,本申请还提供一种用于运行程序的装置,包括:

运行请求接收单元,用于接收进程发送的运行程序的请求;

权能设置检查单元,用于检查所述进程是否已被设置权能;

加载运行单元,用于当所述权能设置检查单元的输出为是时,将所述程序对应的可执行文件加载到所述进程中,以使所述程序运行;其中,所述程序按所述已设置的权能运行。

可选的,所述权能设置检查单元,具体用于检查所述进程是否具有表征其权能被集中管理的标签。

可选的,所述装置还包括:

标签清除单元,用于当所述权能设置检查单元的输出为是时,清除所述进程的所述标签,并触发所述加载运行单元工作。

可选的,所述装置还包括:

权能计算设置单元,用于当所述权能设置检查单元的输出为否时,根据所述程序对应的可执行文件的文件权能和所述进程的权能确定新权能,用得到的新权能设置所述进程的权能,并触发加载运行单元工作;

所述加载运行单元,还用于当所述权能设置检查单元的输出为否时,在权能计算设置单元的触发下,将所述程序对应的可执行文件加载到所述进程中,以使所述程序运行;其中,所述程序按所述新权能运行。

此外,本申请还提供一种权能管理方法,包括:

创建用于运行程序的第一进程;

根据所述程序的权能配置信息设置所述第一进程的权能;

内核接收所述第一进程发送的运行所述程序的请求后,并在确认所述第一进程已被设置权能后,将所述程序对应的可执行文件加载到所述第一进程中,以使所述程序运行;其中,所述程序按所述已设置的权能运行。

可选的,所述方法由负责管理系统服务进程及应用进程的第二进程触发执行,所述第二进程包括:init进程、或者systemd进程。

可选的,在创建用于运行程序的第一进程之后,在内核接收所述第一进程发送的运行所述程序的请求之前,还包括:为所述第一进程设置标签;

所述确认所述第一进程已被设置权能,包括:确认所述第一进程具有所述标签。

可选的,所述为所述第一进程设置标签,包括:在内核数据中为所述第一进程设置标签。

可选的,在根据所述程序的权能配置信息设置所述第一进程的权能之前,包括:

从所述程序的配置文件中读取权能配置信息;

所述根据所述程序的权能配置信息设置所述第一进程的权能,包括:根据所述已读取的权能配置信息设置所述第一进程的权能。

可选的,所述程序包括:系统服务程序、或者应用程序。

相应的,本申请还提供一种权能管理装置,包括:

进程创建单元,用于创建用于运行程序的第一进程;

权能设置单元,用于根据所述程序的权能配置信息设置所述第一进程的权能;

程序加载运行单元,用于接收所述第一进程发送的运行所述程序的请求后,并在确认所述第一进程已被设置权能后,将所述程序对应的可执行文件加载到所述第一进程中,以使所述程序运行,其中,所述程序按所述已设置的权能运行;其中,所述程序加载运行单元运行在内核空间;

所述程序加载运行单元,包括:

请求接收子单元,用于接收所述第一进程发送的运行所述程序的请求;

权能确认子单元,用于在所述请求接收子单元接收请求后,确认所述第一进程已被设置权能;

程序加载子单元,用于将所述程序对应的可执行文件加载到所述第一进程中,以使所述程序运行,其中,所述程序按所述已设置的权能运行。

可选的,所述装置还包括:标签设置单元,用于在创建用于运行程序的第一进程之后,在内核接收所述第一进程发送的运行所述程序的请求之前,为所述第一进程设置标签;

所述权能确认子单元,具体用于确认所述第一进程具有所述标签。

可选的,所述标签设置单元,具体用于在内核数据中为所述第一进程设置标签。

可选的,所述装置还包括:

权能配置信息读取单元,用于在所述权能设置单元工作前,从所述程序的配置文件中读取权能配置信息;

所述权能设置单元,具体用于根据所述已读取的权能配置信息设置所述第一进程的权能。

此外,本申请还提供一种操作系统,包括:

服务进程创建单元,用于在接收系统服务管理进程的请求后,创建用于运行系统服务程序的系统服务进程;

服务进程权能设置单元,用于在接收系统服务进程的请求后,根据所述系统服务程序的权能配置信息设置所述系统服务进程的权能;

服务程序加载运行单元,用于在接收所述系统服务进程发送的运行所述系统服务程序的请求后,确认所述系统服务进程已被设置权能,并将所述系统服务程序对应的可执行文件加载到所述系统服务进程中,以使所述系统服务程序运行;其中,所述系统服务程序按所述已设置的权能运行。

此外,本申请还提供一种电子设备,包括:

处理器;

存储器,用于存储计算机程序代码;

其中,所述处理器耦合于所述存储器,用于读取所述存储器存储的计算机程序代码,并执行如下操作:

创建用于运行系统服务程序的系统服务进程;根据所述系统服务程序的权能配置信息设置所述系统服务进程的权能;内核接收所述系统服务进程发送的运行所述系统服务程序的请求后,并在确认所述系统服务进程已被设置权能后,将所述系统服务程序对应的可执行文件加载到所述系统服务进程中,以使所述系统服务程序运行;其中,所述系统服务程序按所述已设置的权能运行。

与现有技术相比,本申请具有以下优点:

本申请提供的用于系统服务的权能管理方法,首先创建用于运行系统服务程序的系统服务进程;随后根据所述系统服务程序的权能配置信息设置所述系统服务进程的权能;当内核接收所述系统服务进程发送的运行请求后,并在确认所述系统服务进程已被设置权能后,将所述系统服务程序对应的可执行文件加载到所述系统服务进程中,以使所述系统服务程序运行;其中,所述系统服务程序按所述已设置的权能运行。

采用本申请提供的上述方法,在运行系统服务程序之前为系统服务进程设置权能,而不是由系统服务程序运行后自行设置;并且在内核接收运行系统服务程序的请求后,由于确认系统服务进程已被设置权能,因此保持已为所述进程设置的权能,而不再根据系统服务程序对应的可执行文件重新计算权能。从而为系统服务权能管理提供了统一的入口,避免了由各系统服务程序自行设置权能、或者依赖可执行文件的文件权能所引起的权能管理混乱,从而为系统的安全运转提供保障。在具体实施时,本方法可以由负责管理系统服务的进程,例如:init或者systemd或者其他系统服务管理进程触发执行,从而实现这些进程对系统服务权能的集中管理。

附图说明

图1是本申请的一种用于系统服务的权能管理方法的实施例的流程图;

图2是本申请实施例提供的为系统服务进程设置标签以及权能的处理流程图;

图3是本申请实施例提供的系统服务权能管理的具体例子的示意图;

图4是本申请的一种用于系统服务的权能管理装置的实施例的示意图;

图5是本申请的一种用于运行程序的方法的实施例的流程图;

图6是本申请的一种用于运行程序的装置的实施例的示意图;

图7是本申请的一种权能管理方法的实施例的流程图;

图8是本身请的一种权能管理装置的实施例的示意图;

图9是本申请的一种操作系统的实施例的示意图;

图10是本申请的一种电子设备的实施例的示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。

在本申请中,分别提供了一种用于系统服务的权能管理方法及装置,一种用于运行程序的方法及装置,一种权能管理方法及装置,一种操作系统,以及一种电子设备。在下面的实施例中逐一进行详细说明。在对实施例进行描述之前,先对本申请的技术方案作简要说明。

在本申请的技术方案中,所述权能(capability)是指执行特定操作的能力,不同的权能对应于不同的操作能力,例如:权能cap_sys_module表示能够加载(或卸载)内核模块的操作能力,而cap_setuid表示能够修改进程用户身份的操作能力。

在支撑各种电子设备正常工作的软件系统中,系统服务的主要作用是为整个系统的正常运作提供各种支持,不同的系统服务通常需要具有相应权能才能实现其功能。现有的系统服务权能管理方式,或者将权能管理权利交给各个系统服务程序自身,或者在运行系统服务程序时,由内核根据系统服务程序对应的可执行文件的文件权能计算并设置系统服务的权能,上述方式本质上都属于对系统服务权能的分散管理,容易造成权能管理混乱,而且存在安全隐患。

针对现有技术存在的上述问题,本申请提供的用于系统服务的权能管理方法,在需要启动系统服务时,一方面在运行系统服务程序之前根据系统服务程序的权能配置信息为系统服务进程设置权能;另一方面在内核接收运行系统服务程序的请求后,在确认所述系统服务进程已被设置权能后,保持所述已设置的权能,即:不再根据系统服务程序对应的可执行文件重新计算权能。相当于为系统服务权能管理提供了统一的入口,从而避免了权能管理混乱,为系统的安全运转提供保障。

在具体实施时,本申请提供的方法可以由负责管理系统服务的进程(即:本申请所述的系统服务管理进程)触发执行,所述系统服务管理进程可以为系统初始化进程,例如init进程、或者systemd进程,也可以是负责管理系统服务的其他进程。当系统服务管理进程需要启动系统服务程序时(例如:在系统初始化阶段根据初始化配置信息启动系统服务程序、或者在系统运行过程中接收到启动系统服务程序的请求时),可以触发本方法的执行,从而实现系统服务管理进程对系统服务权能的集中管理。

在具体实施时,可以在设置所述系统服务进程的权能后,通过发送消息等方式通知内核或者其他负责进行权能检查的模块,以便内核或者所述负责进行权能检查的模块确认所述系统服务进程已被设置权能。作为一种简便易行的实施方式,也可以采用基于标签的方式,即:不仅为所述系统服务进程设置权能,而且还为所述系统服务进程设置标签,从而根据所述系统服务进程具有所述标签即可确认其已被设置权能。在下面的实施例中将以设置标签的方式为例,对具体实施方式进行描述。

下面对本申请提供的各个实施例进行描述。

请参考图1,其为本申请的一种用于系统服务的权能管理方法的实施例的流程图,所述方法包括如下步骤:

步骤101、创建用于运行系统服务程序的系统服务进程。

本步骤创建用于运行系统服务程序的系统服务进程。在具体实施时,可以由系统服务管理进程(例如:systemd进程或者init进程)创建用于运行系统服务程序的系统服务进程,例如:由系统服务管理进程调用fork()函数创建所述系统服务进程。通常可以将系统服务管理进程称作父进程,将其创建的系统服务进程称作子进程,该子进程是系统服务程序运行的载体,但是在本步骤中系统服务程序尚未加载运行。

步骤102、为所述系统服务进程设置标签,并根据所述系统服务程序的权能配置信息设置所述系统服务进程的权能。

本步骤根据所述系统服务程序的权能配置信息设置所述系统服务进程的权能,同时为了避免内核在加载系统服务程序时,再次对系统服务进程的权能重新进行设置,可以为所述系统服务进程设置标签,以告知内核所述系统服务进程是被纳入集中管理的,其权能在系统服务程序运行前已被设置。

在具体实施时,本步骤可以由所述系统服务进程在用户空间为自己设置标签,并根据所述系统服务程序的权能配置信息设置自己的权能。

优选地,为了保证为系统服务进程设置的标签的安全性,避免恶意进程篡改该信息,本步骤可以在内核数据中为所述系统服务进程设置标签,具体实现可以为:系统服务进程向内核发送设置标签的请求,并由内核在对应于系统服务进程的内核数据中设置标签,从而在引入标签实现对系统服务权能集中管理的同时,实现内核级的安全防护。

进一步优选地,为了进一步确保安全性,内核在设置标签时,可以对请求设置标签的进程的安全性进行检查,并为通过检查的系统服务进程设置标签。从而从内核的角度避免了为非法进程设置标签而可能带来的安全隐患。

若采用上述优选实施方式,本步骤的实施可以包括以下步骤102-1至102-4,下面结合图2作详细说明。

步骤102-1、系统服务进程向内核发送设置标签的请求。

本步骤中,系统服务进程请求内核为自己设置标签,以表明自己的权能是被集中管理的。在具体实施时,系统服务进程可以执行预先设定的系统调用函数、以请求内核为其设置标签,以基于linux的系统为例,系统服务进程可以执行prctl()函数。

步骤102-2、内核接收所述请求后,判断系统服务进程是否满足预设的安全性要求,并在满足时,执行步骤102-3。

系统服务进程在步骤102-1中向内核发送请求后,内核就会接收到该请求。例如:如果系统服务进程在用户空间调用了prctl()函数,引发系统中断,进入内核空间,内核接收请求后,可以调用相应内核函数或者例程进行处理,首先判断向其发送请求的进程是否满足预设的安全性要求。

在具体实施时,可以根据需求预先设置所述安全性要求。以基于linux的系统为例,可以预先设定安全性要求为:发送请求的进程具有root身份。由于系统服务管理进程创建的系统服务进程通常是root身份的,满足安全性要求,而其他进程(例如不是系统服务管理进程创建的进程)通常为普通用户身份,则不满足安全性要求。

此外,也可以预先设定安全性要求为:发送请求的进程在预设的白名单中。在具体实施时,可以预先设定参与权能统一管理的进程的白名单,也可以认为进程白名单中包含的进程是可以信任的、安全的进程。内核可以通过访问当前的进程上下文,获取发送请求的进程的相关信息,并与白名单进行匹配,若在白名单中,则认为发送请求的进程满足安全性要求,否则不满足。

当然,在具体实施时,可以采用上述所列方式之一,也可以将上述两种方式结合实施,或者预设其他的安全性要求并进行相应的检查,都是可以的。

在本实施例中,向内核发送请求的进程为在步骤101中由服务管理进程创建的用于运行系统服务程序的系统服务进程,并且满足预设的安全性要求,因此执行步骤102-3。

在具体应用中,如果内核判定请求设置标签的进程不满足预设安全性要求(例如:发送请求的进程不是root身份,或者不在白名单中),那么可以不为其设置标签,并且返回报错信息。采用这种方式可以保证本实施例提供的方法仅针对合法的系统服务的权能进行集中管理。

步骤102-3、内核在对应于系统服务进程的内核数据中设置标签。

内核判断出在步骤101创建的系统服务进程满足预设的安全性要求,因此在对应于系统服务进程的内核数据中设置标签,即:为系统服务进程在内核中设置标签。

通常内核会为每个进程在内核空间中分配一块内存,并在其中分别存储与各进程相关的数据,具体到本实施例,内核也会为系统服务进程分配一块内存,在其中存储与系统服务进程相关的数据,这部分数据即为本实施例所述的对应于系统服务进程的内核数据。

以基于linux的系统为例,对应于系统服务进程的内核数据可以为:系统服务进程的进程描述符(也称task_struct结构体)。所述进程描述符中可以记录系统服务进程的相关信息,例如:进程标识、进程身份等。因此,在本步骤中,内核可以在系统服务进程的进程描述符中设置标签,具体的设置过程可以为,将所述进程描述符中对应于标签的变量设置为表征所述系统服务进程具有标签的预设值。

例如,内核可以通过调用系统函数或者访问当前进程的上下文,获取向其发出设置标签请求的进程(本实施例中为步骤101创建的系统服务进程)的进程描述符指针p_task_struct,进程描述符中对应于标签的变量为m_flag,若该变量为枚举类型,有效取值包括sec_enable(表征具有标签)、和sec_disable(表征不具有标签),那么可以通过类似p_task_struct->m_flag=sec_enable;这样的语句,为该进程设置标签;同样的道理,若该变量为布尔类型,那么可以通过类似p_task_struct->m_flag=true;这样的语句,为该进程设置标签。

在上面给出的例子中,是在系统服务进程的进程描述符中设置标签,在其他实施方式中,也可以在对应于所述系统服务进程的其他形式的内核数据中设置标签,只要在后续步骤103中内核能够通过访问所述内核数据获知所述系统服务进程已设置了标签,就都是可以的。

步骤102-4、系统服务进程根据系统服务程序的权能配置信息设置自己的权能。

步骤102-1中系统服务进程向内核发送了设置标签的请求,在步骤102-2和步骤102-3中内核完成安全性检查、并为所述系统服务进程设置了标签,此后执行流程返回到用户空间(例如:prctl调用成功返回),系统服务进程可以在本步骤中根据系统服务程序的权能配置信息设置所述系统服务进程的权能。

所述系统服务程序的权能配置信息,是表明了系统服务程序具有哪些权能的配置信息,其中可以包括一种或者一种以上权能。所述系统服务进程可以按照预设策略确定所述权能配置信息,例如:可以采用预先设定的固定的权能配置信息,或者根据所述系统服务程序的类型等信息(例如可以从启动系统服务的初始化配置信息中获取)采用预设算法生成所述权能配置信息。

为了实现权能的灵活配置,可以采用根据配置文件中的权能配置信息进行权能设置的优选实施方式,即:系统管理人员可以预先在系统服务程序的配置文件中写入权能配置信息,然后在执行本步骤之前,例如:在步骤101之前,从所述系统服务程序的配置文件中读取所述权能配置信息,然后在本步骤中根据所述已读取的权能配置信息设置所述系统服务进程的权能。

以基于linux的系统为例,所述系统服务程序的配置文件为.service文件,在该文件的[service]模块的capabilities字段中可以指定相应的权能配置信息,在执行本步骤之前,可以先读取所述.service文件中的权能配置信息,然后在本步骤中,由系统服务进程以权能配置信息作为参数通过执行特定的系统调用,设置所述系统服务进程的权能,例如:通过调用cap_set_proc()触发内核设置所述系统服务进程的权能。在具体实施时,如果所述系统服务进程的身份为root,那么在完成权能设置之后,可以通过执行系统调用setresuid()将所述系统服务进程的身份切换为非root用户。

由于在执行本步骤102时,系统服务程序尚未加载运行,即:系统服务进程作为子进程仍未脱离系统服务管理进程,仍然在系统服务管理进程的控制之下,因此本步骤通常由系统服务进程在系统服务管理进程的控制下执行。

步骤103、内核接收所述系统服务进程发送的运行所述系统服务程序的请求后,并在确认所述系统服务进程具有所述标签后,将所述系统服务程序对应的可执行文件加载到所述系统服务进程中,以使所述系统服务程序运行。

执行完步骤102,已经为用于运行系统服务程序的系统服务进程设置了权能,但是系统服务程序尚未加载运行,本步骤中系统服务进程向内核发送运行所述系统服务进程的请求,在内核的配合下使系统服务程序按照在步骤102设置好的权能开始运行。

首先,所述系统服务进程向内核发送运行所述系统服务程序的请求(以下简称运行请求)。在具体实施时,所述系统服务进程可以用所述系统服务程序对应的可执行文件的文件路径名作为参数,执行系统调用exec()或者类似系统调用,该系统调用引发系统中断,进入内核空间。

随后,内核接收运行所述系统服务程序的请求后,会调用内核中的相应处理函数或例程处理该请求。例如对于在用户态下调用exec()或者类似系统调用,在内核态执行的相应处理函数是do_sys_execve()。现有技术中,对于由各系统服务程序自行设置权能的方式,该处理函数根据入口参数读取可执行文件,并将可执行文件加载到发送所述运行请求的进程中;对于由内核在运行系统服务时重新计算权能的方式,该处理函数则还需要根据系统服务程序对应的可执行文件的文件权能以及发送请求的进程的现有权能计算新权能,并根据计算得到的新权能设置发送请求的进程的权能。

本实施例提供的用于系统服务的权能管理方法,为了实现对系统服务权能的集中管理,不仅在步骤102中对系统服务进程的权能进行了设置,而且在本步骤中对内核的处理过程也进行了改进。在本实施例中,内核接收到运行所述系统服务程序的请求后,首先判断发送所述请求的进程是否具有本实施例所述的标签,即:表征其权能被纳入集中管理的标签,对于在用户空间设置标签的方式,可以通过系统服务进程提供的地址信息访问对应于标签的变量,以判断所述进程是否具有标签。

优选地,对于在内核数据中设置标签的方式,可以检查对应于所述系统服务进程的内核数据中是否已设置标签,即:通过访问内核数据中对应于标签的变量,判断所述进程是否具有标签。仍沿用步骤102-3中给出的例子,内核可以访问发送运行请求的进程的进程描述符,并读取其中m_flag变量的值,若该变量的值为sec_enable或者true,则确认所述进程具有标签。

在本实施例中,向内核发送运行请求的进程为步骤101创建的系统服务进程,由于在步骤102中已经为所述系统服务进程设置了标签,因此在本步骤中内核通过检查确认其具有标签,说明所述进程是被纳入集中管理的系统服务进程,并且已经为其设置了权能,因此保持其权能信息不变,而无需再通过重新计算为其确定并设置新权能。

在具体应用中,如果内核经过检查确认发送运行请求的进程不具有标签,则说明该进程不属于被集中管理的系统服务进程,例如:不是系统服务进程或者不是合法的系统服务进程等,则可以按照预设方式进行权能管理,例如:根据系统服务程序对应的可执行文件的文件权能和所述系统服务进程的权能,通过计算确定新权能,并用得到的新权能设置所述系统服务进程的权能。

最后,内核可以根据运行请求携带的文件路径名,读取对应于所述系统服务程序的可执行文件,并将所述可执行文件加载到所述系统服务进程中,即:将所述可执行文件的代码加载到系统服务进程的运行内存空间中,用可执行文件的代码替换了系统服务进程的代码,为系统服务程序的运行做好了准备。

在具体实施时,内核执行完毕上述操作后,将控制权返回用户空间,此时所述系统服务进程已经加载了系统服务程序的代码,因此可以根据操作系统的调度,以所述系统服务进程为载体、按照在步骤102中设置的权能开始运行系统服务程序。

优选地,为了避免标签向子进程扩散,在内核确认所述系统服务进程具有标签后,在将所述系统服务程序对应的可执行文件加载到所述系统服务进程之前,可以清除为所述系统服务进程设置的所述标签。

下面举例说明:systemd创建了系统服务进程,在为所述系统服务进程设置标签后,如果所述系统服务进程自行创建了子进程,由于子进程通常可以继承父进程的代码和数据,因此子进程也会具有标签,然而子进程并不是由systemd创建的合法系统服务进程,其本身并不在统一进行权能管理的范围之内,因此导致了标签的不合理扩散,会给权能的集中管理带来混乱,为了避免出现这一现象,可以在内核确认向其发送运行请求的进程具有标签后,清除该标签。

仍沿用步骤102-3中给出的例子,内核可以在向其发送运行请求的进程的进程描述符中,将m_flag变量的值设置为sec_disable或者false,则完成了清除标签的操作,该进程就不再具有标签了。

至此,通过上述步骤101-103,对本实施例提供的用于系统服务的权能管理方法的实施方式进行了详细说明。为了便于理解,此处给出一个具体的例子,下面结合图3对所述具体例子进行说明。

在所述具体例子中,需要在linux系统(初始化进程为init进程)的启动过程中启动networkservice系统服务程序,并且已经预先在所述系统服务程序的配置文件中写入了权能配置信息,即:在配置文件的[service]模块中写入了如下信息:capabilities=cap_net_admin,在本例子中,cap_net_admin代表networkservice系统服务的权能,在具体应用中可以根据需要对该配置信息进行相应调整。权能管理过程如下所示:

(1)负责管理networkservice的父进程:init进程,执行fork()系统调用,生成子进程;

(2)子进程执行prctl()系统调用,请求在内核中设置标签;

(3)内核在收到请求后,检查发送请求的进程的身份是否为root身份;

(4)通过身份检查后,内核在发送请求的进程的task_struct结构体中设置标签,并返回用户空间;

(5)子进程调用prctl()成功返回后,根据从networkservice的配置文件中读取的权能配置信息,执行cap_set_proc(cap_net_admin)或者类似的函数调用,设置自己的权能,然后执行setresuid()切换到非root用户身份;

(6)子进程执行系统调用execve(/bin/networkservice),请求运行networkservice系统服务程序;

(7)在execve()系统调用执行到内核时,内核检查发送运行请求的进程的task_struct结构体中是否设置了标签,在本例子中内核确认所述进程具有标签,因此保持所述进程的权能设置不变,即:不再重新进行计算以及设置;

(8)内核加载networkservice对应的可执行文件,然后返回用户空间;

(9)execve()执行完毕返回用户空间后,以所述子进程为载体、按照(5)中设置的权能开始运行networkservice的代码,从而完成networkservice系统服务的启动过程。

通过上述实施例的描述以及此处给出的具体例子,可以看出,本实施例提供的用于系统服务的权能管理方法,在运行系统服务程序之前为系统服务进程设置权能,而不是由系统服务程序运行后自行设置;并且在内核接收运行系统服务程序的请求后,由于确认系统服务进程已被设置权能,因此保持已为所述进程设置的权能,而不再根据系统服务程序对应的可执行文件重新计算权能。从而为系统服务权能管理提供了统一的入口,避免了由各系统服务程序自行设置权能、或者依赖可执行文件的文件权能所引起的权能管理混乱,从而为系统的安全运转提供保障。在具体实施时,本方法可以由负责管理系统服务的进程,例如:init或者systemd或者其他系统服务管理进程触发执行,从而实现这些进程对系统服务权能的集中管理。

在上述的实施例中,提供了一种用于系统服务的权能管理方法,与之相对应的,本申请还提供一种用于系统服务的权能管理装置。请参看图4,其为本申请的一种用于系统服务的权能管理装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的一种用于系统服务的权能管理装置,包括:

系统服务进程创建单元401,用于创建用于运行系统服务程序的系统服务进程,本单元可用于执行上述相应方法实施例中的步骤101;

标签设置单元402,用于为所述系统服务进程设置标签,本单元可用于执行上述相应方法实施例中的步骤102中为系统服务进程设置标签的操作;

进程权能设置单元403,用于根据所述系统服务程序的权能配置信息设置所述系统服务进程的权能,本单元可用于执行上述相应方法实施例中的步骤102中设置系统服务进程权能的操作;

系统服务加载运行单元404,用于接收所述系统服务进程发送的运行所述系统服务程序的请求后,并在确认所述系统服务进程具有所述标签后,将所述系统服务程序对应的可执行文件加载到所述系统服务进程中,以使所述系统服务程序运行,其中,所述系统服务程序按所述已设置的权能运行,其中,所述系统服务加载运行单元运行在内核空间;本单元可用于执行上述相应方法实施例中的步骤103;

所述系统服务加载运行单元,包括:

运行请求接收子单元,用于接收所述系统服务进程发送的运行所述系统服务程序的请求;

权能设置确认子单元,用于在所述运行请求接收子单元接收请求后,确认所述系统服务进程具有所述标签;

加载子单元,用于将所述系统服务程序对应的可执行文件加载到所述系统服务进程中,以使所述系统服务程序运行,其中,所述系统服务程序按所述已设置的权能运行。

可选的,所述标签设置单元,具体用于在内核数据中为所述系统服务进程设置标签。

可选的,所述标签设置单元包括:

设置标签请求发送子单元,用于由所述系统服务进程向内核发送设置标签的请求;

设置标签请求接收子单元,用于接收所述设置标签请求发送子单元发送的请求;

内核设置标签子单元,用于在所述设置标签请求接收子单元接收请求后,在对应于所述系统服务进程的内核数据中设置标签;

所述权能设置确认子单元,具体用于检查对应于所述系统服务进程的内核数据中是否已设置所述标签,并在检查结果为是时确认所述系统服务进程具有所述标签;

其中,所述设置标签请求接收子单元、所述内核设置标签子单元、和所述权能设置确认子单元运行在内核空间。

可选的,所述标签设置单元,还包括:

安全性判断子单元,用于在所述设置标签请求接收子单元接收请求后,判断所述系统服务进程是否满足预设的安全性要求,并在满足时,触发所述内核设置标签子单元工作,在所述内核设置标签子单元工作完毕后触发所述进程权能设置单元工作。

可选的,所述装置还包括:

权能配置信息读取单元,用于在所述进程权能设置单元工作前,从所述系统服务程序的配置文件中读取权能配置信息;

所述进程权能设置单元,具体用于根据所述已读取的权能配置信息设置所述系统服务进程的权能。

可选的,所述系统服务加载运行单元,还包括:

标签清除子单元,用于在所述权能设置确认子单元确认所述系统服务进程具有所述标签后,清除为所述系统服务进程设置的所述标签,并触发所述加载子单元工作。

此外,本申请还提供一种用于运行程序的方法,本方法是对用于运行程序的系统调用的处理过程的改进。请参考图5,其为本申请提供的一种用于运行程序的方法的实施例的流程图,本实施例与上述方法实施例步骤相同的部分不再赘述,下面重点描述不同之处。本实施例提供的用于运行程序的方法包括如下步骤:

步骤501、接收进程发送的运行程序的请求。

步骤502、检查所述进程是否已被设置权能,若是,执行步骤504,否则,执行步骤503。

所述检查所述进程是否已被设置权能,可以通过检查所述进程是否具有表征其权能被集中管理的标签实现,若所述进程具有所述标签,说明所述进程的权能已经在执行步骤501之前进行了设置,因此可以直接执行步骤504加载可执行文件。

若所述进程不具有所述标签,说明所述进程不是被纳入权能统一管理的进程,因此执行步骤503进行权能的计算与设置。

步骤503、根据所述程序对应的可执行文件的文件权能和所述进程的权能确定新权能,并用得到的新权能设置所述进程的权能。

本步骤采用现有桌面系统linux的权能管理方式、通过重新计算确定新权能,即:根据所述程序对应的可执行文件的文件权能和所述进程的权能计算新权能,其中,所述可执行文件的文件权能通常是由可执行文件的生成者设定的,而所述进程的权能通常是从其父进程继承的权能,根据上述信息重新确定新权能的具体实施方式属于现有技术,此处不做详细描述。

得到新权能后,用所述新权能对所述进程的权能重新进行设置,随后执行步骤504。

步骤504、将所述程序对应的可执行文件加载到所述进程中,以使所述程序运行。

如果在步骤502中已确认所述进程被设置权能,并跳转到本步骤执行,那么本步骤将所述程序对应的可执行文件加载到所述进程中,所述程序按照所述已设置的权能运行。优选地,如果在步骤502中通过检查标签确认所述进程已被设置权能,为了避免标签的扩散,在将所述程序对应的可执行文件加载到所述进程中之前,可以清除所述进程的所述标签。

如果在步骤502中通过检查确认所述进程未被设置权能,并执行步骤503进行了新权能的确定与设置,随后执行本步骤,则本步骤将所述程序对应的可执行文件加载到所述进程中,所述程序按照所述新权能运行。

至此,通过上述步骤501-504,对本实施例提供的用于运行程序的方法的实施方式进行了详细描述。通过上述描述可以看出,本方法是对用于运行程序的系统调用(例如exec()或者类似系统调用)的处理过程的改进,采用本方法,在接收某进程发送的运行程序的请求后,若所述进程已被设置了权能,则不对其权能进行额外处理,而是直接将所述程序对应的可执行文件加载到所述进程中,从而从内核的角度对本申请提供的用于系统服务的权能管理方法、以及本申请提供的权能管理方法(其实施方式参见后面提供的实施例)提供支持,使得对系统服务、或者系统服务以及应用进行集中权能管理成为可能。

此外,对于未被设置权能的进程,由于采用linux系统的权能管理方式重新确定并设置进程权能,从而在对集中管理权能提供支持的同时,也能够保证linux本身权能系统的完备。

在上述的实施例中,提供了一种用于运行程序的方法,与之相对应的,本申请还提供一种用于运行程序的装置。请参看图6,其为本申请的一种用于运行程序的装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的一种用于运行程序的装置,包括:

运行请求接收单元601,用于接收进程发送的运行程序的请求,本单元可用于执行上述相应方法实施例中的步骤501;

权能设置检查单元602,用于检查所述进程是否以被设置权能,并在检查结果为是时触发加载运行单元工作,在检查结果为否时触发权能计算设置单元工作,所述权能设置检查单元可用于执行上述相应方法实施例中的步骤502;

权能计算设置单元603,用于当所述权能设置单元的输出为否时,根据所述程序对应的可执行文件的文件权能和所述进程的权能确定新权能,用得到的新权能设置所述进程的权能,并触发加载运行单元工作,本单元可用于执行上述相应方法实施例中的步骤503;

加载运行单元604,用于将所述程序对应的可执行文件加载到所述进程中,以使所述程序运行,本单元可用于执行上述相应方法实施例中的步骤504。

可选的,所述权能设置检查单元,具体用于检查所述进程是否具有表征其权能被集中管理的标签。

可选的,所述装置还包括:

标签清除单元,用于当所述权能设置检查单元的输出为是时,清除所述进程的所述标签,并触发所述加载运行单元工作。

此外,本申请还提供一种权能管理方法,本方法是对本申请提供的用于系统服务的权能管理方法的扩展。考虑到,随着技术的发展和应用需求的变更,也可以让应用程序具有一定的权能,从而便于实现其功能。在这种需求下,为了避免权能管理分散化造成的混乱、以及安全隐患,本申请提供了一种权能管理方法,实现对系统服务程序和应用程序的权能的统一管理。

请参考图7,其为本申请提供的一种权能管理方法的实施例的流程图,本实施例与上述方法实施例步骤相同的部分不再赘述,下面重点描述不同之处。本实施例描述的权能管理方法包括如下步骤:

步骤701、创建用于运行程序的第一进程。

所述方法由负责管理系统服务进程及应用进程的第二进程(以下简称为管理进程)触发执行,所述管理进程包括:init进程或者systemd进程。所述程序包括:系统服务程序、或者应用程序。

步骤702、根据所述程序的权能配置信息设置所述第一进程的权能。

本步骤可以由所述第一进程在用户空间为自己设置标签,并根据所述程序的权能配置信息设置自己的权能。

优选地,所述为所述第一进程设置标签,包括:在内核数据中为所述第一进程设置标签。其实现可以为:所述第一进程向内核发送设置标签的请求;内核接收所述请求后,在对应于所述第一进程的内核数据中设置标签。其中,所述对应于所述第一进程的内核数据包括:所述第一进程的进程描述符。

进一步优选地,所述内核接收所述设置标签的请求后,可以先判断所述第一进程是否满足预设的安全性要求,并在满足时,执行所述在对应于所述第一进程的内核数据中设置标签的操作。从而从内核的角度避免了为非法进程设置标签而可能带来的安全隐患。

此外,为了实现权能的灵活配置,本步骤还可以采用根据配置文件中的权能配置信息进行权能设置的优选实施方式。即:在根据所述程序的权能配置信息设置所述第一进程的权能之前,从所述程序的配置文件中读取权能配置信息,那么本步骤就可以根据所述已读取的权能配置信息设置所述第一进程的权能。

步骤703、内核接收所述第一进程发送的运行所述程序的请求后,并在确认所述第一进程已被设置权能后,将所述程序对应的可执行文件加载到所述第一进程中,以使所述程序运行。

如果在步骤702中,第一进程在用户空间设置标签,那么可以通过第一进程提供的地址信息访问对应于标签的变量、以判断第一进程是否具有标签;如果在步骤702中,第一进程在内核中设置标签,本步骤则可以检查对应于所述系统服务进程的内核数据中是否已设置标签,即:通过访问内核数据中对应于标签的变量,判断是否具有标签。

在本实施例中,向内核发送上述请求的进程为步骤701创建的第一进程,由于在步骤702中已经为所述第一进程设置了标签,因此在本步骤中可以确认其具有标签,说明该进程是被纳入权能集中管理的进程、已经被设置了权能,随后将所述程序对应的可执行文件加载到所述第一进程中,以使所述程序运行,其中,所述程序按照所述已设置的权能运行。

至此,通过上述步骤701-703,对本实施例提供的权能管理方法的实施方式进行了详细描述。需要说明的是,本实施例中重点描述了采用设置标签的方式,表明进程被纳入集中管理、并且已设置权能,在其他实施方式中也可以采用其他方式,例如,发送消息等方式,同样也是可以的。

通过上述描述可以看出,采用本实施例提供的方法,为系统服务以及应用程序的权能管理提供了统一的入口,避免了由各程序自行设置权能、或者依赖可执行文件的文件权能所引起的权能管理混乱,从而为系统的安全运转提供保障。在具体实施时,本方法可以由负责管理系统服务进程及应用进程的进程,例如:init或者systemd或者其他管理进程触发执行,从而实现这些进程对系统服务以及应用权能的集中管理。

在上述的实施例中,提供了一种权能管理方法,与之相对应的,本申请还提供一种权能管理装置。请参看图8,其为本申请的一种权能管理装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的一种权能管理装置,包括:

进程创建单元801,用于创建用于运行程序的第一进程,本单元可用于执行上述相应方法实施例中的步骤701;

权能设置单元802,用于根据所述程序的权能配置信息设置所述第一进程的权能,本单元可用于执行上述相应方法实施例中的步骤702;

程序加载运行单元803,用于接收所述第一进程发送的运行所述程序的请求后,并在确认所述第一进程已被设置权能后,将所述程序对应的可执行文件加载到所述第一进程中,以使所述程序运行,其中,所述程序按所述已设置的权能运行,其中,所述程序加载运行单元运行在内核空间;本单元可用于执行上述相应方法实施例中的步骤703;

所述程序加载运行单元,包括:

请求接收子单元,用于内核接收所述第一进程发送的运行所述程序的请求;

权能确认子单元,用于在所述请求接收子单元接收请求后,确认所述第一进程已被设置权能;

程序加载子单元,用于将所述程序对应的可执行文件加载到所述第一进程中,以使所述程序运行,其中,所述程序按所述已设置的权能运行。

可选的,所述装置还包括:标签设置单元,用于在创建用于运行程序的第一进程之后,在内核接收所述第一进程发送的运行所述程序的请求之前,为所述第一进程设置标签;

所述权能确认子单元,具体用于确认所述第一进程具有所述标签。

可选的,所述标签设置单元,具体用于在内核数据中为所述第一进程设置标签。

可选的,所述装置还包括:

权能配置信息读取单元,用于在所述权能设置单元工作前,从所述程序的配置文件中读取权能配置信息;

所述权能设置单元,具体用于根据所述已读取的权能配置信息设置所述第一进程的权能。

此外,本申请还提供了一种操作系统,所述操作系统实施例如下:

请参考图9,其示出了本申请的一种操作系统的实施例的示意图。

所述操作系统包括:

服务进程创建单元901,用于在接收进程创建请求后,创建用于运行系统服务程序的系统服务进程;

服务进程权能设置单元902,用于在接收权能设置请求后,根据所述系统服务程序的权能配置信息设置所述系统服务进程的权能;

服务程序加载运行单元903,用于在接收所述系统服务进程发送的运行所述系统服务程序的请求后,确认所述系统服务进程已被设置权能,并将所述系统服务程序对应的可执行文件加载到所述系统服务进程中,以使所述系统服务程序运行;其中,所述系统服务程序按所述已设置的权能运行。

在具体实施时,所述服务进程创建单元可以通过软件程序实现,其执行的操作可以对应于上述提供的用于系统服务的权能管理方法实施例中的步骤101,例如:当系统服务管理进程调用fork()系统函数时,所述服务进程创建单元根据接收到的请求创建用于运行系统服务程序的系统服务进程。

所述服务进程权能设置单元同样可以通过软件程序实现,其执行的操作可以对应于上述提供的用于系统服务的权能管理方法实施例中的步骤102中的设置系统服务进程权能的部分,例如,当系统服务进程调用cap_set_proc()进行权能设置时,所述服务进程权能设置单元根据接收到的权能设置请求中携带的权能配置信息设置所述系统服务进程的权能。

所述服务程序加载运行单元同样可以通过软件程序实现,其执行的操作可以对应于上述提供的用于系统服务的权能管理方法实施例中的步骤103,例如:系统服务进程通过执行系统调用exec()向内核发送运行所述系统服务程序的请求,所述服务程序加载运行单元接收所述请求后,并在确认所述系统服务进程已被设置权能后,将所述系统服务程序对应的可执行文件加载到所述系统服务进程中,以使所述系统服务程序运行。

此外,本申请还提供了一种电子设备;所述电子设备实施例如下:

请参考图10,其示出了本申请的一种电子设备的实施例的示意图。

所述电子设备,包括:处理器1001;存储器1002,用于存储计算机程序代码;其中,所述处理器耦合于所述存储器,用于读取所述存储器存储的计算机程序代码,并执行如下操作:

创建用于运行系统服务程序的系统服务进程;根据所述系统服务程序的权能配置信息设置所述系统服务进程的权能;内核接收所述系统服务进程发送的运行所述系统服务程序的请求后,并在确认所述系统服务进程已被设置权能后,将所述系统服务程序对应的可执行文件加载到所述系统服务进程中,以使所述系统服务程序运行;其中,所述系统服务程序按所述已设置的权能运行。

本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1