一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于应用程序组的定制根进程的制作方法

2022-05-12 00:15:56 来源:中国专利 TAG:

用于应用程序组的定制根进程
1.相关申请
2.本技术要求2019年10月3日提交的标题为“用于应用程序组的定制根进程(customized root processes for groups of applications)”的美国专利申请序列号16/592,537的优先级,所述专利申请的全部公开内容特此通过引用并入本文中。
技术领域
3.本文所公开的至少一些实施例大体上涉及用于计算系统的根进程,且更具体来说,涉及用于计算装置中的应用程序组的定制根进程。


背景技术:

4.android操作系统的内部工作包含充当所有android应用程序进程的父进程或根进程的接合子。在unix及类似于unix的操作系统(例如,linux及android)中,任何非初始进程(或任何非零进程)可至少部分地源自操作系统(os)的初始或零进程。因此,android os使用术语“接合子”来引用其根进程或进程0。
5.android是由google开发的用于移动装置的移动os。它基于linux内核及其它开源软件的修改版本,并且主要设计用于移动装置(例如智能手机、平板计算机等)。google还开发用于物联网(iot)的android版本。并且,已将android版本开发用于电视机及其它家用电器、车载信息系统、可穿戴智能装置、游戏机、数码相机,及包含pc的其它类型的电子装置。
6.当另一个进程执行由“fork()”表示的系统调用时,android、unix或类似于unix的另一个os创建非零进程,这导致一个进程分叉成多个进程。调用分叉的进程是父进程,且新创建的进程是子进程。在unix或类似于unix的操作系统中,内核可通过其进程标识符来识别每个进程,例如,“0”表示初始进程或零进程。在unix及类似操作系统中,零进程(即,进程0)是在os启动时产生的根进程。称为“init”的第一子进程(例如,进程1)可至少部分地源自零进程并且可成为os中所有其它进程的祖先。
附图说明
7.根据下文提供的具体实施方式及本公开的各种实施例的附图将更加充分地理解本公开。
8.图1及4说明根据本公开的一些实施例的包含且运行用于多个应用程序组的相应根进程的实例移动装置。
9.图2、3、5及6说明根据本公开的一些实施例的可由图1及4中描绘的移动装置执行的实例操作的流程图。
10.图7说明根据本公开的一些实施例的可实施用于多个应用程序组的定制根进程的实例计算装置。
具体实施方式
11.本文所公开的至少一些实施例大体上涉及用于计算系统的根进程,且更具体来说,涉及用于计算装置中的多个应用程序组的定制根进程。
12.在本文所公开的一些实施例中,应用程序组可共享仅用于所述应用程序组的相应根进程。在此类实施例中,应用程序组的根进程可预加载适合于应用程序组的库、对象及/或页面的选定集合,使得所述组中的每个应用程序可通过对所述组的根进程的分叉来启动。
13.在一些实施例中,操作系统、管理程序等可监视及记录装置或多个装置(例如联网装置)中的应用程序的关键库、对象及页面,并且可构建数据库或另一类型的数据结构来捕获各种应用程序的库、对象及页面的使用。所捕获的数据访问及使用模式可用于标识应用程序组以共享根进程,使得根进程成为所述应用程序组的相应根进程。操作系统、管理程序等可基于所捕获的数据访问及使用模式生成及定制应用程序组的根进程。随着时间的推移,应用程序组中的每个应用程序的性能可改进,因为数据库或数据结构可随着组中的更多数据访问及使用模式而演变。
14.本文所公开的一些实施例涉及一或多个计算装置的os或管理程序等,其经配置以监视一或多个装置中的用户对一或多个应用程序的使用。举例来说,一些实施例可涉及移动装置的os,其经配置以监视用户对装置中的多个应用程序的使用。应用程序的监视可识别应用程序组共有的典型初始或历史或采样的读取或写入,这些读取或写入导致os、管理程序等从存储器读取及写入存储器以用于所述应用程序组。监视还可包含监视相关应用程序的使用模式(例如,数据访问模式、用户使用的典型星期几、通常使用的当日时间、与应用程序组的使用相关的使用的其它应用程序等)。与应用程序组相关联的初始或历史或采样的读取及写入可存储或高速缓存在存储器中,以经由尤其用于应用程序组的相应根进程使用。初始或历史或采样的读取及写入可由os、管理程序等经由存储器根据使用频率、使用的新近度等来管理、维护、优先排序等。在一些实施例中,存储或缓存可在更快的存储器中完成,以加速初始读取及写入。
15.在一些实施例中,用于应用程序组的根进程的指令及/或数据可存储于例如闪存存储器或非易失性随机存取存储器(nvram)的持久性非易失性存储器中。在一些实施例中,nvram可包含3d xpoint存储器。
16.应用程序组的根进程可在启动os、管理程序等时启动。在一些实施例中,如果组中的应用程序在某一时间段内没有使用或者如果应用程序消耗过多的系统资源,例如cpu、gpu、存储器或其它资源,则可杀死所述组的根进程。在此类实施例中,在预测应用程序组中的至少一个应用程序的使用时,os、管理程序等可经配置以根据在所述组的监视中识别的模式重新启动所述组的根进程。对模式的偏好可基于模式的量化、频率及/或新近度,并且可监视及跟踪用于应用程序组的任何类型的存储器访问模式。监视及跟踪可包含硬件及软件性能计数器,它们可经由读取及写入专用寄存器(例如,模型特定的寄存器)通过os获得。模式可基于度量(例如从存储器读取、写入到存储器的数量、频率及/或新近度)、物理存储器空间中的地址模式、虚拟空间中的地址模式、数据的位置(在空间上及/或在时间上)、存储体冲突,或每条指令的cpu循环。模式还可基于度量,例如转译后备缓冲器(tlb)度量的数量、频率及/或新近度,及可用于os的其它度量。
17.在一些实施例中,在应用程序组中的至少一个应用程序安装在计算装置(例如,移动装置)中之后,装置的os或相关联管理程序可预启动组中的应用程序,以生成为用户及应用程序组定制的根应用程序进程。预启动可在用户请求计算装置启动应用程序组中的至少一个应用程序之前发生。组中的应用程序可至少部分地经由os或管理程序等执行。因此,所述组中的应用程序的预启动进程或根进程不同于os的根进程。在此类实施例中,os或管理程序等可移动及/或复制数据,以设置应用程序组的根进程。在一些实施例中,数据的复制及/或移动最初可通过os的根进程完成。这可在组中的应用程序的任何初始读取或写入之前例如通过应用程序组的根进程发生。在一些实施例中,不通过os的根进程或应用程序组的相应根进程复制及/或移动公共代码及只读数据(例如,库、运行时间、驱动器、存储器页)。在一些实施例中,直到通过根进程、另一进程或os初始地修改代码及数据才复制根进程的代码及数据。在一些实施例中,仅复制代码及数据的经修改部分,但未修改部分保持通用。在一些实施例中,可通过监视对存储器页、高速缓存行或文件系统扇区或计算机可读存储媒体的其它元件的写入来识别这些部分。
18.计算装置(例如,移动装置)可监视用户对应用程序组的频繁或最近使用,以确定初始读取及写入以添加到应用程序组的根进程。这可导致os、管理程序等从应用程序组的存储器读取及/或写入到所述存储器。作为初始写入的结果的数据移动及/或复制也可在用户请求os、管理程序等启动组中的应用程序中的至少一个之前执行。
19.在os、管理程序等分叉系统级根进程之后,应用程序组的预测的初始读取及/或写入可用于定制组的根进程。在此类实例中,应用程序组的定制根进程可保存在持久性非易失性存储器(例如,闪存存储器及/或nvram)中,用于快速地启动应用程序组中的一或多个应用程序。
20.当用户请求os、管理程序等启动应用程序组中的一或多个应用程序时,os、管理程序等可使用组的预启动进程(即,应用程序组的根进程),或源自预启动进程的分叉进程以服务于用户。来自应用程序组的根进程的分叉进程可类似于或不同于应用程序组的根进程。
21.并且,当用户杀死应用程序组中的应用程序时,os可完全地或部分地杀死所述组中的应用程序的活动进程及/或所述组的根进程。在预期用户将运行应用程序组中的应用程序中的至少一个的情况下,os、管理程序等可重新启动应用程序组的根进程,所述根进程可基于所述组中的应用程序的最新的及/或最频繁用户使用模式定制。
22.图1及4说明根据本公开的一些实施例的包含且运行用于多个应用程序组的相应根进程的实例移动装置102。图2、3、5及6说明根据本公开的一些实施例的可由图1及4中所描绘的移动装置102执行的实例方法200、300、500及600的流程图。
23.具体来说,图1说明至少包含控制器及存储器104的移动装置102。移动装置102的控制器及存储器104可包含用于在移动装置中执行的应用程序(例如,参见应用程序组106a中的应用程序108a、108b及108c)的指令及数据。移动装置102的控制器可基于数据执行应用程序的指令。数据可包含呈二进制格式或呈适合于由编程语言解释器解释的格式的应用程序指令代码。数据可包含一些数据结构、库等。控制器还可将指令及数据保持在控制器的寄存器中。数据可包含呈二进制格式或呈适合于由编程语言解释器解释的格式的应用程序指令代码。数据可包含一些数据结构、库等。存储器可将指令及数据保持在其存储器单元
中。在一些实施例中,移动装置102的存储器的存储器单元可包含闪存存储器单元及/或nvram单元。nvram单元可为或包含3d xpoint存储器单元。
24.在一些实施例中,存储器可具有不同速度、时延、带宽及其它参数。举例来说,sram存储器可用作高速缓存,dram可用作主存储器,及nvram可用作存储存储器。
25.对于应用程序组(例如,参见应用程序组106a、106b及106c),用于在移动装置102中包含且可运行的组中的应用程序的指令及数据可包含用于应用程序组的根进程的根进程数据及指令。包含在移动装置102中的每个应用程序组的相应根进程(例如,参见应用程序组106a的根进程110、应用程序组106b的根进程112,及应用程序组106c的根进程114)可由控制器及存储器104实施。控制器可经配置以根据用于根进程的指令及数据执行组中的根进程的指令,并且存储器可经配置以保持或存储用于由控制器执行根进程的指令及数据。
26.包含在移动装置102中的应用程序组的其它进程(例如,参见应用程序108a、108b及108c,其中每个应用程序具有其它进程)也可由控制器及存储器104实施。控制器可经配置以根据用于其它进程的指令及数据执行应用程序组的其它进程的指令,并且存储器可经配置以保持或存储用于由控制器执行其它进程的指令及数据。
27.在移动装置102中,可监视多个应用程序(例如,参见应用程序108a、108b及108c)的使用以确定多个应用程序中的每一个的存储器存取。与多个应用程序的使用相关的数据(例如,参见应用程序使用数据116a、116b及116c)可存储于移动装置中,例如移动装置的存储器中(例如,参见控制器及存储器104)。多个应用程序还可根据与多个应用程序的使用相关的数据(例如,参见应用程序使用数据116a、116b、116c)分组成组(例如,参见应用程序组106a、106b及106c)。如所展示,应用程序组的逻辑连接可在逻辑上将应用程序使用数据与属于所述组的对应应用程序以及所述组的根进程相关联或连接(例如,参见逻辑连接118)。还可根据组中的每个应用程序共有的使用数据(例如,参见应用程序使用数据116a、116b及116c,其可包含链接应用程序108a、108b及108c的公共数据)定制及执行应用程序组的根进程(例如,参见根进程110、112及114)。可经由逻辑连接(例如,参见逻辑连接118)确定组中的应用程序的使用数据之间的共同性。在一些实施例中,逻辑连接可由关系数据库实施,所述关系数据库由控制器及存储器104存储及执行。此数据库中的条目可描述每个连接。举例来说,应用程序108a可连接到应用程序108b,因为它们共享共同目标(例如,其中它们读写与在移动电话呼叫期间捕获用户语音相关的数据)。在一些实施例中,可存在每组多于一个根进程。在其它实施例中,一个应用程序可属于多个组。举例来说,参考图1,应用程序116c可属于应用程序组1及应用程序组2(未展示)。
28.具体来说,图2说明可由图1中描绘的移动装置102或由类似于移动装置102配置的另一类型的计算装置执行的方法200的操作。而且,在一些实施例中,方法200可至少部分地通过一般来说计算装置的os或例如移动装置102的移动装置的os执行。方法200还可至少部分地由管理程序及/或一或多个操作系统执行。
29.在图2中,方法200开始于步骤202,其中监视多个应用程序的使用以确定每个应用程序的存储器存取。步骤202可包含监视应用程序的使用以确定针对例如移动装置的装置中的应用程序从存储器读取及写入到存储器的频率或新近度。在一些实施例中,步骤202可包含监视及/或跟踪应用程序的使用,以确定应用程序的先前执行模式的数量、频率及/或
新近度。
30.在步骤202处监视及跟踪应用程序的使用可在启动应用程序期间(例如,包含当应用程序被加载到存储器时)及/或之后在运行应用程序期间发生。监视及跟踪应用程序的使用可在启动应用程序期间及在运行应用程序后启动的任何其它时间段发生。在运行时监视及跟踪应用程序的使用可促进应用程序的有效及/或高效的相应根进程的推导。举例来说,在启动之后,用户可触摸屏幕来触发应用程序的一些元件并期待某一结果。在一些实施例中,所述结果的传递可能非常快,因为可基于在应用程序的运行期间发生的监视来预加载关键存储器对象。在一些实施例中,可从例如nand型闪存存储器的较慢存储器到例如dram的较快存储器完成对象的预加载。
31.步骤202还可包含根据应用程序从存储器读取及写入到存储器的频率或新近度而生成应用程序的先前执行的模式。在一些实施例(未描绘)中,方法200可继续根据进行监视及/或跟踪的应用程序的先前执行中的模式的数量、频率及/或新近度来生成应用程序的先前执行的模式。
32.在步骤204处,方法200持续存储与应用程序的使用相关的数据。存储与应用程序的使用相关的数据可在装置(例如执行应用程序的移动装置)中发生。数据的存储可在装置的存储器及/或数据存储系统中发生。在一些实施例中,存储新数据可覆写与应用程序的使用相关的旧的未使用数据。
33.在步骤206处,方法200继续根据所存储数据将应用程序分组成应用程序组。在一些实施例中,对应用程序进行分组可直接从步骤202完成且与在步骤204处存储数据同时进行。在其它实例中,可完全绕过步骤204,以便加速在步骤206处的分组。
34.在步骤208处,方法200继续定制及执行用于在步骤206处形成的应用程序组中的一组应用程序的根进程。所述组的根进程的定制及执行根据组中的每个应用程序共有的使用-例如基于组中的每个应用程序共有的使用数据。在步骤208处,方法200可包含根据组中的应用程序的先前执行的模式定制应用程序组的根进程,及然后根据组中的应用程序的先前执行的模式将应用程序组的根进程执行到初始点。可定制根进程,但不限于,从各种库中组合根进程、使用默认可用的其它根进程、形成数据结构,及通过网络查询根进程组件的各种源。
35.在步骤210处,方法200继续根据另一组中的每个应用程序共有的使用来定制及执行应用程序组中的另一组的另一根进程。换句话说,步骤210对应用程序组中的另一组重复步骤208。而且,步骤210包含针对在步骤206处形成的应用程序组中的每个组重复步骤208。在一些实施例中,可用针对多个组同时执行步骤208来替换重复。在其它实施例中,定制可检测到无法为组中的一些应用定制根进程。在这种情况下,在确定此条件之后,步骤208可返回到步骤206,其中可对组之间的应用程序进行重新分组。
36.相对于步骤208及210,应用程序组中的应用程序的先前执行的模式可包含、涉及或至少基于进行监视及/或跟踪的组中的应用程序的先前执行中的模式的数量、频率及/或新近度。所监视及/或跟踪的模式可为用户或机器的任何类型的应用程序使用模式。举例来说,可监视及/或跟踪组中应用程序的任何类型的存储器访问及使用模式。组中的应用程序的先前执行的模式可包含、涉及或基于例如用户或机器的任何类型的应用程序使用模式的至少数量、频率及/或新近度的度量。举例来说,模式可基于度量(例如从存储器读取、写入
到存储器的数量、频率及/或新近度)、物理存储器空间中的地址模式、虚拟空间中的地址模式、数据的位置(在空间上及/或在时间上)、存储体冲突,或每条指令的cpu循环。模式还可基于例如tlb度量的数量、频率及/或新近度的度量,及可用于os的其它度量。
37.执行组中的应用程序的根进程可包含在对应用程序的存储器进行任何初始写入及/或从所述存储器读取之前移动存储器中的数据。而且,执行组中的应用程序的根进程可包含在对应用程序的存储器进行任何初始写入及/或从所述存储器读取之前复制存储器中的数据。而且,移动及/或复制的数据可包含与组中的应用程序的先前执行的模式相关的数据。在一些实施例中,在对存储器进行任何初始写入之前移动及/或复制存储器中的数据可包含避免移动及/或复制公共代码及只读数据。在一些实施例中,方法200可包含在计算装置中的os(或管理程序)将用于os(或管理程序)的根进程分叉之后,针对组中的应用程序执行预测的初始写入及/或读取以定制应用程序的根进程的执行,使得应用程序的根进程是应用程序组的应用程序级进程。
38.而且,尽管图中未描绘,但是方法200可包含在至少部分地执行根进程之前,将用于应用程序组的根进程的数据存储在闪存存储器中。方法200还可包含在至少部分地执行根进程(图中未描绘)之前,将用于应用程序组的根进程的数据存储在nvram中。所述nvram可包含3d xpoint存储器。
39.具体来说,图3说明可由图1中描绘的移动装置102或由类似于移动装置102配置的另一类型的计算装置执行的方法300的操作。而且,在一些实施例中,方法300可至少部分地通过一般来说计算装置的os或例如移动装置102的移动装置的os执行。方法300还可至少部分地由管理程序及/或一或多个操作系统执行。
40.如所展示,方法300开始于也在图2中描绘的方法200。如图3中所示,方法300包含监视应用程序的使用以确定每个应用程序的存储器存取的步骤202,以及存储与应用程序的使用相关的数据的步骤204。方法300还包含根据所存储数据将应用程序分组成应用程序组的步骤206。而且,方法300包含根据组中的每个应用程序共有的使用来定制及执行应用程序组中的一组应用程序的根进程的步骤208,以及在步骤210处针对应用程序组中的每个组重复步骤208。
41.在步骤302处,方法300继续从用户接收启动来自应用程序组中的应用程序组的应用程序中的至少一个的请求。在定制及执行应用程序组的根进程之后,这可在步骤208之后发生。在一些实施例中,步骤208可实施为连续过程,并且步骤302可在步骤208到210期间同时地且在任何时间完成。在其它实施例中,方法200的所有步骤可实施为同时运行且在需要进行必要的改变时,根据需求彼此连接的连续过程。举例来说,如果在步骤202处确定改变模式,则将改变传播到下一步骤204等等。
42.在步骤304处,方法300继续在接收到请求时及通过使用组的根进程启动来自应用程序组的应用程序中的至少一个。
43.在一些实施例中,方法300可包含根据应用程序的先前执行的模式至少部分地通过计算装置中的os将应用程序组的根进程执行为后台进程。在此类实施例中,方法300还可包含通过os从计算装置的用户接收启动组中的应用程序中的至少一个的请求。而且,方法300可包含在接收到启动应用程序的请求时及通过使用应用程序组的根进程或应用程序组的根进程的分叉进程,由os启动计算装置中的应用程序。在一些实施例中,直到通过应用程
序、另一进程或os初始地修改代码及数据才复制分叉进程的代码及数据。在一些实施例中,仅复制代码及数据的经修改部分,但未修改部分保持通用。在一些实施例中,可通过监视对存储器页、高速缓存行或文件系统扇区或计算机可读存储媒体的其它元件的写入来识别此类部分。
44.在一些实施例中,方法300包含在步骤208处根据组中的应用程序的先前执行的模式在计算装置(例如,移动装置)或多个计算装置中将应用程序组的根进程执行到初始点。方法300还可包含在步骤302处通过计算装置从计算装置的用户接收启动组中的应用程序中的至少一个的请求。方法300还可包含在步骤304处,在接收启动应用程序的请求时及通过使用应用程序组的根进程,启动计算装置中的应用程序。在此类实施例中,方法300的每个步骤或至少一些步骤可由计算装置的操作系统、计算装置的一或多个操作系统、管理程序,或其任何组合执行。举例来说,执行、接收或启动步骤中的至少一个可由计算装置中的os执行。在一些实施例中,将根进程执行到初始点可在一个装置上,例如在云计算环境中完成,然后在步骤302从另一装置接收到启动应用程序中的至少一个的请求时将所述根进程分叉,然后通过网络将分叉进程传递到例如移动装置的另一装置,然后使用移动装置上的分叉进程作为步骤304中的应用程序的起始点。
45.具体来说,图4说明至少包含控制器及存储器104的移动装置102。如图4中所示,移动装置102的控制器及存储器104可包含用于在移动装置中执行的应用程序(例如,参见应用程序108a、108b及108c)的指令及数据。移动装置102的控制器可基于数据执行应用程序的指令。数据可包含呈二进制格式或呈适合于由编程语言解释器解释的格式的应用程序指令代码。数据可包含一些数据结构、库等。控制器还可将指令及数据保持在控制器的寄存器中。存储器可将指令及数据保持在其存储器单元中。在一些实施例中,移动装置102的存储器的存储器单元可包含闪存存储器单元及/或nvram单元。
46.相对于图4中所示的移动装置102,对于应用程序组(例如,参见应用程序组106a、106b及106c),用于在移动装置102中包含且可运行的组中的应用程序的指令及数据可包含用于应用程序组的根进程的根进程数据及指令。包含在移动装置102中的每个应用程序组的相应根进程(例如,参见应用程序组106a的根进程110、应用程序组106b的根进程112,及应用程序组106c的根进程114)可由控制器及存储器104实施。控制器可经配置以根据用于根进程的指令及数据执行组中的根进程的指令,并且存储器可经配置以保持或存储用于由控制器执行根进程的指令及数据。并且,包含在移动装置102中的应用程序组的其它进程(例如,参见应用程序108a、108b及108c,其中每个应用程序具有其它进程)也可由控制器及存储器104实施。控制器可经配置以根据用于其它进程的指令及数据执行应用程序组的其它进程的指令,并且存储器可经配置以保持或存储用于由控制器执行其它进程的指令及数据。
47.在图1及4中,展示根进程对应于应用程序组(例如,参见根进程110及对应应用程序组106a)。应理解,在应用程序组中,可将一个根进程分叉成可由组中的两个或更多个应用程序使用的多个进程。而且,单个应用程序可使用多个不同的分叉进程。举例来说,应用程序108a可使用分叉进程402、404及406。而且,如所提及,多个应用程序可使用多个不同的分叉进程。举例来说,应用程序108a、108b及108c可使用分叉进程402、404及406。此类实施例可通过合并分叉实施。在其它实施例中,一个应用程序可属于多个组。举例来说,参考图
4,应用程序116c可属于应用程序组1及应用程序组2。在这种情况下,合并分叉可跨越多个组发生。
48.在一些实施例中,分叉根进程的初始执行可限于预加载库、从所需库及初始数据结构中组合分叉进程,及保存分叉进程以供进一步重复使用。而且,在任何时间,可在某一状态下将分叉进程的执行保存在存储器中,使得分叉进程可重复使用以避免花费时间重新执行所述进程。
49.而且,在图4中所描绘的移动装置102中,可监视多个应用程序(例如,参见应用程序108a、108b及108c)的使用以确定多个应用程序中的每一个的存储器存取。与多个应用程序的使用相关的数据(例如,参见应用程序使用数据116a、116b及116c)可存储于移动装置中,例如移动装置的存储器中(例如,参见控制器及存储器104),或通过网络存储于云空间中。多个应用程序还可根据与多个应用程序的使用相关的数据(例如,参见应用程序使用数据116a、116b、116c)分组成组(例如,参见应用程序组106a、106b及106c)。如所展示,应用程序组的逻辑连接可在逻辑上将应用程序使用数据与属于所述组的对应应用程序以及所述组的根进程相关联或连接(例如,参见逻辑连接118)。还可根据组中的每个应用程序共有的使用数据(例如,参见应用程序使用数据116a、116b及116c,其可包含链接应用程序108a、108b及108c的公共数据)定制及执行应用程序组的根进程(例如,参见根进程110、112及114)。可经由逻辑连接(例如,参见逻辑连接118)确定组中的应用程序的使用数据之间的共同性。
50.另外,如图4中所示,控制器及存储器104可包含用于从在移动装置102中存储及可运行的应用程序组的相应根进程分叉的多个进程(例如,参见分叉进程402、404及406)的数据及指令。如图4中所示,至少分叉进程402、404及406从应用程序组106a的根进程110分叉;但是可能存在从根进程110分叉的更多进程。
51.在一些实施例中,移动装置102的操作系统,或在移动装置中或与移动装置相关联的管理程序经配置以将应用程序组的根进程(例如,参见应用程序组106a的根进程110)分叉成多个进程(例如,参见分叉进程402、404及406)。在此类实施例中,操作系统或管理程序可经配置以在接收到启动一或多个应用程序的请求时,及通过根据启动应用程序的请求使用多个分叉进程(例如,参见分叉进程402、404及406)中的至少一个及/或应用程序组的相应根进程(例如,参见根进程110),启动移动装置102中的一或多个应用程序。在一些实施例中,每个分叉进程可用于请求启动的应用程序中的一个。举例来说,如果从根进程分叉四个进程,则四个分叉进程可用于由移动装置的用户请求启动的组中的四个不同应用程序。
52.分叉的多个进程中的至少一些或每一个可不同于应用程序组的父根进程。差异可基于将运行的计算装置中的不同应用程序及不同应用程序部分。而且,至少在执行请求启动的应用程序的某个点,分叉的多个进程中的至少一些或每一个可与应用程序组的父根进程相同。
53.具体来说,图5说明可由图4中描绘的移动装置102或由类似于移动装置102配置的另一类型的计算装置执行的方法500的操作。而且,在一些实施例中,方法500可至少部分地通过一般来说计算装置的os或例如移动装置102的移动装置的os执行。方法500还可至少部分地由管理程序及/或一或多个操作系统执行。
54.如所展示,方法500开始于也在图2中描绘的方法200。如图5中所示,方法500包含
监视应用程序的使用以确定每个应用程序的存储器存取的步骤202,以及存储与应用程序的使用相关的数据的步骤204。方法500还包含根据所存储数据将应用程序分组成应用程序组的步骤206。而且,方法500包含根据组中的每个应用程序共有的使用来定制及执行用于应用程序组中的一组的根进程的步骤208,以及在步骤210处针对应用程序组中的每个组重复步骤208。
55.在步骤502处,方法500继续从用户接收启动来自应用程序组中的应用程序组的应用程序中的至少一个的请求。这可在用户的装置,例如用户的移动装置中发生。步骤502可在定制及执行应用程序组的根进程之后发生。
56.在步骤504处,方法500继续将应用程序组的根进程分叉成多个进程。最初,分叉的多个进程可不同于根进程或相同,这取决于实施方案。
57.在步骤506处,方法500继续在接收到请求时及通过根据请求使用分叉的多个进程中的至少一个启动来自应用程序组的应用程序中的至少一个。
58.在此类实施例中,方法500的每个步骤或至少一些步骤可由计算装置的操作系统、计算装置的一或多个操作系统、管理程序,或其任何组合执行。举例来说,执行、接收或启动步骤中的至少一个可由计算装置中的os执行。在一些实施例中,方法500可包含在步骤504处将应用程序组的根进程分叉成多个相同进程;及在步骤506处,在接收到启动应用程序的请求时及通过根据启动应用程序的请求使用多个相同进程中的至少一个,启动移动装置中的应用程序。
59.相对于方法500,分叉的多个进程中的至少一些或每一个可不同于应用程序组的父根进程。差异可基于将运行的计算装置中的不同应用程序及不同应用程序部分。而且,至少在执行组中的应用程序的某个点,分叉的多个进程中的至少一些或每一个可与应用程序的父根进程相同。
60.在一些实施例(例如,可实施方法300及500的实施例)中,组中的应用程序的先前执行的模式来自特定用户及其它用户对特定计算装置(例如,特定移动装置)上的应用程序的使用,使得定制根进程以供任何用户使用特定计算装置上的应用程序组。
61.在一些其它实施例(例如,可实施方法300及500的一些其它实施例)中,组中的应用程序的先前执行的模式来自特定用户对特定计算装置(例如,特定移动装置)上的应用程序的使用,使得定制应用程序组的根进程以供特定用户使用特定移动装置上的应用程序组。
62.在一些其它实施例(例如,可实施方法300及500的一些其它实施例)中,组中的应用程序的先前执行的模式来自特定用户对特定计算装置(例如,特定移动装置)及至少一个其它计算装置上的特定应用程序的使用,使得定制根进程以供特定用户使用计算装置及至少一个其它计算装置上的应用程序组。
63.具体来说,图6说明可由图1及4中描绘的移动装置102或由类似于移动装置102配置的另一类型的计算装置执行的方法600的操作。而且,在一些实施例中,方法600可由一般来说计算装置的操作系统或移动装置的操作系统执行。方法600还可至少部分地由管理程序及/或一或多个操作系统执行。
64.如图6中所示,方法600开始于图3中所示的方法300或图5中所示的方法500。然后,方法600继续在步骤602处接收结束来自应用程序组中的一组应用程序的应用程序中的至
少一个的请求。这可在方法300或方法500至少部分地发生之后发生。
65.在步骤604处,方法600继续在接收到结束来自组的应用程序中的至少一个的请求时至少部分地结束来自应用程序组的应用程序中的至少一个。在一些实施例中,在结束应用程序期间,可通过移除应用程序的特定模块(例如,gui或库等)提取应用程序的根进程。根进程可变成应用程序的精简定制版本,然后所述根进程可重新用于应用程序或者它可由组中的其它应用程序使用,或者所述根进程可在通过在应用程序结束之后获取应用程序的多个根进程来生成组的主根进程时使用。随后可分析组的应用程序并且组合组的主根进程。因此,装置或系统可基于实际应用程序执行而创建定制根进程的高度可调系统。
66.在步骤606处,方法600继续在接收到结束来自组的至少一个应用程序的请求时至少部分地结束应用程序组的相应根进程。
67.如图6中所示,在步骤608处,当完成步骤606时,方法600可继续在至少部分地结束至少一个应用程序及相应根进程之后根据预定条件至少部分地重新执行相应根进程。在步骤608处,可基于组中的应用程序的先前执行的模式而至少部分地重新执行组的相应根进程。而且,在步骤608处,可通过组的应用程序的先前执行的模式更新根进程的至少部分重新执行。
68.如图6中所示,在步骤610处,当未完成步骤606时,方法600可前进以继续在接收到结束至少一个应用程序的请求时运行应用程序组的根进程。换句话说,方法600可包含在步骤602处从移动装置的用户接收结束至少一个应用程序的请求,然后在步骤604处,所述方法可包含在接收到结束应用程序的请求时至少部分地结束至少一个应用程序,然后在步骤610处,所述方法可包含继续在接收到结束应用程序的请求时且在不在步骤604与610之间停止组的根进程的情况下运行应用程序组的根进程。因此,如果用户决定重新启动至少部分地结束的应用程序或可使用此根进程的其它应用程序,则可再次重新使用应用程序的根进程。
69.相对于方法200、方法300、方法500、方法600,或本文中所描述的任何其它方法、过程或操作,在一些实施例中,非暂时性计算机可读存储媒体存储指令,所述指令在由至少一个处理装置(例如图7中所示的控制器706)执行时,使得所述至少一个处理装置执行方法200、方法300、方法500、方法600,或本文中所描述的任何其它方法、过程或操作,和/或其任何组合。
70.举例来说,一些实施例可包含用计算机可执行指令有形地编码的非暂时性计算机可读存储媒体,所述计算机可执行指令在由与计算装置相关联的处理器执行时执行例如图2中所示的方法200的方法。而且,举例来说,一些实施例可包含用计算机可执行指令有形地编码的非暂时性计算机可读存储媒体,所述计算机可执行指令在由与计算装置相关联的处理器时执行方法,例如图3中所示的方法300、图5中所示的方法500及图6中所示的方法600。
71.在一些实施例中,步骤202(例如,图2中展示)可包含在移动装置中监视多个应用程序的使用以确定多个应用程序中的每一个的存储器存取。步骤204可包含存储与多个应用程序的使用相关的数据。步骤206可包含根据与多个应用程序的使用相关的数据将多个应用程序分组成组。步骤208可包含根据组中的每个应用程序共有的使用来定制及执行应用程序组中的一组的根进程。
72.在一些实施例中,监视、存储、分组或执行中的至少一个由移动装置中的os执行。
而且,在一些实施例中,确定存储器存取可包含测量从存储器读取及写入到存储器的频率或新近度。
73.在一些实施例中,在步骤202处,多个应用程序的使用的监视用于用户对多个应用程序的使用,使得定制根进程以供用户使用移动装置上的应用程序。
74.在一些实施例中,步骤204可包含将与多个应用程序的使用相关的数据存储在数据库中。而且,在一些实施例中,步骤208可包含将组的根进程执行到组中的应用程序共有的点。
75.在一些实施例中,步骤208可包含基于组中的每个应用程序共有的数据库中的数据而生成在组中的应用程序之间共享的先前执行的模式。而且,步骤208可包含根据在组中的应用程序之间共享的先前执行的模式执行组的根进程。
76.在一些实施例中,在步骤202处,多个应用程序的使用的监视用于移动装置的任何用户对多个应用程序的使用,使得定制根进程以供任何用户使用移动装置上的应用程序。在一些实施例中,在步骤208处执行组的根进程可包含在对组中的存储器进行任何初始写入之前复制存储器中的数据,及在对存储器进行任何初始写入之前复制存储器中的数据到可包含避免复制公共代码及只读数据。
77.一些实施例可包含在步骤202处通过移动装置中的os监视多个应用程序的使用,以确定从多个应用程序中的每一个的存储器读取及写入到所述存储器的频率或新近度。此类实施例可包含在步骤204处由os将与多个应用程序的使用相关的数据存储在数据库中。并且,此类实施例可包含在步骤206处根据数据库的查询由os将多个应用程序分组成组,以及在步骤208处根据组中的每个应用程序共有的数据库中的数据由os至少部分地执行所述组中的一组的根进程作为后台进程。
78.在一些实施例中,步骤302(图3中所示)可包含从移动装置的用户接收启动来自组的应用程序中的至少一个的请求。步骤304可包含在接收到请求时及通过使用根进程,启动来自移动装置中的组的应用程序中的至少一个。
79.在一些实施例中,步骤504(图5中所示)可包含由移动装置中的os将根进程分叉成多个进程。步骤506可包含在接收到请求时及通过根据请求使用多个进程中的至少一个,由os启动来自组的应用程序中的至少一个。
80.在一些实施例中,步骤602(图6中所示)可包含从移动装置的用户接收结束来自组的应用程序中的至少一个的请求。步骤604可包含至少部分地结束来自组的应用程序中的至少一个,及步骤606可包含在接收到结束来自组的应用程序中的至少一个的请求时至少部分地结束根进程。步骤608可包含在至少部分地结束来自组的应用程序中的至少一个及根进程之后,根据预定条件至少部分地重新执行根进程。根进程的至少部分重新执行可基于在组中的应用程序之间共享的先前执行的模式或由在组中的应用程序之间共享的先前执行的模式更新。步骤610可包含继续在接收到结束来自组的应用程序中的至少一个的请求时运行根进程。
81.在一些实施例中,所述方法可包含将根进程的数据存储在闪存存储器中。在一些实施例中,所述方法可包含将根进程的数据存储在nvram中。所述nvram可包含3dxpoint存储器。
82.在一些实施例中,非暂时性计算机可读存储媒体用计算机可执行指令有形地编
码,所述计算机可执行指令在由与计算装置相关联的处理器执行时执行方法,所述方法可包含在移动装置中监视多个应用程序的使用,以确定从多个应用程序中的每一个的存储器读取及写入到所述存储器的频率或新近度。所述方法可包含存储与多个应用程序的使用相关的数据。所述方法可包含根据与使用相关的数据的查询将多个应用程序分组成组。而且,所述方法可包含根据组中的每个应用程序共有的所存储数据执行组中的一组的根进程。在此类实施例中,所述方法可包含基于组中的每个应用程序共有的所存储数据而生成在组中的应用程序之间共享的先前执行的模式。而且,所述方法可包含根据在组中的应用程序之间共享的先前执行的模式执行根进程。而且,在此实施例中,所述方法可包含从移动装置的用户接收启动来自组的应用程序中的至少一个的请求。所述方法还可包含在接收到请求时及通过使用根进程,启动来自移动装置中的组的应用程序中的至少一个。所述方法可包含将根进程分叉成多个进程,并且所述方法可包含在接收到请求时及通过根据请求使用多个进程中的至少一个启动来自组的应用程序中的至少一个。
83.图7说明根据本公开的一些实施例的可实施用于多个应用程序组的定制根进程的实例计算装置。装置700可为或包含移动装置102或任何其它类型的计算装置的一部分,所述计算装置为或有点类似于移动装置,例如智能手机、平板计算机、iot装置、智能电视、智能手表、眼镜或其它智能家用电器、车载信息系统、可穿戴智能装置、游戏控制台、pc、数码相机或其任何组合。如所展示,装置700可连接到通信网络714,所述通信网络包含至少广域网(wan)、局域网(lan)、内联网、例如4g或5g的移动无线网络、外联网、互联网,及/或其任何组合。
84.本文中所描述的计算装置或移动装置中的每一个(例如移动装置102或计算装置700)可为或替代为个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝式电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够执行指定待由机器采取的动作的指令集(依序或以其它方式)的任何机器。
85.而且,虽然针对图7中所示的装置700以及图1及4中所示的移动装置102说明单个机器,但术语“机器”还应被认为包含个别地或联合地执行一(或多个)指令集以执行本文所论述的方法或操作中的任何一或多个的机器的任何集合。而且,所说明的计算装置或移动装置中的每一个可各自包含至少总线及/或母板、一或多个控制器(例如,一或多个cpu)、可包含暂时性数据存储装置的主存储器、至少一种类型的网络接口、可包含永久性数据存储装置的存储系统,及/或其任何组合。在一些多装置实施例中,一个装置可完成本文所描述的方法的一些部分,接着通过网络将完成的结果发送到另一装置,使得另一装置可继续本文所描述的方法的其它步骤。
86.图7还说明根据本公开的一些实施例的实例计算装置700的实例部分。装置700可以通信方式耦合到网络714,如所展示。装置700包含至少总线704、控制器706(例如cpu)、存储器708、网络接口710、数据存储系统712,及其它组件716(其可为在移动装置或计算装置中发现的任何类型的组件,例如gps组件、i/o组件及传感器)。其它组件716可包含一或多个显示器、不同类型的传感器、音频及/或视觉输入/输出装置、额外的专用存储器、一或多个额外控制器(例如,gpu),或其任何组合。总线704以通信方式耦合控制器706、存储器708、网络接口710、数据存储系统712及其它组件716。装置700包含计算机系统,所述计算机系统包含至少控制器706、存储器708(例如,只读存储器(rom)、闪存存储器、例如同步dram(sdram)
或rambus dram(rdram)的动态随机存取存储器(dram)、静态随机存取存储器(sram)等),及数据存储系统712,它们经由总线704(其可包含多个总线)彼此通信。
87.换句话说,图7是具有计算机系统的实例装置700的框图,在所述计算机系统中可操作本公开的实施例。在一些实施例中,计算机系统可包含指令集,用于在被执行时使机器执行本文所论述的方法中的任何一或多种。在此类实施例中,机器可连接(例如,经由网络接口710联网)到lan、内联网、外联网及/或互联网(例如,网络714)中的其它机器。机器可作为对等(或分布式)网络环境(如本文中所描述的对等网络)中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
88.控制器706表示一或多个通用处理装置,例如微处理器、中央处理单元等。更确切地说,处理装置可为复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、单指令多数据(simd)、多指令多数据(mimd),或实施其它指令集的处理器,或实施指令集的组合的处理器。控制器706也可为一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。控制器706经配置以执行指令以用于执行本文中所论述的操作及步骤。控制器706可进一步包含例如网络接口710的网络接口装置以通过一或多个通信网络(例如网络714)通信。
89.数据存储系统712可包含机器可读存储媒体(也称为计算机可读媒体),其上存储有体现本文中所描述的方法或功能中的任何一或多种的一或多个指令集或软件。指令也可在其通过计算机系统执行期间完全地或至少部分地驻存在存储器708内及/或控制器706内,存储器708及控制器706也构成机器可读存储媒体。存储器708可为或包含装置700的主存储器。
90.虽然存储器、控制器及数据存储装置部分在实例实施例中展示为各自是单个部分,但每一部分应被认为包含可存储指令并且执行它们的相应操作的单个部分或多个部分。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且使机器执行本公开的方法中的任何一或多种的任何媒体。因此,术语“机器可读存储媒体”应被认为包含但不限于固态存储器、光学媒体及磁性媒体。
91.已在针对计算机存储器内的数据位的操作的算法及符号表示方面呈现了先前详细描述的一些部分。这些算法描述及表示是数据处理领域的技术人员用于将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
92.然而,应牢记,所有这些及类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可指操纵及变换计算机系统的寄存器及存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作及过程。
93.本公开还涉及一种用于执行本文中的操作的设备。此设备可专门构造用于预期目的,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的磁盘,包含
软盘、光盘、cd-rom及磁性光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自连接到计算机系统总线。
94.本文中呈现的算法及显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可根据本文中的教示与程序一起使用,或其可证明为便于构造更专用设备以执行所述方法。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
95.本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、闪存存储器组件等。
96.在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神及范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献