CN103631612B - 启动操作系统的方法与装置 - Google Patents
启动操作系统的方法与装置 Download PDFInfo
- Publication number
- CN103631612B CN103631612B CN201210302657.4A CN201210302657A CN103631612B CN 103631612 B CN103631612 B CN 103631612B CN 201210302657 A CN201210302657 A CN 201210302657A CN 103631612 B CN103631612 B CN 103631612B
- Authority
- CN
- China
- Prior art keywords
- user
- resource file
- file
- operating system
- application program
- 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.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例涉及一种操作系统启动的方法与装置。所述方法包括:获取共用程序文件列表,并根据该共用程序文件列表加载所述共用程序文件列表对应的预加载文件,所述预加载文件包括和用户在开机时自启动的程序有关的多个类与资源文件;当所述和用户在开机时自启动的程序有关的多个类与资源文件加载完成后,利用父进程创建子进程,将已加载的文件植入所述父进程创建的子进程中,生成所述子进程,以完成所述操作系统的启动。本发明实施例实现了在操作系统启动时,降低操作系统的启动时间,提高系统的启动速度。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种启动操作系统的方法与装置。
背景技术
随着计算机技术的发展,操作系统的启动速度一直是计算机技术发展的重点,通过提升操作系统的启动速度可以使操作系统的运行速度缩短,减少用户的等待时间,也提高了操作系统的运行效率。
操作系统的启动速度是由系统加载进程决定的,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。进程是一个实体,每一个进程都有它自己的地址空间,包括文本区域、数据区域和堆栈。文本区域存储系统内核执行的代码;数据区域存储进程执行期间使用的动态分配的内存;堆栈区域存储进程调用的指令和本地变量。
在现有技术的安卓(Android)系统的启动过程中,所有应用程序进程都是由一个父进程(Zygote)调用创建函数(fork)指令而复制产生的。而在Android系统的启动阶段,Zygote会加载大量的Java类和资源文件到Zygote进程的内存中,以便于新进程共享这些数据,从而加快新进程的启动速度与运行速度。但是,如此做法也存在以下的缺陷,1)在启动的时候加载全部的预加载(preload)列表,会大大延长Android的启动时间,降低系统的启动速度;2)Zygote加载的大量的java类与资源文件是以一个固定列表的形式写在preload文件中,但该文件是不会被更新的,因此,当用户的使用习惯发生改变时,新进程的启动效率低。
发明内容
本发明实施例提供了一种操作系统启动的方法和装置,以降低系统的启动时间,提高系统的启动速度;并进一步提高在用户的使用习惯发生改变时新进程的启动效率,加速系统的启动速度。
在第一方面,本发明提实施例供了一种启动操作系统的方法,所述方法包括:
获取共用程序文件列表,并根据该共用程序文件列表加载所述共用程序文件列表对应的预加载文件,所述预加载文件包括和用户在开机时自启动的程序有关的多个类与资源文件;
当所述和用户在开机时自启动的程序有关的多个类与资源文件加载完成后,利用父进程创建进子程,将已加载的文件植入所述父进程创建的子进程中,生成所述子进程,以完成所述操作系统的启动。
在第二方面,本发明提实施例供了一种启动操作系统的装置,所述装置包括:
获取单元,用于获取共用程序文件列表,并根据该共用程序文件列表加载所述共用程序文件列表对应的预加载文件,所述预加载文件包括和用户在开机时自启动的程序有关的多个类与资源文件;
第一执行单元,用于当所述和用户在开机时自启动的程序有关的多个类与资源文件加载完成后,利用父进程创建子进程,将已加载的文件植入所述父进程创建的子进程中,生成所述子进程,以完成所述操作系统的启动。
本发明实施例提供的启动操作系统的方法与装置,父进程获取共用程序文件列表preload.boot,当所述和用户在开机时自启动的程序有关的多个类与资源文件加载完成后,利用父进程创建子进程时,将已加载的文件植入所述父进程创建的子进程中,生成子进程,不用重复加载多个Java类与资源文件,当操作系统启动完成后,记录用户常用的应用进程名称,加载该用户常用的应用进程,可以解决现有技术在操作系统启动的时候需要加载全部的preload列表而不得不延长操作系统的启动时间的问题;还可以解决当用户的使用习惯发生改变时,父进程生成进程的启动效率低的问题。
附图说明
图1为本发明实施例一提供的启动操作系统的方法流程图;
图2为本发明实施例提供的操作系统内核示意图;
图3为本发明实施例二提供的启动操作系统的方法具体流程图;
图4为本发明实施例三提供的生成预加载文件流程图;
图5为本发明实施例四提供的生成用户预加载文件流程图;
图6为本发明实施例五提供的启动操作系统的装置图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
图1为本发明实施例一提供的启动操作系统的方法流程图。如图1所示,该实施例包括以下步骤:
步骤110、获取共用程序文件列表,并根据该共用程序文件列表加载所述共用程序文件列表对应的预加载文件,所述预加载文件包括和用户在开机时自启动的程序有关的多个类与资源文件。
具体地,用户点击终端设备的启动按钮。终端设备为具有操作系统的终端设备,例如,台式电脑、手机等。操作系统可以是安卓(Android)系统、Linux系统等。在本发明各实施例中,将以台式电脑及其具有的安卓系统为例进行说明。
在用户点击启动按钮后,开始启动操作系统。首先,触发启动操作系统内核;操作系统内核启动解析程序init.rc定义的启动配置项,启动服务管理器(Service Manager),启动虚拟机Dalvik,启动操作系统进程的父进程Zygote,并注册父进程套接字,操作系统内核为父进程分配内存,父进程用于创建子进程。
操作系统内核启动父进程后,父进程从操作系统内存中获取共用程序文件列表(preload.boot)。在共用程序文件列表中存储了多个预加载文件,预加载文件包括和用户在开机时自启动的程序有关的多个类与资源文件,在本发明实施例中以Java类与资源文件为例说明,所述多个Java类与资源文件为开机自启动的程序共用的Java类与资源文件,例如,开机自启动的程序中包括浏览器程序、输入法程序等,则多个Java类与资源文件为启动浏览器程序、输入法程序共用的Java类与资源文件,而且,该预加载文件所存储的文件还可以因用户的使用习惯的不同而不同。换言之,可以根据用户的使用习惯,修改该预加载文件中的内容。
父进程从操作系统内存中获取共用程序文件列表后,对共用程序文件列表中的多个Java类与资源文件进行加载,将已加载的Java类与资源文件存储在自身的内存中。
步骤120、当所述和用户在开机时自启动的程序有关的多个Java类与资源文件加载完成后,利用父进程创建子进程,将已加载的文件植入所述父进程创建的子进程中,生成所述子进程,以完成所述操作系统的启动。
具体地,当父进程将已加载的Java类与资源文件存储在自身的内存后,父进程自行通过操作系统的fork指令,调用已加载的多个Java类与资源文件,将已加载的Java类与资源文件的内容植入创建的子进程中,生成子进程,该子进程为和用户在开机时自动启动的程序有关的进程,或启动操作系统所需的进程,其中,Java类与资源文件中包含的内容为二进制代码、程序等,父进程在创建子进程时,调用已加载的多个Java类与资源文件的内容,将Java类与资源文件中包含的内容植入创建的子进程中,进而生成子进程。
由于父进程已经在先加载的多个Java类与资源文件为开机自启动的程序共用的Java类与资源文件,因此,在生成的子进程中,父进程可不必重复加载多个Java类与资源文件,为操作系统的启动节约启动时间,提高操作系统的启动速度。
在一个例子中,父进程利用fork指令,生成系统服务(System Server)进程、发射(Launcher)进程,则父进程将已加载的文件内容植入创建的系统服务进程、发射进程中,生成系统服务进程、发射进程。所述系统服务进程、发射进程为启动操作系统的必要进程。
在另一个例子中,如果在共用程序文件列表中的预加载文件中包括启动浏览器的文件,则说明用户开机自启动的程序中包括浏览器程序,父进程加载和用户在开机时自启动的程序有关的多个类与资源文件加载完成后,创建启动浏览器程序的子进程,父进程调用已加载的多个Java类与资源文件,将已加载的文件植入创建的浏览器程序的子进程中,生成浏览器程序的子进程。
上述步骤110与步骤120为顺序执行步骤,在步骤110与步骤120中描述的启动步骤为启动操作系统的顺序步骤,即在用户点击启动按钮,触发启动操作系统内核后,在操作系统内核中已经存在后续启动各配置项的时间顺序,也就是说,在操作系统内核启动后,系统内核启动配置项和父进程,当父进程启动完成后,父进程获取共用程序文件列表,并自行根据共用程序文件列表加载所述共用程序文件列表对应的预加载文件,父进程加载完成后,开始创建子进程,生成子进程,以完成操作系统的启动。
因此,通过上述步骤110、120父进程加载共用程序文件列表preload.boot中的内容,将已加载的内容存储在自身的内存中。在生成子进程时,则直接从自身的内存中调用已加载的内容,将已加载的内容植入创建的子进程中,生成子进程,以完成所述操作系统的启动。由于父进程在先已经加载了共用程序文件列表preload.boot中的内容,在父进程生成新进程时,可以不用重复加载多个Java类与资源文件,进而降低系统的启动时间,提高系统的启动速度。
与现有技术相比,本发明实施例提供的操作系统的启动方法,可以解决现有技术在操作系统启动的时候需要加载全部的preload列表从而导致操作系统的启动时间过长,操作系统的启动速度降低的问题。
上述实施例中操作系统可以采用如图2所示的操作系统内核加以实现。操作系统内核包括进程管理模块、存储管理模块、文件管理模块、网络管理模块及进程间通信模块。进程管理模块用于启动相关项及父进程;存储管理模块用于多个进程安全地共享操作系统内存区域;文件管理模块用于隐藏各种不同硬件的具体细节,为所有设备提供统一的接口;网络管理模块提供对各种网络标准协议的存取和各种网络硬件的支持,进程间通信模块用于支持进程间各种通信机制。
上述实施例简要描述了操作系统启动的方法,下面的实施例结合图2将给出操作系统启动的具体方法流程。
图3为本发明实施例二提供的启动操作系统的方法具体流程图。如图3所示,本实施例包括以下步骤:
步骤301、启动操作系统内核及父进程;
具体地,用户点击终端设备的启动按钮。终端设备为具有操作系统的终端设备,例如,台式电脑、手机等。操作系统可以是安卓(Android)系统、Linux系统等。在本发明实施例中,以台式电脑及其具有的安卓系统为例进行说明。
在用户点击启动按钮后,开始启动操作系统。首先,触发启动操作系统内核;操作系统内核启动解析程序init.rc定义的启动配置项,启动服务管理器(Service Manager),启动虚拟机Dalvik,启动操作系统进程的父进程Zygote,并注册父进程套接字,操作系统内核为父进程分配内存。父进程用于产生启动操作系统所需的子进程。
步骤302、获取共用程序文件列表,并根据该共用程序文件列表加载所述共用程序文件列表对应的预加载文件,所述预加载文件包括和用户在开机时自启动的程序有关的多个类与资源文件。
具体地,操作系统内核启动父进程后,父进程利用进程间通信模块与存储管理模块进行通信,从系统内存中获取共用程序文件列表,在共用程序文件列表中存储了多个预加载文件,预加载文件包括和用户在开机时自启动的程序有关的多个类与资源文件,在本发明实施例中以Java类与资源文件为例说明,所述多个Java类与资源文件为开机自启动的程序共用的Java类与资源文件,例如,开机自启动的程序中包括浏览器程序、输入法程序等,则多个Java类与资源文件为启动浏览器程序、输入法程序共用的Java类与资源文件,而且,该预加载文件所存储的文件还可以因用户的使用习惯的不同而不同。换言之,可以根据用户的使用习惯,修改该预加载文件中的内容。
父进程获取共用程序文件列表后,对共用程序文件列表中预加载文件进行加载,将已加载的Java类与资源文件存储在操作系统为父进程分配的内存空间中。
步骤303、当所述和用户在开机时自启动的程序有关的多个类与资源文件加载完成后,利用父进程创建子进程,将已加载的文件植入所述父进程创建的子进程中,生成所述子进程,以完成所述操作系统的启动。
具体地,当父进程加载和用户在开机时自启动的程序有关的多个类与资源文件加载完成,并将已加载的Java类与资源文件存储在自身的内存后,父进程自行通过操作系统的fork指令,调用已加载的多个Java类与资源文件,将已加载的Java类与资源文件的内容植入创建的子进程中,生成子进程,该子进程为和用户在开机时自动启动的程序有关的进程,或启动操作系统所需的进程,其中,Java类与资源文件中包含的内容为二进制代码、程序等,父进程在创建子进程时,调用已加载的多个Java类与资源文件的内容,将Java类与资源文件中包含的内容植入创建的子进程中,进而生成子进程。
由于父进程已经在先加载的多个Java类与资源文件为开机自启动的程序共用的Java类与资源文件,因此,在生成的子进程中,父进程可不必重复加载多个Java类与资源文件,为操作系统的启动节约启动时间,提高操作系统的启动速度。
在一个例子中,父进程利用fork指令,生成系统服务(System Server)进程、发射(Launcher)进程,则父进程将已加载的文件植入创建的系统服务进程、发射进程中,生成系统服务进程、发射进程,所述系统服务进程、发射进程为启动操作系统的必要进程。
在另一个例子中,如果在共用程序文件列表中的预加载文件中包括启动浏览器的文件,则说明用户开机自启动的程序中包括浏览器程序,父进程加载和用户在开机时自启动的程序有关的多个类与资源文件加载完成后,创建启动浏览器程序的子进程,父进程调用已加载的多个Java类与资源文件,将已加载的文件植入创建的浏览器程序的子进程中,生成浏览器程序的子进程。
父进程在生成系统服务进程及发射进程后,由系统服务进程启动操作系统,系统服务进程启动操作系统后,向发射进程发送系统准备信息,发射进程根据系统准备信息启动桌面程序,将桌面程序展示给用户。当用户可以看到桌面程序时,则操作系统已经基本启动完成。
父进程在生成系统服务进程及发射进程后,还注册套接字监听器,注册套接字监听器用于后续与发射进程的通信。
步骤304、启动扫描进程,对磁盘中存储的用户应用程序列表进行扫描,获得用户常用的应用程序列表。
具体地,当发射进程在启动桌面程序完成后,进程管理模块中的通知模块向父进程发送套接字的通知信息,在通知信息中携带操作系统启动完成信息、告知父进程启动扫描进程的信息和告知父进程加载用户常用的应用程序;
在步骤303中已说明,父进程已经注册套接字监听器,套接字监听器接收发射进程发送的通知信息,并且解析通知信息携带的信息。然后,父进程通过进程管理模块中的启动模块启动扫描进程,并利用进程间通信模块与存储管理模块进行通信,从磁盘中多个获取用户应用程序列表applist。该扫描进程对磁盘中存储的多个用户应用程序列表进行扫描,扫描用户常用的应用程序的Java类名与资源文件。
在一个例子中,扫描进程对K个用户应用程序列表进行扫描,获取每个列表中用户使用的应用程序名称。当用户使用的应用程序名称在K个用户应用程序列表中重复出现J(J>1,J∈Z)次时,则确认该应用程序名称为用户常用的应用程序。
在用户常用的应用程序中,可能存在多个应用程序具有相同的Java类与资源文件。因此,筛除具有相同Java类与资源文件的应用程序,将筛除后的用户常用的应用程序的Java类与资源文件存储在用户常用的应用程序列表preload.user中,用户常用的应用程序列表存储在存储管理模块。
步骤305、对所述用户常用的应用程序列表中存储的与用户常用的应用程序有关的类与资源文件进行加载,以便在所述用户需要运行该应用程序时,调用已加载的所述应用程序。
具体地,父进程利用进程间通信模块与存储管理模块进行通信,从系统内存中获取用户常用的应用程序列表。
在获取到用户常用的应用程序列表后,对用户常用的应用程序列表中存储的应用程序的Java类与资源文件进行加载,将已加载的应用程序的Java类与资源文件存储在自身的内存中。从而,在用户需要该应用程序时,父进程可以直接调用已加载的应用程序,使得应用程序的运行速度缩短,提高系统的运行速度。
需要说明的是,步骤304和步骤305为可选步骤,当操作系统启动完成后,用户没有后续操作,则执行步骤304和步骤305,当操作系统启动完成后,用户开始后续操作,则可不执行步骤304和步骤305。
因此,通过上述步骤,父进程加载共用程序文件列表preload.boot中的内容,将已加载的内容存储在自身的内存中。在生成子进程时,则直接从自身的内存中调用已加载的内容,将已加载的内容植入创建的子进程中,生成子进程,以完成所述操作系统的启动。由于父进程在先已经加载了共用程序文件列表中的内容,在父进程生成子进程时,可以不用重复加载多个Java类与资源文件,当操作系统启动完成后,根据用户使用习惯的改变,随时记录用户常用的应用进程名称,加载该用户常用的应用进程,可以解决现有技术在操作系统启动的时候需要加载全部的preload列表而不得不延长操作系统的启动时间的问题;还可以解决当用户的使用习惯发生改变时,父进程生成进程的启动效率低的问题。
与现有技术相比,本发明实施例提供的操作系统的启动方法,可以解决现有技术在操作系统启动的时候需要加载全部的preload列表从而导致操作系统的启动时间过长,操作系统的启动速度降低的问题;还可以解决当用户的使用习惯发生改变时,父进程生成进程的启动效率低的问题。
在上述实施例二中,父进程利用进程间通信模块与存储管理模块进行通信,从系统内存中获取共用程序文件列表preload.boot。下面实施例三和图4为例说明生成共用程序文件列表的具体过程。本实施例包括以下步骤:
步骤401、在第一时间阈值内,获取超过第二时间阈值的类与资源文件的加载耗时值,并将所述超过第二时间阈值的类与资源文件的加载耗时值存储在所述操作系统内存的类与资源文件列表中。
具体地,在进程管理模块中包括加载Java类与资源文件模块,且在加载Java类与资源文件模块中可以包括输出模块。在操作系统启动的过程中,在第一时间阈值M内,输出模块获取超过加载耗时阈值P的多个Java类与资源文件的加载耗时值,将任一Java类与资源文件的加载耗时值与第二时间阈值P进行比较,获取超过第二时间阈值P的任一Java类与资源文件的加载耗时值,并将超过第二时间阈值P的任一Java类与资源文件的加载耗时值存储在操作系统内存的类与资源文件列表loadlist中,所述类与资源文件列表存储在存储管理模块中,如表1所示:
表1类与资源文件列表
文件名 | 加载时间 | 加载耗时 |
File name 1 | 10s | 3ms |
File name 2 | 15s | 2ms |
File name 3 | 17s | 2ms |
...... | ...... | ...... |
步骤402、对所述超过第二时间阈值的类与资源文件的加载耗时值进行排序,获取加载耗时排序表。
具体地,进程管理模块中的排序模块,对表1中的任一Java类与资源文件的加载耗时值进行排序,获取加载耗时排序表,所述加载耗时排序表如表2所示。
表2加载耗时排序列表
文件名 | 加载时间 | 加载耗时 |
File name x | 10s | 20ms |
File name y | 15s | 18ms |
File name z | 8s | 17ms |
...... | ...... | ...... |
在本发明实施例中,对表1中的Java类与资源文件的加载耗时值进行从大到小排序,得出的表2,但排序的方式不限制于此。
步骤403、累加所述加载耗时排序表中多个类与资源文件的加载耗时值,以使累加值不超过且接近第三时间阈值。
具体地,进程管理模块中的累加模块,累加表2中排序靠前的n(n>1)个Java类与资源文件的加载耗时值,设定第三时间阈值N,以使累加值不超过且接近第三时间阈值。
步骤404、将所述累加值不超过且接近第三时间阈值的所述多个类与资源文件存储到所述操作系统内存的共用程序文件列表中。
具体地,将累加值不超过且接近第三时间阈值的多个类与资源文件存储到操作系统内存的共用程序文件列表,所述共用程序文件列表存储在存储管理模块中,所述多个Java类与资源文件为和用户在开机时自启动的程序共有的Java类与资源文件,父进程从操作系统内存中获取共用程序文件列表后,对共用程序载文件列表中的多个Java类与资源文件进行加载,将已加载的Java类与资源文件存储在自身的内存中,当父进程加载完成后,父进程自行通过操作系统的fork指令,调用已加载的多个Java类与资源文件,将已加载的Java类与资源文件的内容植入创建的子进程中,生成子进程,该子进程为和用户在开机时自动启动的程序有关的进程,或启动操作系统所需的进程,其中,Java类与资源文件中包含的内容为二进制代码、程序等,父进程在创建子进程时,调用已加载的多个Java类与资源文件的内容,将Java类与资源文件中包含的内容植入创建的子进程中,进而生成子进程。
需要说明的是,由于不同的用户的使用习惯的不同,因此,表1中存储的内容是不同的,进而表2中存储的内容也是不同的,例如,用户第一次启动操作系统时,启动了10个程序,用户在使用过程中,进行某项配置后,在第二次启动操作系统时,可能启动了8个或11个程序,因此,存储在预加载文件中的Java类与资源文件根据用户的使用习惯,实时修改文件中的内容。
进一步需要说明的是,在实际应用中,还存在一些由于没有超过第二时间阈值P的Java类与资源文件,而不能存放在表1中,这些Java类与资源文件的加载耗时值较小,因此,当操作系统中某一子进程需要这些Java类与资源文件启动应用程序时,则某一子进程自行加载这些Java类与资源文件。
上述步骤401-步骤404为获取共用程序文件列表的一种实现方式,在实际应用中,还可通过其他方式获取共用程序文件列表。
还可将上述步骤401-步骤404根据实际情况选择性执行步骤,或者将上述步骤401-步骤404顺序执行生成共用程序文件列表。
在上述实施例二中,父进程利用进程间通信模块与存储管理模块进行通信,从磁盘中获取多个用户应用程序列表applist。下面以实施例四和图5为例说明生成多个程序列表的具体过程。本实施例包括以下步骤:
步骤501、在所述操作系统启动完成且超过所述第一时间阈值时,记录用户使用的应用程序,将所述用户使用的应用程序的名称存储在所述操作系统内存的用户应用程序列表中。
具体地,进程管理模块中包括记录模块,在操作系统启动完成且超过所述第一时间阈值时,记录模块记录用户使用的应用程序,将用户使用的应用程序名称存储在操作系统内存的用户应用程序列表中,用户应用程序列表存储在存储管理模块中。
步骤502、当所述用户应用程序列表内容变化时,将变化的所述用户应用程序列表从所述操作系统内存转存至磁盘,在所述磁盘中,存储了多个所述用户应用程序列表。
具体地,进程管理模块中包括转存模块,每隔一段时间,当用户应用程序列表内容变化时,转存模块将变化的用户应用程序列表从操作系统内存转存至磁盘,在磁盘中,存储了K个程序列表,K(K>1,K∈Z)为用户启动操作系统的次数。
需要说明的是,上述步骤501、步骤502为可选步骤,当操作系统启动完成后,用户没有后续操作,则执行步骤501和步骤502,当操作系统启动完成后,用户开始后续操作,则可不执行步骤501和步骤502。
相应地,本发明实施例五还提供了启动操作系统的装置。图6为本发明实施例五提供的启动操作系统的装置图。如图6所示,所述装置包括以下模块:
获取模块610,用于获取共用程序文件列表,并根据该共用程序文件列表加载所述共用程序文件列表对应的预加载文件,所述预加载文件包括和用户在开机时自启动的程序有关的多个类与资源文件;第一执行模块620,用于当所述和用户在开机时自启动的程序有关的多个类与资源文件加载完成后,利用父进程创建子进程,将已加载的文件植入所述父进程创建的子进程中,生成所述子进程,以完成所述操作系统的启动。
所述获取模块610具体用于:在第一时间阈值内,获取超过第二时间阈值的类与资源文件的加载耗时值,并将所述超过第二时间阈值的类与资源文件的加载耗时值存储在所述操作系统内存的类与资源文件列表中;
对所述超过第二时间阈值的类与资源文件的加载耗时值进行排序,获取加载耗时排序表;
累加所述加载耗时排序表中多个类与资源文件的加载耗时值,以使累加值不超过且接近第三时间阈值;
将所述累加值不超过且接近第三时间阈值的所述多个类与资源文件存储到所述操作系统内存的共用程序文件列表;
获取所述共用程序文件列表。
所述装置还包括:启动模块630,用于启动扫描进程,对磁盘中存储的用户应用程序列表进行扫描,获得用户常用的应用程序列表;
第二执行模块640,用于对所述用户常用的应用程序列表中存储的与用户常用的应用程序有关的类与资源文件进行加载,以便在所述用户需要运行该应用程序时,调用已加载的所述应用程序。
所述装置还包括:记录模块650,用于在所述操作系统启动完成且超过所述第一时间阈值时,记录用户使用的应用程序,将所述用户使用的应用程序的名称存储在所述操作系统内存的用户应用程序列表中;
转存模块660,用于当所述用户应用程序列表内容变化时,将变化的所述用户应用程序列表从所述操作系统内存转存至磁盘,在所述磁盘中,存储了多个所述用户应用程序列表。
所述启动模块630具体用于:当某个所述应用程序的名称在K个用户应用程序列表中出现了不小于J次,则确认所述应用程序是用户常用的应用程序;
其中,所述K>1,K∈Z,所述J>1,J∈Z;
筛除具有相同类与资源文件的所述用户常用的应用程序;
将筛除后的所述用户常用的应用程序的类与资源文件存储在所述操作系统内存的用户常用的应用程序列表;
获取存储在所述操作系统内存的用户常用的应用程序列表。
通过应用本发明实施例提供的操作系统的启动装置,获取模块加载共用程序文件列表中的内容。第一执行模块在生成进程时,则直接从自身的内存中调用已加载的内容,将已加载的内容植入创建的进程中,生成进程,以完成所述操作系统的启动。由于在先已经加载了共用程序文件列表中的内容,在生成新进程时,可以不用重复加载多个Java类与资源文件,当操作系统启动完成后,根据用户使用习惯的改变,记录模块随时记录用户常用的应用进程名称,第二执行模块加载该用户常用的应用进程,可以解决现有技术在操作系统启动的时候需要加载全部的preload列表而不得不延长操作系统的启动时间的问题;还可以解决当用户的使用习惯发生改变时,父进程生成进程的启动效率低的问题。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种启动操作系统的方法,其特征在于,所述方法包括:
获取共用程序文件列表,并根据该共用程序文件列表加载所述共用程序文件列表对应的预加载文件,所述预加载文件包括和用户在开机时自启动的程序有关的多个类与资源文件;
当所述和用户在开机时自启动的程序有关的多个类与资源文件加载完成后,利用父进程创建子进程,将已加载的文件植入所述父进程创建的子进程中,生成所述子进程,以完成所述操作系统的启动;
所述获取共用程序文件列表具体包括:
在第一时间阈值内,获取超过第二时间阈值的类与资源文件的加载耗时值,并将所述超过第二时间阈值的类与资源文件的加载耗时值存储在所述操作系统内存的类与资源文件列表中;
对所述超过第二时间阈值的类与资源文件的加载耗时值进行排序,获取加载耗时排序表;
累加所述加载耗时排序表中多个类与资源文件的加载耗时值,以使累加值不超过且接近第三时间阈值;
将所述累加值不超过且接近第三时间阈值的所述多个类与资源文件存储到所述操作系统内存的共用程序文件列表;
获取所述共用程序文件列表。
2.根据权利要求1所述的启动操作系统的方法,其特征在于,所述以完成所述操作系统的启动之后还包括:
启动扫描进程,对磁盘中存储的用户应用程序列表进行扫描,获得用户常用的应用程序列表;
对所述用户常用的应用程序列表中存储的与用户常用的应用程序有关的类与资源文件进行加载,以便在所述用户需要运行该应用程序时,调用已加载的所述应用程序。
3.根据权利要求2所述的启动操作系统的方法,其特征在于,所述启动扫描进程之前还包括:
在所述操作系统启动完成且超过所述第一时间阈值时,记录用户使用的应用程序,将所述用户使用的应用程序的名称存储在所述操作系统内存的用户应用程序列表中;
当所述用户应用程序列表内容变化时,将变化的所述用户应用程序列表从所述操作系统内存转存至磁盘,在所述磁盘中,存储了多个所述用户应用程序列表。
4.根据权利要求2所述的启动操作系统的方法,其特征在于,所述对磁盘中存储的用户应用程序列表进行扫描,获得用户常用的应用程序列表,具体包括:
当某个所述应用程序的名称在K个用户应用程序列表中出现了不小于J次,则确认所述应用程序是用户常用的应用程序;
其中,所述K>1,K∈Z,所述J>1,J∈Z;
筛除具有相同类与资源文件的所述用户常用的应用程序;
将筛除后的所述用户常用的应用程序的类与资源文件存储在所述操作系统内存的用户常用的应用程序列表;
获取存储在所述操作系统内存的用户常用的应用程序列表。
5.一种启动操作系统的装置,其特征在于,所述装置包括:
获取模块,用于获取共用程序文件列表,并根据该共用程序文件列表加载所述共用程序文件列表对应的预加载文件,所述预加载文件包括和用户在开机时自启动的程序有关的多个类与资源文件;
第一执行模块,用于当所述和用户在开机时自启动的程序有关的多个类与资源文件加载完成后,利用父进程创建子进程,将已加载的文件植入所述父进程创建的子进程中,生成所述子进程,以完成所述操作系统的启动;
所述获取模块具体用于:
在第一时间阈值内,获取超过第二时间阈值的类与资源文件的加载耗时值,并将所述超过第二时间阈值的类与资源文件的加载耗时值存储在所述操作系统内存的类与资源文件列表中;
对所述超过第二时间阈值的类与资源文件的加载耗时值进行排序,获取加载耗时排序表;
累加所述加载耗时排序表中多个类与资源文件的加载耗时值,以使累加值不超过且接近第三时间阈值;
将所述累加值不超过且接近第三时间阈值的所述多个类与资源文件存储到所述操作系统内存的共用程序文件列表;
获取所述共用程序文件列表。
6.根据权利要求5所述的启动操作系统的装置,其特征在于,所述装置还包括:
启动模块,用于启动扫描进程,对磁盘中存储的用户应用程序列表进行扫描,获得用户常用的应用程序列表;
第二执行模块,用于对所述用户常用的应用程序列表中存储的与用户常用的应用程序有关的类与资源文件进行加载,以便在所述用户需要运行该应用程序时,调用已加载的所述应用程序。
7.根据权利要求6所述的启动操作系统的装置,其特征在于,所述装置还包括:
记录模块,用于在所述操作系统启动完成且超过所述第一时间阈值时,记录用户使用的应用程序,将所述用户使用的应用程序的名称存储在所述操作系统内存的用户应用程序列表中;
转存模块,用于当所述用户应用程序列表内容变化时,将变化的所述用户应用程序列表从所述操作系统内存转存至磁盘,在所述磁盘中,存储了多个所述用户应用程序列表。
8.根据权利要求6所述的启动操作系统的装置,其特征在于,所述启动模块具体用于:
当某个所述应用程序的名称在K个用户应用程序列表中出现了不小于J次,则确认所述应用程序是用户常用的应用程序;
其中,所述K>1,K∈Z,所述J>1,J∈Z;
筛除具有相同类与资源文件的所述用户常用的应用程序;
将筛除后的所述用户常用的应用程序的类与资源文件存储在所述操作系统内存的用户常用的应用程序列表;
获取存储在所述操作系统内存的用户常用的应用程序列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210302657.4A CN103631612B (zh) | 2012-08-23 | 2012-08-23 | 启动操作系统的方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210302657.4A CN103631612B (zh) | 2012-08-23 | 2012-08-23 | 启动操作系统的方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103631612A CN103631612A (zh) | 2014-03-12 |
CN103631612B true CN103631612B (zh) | 2017-09-29 |
Family
ID=50212710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210302657.4A Active CN103631612B (zh) | 2012-08-23 | 2012-08-23 | 启动操作系统的方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103631612B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794004B (zh) * | 2015-03-17 | 2018-09-04 | 中国石油天然气集团公司 | 信息预加载的方法 |
CN104932900B (zh) * | 2015-06-30 | 2018-10-09 | 北京奇虎科技有限公司 | 容器进程控件的构建方法及装置 |
CN105607901B (zh) * | 2015-12-11 | 2019-12-13 | Tcl集团股份有限公司 | 系统内存的优化方法、装置及终端设备 |
CN107193577B (zh) * | 2016-03-15 | 2021-08-03 | 斑马智行网络(香港)有限公司 | 一种应用启动方法、装置和智能终端 |
CN108073452B (zh) * | 2016-11-10 | 2022-01-28 | 阿里巴巴集团控股有限公司 | 一种动态语言的运行时环境处理方法、装置和设备 |
CN107122214B (zh) * | 2017-04-28 | 2020-08-04 | Oppo广东移动通信有限公司 | 应用程序的预处理方法、装置及终端 |
CN107291495A (zh) * | 2017-06-01 | 2017-10-24 | 努比亚技术有限公司 | 一种共享资源加载方法、终端及计算机可读存储介质 |
CN109582458A (zh) * | 2017-09-28 | 2019-04-05 | 北京国双科技有限公司 | 资源信息加载方法、装置、存储介质及处理器 |
CN107704291A (zh) * | 2017-10-17 | 2018-02-16 | 安徽天鹅科技实业(集团)有限公司 | 一种计算机程序和最近文档预启动方法 |
CN107748677A (zh) * | 2017-10-17 | 2018-03-02 | 岳西县天鹅电子科技有限公司 | 一种计算机快速启动及执行程序的方法 |
CN108197041B (zh) * | 2017-12-28 | 2021-09-28 | 北京奇虎科技有限公司 | 一种确定子进程的父进程的方法、设备及其存储介质 |
CN108595228B (zh) | 2018-05-10 | 2021-03-12 | Oppo广东移动通信有限公司 | 应用程序预测模型建立方法、装置、存储介质及移动终端 |
CN108595227A (zh) | 2018-05-10 | 2018-09-28 | Oppo广东移动通信有限公司 | 应用程序预加载方法、装置、存储介质及移动终端 |
CN108710513B (zh) | 2018-05-15 | 2020-07-21 | Oppo广东移动通信有限公司 | 应用程序启动方法、装置、存储介质及终端 |
CN108829456A (zh) * | 2018-05-29 | 2018-11-16 | Oppo广东移动通信有限公司 | 应用程序预加载方法、装置、存储介质及终端 |
CN108804157A (zh) | 2018-06-05 | 2018-11-13 | Oppo广东移动通信有限公司 | 应用程序预加载方法、装置、存储介质及终端 |
US11436041B2 (en) * | 2019-10-03 | 2022-09-06 | Micron Technology, Inc. | Customized root processes for groups of applications |
CN112749051B (zh) * | 2019-10-31 | 2022-11-08 | 深圳市万普拉斯科技有限公司 | 文件使用信息记录方法、装置和移动终端 |
CN112559073A (zh) * | 2020-12-16 | 2021-03-26 | 北京百度网讯科技有限公司 | 程序启动方法、类间关系构建方法及装置、移动终端 |
US11836087B2 (en) | 2020-12-23 | 2023-12-05 | Micron Technology, Inc. | Per-process re-configurable caches |
CN114519582A (zh) * | 2022-02-21 | 2022-05-20 | 中国邮政储蓄银行股份有限公司 | 服务的预热方法、预热装置和服务系统 |
CN114706633B (zh) * | 2022-06-02 | 2022-10-25 | 荣耀终端有限公司 | 预加载方法、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814038A (zh) * | 2010-03-23 | 2010-08-25 | 杭州顺网科技股份有限公司 | 一种加快计算机启动速度的方法 |
CN101945058A (zh) * | 2010-09-15 | 2011-01-12 | 宇龙计算机通信科技(深圳)有限公司 | 即时通信装置和即时通信消息显示的方法 |
CN102073504A (zh) * | 2011-01-21 | 2011-05-25 | 深圳创维数字技术股份有限公司 | 一种多场景操作方法、系统及智能设备 |
CN102420903A (zh) * | 2011-11-28 | 2012-04-18 | 惠州Tcl移动通信有限公司 | 一种基于手机的软件处理方法及手机 |
CN102622242A (zh) * | 2011-01-30 | 2012-08-01 | 联想(北京)有限公司 | 一种加快电子设备开机速度的方法及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070112899A1 (en) * | 2005-11-14 | 2007-05-17 | Edwards Matthew F | Method and apparatus for fast boot of an operating system |
-
2012
- 2012-08-23 CN CN201210302657.4A patent/CN103631612B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814038A (zh) * | 2010-03-23 | 2010-08-25 | 杭州顺网科技股份有限公司 | 一种加快计算机启动速度的方法 |
CN101945058A (zh) * | 2010-09-15 | 2011-01-12 | 宇龙计算机通信科技(深圳)有限公司 | 即时通信装置和即时通信消息显示的方法 |
CN102073504A (zh) * | 2011-01-21 | 2011-05-25 | 深圳创维数字技术股份有限公司 | 一种多场景操作方法、系统及智能设备 |
CN102622242A (zh) * | 2011-01-30 | 2012-08-01 | 联想(北京)有限公司 | 一种加快电子设备开机速度的方法及电子设备 |
CN102420903A (zh) * | 2011-11-28 | 2012-04-18 | 惠州Tcl移动通信有限公司 | 一种基于手机的软件处理方法及手机 |
Non-Patent Citations (3)
Title |
---|
《Android开启java的世界-Zygote》;狂野citv;《百度文库》;20110129;第1-5页 * |
《Android的优化》;xcsunbust;《百度文库》;20120609;第1-3页 * |
《Optimizing the Boot Time of Android on Embedded System》;Gaurav Singh et al.;《2011 IEEE 15th International Symposium on Comsumer Electronics》;20111231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103631612A (zh) | 2014-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103631612B (zh) | 启动操作系统的方法与装置 | |
CN105119966A (zh) | 一种公众号管理方法及装置 | |
US10554604B1 (en) | Low-load message queue scaling using ephemeral logical message topics | |
CN106649088A (zh) | 一种分布式压力测试方法和系统 | |
US11218386B2 (en) | Service ticket escalation based on interaction patterns | |
CN112000741A (zh) | 内外网数据交换系统、方法、装置、计算机设备和介质 | |
CN106789202A (zh) | 业务管理装置及方法 | |
CN111814089A (zh) | 一种页面渲染的方法、装置、渲染服务器和存储介质 | |
EP3093809B1 (en) | Systems and methods for state machine management | |
CN102221998A (zh) | 一种扩展构件运行支撑平台中ejb容器的方法 | |
CN106095483A (zh) | 服务的自动化部署方法及装置 | |
CN106201890A (zh) | 一种应用的性能优化方法及服务器 | |
CN106462442A (zh) | 加载虚拟机的系统和方法 | |
CN106021566A (zh) | 一种提高单台数据库并发处理能力的方法、装置及系统 | |
CN112783655A (zh) | 基于机器学习的模型部署方法、系统、服务器和存储介质 | |
CN113626128B (zh) | 视听媒体微服务第三方模块接入方法、系统、电子设备 | |
CN102984271A (zh) | 一种用于消息推送的客户端和方法 | |
US10956452B2 (en) | Information processing apparatus, information processing method, and non-transitory computer readable medium | |
CN112748997A (zh) | 一种工作流的调度方法及系统 | |
CN106126216B (zh) | 一种基于安卓系统的加速开机方法及其系统 | |
CN112363815A (zh) | Redis集群处理方法、装置、电子设备及计算机可读存储介质 | |
CN115811481A (zh) | 一种交互服务测试方法、装置、计算机设备及存储介质 | |
CN105868622A (zh) | 应用开机启动的控制方法及装置 | |
CN108563578A (zh) | Sdk兼容性检测方法、装置、设备及可读存储介质 | |
CN115525834A (zh) | 筛选并显示消息的方法、计算机装置及记录介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230920 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 518057 Tencent Building, Keji Zhongyi Road, Science Park, Nanshan District, Shenzhen City, Guangdong Province Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |