CN106775608A - 独立系统进程的实现方法和装置 - Google Patents
独立系统进程的实现方法和装置 Download PDFInfo
- Publication number
- CN106775608A CN106775608A CN201510828360.5A CN201510828360A CN106775608A CN 106775608 A CN106775608 A CN 106775608A CN 201510828360 A CN201510828360 A CN 201510828360A CN 106775608 A CN106775608 A CN 106775608A
- Authority
- CN
- China
- Prior art keywords
- system service
- self
- service
- file
- configuration
- 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.)
- Granted
Links
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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种独立系统进程的实现方法和装置。所述方法包括以下步骤:获取自定义系统服务,并在所述自定义系统服务中创建上下文;配置所述自定义系统服务的进程属性为系统进程;获取启动所述自定义系统服务的执行文件;在启动原生系统服务的配置文件中增加启动所述自定义系统服务的执行文件的配置代码,生成包含启动所述自定义系统服务的执行文件的配置代码的启动系统服务的配置文件。上述独立系统进程的实现方法和装置,在操作系统启动时能够启动自定义系统服务中,使得自定义系统服务以独立系统进程运行,因自定义系统服务以独立系统进程运行,与原生系统进程隔开,即使自定义系统服务进程出现错误,也不会影响原生系统进程,不会导致死机。
Description
技术领域
本发明涉及计算机应用领域,特别是涉及一种独立系统进程的实现方法和装置。
背景技术
随着各种电子设备的出现,为了保证电子设备的正常运行,产生了很多控制电子设备运行的软件。该软件通常是以ROM(Read-only memory,只读内存镜像)image形式发布。ROM开发者定制Android OS(Operating System,操作系统)时,往往会提供自己的系统服务。这些系统服务只能放在系统进程中运行,一旦出现Crash(即在正常计算机系统运行过程中,因某种原因宕机或程序停止工作等情况),就会导致整个系统进程崩溃,电子设备无法正常工作,只能重启电子设备。
发明内容
基于此,有必要针对电子设备使用开发者提供的ROM后出现错误,容易导致整个系统进程崩溃,电子设备无法工作的问题,提供一种独立系统进程的实现方法,能避免电子设备使用ROM出现错误后导致整个系统进程崩溃的情况,提高电子设备的使用效率。
此外,还有必要提供一种独立系统进程的实现装置,能避免电子设备使用ROM出现Crash后导致整个系统进程崩溃的情况,提高电子设备的使用效率。
一种独立系统进程的实现方法,包括以下步骤:
获取自定义系统服务,并在所述自定义系统服务中创建上下文;
配置所述自定义系统服务的进程属性为系统进程;
获取启动所述自定义系统服务的执行文件;
在启动原生系统服务的配置文件中增加启动所述自定义系统服务的执行文件的配置代码,生成包含启动所述自定义系统服务的执行文件的配置代码的启动系统服务的配置文件。
一种独立系统进程的实现方法,包括以下步骤:
在系统启动时,加载包含启动自定义系统服务的执行文件的配置代码的启动系统服务的配置文件;
根据加载的系统服务的配置文件启动原生系统服务进程和自定义系统服务进程;
在所述自定义系统服务进程中启动自定义系统服务;
通过所述原生系统服务进程中的跨进程调用服务调用委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中,以使所述自定义系统服务进程作为独立系统进程运行。
一种独立系统进程的实现装置,包括:
自定义系统服务获取模块,用于获取自定义系统服务进程,并在所述自定义系统服务进程中创建上下文;
配置模块,用于配置所述自定义系统服务进程的属性为系统进程;
执行文件获取模块,用于获取启动所述自定义系统服务的执行文件;
第一生成模块,用于在启动原生系统服务的配置文件中增加启动所述自定义系统服务的执行文件的配置代码,生成包含启动所述自定义系统服务的执行文件的配置代码的启动系统服务的配置文件。
一种独立系统进程的实现装置,包括:
加载模块,用于在系统启动时,加载包含启动自定义系统服务的执行文件的配置代码的启动系统服务的配置文件;
进程启动模块,用于根据加载的系统服务的配置文件启动原生系统服务进程和自定义系统服务进程;
自定义系统服务启动模块,用于在所述自定义系统服务进程中启动自定义系统服务;
调用模块,用于通过所述原生系统服务进程中的跨进程调用服务调用委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中,以使所述自定义系统服务进程作为独立系统进程运行。
上述独立系统进程的实现方法和装置,通过将自定义系统服务中创建上下文及设置进程属性为系统进程,并将启动自定义系统服务的执行文件的配置代码增加到启动原生系统服务的配置文件中生成启动系统服务的配置文件,如此在操作系统启动时能够启动自定义系统服务中,使得自定义系统服务以独立系统进程运行,因自定义系统服务以独立系统进程运行,与原生系统进程隔开,即使自定义系统服务进程出现错误,也不会影响原生系统进程,不会导致死机,且独立系统进程出错之后能够自动恢复,为后续继续提供服务。
附图说明
图1为一个实施例中终端的内部结构示意图;
图2为一个实施例中独立系统进程的实现方法的流程图;
图3为另一个实施例中独立系统进程的实现方法的流程图;
图4为另一个实施例中独立系统进程的实现方法的流程图;
图5为另一个实施例中独立系统进程的实现方法的流程图;
图6为一个实施例中独立系统进程的实现装置的结构框图;
图7为另一个实施例中独立系统进程的实现装置的结构框图;
图8为另一个实施例中独立系统进程的实现装置的结构框图;
图9为另一个实施例中独立系统进程的实现装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中终端的内部结构示意图。如图1所示,该终端包括通过系统总线连接的处理器、存储介质、内存、网络接口、声音采集装置、显示屏和输入装置。其中,终端的存储介质存储有操作系统,还包括一种独立系统进程的实现装置,该独立系统进程的实现装置用于实现一种独立系统进程的实现方法。该处理器用于提供计算和控制能力,支撑整个终端的运行。终端中的内存为存储介质中的独立系统进程的实现装置的运行提供环境,网络接口用于与服务器进行网络通信,如发送数据请求至服务器,接收服务器返回的数据等。终端的显示屏可以是液晶显示屏或者电子墨水显示屏等,输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是外接的键盘、触控板或鼠标等。该终端可以是手机、平板电脑或者个人数字助理。本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
图2为一个实施例中独立系统进程的实现方法的流程图。如图2所示,一种独立系统进程的实现方法,包括以下步骤:
步骤202,获取自定义系统服务,并在该自定义系统服务中创建上下文。
具体地,使用Java语言编写自定义系统服务,并给自定义系统服务定义名称,例如名称为MySystemServer。在自定义系统服务中提供入口函数main,并在自定义系统服务中调用ActivityThread.getSystemContext创建一个Context(上下文),以便后续编写程序时使用。Java语言是一种可以撰写跨平台应用程序的面向对象的程序设计语言。在Android开发中主要使用的是Java语言。Andriod是一个基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机、平板电脑等。Context是描述一个应用程序环境的信息,该类是一个抽象类,Android提供了该抽象类的具体实现类,如ContextIml类,通过Context可以获取应用程序的资源和类,也包括一些应用级别操作,例如启动Activity,发送广播,接收Intent等。
步骤204,配置该自定义系统服务的进程属性为系统进程。
具体地,进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。系统进程是指操作系统运行核心代码,提供核心服务的进程,其为操作系统运行最关键的部分。
自定义系统服务的进程属性设置为系统进程,可让自定义系统服务启动进程后作为系统进程运行。
在一个实施例中,配置自定义系统服务的进程属性为系统进程可采用标记方式。
在另一个实施例中,配置自定义系统服务的进程属性为系统进程包括:在活动管理服务同级目录下增加委托类文件,并在该委托类文件中增加将当前的进程标识放入系统进程列表中的配置系统服务函数;在原生系统服务中增加跨进程调用服务,通过该跨进程调用服务调用该委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中。
具体地,在Android源码ActivityMangerService.java(活动管理服务)同级目录下增加MyDelegate.java(委托类)文件,在该委托类文件中增加将当前的进程标识放入系统进程列表中的配置系统服务函数,即在MyDelegate.java文件里面按照AcitivityManagerService.setSystemProcess编写函数setAsSystemServer(配置系统服务函数)。同时在原生系统服务中增加一个MyDaemon(跨进程调用服务),MyDaemon用于提供一个跨进程调用服务,调用MyDelegate的setAsSystemServer。原生系统服务是指未经过修改的操作系统自带的底层运行的核心系统服务,给上层应用程序提供各种服务,比如访问硬件等。
步骤206,获取启动该自定义系统服务的执行文件。
具体地,将源码中类名称修改为自定义系统服务的名称,将进程名称修改为自定义系统服务进程名称,再编译生成二进制执行文件,得到启动该自定义系统服务的执行文件,并将自定义系统服务的执行文件放入指定目录下。
使用C/C++语言等编写启动MySystemServer的代码逻辑。该代码逻辑与Android源码中app_process对应的app_main.cpp基本一样,只是启动的ClassName(源码中类名称)修改为自定义系统服务的名称“MySystemServer”,将进程名称修改为自定义系统服务进程名称“my_process”,然后编译成二进制执行文件my_system_server,将my_system_server放入指定目录下,如/system/bin/目录下。
步骤208,在启动原生系统服务的配置文件中增加启动该自定义系统服务的执行文件的配置代码,生成包含启动该自定义系统服务的执行文件的配置代码的启动系统服务的配置文件。
具体地,在Android的启动核心服务的配置文件(即init.rc文件或initng文件或upstart文件或runit文件或bootscripts文件等)中增加启动该自定义系统服务的执行文件的配置代码。
例如,在启动核心服务的配置文件中增加启动该自定义系统服务的执行文件的配置代码如下:
service my_system_server/system/bin/my_system_serverclass main
上述配置代码包括自定义系统服务的执行文件所存储的路径,并提供了入口函数class main。
init.rc文件是内核自行启动之后,通过启动一个用户级程序init的方式,完成引导过程。
上述独立系统进程的实现方法,通过将自定义系统服务中创建上下文及设置进程属性为系统进程,并将启动自定义系统服务的执行文件的配置代码增加到启动原生系统服务的配置文件中生成启动系统服务的配置文件,如此在操作系统启动时能够启动自定义系统服务中,使得自定义系统服务以独立系统进程运行,因自定义系统服务以独立系统进程运行,与原生系统进程隔开,即使自定义系统服务进程出现错误,也不会影响原生系统进程,不会导致死机,且独立系统进程出错之后能够自动恢复,为后续继续提供服务。
在一个实施例中,上述独立系统进程的实现方法还包括:将生成的启动系统服务的配置文件重新编译生成只读内存镜像文件。
具体地,将生成的包含启动所述自定义系统服务的执行文件的配置代码的启动系统服务的配置文件重新编译,生成ROM文件(只读内存镜像文件),然后可将ROM文件利用工具写入到终端中。例如,可将终端与计算机相连,在计算机安装刷ROM的应用程序,将生成的ROM文件写入到终端中。
图3为另一个实施例中独立系统进程的实现方法的流程图。如图3所示,在一个实施例中,上述独立系统进程的实现方法还包括:
步骤302,在系统启动时,加载包含启动该自定义系统服务的执行文件的配置代码的启动系统服务的配置文件。
具体地,加载生成的包含启动该自定义系统服务的执行文件的配置代码的启动系统服务的配置文件,即新的init.rc。
步骤304,根据加载的系统服务的配置文件启动原生系统服务进程和自定义系统服务进程。
具体地,原生系统服务进程是指未经过修改过的操作系统自带的底层运行的核心系统服务进程,给上层应用程序提供各种服务,比如访问硬件等。自定义系统服务进程是指给开发者自定义系统服务提供运行环境的系统进程。例如,自定义系统服务进程可为my_system_server进程。
步骤306,在该自定义系统服务进程中启动自定义系统服务。
具体地,启动自定义系统服务可为启动MySystemServer。
步骤308,根据自定义系统服务进程的属性为系统进程,将该自定义系统服务进程作为独立系统进程运行。
具体地,因自定义系统服务进程的属性设置为系统进程,可将自定义系统服务进程作为独立系统进程进行运行。
上述独立系统进程的实现方法,在系统启动时,通过加载包含启动该自定义系统服务的执行文件的配置代码的启动系统服务的配置文件,使得原生系统服务进程和自定义系统服务进程同时运行,并在自定义系统服务进程中启动自定义系统服务,使得自定义系统服务进程作为独立系统服务进程进行运行,与原生系统进程隔开,即使自定义系统服务进程出现错误,也不会影响原生系统进程,不会导致死机,且独立系统进程出错之后能够自动恢复,为后续继续提供服务。
图4为另一个实施例中独立系统进程的实现方法的流程图。如图4所示,一种独立系统进程的实现方法,包括以下步骤:
步骤402,获取自定义系统服务,并在该自定义系统服务中创建上下文。
具体地,使用Java语言编写自定义系统服务,并给自定义系统服务定义名称,例如名称为MySystemServer。在自定义系统服务中提供入口函数main,并在自定义系统服务中调用ActivityThread.getSystemContext创建一个Context(上下文),以便后续编写程序时使用。Java语言是一种可以撰写跨平台应用程序的面向对象的程序设计语言。在Android开发中主要使用的是Java语言。Andriod是一个基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机、平板电脑等。Context是描述一个应用程序环境的信息,该类是一个抽象类,Android提供了该抽象类的具体实现类,如ContextIml类,通过Context可以获取应用程序的资源和类,也包括一些应用级别操作,例如启动Activity,发送广播,接收Intent等。
步骤404,在活动管理服务同级目录下增加委托类文件,并在该委托类文件中增加将当前的进程标识放入系统进程列表中的配置系统服务函数。
具体地,在Android源码ActivityMangerService.java(活动管理服务)同级目录下增加MyDelegate.java(委托类)文件,在该委托类文件中增加将当前的进程标识放入系统进程列表中的配置系统服务函数,即在MyDelegate.java文件里面按照AcitivityManagerService.setSystemProcess编写函数setAsSystemServer(配置系统服务函数)。
步骤406,在原生系统服务中增加跨进程调用服务,通过该跨进程调用服务调用该委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中。
具体地,在原生系统服务中增加一个MyDaemon(跨进程调用服务),MyDaemon用于提供一个跨进程调用服务,调用MyDelegate的setAsSystemServer。原生系统服务是指未经过修改的操作系统自带的底层运行的核心系统服务,给上层应用程序提供各种服务,比如访问硬件等。
在一个实施例中,MySystemServer.java核心参考代码如下:
MyDelegate.java的核心参考代码:public static void setAsSystemProcess(int pid,IApplicationThread thread)//将指定pid(进程id)和其主线程添加到系统进程中的实现方法
步骤408,获取启动该自定义系统服务的执行文件。
具体地,将源码中类名称修改为自定义系统服务的名称,将进程名称修改为自定义系统服务进程名称,再编译生成二进制执行文件,得到启动该自定义系统服务的执行文件,并将自定义系统服务的执行文件放入指定目录下。
使用C/C++语言等编写启动MySystemServer的代码逻辑。该代码逻辑与Android源码中app_process对应的app_main.cpp基本一样,只是启动的ClassName(源码中类名称)修改为自定义系统服务的名称“MySystemServer”,将进程名称修改为自定义系统服务进程名称“my_process”,然后编译成二进制执行文件my_system_server,将my_system_server放入指定目录下,如/system/bin/目录下。
步骤410,在启动原生系统服务的配置文件中增加启动该自定义系统服务的执行文件的配置代码,生成包含启动该自定义系统服务的执行文件的配置代码的启动系统服务的配置文件。
具体地,在Android的启动核心服务的配置文件(即init.rc文件或initng文件或upstart文件或runit文件或bootscripts文件等)中增加启动该自定义系统服务的执行文件的配置代码。
例如,在启动核心服务的配置文件中增加启动该自定义系统服务的执行文件的配置代码如下:
service my_system_server/system/bin/my_system_serverclass main
上述配置代码包括自定义系统服务的执行文件所存储的路径,并提供了入口函数class main。
init.rc文件是内核自行启动之后,通过启动一个用户级程序init的方式,完成引导过程。
上述独立系统进程的实现方法,通过将自定义系统服务中创建上下文,并通过在原生系统服务中增加跨进程调用服务,通过该跨进程调用服务调用委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中,使得自定义系统服务进程成为系统服务进程,并将启动自定义系统服务的执行文件的配置代码增加到启动原生系统服务的配置文件中生成启动系统服务的配置文件,如此在操作系统启动时能够启动自定义系统服务中,使得自定义系统服务以独立系统进程运行,因自定义系统服务以独立系统进程运行,与原生系统进程隔开,即使自定义系统服务进程出现错误,也不会影响原生系统进程,不会导致死机,且独立系统进程出错之后能够自动恢复,为后续继续提供服务。
图5为另一个实施例中独立系统进程的实现方法的流程图。如图5所示,在一个实施例中,上述独立系统进程的实现方法还包括:
步骤502,在系统启动时,加载包含启动该自定义系统服务的执行文件的配置代码的启动系统服务的配置文件。
具体地,加载生成的包含启动该自定义系统服务的执行文件的配置代码的启动系统服务的配置文件,即新的init.rc。
步骤504,根据加载的系统服务的配置文件启动原生系统服务进程和自定义系统服务进程。
具体地,原生系统服务进程是指未经过修改过的操作系统自带的底层运行的核心系统服务进程,给上层应用程序提供各种服务,比如访问硬件等。自定义系统服务进程是指给开发者自定义系统服务提供运行环境的系统进程。例如,自定义系统服务进程可为my_system_server进程。
步骤506,在该自定义系统服务进程中启动自定义系统服务。
具体地,起点自定义系统服务可为启动MySystemServer。
步骤508,通过该原生系统服务进程中的跨进程调用服务调用该委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中,以使该自定义系统服务进程作为独立系统进程运行。
具体地,通过该跨进程调用服务调用委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中,使得自定义系统服务进程成为系统服务进程进行运行。
上述独立系统进程的实现方法,在系统启动时,通过加载包含启动该自定义系统服务的执行文件的配置代码的启动系统服务的配置文件,使得原生系统服务进程和自定义系统服务进程同时运行,并在自定义系统服务进程中启动自定义系统服务,使得自定义系统服务进程作为独立系统服务进程进行运行,与原生系统进程隔开,即使自定义系统服务进程出现错误,也不会影响原生系统进程,不会导致死机,且独立系统进程出错之后能够自动恢复,为后续继续提供服务。
图6为一个实施例中独立系统进程的实现装置的结构框图。如图6所示,一种独立系统进程的实现装置,包括自定义系统服务获取模块602、配置模块604、执行文件获取模块606和第一生成模块608。其中:
自定义系统服务获取模块602用于获取自定义系统服务进程,并在该自定义系统服务进程中创建上下文。
具体地,使用Java语言编写自定义系统服务,并给自定义系统服务定义名称,例如名称为MySystemServer。在自定义系统服务中提供入口函数main,并在自定义系统服务中调用ActivityThread.getSystemContext创建一个Context(上下文),以便后续编写程序时使用。Java语言是一种可以撰写跨平台应用程序的面向对象的程序设计语言。在Android开发中主要使用的是Java语言。Andriod是一个基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机、平板电脑等。Context是描述一个应用程序环境的信息,该类是一个抽象类,Android提供了该抽象类的具体实现类,如ContextIml类,通过Context可以获取应用程序的资源和类,也包括一些应用级别操作,例如启动Activity,发送广播,接收Intent等。
配置模块604用于配置该自定义系统服务进程的属性为系统进程。
具体地,进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。系统进程是指操作系统运行核心代码,提供核心服务的进程,其为操作系统运行最关键的部分。
自定义系统服务的进程属性设置为系统进程,可让自定义系统服务启动进程后作为系统进程运行。
在一个实施例中,配置自定义系统服务的进程属性为系统进程可采用标记方式。
在另一个实施例中,配置模块604还用于在活动管理服务同级目录下增加委托类文件,并在该委托类文件中增加将当前的进程标识放入系统进程列表中的配置系统服务函数;在原生系统服务中增加跨进程调用服务,通过该跨进程调用服务调用该委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中。
执行文件获取模块606用于获取启动该自定义系统服务的执行文件。
具体地,执行文件获取模块606还用于将源码中类名称修改为自定义系统服务的名称,将进程名称修改为自定义系统服务进程名称,再编译生成二进制执行文件,得到启动该自定义系统服务的执行文件,并将自定义系统服务的执行文件放入指定目录下。
使用C/C++语言等编写启动MySystemServer的代码逻辑。该代码逻辑与Android源码中app_process对应的app_main.cpp基本一样,只是启动的ClassName(源码中类名称)修改为自定义系统服务的名称“MySystemServer”,将进程名称修改为自定义系统服务进程名称“my_process”,然后编译成二进制执行文件my_system_server,将my_system_server放入指定目录下,如/system/bin/目录下。
第一生成模块608用于在启动原生系统服务的配置文件中增加启动该自定义系统服务的执行文件的配置代码,生成包含启动该自定义系统服务的执行文件的配置代码的启动系统服务的配置文件。
具体地,在Android的启动核心服务的配置文件(即init.rc文件或initng文件或upstart文件或runit文件或bootscripts文件等)中增加启动该自定义系统服务的执行文件的配置代码。
例如,在启动核心服务的配置文件中增加启动该自定义系统服务的执行文件的配置代码如下:
service my_system_server/system/bin/my_system_serverclass main
上述配置代码包括自定义系统服务的执行文件所存储的路径,并提供了入口函数class main。
init.rc文件是内核自行启动之后,通过启动一个用户级程序init的方式,完成引导过程。
上述独立系统进程的实现装置,通过将自定义系统服务中创建上下文及设置进程属性为系统进程,并将启动自定义系统服务的执行文件的配置代码增加到启动原生系统服务的配置文件中生成启动系统服务的配置文件,如此在操作系统启动时能够启动自定义系统服务中,使得自定义系统服务以独立系统进程运行,因自定义系统服务以独立系统进程运行,与原生系统进程隔开,即使自定义系统服务进程出现错误,也不会影响原生系统进程,不会导致死机,且独立系统进程出错之后能够自动恢复,为后续继续提供服务。
图7为另一个实施例中独立系统进程的实现装置的结构框图。如图7所示,一种独立系统进程的实现装置,除了包括自定义系统服务获取模块602、配置模块604、执行文件获取模块606和第一生成模块608,还包括加载模块610、进程启动模块612、自定义系统服务启动模块614、调用模块616。其中:
加载模块610用于在系统启动时,加载包含启动该自定义系统服务的执行文件的配置代码的启动系统服务的配置文件。
进程启动模块612用于根据加载的系统服务的配置文件启动原生系统服务进程和自定义系统服务进程。
具体地,原生系统服务进程是指未经过修改过的操作系统自带的底层运行的核心系统服务进程,给上层应用程序提供各种服务,比如访问硬件等。自定义系统服务进程是指给开发者自定义系统服务提供运行环境的系统进程。例如,自定义系统服务进程可为my_system_server进程。
自定义系统服务启动模块614用于在该自定义系统服务进程中启动自定义系统服务。
具体地,启动自定义系统服务可为启动MySystemServer。
调用模块616用于根据自定义系统服务进程的属性为系统进程,将该自定义系统服务进程作为独立系统进程运行。
具体地,因自定义系统服务进程的属性设置为系统进程,可将自定义系统服务进程作为独立系统进程进行运行。
上述独立系统进程的实现装置,在系统启动时,通过加载包含启动该自定义系统服务的执行文件的配置代码的启动系统服务的配置文件,使得原生系统服务进程和自定义系统服务进程同时运行,并在自定义系统服务进程中启动自定义系统服务,使得自定义系统服务进程作为独立系统服务进程进行运行,与原生系统进程隔开,即使自定义系统服务进程出现错误,也不会影响原生系统进程,不会导致死机,且独立系统进程出错之后能够自动恢复,为后续继续提供服务。
配置模块604还用于在活动管理服务同级目录下增加委托类文件,并在该委托类文件中增加将当前的进程标识放入系统进程列表中的配置系统服务函数;以及在原生系统服务中增加跨进程调用服务,通过该跨进程调用服务调用该委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中;
调用模块616还用于通过该原生系统服务进程中的跨进程调用服务调用该委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中,以使该自定义系统服务进程作为独立系统进程运行。
图8为另一个实施例中独立系统进程的实现装置的结构框图。如图8所示,一种独立系统进程的实现装置,除了包括自定义系统服务获取模块602、配置模块604、执行文件获取模块606和第一生成模块608,还包括第二生成模块618。其中:
第二生成模块618用于将生成的启动系统服务的配置文件重新编译生成只读内存镜像文件。
在其他实施例中,一种独立系统进程的实现装置,可包括自定义系统服务获取模块602、配置模块604、执行文件获取模块606、第一生成模块608、加载模块610、进程启动模块612、自定义系统服务启动模块614、调用模块616和第二生成模块618的任意可能组合。
图9为另一个实施例中独立系统进程的实现装置的结构框图。如图9所示,一种独立系统进程的实现装置,包括加载模块902、进程启动模块904、自定义系统服务启动模块906和调用模块908。其中:
加载模块902用于在系统启动时,加载包含启动自定义系统服务的执行文件的配置代码的启动系统服务的配置文件。
进程启动模块904用于根据加载的系统服务的配置文件启动原生系统服务进程和自定义系统服务进程。
自定义系统服务启动模块906用于在该自定义系统服务进程中启动自定义系统服务;
调用模块908用于通过该原生系统服务进程中的跨进程调用服务调用委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中,以使该自定义系统服务进程作为独立系统进程运行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种独立系统进程的实现方法,包括以下步骤:
获取自定义系统服务,并在所述自定义系统服务中创建上下文;
配置所述自定义系统服务的进程属性为系统进程;
获取启动所述自定义系统服务的执行文件;
在启动原生系统服务的配置文件中增加启动所述自定义系统服务的执行文件的配置代码,生成包含启动所述自定义系统服务的执行文件的配置代码的启动系统服务的配置文件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在系统启动时,加载包含启动所述自定义系统服务的执行文件的配置代码的启动系统服务的配置文件;
根据加载的系统服务的配置文件启动原生系统服务进程和自定义系统服务进程;
在所述自定义系统服务进程中启动自定义系统服务;
根据自定义系统服务进程的属性为系统进程,将所述自定义系统服务进程作为独立系统进程运行。
3.根据权利要求2所述的方法,其特征在于,所述配置所述自定义系统服务进程的属性为系统进程的步骤包括:
在活动管理服务同级目录下增加委托类文件,并在所述委托类文件中增加将当前的进程标识放入系统进程列表中的配置系统服务函数;
在原生系统服务中增加跨进程调用服务,通过所述跨进程调用服务调用所述委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中;
所述根据自定义系统服务进程的属性为系统进程,将所述自定义系统服务进程作为独立系统进程运行的步骤包括:
通过所述原生系统服务进程中的跨进程调用服务调用所述委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中,以使所述自定义系统服务进程作为独立系统进程运行。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将生成的启动系统服务的配置文件重新编译生成只读内存镜像文件。
5.根据权利要求1所述的方法,其特征在于,所述获取启动所述自定义系统服务的执行文件的步骤包括:
将源码中类名称修改为自定义系统服务的名称,将进程名称修改为自定义系统服务进程名称,再编译生成二进制执行文件,得到启动所述自定义系统服务的执行文件,并将自定义系统服务的执行文件放入指定目录下。
6.一种独立系统进程的实现方法,包括以下步骤:
在系统启动时,加载包含启动自定义系统服务的执行文件的配置代码的启动系统服务的配置文件;
根据加载的系统服务的配置文件启动原生系统服务进程和自定义系统服务进程;
在所述自定义系统服务进程中启动自定义系统服务;
通过所述原生系统服务进程中的跨进程调用服务调用委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中,以使所述自定义系统服务进程作为独立系统进程运行。
7.一种独立系统进程的实现装置,其特征在于,包括:
自定义系统服务获取模块,用于获取自定义系统服务进程,并在所述自定义系统服务进程中创建上下文;
配置模块,用于配置所述自定义系统服务进程的属性为系统进程;
执行文件获取模块,用于获取启动所述自定义系统服务的执行文件;
第一生成模块,用于在启动原生系统服务的配置文件中增加启动所述自定义系统服务的执行文件的配置代码,生成包含启动所述自定义系统服务的执行文件的配置代码的启动系统服务的配置文件。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
加载模块,用于在系统启动时,加载包含启动所述自定义系统服务的执行文件的配置代码的启动系统服务的配置文件;
进程启动模块,用于根据加载的系统服务的配置文件启动原生系统服务进程和自定义系统服务进程;
自定义系统服务启动模块,用于在所述自定义系统服务进程中启动自定义系统服务;
调用模块,用于根据自定义系统服务进程的属性为系统进程,将所述自定义系统服务进程作为独立系统进程运行。
9.根据权利要求8所述的装置,其特征在于,所述配置模块还用于在活动管理服务同级目录下增加委托类文件,并在所述委托类文件中增加将当前的进程标识放入系统进程列表中的配置系统服务函数;以及在原生系统服务中增加跨进程调用服务,通过所述跨进程调用服务调用所述委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中;
所述调用模块还用于通过所述原生系统服务进程中的跨进程调用服务调用所述委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中,以使所述自定义系统服务进程作为独立系统进程运行。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二生成模块,用于将生成的启动系统服务的配置文件重新编译生成只读内存镜像文件。
11.根据权利要求7所述的装置,其特征在于,所述执行文件获取模块还用于将源码中类名称修改为自定义系统服务的名称,将进程名称修改为自定义系统服务进程名称,再编译生成二进制执行文件,得到启动所述自定义系统服务的执行文件,并将自定义系统服务的执行文件放入指定目录下。
12.一种独立系统进程的实现装置,其特征在于,包括:
加载模块,用于在系统启动时,加载包含启动自定义系统服务的执行文件的配置代码的启动系统服务的配置文件;
进程启动模块,用于根据加载的系统服务的配置文件启动原生系统服务进程和自定义系统服务进程;
自定义系统服务启动模块,用于在所述自定义系统服务进程中启动自定义系统服务;
调用模块,用于通过所述原生系统服务进程中的跨进程调用服务调用委托类文件中的配置系统服务函数将自定义系统服务进程标识放入系统进程列表中,以使所述自定义系统服务进程作为独立系统进程运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510828360.5A CN106775608B (zh) | 2015-11-24 | 2015-11-24 | 独立系统进程的实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510828360.5A CN106775608B (zh) | 2015-11-24 | 2015-11-24 | 独立系统进程的实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106775608A true CN106775608A (zh) | 2017-05-31 |
CN106775608B CN106775608B (zh) | 2020-09-04 |
Family
ID=58964136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510828360.5A Active CN106775608B (zh) | 2015-11-24 | 2015-11-24 | 独立系统进程的实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106775608B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108196892A (zh) * | 2017-12-29 | 2018-06-22 | 北京安云世纪科技有限公司 | 用于对系统启动过程进行定制的方法、装置以及移动终端 |
CN111782188A (zh) * | 2019-09-30 | 2020-10-16 | 北京京东尚科信息技术有限公司 | 集成跨平台移动应用开发框架的方法和装置 |
CN112579191A (zh) * | 2019-09-29 | 2021-03-30 | 华为终端有限公司 | 一种组件加载方法、装置及系统 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1959640A (zh) * | 2005-11-03 | 2007-05-09 | 国际商业机器公司 | 在软件包管理系统将用户进程表示为软件包的系统和方法 |
CN1989486A (zh) * | 2004-05-20 | 2007-06-27 | Sap股份公司 | 在运行时系统中共享对象 |
US20090265715A1 (en) * | 2004-04-30 | 2009-10-22 | Microsoft Corporation | VEX - Virtual Extension Framework |
CN101763286A (zh) * | 2008-12-22 | 2010-06-30 | 国际商业机器公司 | 用于在混合系统中跨平台转移工作负载的系统和方法 |
CN102467404A (zh) * | 2011-10-14 | 2012-05-23 | 海尔集团技术研发中心 | 一种基于物理内存实现软件快速切换的方法及装置 |
CN102681889A (zh) * | 2012-04-27 | 2012-09-19 | 电子科技大学 | 一种云计算开放平台的调度方法 |
CN103136350A (zh) * | 2013-02-01 | 2013-06-05 | 江苏易合大成网络科技有限公司 | 一种在系统平台上运行多个应用的方法及装置 |
WO2013134206A1 (en) * | 2012-03-05 | 2013-09-12 | The Board Of Regents, The University Of Texas System | Automatically bridging the semantic gap in machine introspection |
CN103530194A (zh) * | 2012-07-05 | 2014-01-22 | 腾讯科技(深圳)有限公司 | 软件系统实现方法和软件系统 |
CN103577328A (zh) * | 2013-11-20 | 2014-02-12 | 北京奇虎科技有限公司 | 一种应用的性能分析方法及装置 |
US20140068614A1 (en) * | 2007-10-30 | 2014-03-06 | Vmware, Inc. | Secure identification of execution contexts |
CN104376256A (zh) * | 2014-12-02 | 2015-02-25 | 北京奇虎科技有限公司 | 应用程序进程孵化控制方法及装置 |
CN104965692A (zh) * | 2014-05-08 | 2015-10-07 | 腾讯科技(深圳)有限公司 | 在桌面应用中跨进程显示数据的方法及系统 |
-
2015
- 2015-11-24 CN CN201510828360.5A patent/CN106775608B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090265715A1 (en) * | 2004-04-30 | 2009-10-22 | Microsoft Corporation | VEX - Virtual Extension Framework |
CN1989486A (zh) * | 2004-05-20 | 2007-06-27 | Sap股份公司 | 在运行时系统中共享对象 |
CN1959640A (zh) * | 2005-11-03 | 2007-05-09 | 国际商业机器公司 | 在软件包管理系统将用户进程表示为软件包的系统和方法 |
US20140068614A1 (en) * | 2007-10-30 | 2014-03-06 | Vmware, Inc. | Secure identification of execution contexts |
CN101763286A (zh) * | 2008-12-22 | 2010-06-30 | 国际商业机器公司 | 用于在混合系统中跨平台转移工作负载的系统和方法 |
CN102467404A (zh) * | 2011-10-14 | 2012-05-23 | 海尔集团技术研发中心 | 一种基于物理内存实现软件快速切换的方法及装置 |
WO2013134206A1 (en) * | 2012-03-05 | 2013-09-12 | The Board Of Regents, The University Of Texas System | Automatically bridging the semantic gap in machine introspection |
CN102681889A (zh) * | 2012-04-27 | 2012-09-19 | 电子科技大学 | 一种云计算开放平台的调度方法 |
CN103530194A (zh) * | 2012-07-05 | 2014-01-22 | 腾讯科技(深圳)有限公司 | 软件系统实现方法和软件系统 |
CN103136350A (zh) * | 2013-02-01 | 2013-06-05 | 江苏易合大成网络科技有限公司 | 一种在系统平台上运行多个应用的方法及装置 |
CN103577328A (zh) * | 2013-11-20 | 2014-02-12 | 北京奇虎科技有限公司 | 一种应用的性能分析方法及装置 |
CN104965692A (zh) * | 2014-05-08 | 2015-10-07 | 腾讯科技(深圳)有限公司 | 在桌面应用中跨进程显示数据的方法及系统 |
CN104376256A (zh) * | 2014-12-02 | 2015-02-25 | 北京奇虎科技有限公司 | 应用程序进程孵化控制方法及装置 |
Non-Patent Citations (1)
Title |
---|
罗升阳: "Android系统在新进程中启动自定义服务过程(startService)的原理分析", 《CSDN》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108196892A (zh) * | 2017-12-29 | 2018-06-22 | 北京安云世纪科技有限公司 | 用于对系统启动过程进行定制的方法、装置以及移动终端 |
CN108196892B (zh) * | 2017-12-29 | 2021-02-23 | 北京安云世纪科技有限公司 | 用于对系统启动过程进行定制的方法、装置以及移动终端 |
CN112579191A (zh) * | 2019-09-29 | 2021-03-30 | 华为终端有限公司 | 一种组件加载方法、装置及系统 |
CN111782188A (zh) * | 2019-09-30 | 2020-10-16 | 北京京东尚科信息技术有限公司 | 集成跨平台移动应用开发框架的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106775608B (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3605324A1 (en) | Application development method and tool, device, and storage medium thereof | |
US11853820B2 (en) | Cross-process communication method, apparatus, and device | |
US10447814B2 (en) | Joint servicing of software packages | |
CN102971688B (zh) | 跨平台应用程序框架 | |
CN103970563B (zh) | 动态加载安卓类的方法 | |
Popp et al. | Tool support for automated multi-device GUI generation from discourse-based communication models | |
CN105814539A (zh) | 用于代码虚拟化和远程进程调用生成的方法和装置 | |
CN103902265A (zh) | 一种应用实现方法及相关装置 | |
EP2705418A1 (en) | Methods to adapt user interfaces and input controls | |
US10908948B2 (en) | Multiple application instances in operating systems that utilize a single process for application execution | |
CN111399840A (zh) | 一种模块开发方法及装置 | |
CN113805882A (zh) | 应用程序开发的方法、装置、电子设备及存储介质 | |
RU2639667C2 (ru) | Контекстное приглашение в пробной версии приложения | |
CN111045675A (zh) | 一种基于Flutter的页面生成方法、装置、设备和存储介质 | |
CN108351766B (zh) | 从移动设备创建和修改应用 | |
CN106775608A (zh) | 独立系统进程的实现方法和装置 | |
US10599444B2 (en) | Extensible input stack for processing input device data | |
KR101254756B1 (ko) | 복수의 운영체제와 호환 가능한 가상머신 생성 방법 및 가상머신 프로그램을 저장한 기록매체 | |
CN107092472A (zh) | 一种动态发布方法及设备 | |
WO2019139738A1 (en) | Extensible input stack for processing input device data | |
CN113448585B (zh) | 一种线程池的编译方法、装置、电子设备和存储介质 | |
CN110471828A (zh) | 一种操作系统测试方法、装置及其设备 | |
Korchi et al. | Classification of existing mobile cross-platform approaches | |
CN110058893B (zh) | 一种应用程序控件的展示方法和装置 | |
CN113835680A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |