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

用于不同应用程序进程的初始数据分布的制作方法

2022-05-12 00:10:24 来源:中国专利 TAG:

用于不同应用程序进程的初始数据分布
1.相关申请
2.本技术主张2019年10月3日提交且标题为“用于不同应用程序进程的初始数据分布(initial data distribution for different application processes)”的第16/592,547号美国专利申请的优先权,所述申请的全部公开内容由此以引用的方式并入本文中。
技术领域
3.本文公开的至少一些实施例涉及计算系统的根进程,且涉及用于计算装置中的不同应用程序进程的初始数据分布。


背景技术:

4.安卓(android)操作系统的内部工作包含充当所有安卓应用程序进程的父进程或根进程的合子(zygote)。在unix和类似于unix的操作系统(例如,linux和安卓)中,任何非初始进程(或任何非零进程)可至少部分地源自操作系统(os)的初始或零进程。因此,安卓os使用术语“合子”来指其根进程或进程0。
5.安卓是由谷歌(google)开发的用于移动装置的移动os。它基于linux内核和其它开源软件的修改版本,且主要设计用于移动装置(例如智能手机、平板计算机等)。谷歌还开发了用于物联网(iot)的安卓版本。并且,已将安卓版本开发用于电视机和其它家用电器、车载信息系统、可穿戴智能装置、游戏控制台、数码相机,以及包含pc的其它类型的电子件。
6.当另一进程执行由“fork()”表示的系统调用时,安卓、unix或类似于unix的另一os创建非零进程,这引起一个进程分叉成多个进程。调用分叉的进程是父进程,且新创建的进程是子进程。在unix或类似于unix的操作系统中,内核可通过其进程标识符来标识每个进程,例如,“0”表示初始进程或零进程。在unix和类似操作系统中,零进程(即,进程0)是在os启动时生成的根进程。称为“init”的第一子进程(例如,进程1)可至少部分地源自零进程且可成为os中所有其它进程的祖先。
附图说明
7.根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。
8.图1、4和6说明根据本公开的一些实施例的可实施不同应用程序进程的初始数据分布的实例移动装置。
9.图2、3、5、7和8说明根据本公开的一些实施例的可由图1、4和6中描绘的移动装置执行的实例操作的流程图。
10.图9说明根据本公开的一些实施例的可实施用于不同应用程序进程的初始数据分布的实例计算装置。
11.图10说明根据本公开的一些实施例的图1、4和6中描绘的实例移动装置,其包含根进程的实例替代方案。
具体实施方式
12.本文公开的至少一些实施例涉及计算系统的根进程,且涉及用于计算装置中的不同应用程序进程的初始数据分布。
13.本文公开的一些实施例涉及具有不同类型的存储器(例如,动态随机存取存储器(dram)、非易失性随机存取存储器(nvram)、3d xpoint存储器和快闪存储器)的计算装置,例如移动装置。所述计算装置的操作系统可对应用程序的不同数据对象和组件进行评分以确定对象和组件最初在存储器中置于何处。所述对象和组件可置于计算装置的不同类型的存储器中,且对象和组件的放置可在最初起动应用程序时发生。
14.初始应用程序进程(例如,应用程序的根进程)可具有可执行文件以及任何可加载模块和库以供执行。这些可执行文件以及可加载模块和库可在应用程序进程之前且在应用程序的根进程期间加载到应用程序进程的存储器中。
15.一些组件(例如静态部件)可预定处于重要路径上,且因此可加载到例如dram或sram的较高性能存储器类型中。一些组件可预定加载到存储器映射的共享文件中以用于进程间通信(ipc),且因此加载到例如dram或sram的较高性能存储器类型中。另外,较高性能存储器类型可被显式分配给更重要的进程,或较高性能共享存储器区可显式分配给更重要的进程(例如,经由匿名共享存储器(ashmem)或图形存储器分配器(gralloc))。大小显著的一些重要的用户触发存储器页可能会转到装置中的较高性能存储器类型。重要结构(例如与应用程序运行时环境和系统调用相关)也可能分配给装置的较高性能存储器类型。
16.计算装置例如通过os可在每个应用程序的执行期间对其组件和对象进行评分,且将评分存储在评分表(其可为应用程序自身的一部分)中。在用户多次调用应用程序后,(例如,经由计数、训练和/或机器学习过程实施的)评分过程可用于提高应用程序的性能。任选地,计算装置可通过具有初始评分表来标识哪些对象是重要的以及哪些是不重要的。
17.默认情况下,应用程序进程中的对象在进程之间共享(例如,在根进程分叉之后)。当存在针对所述对象的写入(例如,写时拷贝(cow)的触发事件)时,所述对象或其一部分可从其存放的位置移动和/或复制到另一存储器类型(例如,从nvram移动和/或复制到dram,或从dram移动和/或复制到nvram,或从dram到sram),或移动和/或复制到同一存储器类型,这取决于哪个总线占用较少(例如,取决于dram总线或nvram总线的带宽)或预期在近期占用较少。组件或对象的移动还可取决于组件或对象(或其部分)预期将被使用的程度或在被逐出之前在存储器中保持的时长。
18.期望最大化算法可用于最大化通过有意义的度量(例如,每秒帧数、触碰-呈现响应时间(touch-render response time)等)测量的预期用户体验,且同时最大化但不超限多种存储器类型的总线容量资源。共享对象可初始地置于装置中的最高性能类型的存储器(例如,dram)中,且逐渐地部分复制到所述存储器类型中且部分复制到较低性能类型的存储器(例如,nvram或快闪存储器)中。逐渐复制可由cow触发逐部分进行。并且,在一段时间后,如果不经常使用,则共享对象在最高性能类型的存储器中的部分(例如dram中的部分)可被逐出到较低性能类型的存储器(例如,nvram或快闪存储器)中。替代地,最高性能类型的存储器中的部分可作为整体直接复制到较低性能类型的存储器中,或所述部分可通过每次写入在不同类型的存储器之间来回移动。操作系统可尝试将用户重要的工作对象集(例如,由前台应用程序和/或后台里的运行进程使用的对象)保持在计算装置的最高性能类型
的存储器中。其它对象可迁移到计算装置中较低性能类型的存储器中,且其中一些重要部分仍缓存在较高性能类型的存储器中。
19.本文公开的一些实施例涉及一或多个计算装置的os或管理程序等,其经配置以监测应用程序的多个进程。可针对单个计算装置或针对装置群组进行监测。所述os、管理程序等可经配置以对由多个进程使用的对象或组件进行评分以确定所述对象或组件在应用程序启动期间在存储器中的放置。
20.在应用程序的启动期间,所述os、管理程序等可经配置以将评分为第一级的对象或组件至少部分地加载到存储器的第一部分中。另外,在应用程序的启动期间,所述os、管理程序等可经配置以将评分为第二级的对象或组件至少部分地加载到存储器的第二部分中,其中评分为第二级的对象或组件对应用程序的重要性低于评分为第一级的对象或组件。存储器的第一部分可包含dram。存储器的第二部分可包含nvram。所述nvram可包含3d xpoint存储器。
21.应用程序的启动可包含执行应用程序的根进程。至少部分地,所述os、管理程序等可经配置以执行应用程序的根进程。所述根进程可包含加载评分为第一级的对象或组件,和/或所述根进程可包含加载评分为第二级的对象或组件。
22.另外,在一些实施例中,应用程序的启动可包含应用程序群组中的应用程序的启动,且所述启动可包含执行应用程序群组的根进程。至少部分地,所述os、管理程序等可经配置以执行应用程序(或应用程序群组)的根进程。所述根进程可包含加载评分为第一级的对象或组件,和/或所述根进程可包含加载评分为第二级的对象或组件。
23.在一些实施例中,所述os、管理程序等可经配置以在评分表中存储经评分对象或组件的对应标识和评分。另外,评分可至少部分地基于机器学习。在此类实施例中,所述os、管理程序等可经配置以重复对多个进程的监测、对象或组件的评分以及对象或组件的加载。并且,通过监测、评分和加载的每次重复,所述os、管理程序等可经配置以训练对象或组件的至少部分评分。评分可至少部分地基于人工神经网络(ann),且在此类实例中,所述训练可包含训练ann。
24.在一些实施例中,所述os、管理程序等可经配置以在使用减少或预测减少而超出针对加载在第一部分中的至少一些对象或组件的第一阈值时将所述至少一些对象或组件从存储器的第一部分移动到存储器的第二部分。此类移动可在应用程序启动之后发生。另外,所述os、管理程序等可经配置以在使用增多或预测增多而超出针对加载在第二部分中的至少一些对象或组件的第二阈值时将所述至少一些对象或组件从存储器的第二部分移动到存储器的第一部分。此类移动也可在应用程序启动之后发生。另外,在应用程序启动之后,所述os、管理程序等可经配置以在使用减少而超出针对第二部分中的至少一些对象或组件的第三阈值时从存储器的第二部分移除所述至少一些对象或组件。
25.在一些实施例中,所述os、管理程序等可经配置以启动应用程序,且应用程序的启动包含所述os、管理程序等根据所述应用程序的先前执行模式将所述应用程序的根进程执行到初始点。另外,所述os、管理程序等可经配置以在应用程序是应用程序群组的部分时启动所述应用程序,且应用程序的启动包含所述os、管理程序等根据应用程序(或应用程序群组)的先前执行模式将所述应用程序的根进程执行到(或将应用程序群组的根进程执行到)初始点。另外,所述os、管理程序等可经配置以从计算装置的用户接收起动应用程序的请
求,以及在接收到起动应用程序的请求之后通过使用应用程序的根进程(或通过使用应用程序群组的根进程)起动计算装置中的应用程序。
26.在一些实施例中,所述os、管理程序等可经配置以使应用程序的根进程分叉(或将应用程序群组的根进程分叉)成多个进程。在此类实施例中,所述os、管理程序等可经配置以在接收到起动应用程序的请求后通过根据起动应用程序的请求使用多个进程中的至少一者来起动计算装置中的应用程序。多个进程中的至少一些进程可彼此不同和/或不同于根进程。另外,多个进程中的至少一些进程最初可彼此相同和/或与根进程相同。
27.用于应用程序(或用于应用程序群组)的根进程可在起动os、管理程序等时启动。在一些实施例中,如果在某一时间段内未使用应用程序,或如果应用程序消耗过多的系统资源,例如cpu、gpu、存储器或其它资源,则可终止应用程序的根进程(或应用程序群组的根进程)。在此类实施例中,在预期应用程序的使用时,所述os、管理程序等可经配置以根据在对应用程序的监测中标识的模式重新启动根进程。对模式的优选可基于模式的量、频率和/或新近度,且可监测和跟踪用于应用程序的任何类型的存储器存取模式。监测和跟踪可包含硬件和软件性能计数器,所述计数器可通过os经由读取和写入专用寄存器(例如,模型特定寄存器)而使用。模式可基于度量(例如从存储器读取、写入到存储器的量、频率和/或新近度)、物理存储器空间中的地址模式、虚拟空间中的地址模式、数据局部性(空间上和/或时间上)、存储体冲突,或每条指令的cpu循环。模式还可基于度量,例如转译后备缓冲器(translation lookaside buffer,tlb)度量的量、频率和/或新近度,以及os可用的其它度量。
28.在一些实施例中,在应用程序安装在计算装置(例如,移动装置)中之后,装置的os或相关联的管理程序可预启动所述应用程序以生成针对用户定制的根应用程序进程。所述预启动可在用户请求计算装置起动应用程序之前发生。所述应用程序可至少部分地经由os或管理程序等执行。因此,所述应用程序的预启动进程或根进程不同于os的根进程。在此类实施例中,所述os或管理程序等可移动和/或复制数据,以设置应用程序的根进程。在一些实施例中,数据的复制和/或移动最初可通过os的根进程完成。这可在应用程序的任何初始读取或写入之前例如通过应用程序的根进程发生。在一些实施例中,不通过os的根进程或应用程序的相应根进程复制和/或移动公共代码和只读数据(例如,库、运行时、驱动器、存储器页)。在一些实施例中,直到通过根进程、另一进程或os初始修改代码和数据才复制根进程的代码和数据。在一些实施例中,仅复制代码和数据的经修改部分,但未修改部分保持通用。在一些实施例中,可通过监测对存储器页、高速缓存线或文件系统扇区或计算机可读存储介质的其它元件的写入来标识这些部分。
29.初始读取和写入可存储或缓存在存储器中,以经由尤其用于应用程序或用于包含所述应用程序的应用程序群组的相应根进程来使用。在一些实施例中,存储或缓存可在更快的存储器中完成,以加速初始读取和写入。初始读取和写入可由os、管理程序等经由存储器根据使用频率、使用的新近度等来管理、维持、优先排序等。
30.计算装置(例如,移动装置)可监测用户对应用程序的频繁使用或新近使用,以确定要添加到应用程序的根进程(或应用程序群组的根进程)的初始读取和写入。这可使os、管理程序等从应用程序的存储器读取和/或写入到所述存储器。因初始写入所致的数据移动和/或复制还可在用户请求os、管理程序等起动应用程序之前执行。
31.在os、管理程序等使系统级根进程分叉之后,应用程序的预测初始读取和/或写入可用于定制应用程序的根进程或群组的根进程。在此类实例中,应用程序或群组的定制根进程可保存在持久性非易失性存储器(例如,快闪存储器和/或nvram)中以用于应用程序的快速起动。
32.当用户请求os、管理程序等起动应用程序时,所述os、管理程序等可使用应用程序或应用程序群组的预启动进程(即,应用程序或应用程序群组的根进程),或来自预启动进程的分叉进程以服务于用户。来自应用程序的根进程或应用程序群组的根进程的分叉进程可类似于或不同于其父级根进程。
33.另外,当用户终止应用程序时,os可完全地或部分地终止所述应用程序的活动进程和/或所述应用程序或应用程序群组的根进程。在预期用户将运行应用程序的情况下,os、管理程序等可重新启动应用程序或应用程序群组的根进程,所述根进程可基于应用程序的最新近和/或频繁用户使用模式而进一步定制。
34.图1、4和6说明根据本公开的一些实施例的可实施不同应用程序进程的初始数据分布的实例移动装置102。另外,如图4和6中所展示,根据本公开的一些实施例,移动装置102可包含且运行多个应用程序的相应根进程。出于本公开的目的,应理解,虽然图1、4和6涉及每个应用程序一个根进程,但此类应用程序可以是应用程序群组的一部分,且所述根进程可以是应用程序群组的根进程。
35.图2、3、5、7和8说明根据本公开的一些实施例的可由图1、4和6中所描绘的移动装置102执行的实例方法200、300、500、700和800的流程图。
36.具体地说,图1说明至少包含存储器104的移动装置102。图1还展示存储器104包含单独的存储器部分(例如,参看第一存储器部分106a、第二存储器部分106b和第n存储器部分106c)。每个单独存储器部分可包含对应级的对象和/或组件(例如,参看第一级对象或组件108a、第二级对象或组件108b和第n级对象或组件108c)。对应级可与对应用程序的执行的重要性或关键性相关联。换句话说,每个单独存储器部分可包含对应级的对象和/或组件,所述对应级涉及所述对象和/或组件对于执行应用程序的重要性或关键性。另外,通过图解说明应理解,对于移动装置102的存储器104中对应数目级的对象和/或组件,可存在多于两个(或多于三个)存储器部分。
37.移动装置102中的os,或在移动装置中或以通信方式耦合到移动装置的管理程序等,可经配置以监测移动装置中包含且可运行的应用程序的多个进程。所述os、管理程序等可经配置以对多个进程使用的对象或组件(例如,参看第一级对象或组件108a、第二级对象或组件108b和第n级对象或组件108c)进行评分,以确定在应用程序启动期间对象或组件在存储器中的放置(例如,参看存储器104)。在应用程序的启动期间,所述os、管理程序等可经配置以至少部分地将评分为第一级的对象或组件(例如,参看第一级对象或组件108a)加载到存储器的第一部分(例如,参看第一存储器部分106a)中。另外,在应用程序的启动期间,所述os、管理程序等可经配置以至少部分地将评分为第二级的对象或组件(例如,参看第二级对象或组件108b)加载到存储器的第二部分(例如,参看第二存储器部分106b)中。评分为第二级的对象或组件对应用程序的重要性可低于评分为第一级的对象或组件。
38.每个存储器部分可由一或多个类型的存储器构成。并且,每个存储器部分可提供不同功能或折衷。举例来说,第一存储器部分106a或最高存储器部分在单独存储器部分的
读取和写入速度方面可提供最高性能。第二存储器部分106b或第二高存储器部分在单独存储器部分的读取和写入速度方面可提供第二高性能。最低存储器部分(例如,参看第n存储器部分106c)在单独存储器部分的读取和写入速度方面可提供最低性能。然而,作为折衷,最低存储器部分可提供最大存储器容量、数据可靠性、有效性或持久性。为提供此类功能,第一存储器部分106a或最高存储器部分可包含dram或sram,或nvram与dram的组合。另外,在此类实例中,第二存储器部分106b或第二高存储器部分可包含nvram,或dram、nvram和/或快闪存储器的组合。并且,在此类实例中,最低存储器部分(例如,参看第n存储器部分106c)可包含快闪存储器,或nvram和/或快闪存储器的组合。在本文公开的所有实例中,nvram可包含3d xpoint存储器。
39.应用程序的启动(例如,参看图4中展示的应用程序406a、406b和406c)可包含执行应用程序的根进程(例如,参看图4中展示的根进程408、412和416)。至少部分地,所述os、管理程序等可经配置以执行应用程序的根进程。所述根进程可包含加载评分为一或多个级的对象或组件。举例来说,所述根进程可包含加载评分为第一级的对象或组件(例如,参看第一级对象或组件108a),和/或根进程可包含加载评分为第二级的对象或组件(例如,参看第二级对象或组件108b)。
40.在一些实施例中,所述os、管理程序等可经配置以将经评分对象或组件(例如,参看第一级对象或组件108a、第二级对象或组件108b和第n级对象或组件108c)的对应标识和评分存储在评分表(例如,参看图1中展示的评分表110)中。
41.在一些实施例中,评分表110可以是移动装置102的os的应用程序二进制文件的一部分。在此类实施例中,每当用户更新移动装置102的os时,所述评分表可供用户使用。另外,评分表110可经由云与用户的其它装置同步。
42.另外,评分可至少部分地基于机器学习。在此类实施例中,所述os、管理程序等可经配置以重复对多个进程的监测、对象或组件的评分以及对象或组件的加载。并且,通过监测、评分和加载的每次重复,所述os、管理程序等可经配置以训练对象或组件的至少部分评分。评分可至少部分地基于ann,且在此类实例中,所述训练可包含训练ann。
43.在一些实施例中,所述os、管理程序等可经配置以在使用减少或预测减少而超出针对加载在第一部分中的至少一些对象或组件的第一阈值时将至少一些对象或组件从存储器的第一部分移动到存储器的第二部分(例如,当使用减少或预测减少而超出针对加载在第一存储器部分106a中的至少一些对象或组件的第一阈值时,第一存储器部分106a中的对象或组件可移动到第二存储器部分106b)。此类移动可在应用程序启动之后发生。另外,所述os、管理程序等可经配置以在使用增多或预测增多而超出针对加载在第二部分中的至少一些对象或组件的第二阈值时将至少一些对象或组件从存储器的第二部分移动到存储器的第一部分(例如,当使用增多或预测增多而超出针对加载在第二存储器部分106b中的至少一些对象或组件的第二阈值时,第二存储器部分106b中的对象或组件可移动到第一存储器部分106a)。此类移动也可在应用程序启动之后发生。另外,在应用程序启动之后,所述os、管理程序等可经配置以在使用减少而超出针对存储器的第二部分、较低部分或最低部分(取决于实施例)中的至少一些对象或组件的第三阈值时从存储器的第二部分或存储器的较低或最低部分(例如,参看第n存储器部分106c)移除所述至少一些对象或组件。
44.具体地说,图2说明可由图1中描绘的移动装置102或由类似于移动装置102配置的
另一类型的计算装置执行的方法200的操作。另外,在一些实施例中,方法200可至少部分地通过一般来说计算装置的os或移动装置的os执行。方法200还可至少部分地通过管理程序和/或一或多个操作系统执行。
45.在图2中,方法200在步骤202处开始,监测应用程序的多个进程。举例来说,步骤202可包含在计算装置(例如,移动装置)中监测应用程序的多个进程。
46.在步骤204,方法200继续对由多个进程使用的对象或组件进行评分以确定所述对象或组件在应用程序启动期间在存储器中的放置。举例来说,步骤204可包含在计算装置中对由多个进程使用的对象或组件进行评分以确定对象或组件在应用程序启动期间在存储器中的放置。
47.在步骤204的评分可至少部分地基于机器学习。在此类实施例中,所述os、管理程序等可经配置以重复对多个进程的监测、对象或组件的评分以及对象或组件的加载。并且,通过监测、评分和加载的每次重复,所述os、管理程序等可经配置以训练对象或组件的至少部分评分(例如,参看方法200的步骤214)。在步骤204的评分可至少部分地基于ann,且在此类实例中,所述训练可包含在步骤214训练ann。
48.在步骤206,方法200继续将经评分对象或组件的对应标识和评分存储在评分表中。举例来说,步骤206可包含存储经评分对象或组件的对应标识和评分,且所述存储可发生在实施于计算装置的存储器中的评分表中(例如,实施于移动装置的存储器中的评分表中)。
49.在步骤208,方法继续启动应用程序。应用程序的启动可包含执行应用程序的根进程。所述根进程可包含加载评分为第一级(例如,最高关键性级)和/或第二级(例如,比最高级低的关键性级)的对象或组件。在一些实施例中,在步骤202的监测和在步骤204的评分可以是在步骤208启动应用程序的一部分(未描绘)。
50.在应用程序启动期间,方法继续在步骤210执行应用程序的根进程。另外,在应用程序启动期间,方法继续在步骤212根据经评分对象或组件的评分而至少部分地将经评分对象或组件加载到存储器的一部分中。在步骤204评分为第二级的对象或组件对应用程序的重要性可低于在步骤204评分为第一级的对象或组件。
51.在一些实施例中,例如,在步骤210,方法200可包含经由根进程加载评分为第一级(例如,最高关键性级)的对象或组件。另外,在步骤210,方法200可包含经由根进程加载评分为第二级(例如,比最高级低的关键性级)的对象或组件。
52.在一些实施例中,例如,在步骤212,方法200可包含将评分为第一级(例如,最高关键性级)的对象或组件至少部分地加载到存储器的第一部分(例如,最高性能级的存储器部分)中。另外,在步骤212,方法200可包含将评分为第二级(例如,比最高级低的关键性级)的对象或组件至少部分地加载到存储器的第二部分(例如,低于最高性能级的存储器部分)中。存储器的第一部分和存储器的第二部分可由可具有不同功能或折衷的一或多个类型的存储器构成。举例来说,第一部分在单独存储器部分的读取和写入速度方面可提供最高性能。第二部分在单独存储器部分的读取和写入速度方面可提供第二高性能。然而,作为折衷,第二部分可提供比第一部分大的存储器容量、数据可靠性、有效性或持久性。举例来说,在一些实施例中,存储器的第一部分可包含dram,且存储器的第二部分可包含nvram。所述nvram可包含3d xpoint存储器。
53.如图2中展示,方法200可在步骤208启动应用程序之后自身重复。举例来说,方法200可包含在应用程序启动期间重复对多个进程的监测、对象或组件的评分以及对象或组件的加载。在步骤214,方法200继续利用步骤202到212的每次重复来训练在步骤204对所述对象或组件的评分的至少部分。举例来说,利用监测、评分和加载的每次重复,方法在步骤214可继续训练对象或组件的评分的至少部分。在一些实施例中,在步骤204的评分可至少部分地基于ann,且训练可包含在步骤214训练ann。在一些实施例中,可与其它步骤并发地进行至少一些步骤的重复。举例来说,步骤202可实施为连续地重复自身且可将其输出数据流式传输到同样实施为连续地重复自身的步骤204中,诸如此类。由于此类实施例,方法200可实施为持久性执行管线。
54.具体地说,图3说明可由图1中描绘的移动装置102或由类似于移动装置102配置的另一类型的计算装置执行的方法300的操作。另外,在一些实施例中,方法300可至少部分地通过一般来说计算装置的os或移动装置的os执行。方法300还可至少部分地通过管理程序和/或一或多个操作系统执行。
55.在图3中,方法300在方法200的步骤202处开始,监测应用程序的多个进程。接着,在方法200的步骤204,方法300继续对由多个进程使用的对象或组件进行评分以确定所述对象或组件在应用程序启动期间在存储器中的放置。接着,在方法200的步骤206,方法300继续将经评分对象或组件的对应标识和评分存储在评分表中。接着,在方法200的步骤208,方法300继续启动应用程序。在应用程序启动期间,方法300还继续在步骤210执行应用程序的根进程。另外,在应用程序启动期间,方法300继续在步骤212根据经评分对象或组件的评分而至少部分地将经评分对象或组件加载到存储器的一部分中。
56.在步骤302,方法300继续在使用减少或预测减少而超出针对加载在较高部分中的至少一些对象或组件的阈值时将所述至少一些对象或组件从存储器的较高部分移动到存储器的较低部分。在步骤304,方法300继续在使用增多或预测增多而超出针对加载在较低部分中的至少一些对象或组件的阈值时将所述至少一些对象或组件从存储器的较低部分移动到存储器的较高部分。在步骤306,方法300继续在使用减少而超出针对较低部分中的至少一些对象或组件的第二阈值时从步骤304中提及的存储器的较低部分移除所述至少一些对象或组件。
57.在步骤308,方法300继续利用步骤202到212以及步骤302到306的每次重复来训练在步骤204对所述对象或组件的评分的至少部分。应理解,可与其它步骤并发地进行至少一些步骤的重复。举例来说,步骤302和304可实施为连续地重复,诸如此类。由于此类实施例,方法300可实施为持久性执行管线。
58.本文公开的一些实施例涉及具有不同类型的存储器(例如,dram、nvram、3dxpoint存储器和快闪存储器)的计算装置,例如移动装置,例如参看图1中展示的移动装置102和其不同存储器部分106a、106b和106c。计算装置的操作系统或装置中的另一系统可对应用程序的不同数据对象和组件(例如,参看图1中展示的对象或组件108a、108b和108c)进行评分,以确定对象和组件最初放置在存储器中的位置,例如,参看图2和3中展示的步骤204。对象和组件可被放置到计算装置的不同类型的存储器中,且对象和组件的放置可在应用程序最初起动时发生,例如,参看图2和3中展示的步骤208到212。
59.初始应用程序进程(例如,应用程序的根进程)可具有可执行文件以及任何可加载
模块和库以供执行。这些可执行文件以及可加载模块和库可在应用程序进程之前且在应用程序的根进程期间加载到应用程序进程的存储器中,例如,参看图2和3中展示的步骤208到212。
60.一些组件(例如静态部件)可预定处于重要路径上,且因此可加载到例如dram的较高性能存储器类型中,这例如可分别包含在步骤204和212中。一些组件可预定加载到存储器映射的共享文件中以用于进程间通信(ipc),且因此加载到例如dram的较高性能存储器类型中,这例如可分别包含在步骤204和212中。另外,较高性能存储器类型可被显式分配给更重要的进程,或较高性能共享存储器区可显式分配给更重要的进程(例如,经由匿名共享存储器(ashmem)或图形存储器分配器(gralloc)),这例如可包含在步骤204中。大小显著的一些重要的用户触发存储器页可能会转到装置中的较高性能存储器类型。重要结构(例如与应用程序运行时环境和系统调用相关)也可能分配给装置的较高性能存储器类型,这例如可包含在步骤204中。
61.计算装置例如通过os等可在每个应用程序的执行期间对其组件和对象进行评分,且将评分存储在评分表(其可为应用程序自身的一部分)中,例如参看步骤204和206。在用户多次调用应用程序后,(例如,经由计数、训练和/或机器学习过程实施的)评分过程可用于提高应用程序的性能,例如参看步骤214和308。任选地,计算装置可通过具有初始评分表来标识哪些对象是重要的以及哪些是不重要的。
62.默认情况下,应用程序进程中的对象在进程之间共享(例如,在根进程分叉之后)。在步骤302或304,当存在针对所述对象的写入(例如,写时拷贝(cow)的触发事件)时,所述对象或其一部分可从其存放的位置移动和/或复制到另一存储器类型(例如,从nvram移动和/或复制到dram,或从dram移动和/或复制到nvram),或移动和/或复制到同一存储器类型,这取决于哪个总线使用较少(例如,取决于dram总线或nvram总线的带宽)或预期在近期使用较少。组件或对象在步骤302和304的移动还可取决于组件或对象(或其部分)预期将被使用的程度或在被逐出之前在存储器中保持的时长。
63.在一些实施例中,从根进程到应用程序进程可使用智能cow。智能cow的实施可以是输入的函数,包含当前和预测的存储器总线流量、对象使用、cow不再有效之前的预测时间,且可由用户度量(例如每秒帧数、屏幕响应等)感测。智能cow可经由期望最大化算法进行改进,所述算法使用当前和预测的存储器总线流量、对象使用量、预测时间和用户相关度量等输入。
64.在步骤204,期望最大化算法可用于最大化通过有意义的度量(例如,每秒帧数、触碰-呈现响应时间等)测量的预期用户体验,且同时最大化多种存储器类型的总线容量资源。
65.在步骤302,共享对象可初始地置于装置中的最高性能类型的存储器(例如,dram)中,且逐渐地部分复制到所述存储器类型中且部分复制到较低性能类型的存储器(例如,nvram或快闪存储器)中。逐渐复制可由cow触发逐部分进行。并且,随着时间推移,如果不经常使用,则共享对象在最高性能类型的存储器中的部分(例如dram中的部分)可被逐出到较低性能类型的存储器(例如,nvram或快闪存储器)中。或最高性能类型的存储器中的部分可作为整体直接复制到较低性能类型的存储器中,或所述部分可通过例如步骤302与304之间的每次写入在不同类型的存储器之间来回移动。
66.不同类型的存储器之间的来回可包含不同类型的存储器之间的乒乓来回(ping-ponging)。乒乓来回可以是或包含高级算法,其中对象的部分从一个存储器部分或类型复制或移动到另一存储器部分或类型。举例来说,新进程可被分叉,且其写入到一些部分的共享对象。假设存储器总线a忙碌且总线b空闲。对所述对象的所述部分的读取-修改-写入接着可经由乒乓来回而从存储器a移动到存储器b。另外,在其对象的部分处于存储器b中的情况下,可从一个进程分叉出另一进程。并且,假设存储器总线a忙碌且总线b空闲。对象的所述部分的读取-修改-写入接着可从存储器b的一个部分移动回到存储器b的相同部分或另一部分。如果存储器总线b忙碌且总线a空闲,则对象的所述部分的读取-修改-写入可从存储器b移动到存储器a。
67.操作系统可尝试将用户重要的工作对象集(例如,由前台应用程序和/或后台里的运行进程使用的对象)保持在计算装置的最高性能类型的存储器中。其它对象可迁移到计算装置中较低性能类型的存储器中,且其中一些重要部分仍缓存在最高性能类型的存储器中。
68.在一些实施例中,os(或管理程序等)可经配置以启动应用程序,且应用程序的启动包含根据所述应用程序的先前执行模式将所述应用程序的根进程执行到初始点。另外,os(或管理程序等)可经配置以从计算装置的用户接收起动应用程序的请求,以及在接收到起动应用程序的请求后通过使用应用程序的根进程来起动计算装置中的应用程序。
69.具体地说,图4说明至少包含控制器和存储器404的移动装置102,其可实施针对个别应用程序或应用程序群组创建定制的根进程。控制器和存储器404的存储器可包含图1中展示的存储器104。移动装置102的控制器和存储器404可包含用于在移动装置中执行的应用程序(例如,参看应用程序406a、406b和406c)的指令和数据。移动装置102的控制器可基于所述数据来执行应用程序的指令。所述数据可包含呈二进制格式或呈适合由编程语言解释器解释的格式的应用程序指令代码。所述数据可包含一些数据结构、库等。控制器还可将指令和数据保持在控制器的寄存器中。存储器可将指令和数据保持在其存储器单元中。在一些实施例中,移动装置102的存储器的存储器单元可包含快闪存储器单元和/或nvram单元。所述nvram单元可以是或包含3d xpoint存储器单元。
70.在一些实施例中,存储器可具有不同速度、时延、带宽和其它参数。举例来说,sram存储器可用作高速缓存,dram可用作主存储器,且nvram可用作存储存储器。
71.用于移动装置102中包含且可运行的每个应用程序的指令和数据可包含用于应用程序的根进程的根进程数据和指令。包含在移动装置102中的应用程序的相应根进程(例如,参看应用程序406a的根进程408、应用程序406b的根进程412和应用程序406c的根进程416)可由控制器和存储器404实施。控制器可经配置以根据用于根进程的指令和数据执行根进程的指令,且存储器可经配置以保持或存储用于由控制器执行根进程的指令和数据。
72.在图4和6中,展示根进程对应于单个应用程序(例如,参看根进程408和对应的应用程序406a以及根进程608和对应的应用程序606a)。应理解,根进程可分叉成可由单个应用程序或由包含所述单个应用程序的多个应用程序使用的多个进程。举例来说,如果单个应用程序在应用程序群组中,则所述群组的根进程可分叉成多个分叉进程且所述多个分叉进程可由所述群组中的应用程序使用。另外,应用程序群组中的单个应用程序可使用多个不同的分叉进程。举例来说,应用程序606a(其可为应用程序群组的部分)可使用分叉进程
610a、610b和610c。应注意,图6中未描绘具有应用程序606a的群组中的其它应用程序。另外,如所提及,群组中的多个应用程序可使用多个不同的分叉进程。举例来说,应用程序606a、606b和606c可例如在所述应用程序处于同一群组中的情况下使用分叉进程610a、610b和610c(这在图6中未描绘)。此类实施例可通过合并分叉而实施。
73.在一些实施例中,分叉根进程的初始执行可限于预加载库、从所需库和初始数据结构中组成分叉进程,以及保存分叉进程以供进一步再使用。另外,在任何时间,可在某一状态下将分叉进程的执行保存在存储器中,使得分叉进程可重复使用以避免花费时间重新执行所述进程。
74.出于本公开的目的,应理解,虽然图1、4和6涉及每个应用程序一个根进程,但此类应用程序可以是应用程序群组的一部分,且所述根进程可以是应用程序群组的根进程。
75.包含在移动装置102中的应用程序(例如,参看应用程序406a、406b和406c)的其它进程也可由控制器和存储器404实施。控制器可经配置以根据用于其它进程的指令和数据执行应用程序的其它进程的指令,且存储器可经配置以保持或存储用于由控制器执行其它进程的指令和数据。
76.具体地说,图5说明可由图1、4和6中描绘的移动装置102或由类似于移动装置102配置的另一类型的计算装置执行的方法500的操作。另外,在一些实施例中,方法500可至少部分地通过一般来说计算装置的os或移动装置的os执行。方法500还可至少部分地通过管理程序和/或一或多个操作系统执行。
77.在图5中,方法500在步骤502处开始,监测应用程序的使用以确定从用于所述应用程序的存储器的读取以及到所述存储器的写入的频率或新近度。在一些实施例中(未描绘),方法500可开始监测和/或跟踪应用程序的使用,以确定应用程序的先前执行模式的量、频率和/或新近度。
78.应用程序的先前执行模式可至少包含、关于或基于所监测和/或跟踪的应用程序的先前执行中的模式的量、频率和/或新近度。所监测和/或跟踪的模式可以是用户或机器的任何类型的应用程序使用模式。举例来说,可监测和/或跟踪应用程序的任何类型的存储器存取和使用模式。模式可包含、关于或基于度量(例如从存储器读取、写入到存储器的量、频率和/或新近度)、物理存储器空间中的地址模式、虚拟空间中的地址模式、数据局部性(空间上和/或时间上)、存储体冲突、每条指令的cpu循环等。
79.另外,监测和跟踪应用程序的使用可在应用程序启动期间(例如,包含当应用程序被加载到存储器时)和/或在应用程序运行期间之后发生。监测和跟踪应用程序的使用可在启动应用程序期间以及在启动后运行应用程序的任何其它时段发生。在运行时期间监测和跟踪应用程序的使用可促进应用程序的有效和/或高效根进程的推导。举例来说,在启动之后,用户可触碰屏幕来触发应用程序的一些元件且期待某一结果。在一些实施例中,所述结果的传递可能非常快,因为可基于在应用程序的运行时期间发生的监测来预加载重要存储器对象。在一些实施例中,可从例如nand型快闪存储器的较慢存储器到例如dram的较快存储器完成对象的预加载。
80.在步骤504,方法500继续根据从用于所述应用程序的存储器的读取以及到所述存储器的写入的频率或新近度来生成所述应用程序的先前执行模式。在一些实施例中(未描绘),方法500可继续根据所监测和/或跟踪的应用程序的先前执行中的模式的量、频率和/
或新近度来生成所述应用程序的先前执行模式。
81.另外,所生成的应用程序的先前执行模式可至少包含、关于或基于所监测和/或跟踪的应用程序的先前执行中的模式的量、频率和/或新近度。在步骤504生成的模式可以是用户或机器的任何类型的应用程序使用模式。举例来说,在步骤504生成的模式可包含任何类型的存储器存取模式,且应用程序的使用可被监测和/或跟踪。另外,举例来说,生成的模式可包含、关于或基于度量(例如从存储器读取、写入到存储器的量、频率和/或新近度)、物理存储器空间中的地址模式、虚拟空间中的地址模式、数据局部性(空间上和/或时间上)、存储体冲突,或与应用程序和应用程序的存储器的使用相关的任何其它类型的度量。
82.在步骤506,方法500继续根据应用程序的先前执行模式将应用程序的根进程执行到初始点。步骤506可包含根据应用程序的先前执行模式定制应用程序的根进程,且接着根据应用程序的先前执行模式将应用程序的根进程执行到初始点。步骤506还可包含图2中展示的步骤210。步骤506还可包含图2中展示的步骤212以及步骤208。
83.可完成定制根进程,但不限于从各个库中组成根进程、使用默认可用的其它根进程、形成数据结构,以及通过网络查询根进程组件的各种源。
84.应用程序的先前执行模式可至少包含、关于或基于所监测和/或跟踪的应用程序的先前执行中的模式的量、频率和/或新近度。所监测和/或跟踪的模式可以是用户或机器的任何类型的应用程序使用模式。举例来说,可监测和/或跟踪应用程序的任何类型的存储器存取和使用模式。应用程序的先前执行模式可包含、关于或基于度量,至少例如用户或机器的任何类型的应用程序使用模式的量、频率和/或新近度。举例来说,模式可包含、关于或基于度量(例如从存储器读取、写入到存储器的量、频率和/或新近度)、物理存储器空间中的地址模式、虚拟空间中的地址模式、数据局部性(空间上和/或时间上)、存储体冲突、每条指令的cpu循环等。
85.执行应用程序的根进程可包含在对应用程序的存储器的任何初始写入和/或从中读取之前移动存储器中的数据。另外,执行应用程序的根进程可包含在对应用程序的存储器的任何初始写入和/或从中读取之前复制存储器中的数据。并且,移动和/或复制的数据可包含与应用程序的先前执行模式相关的数据。在一些实施例中,在对存储器进行任何初始写入之前移动和/或复制存储器中的数据可包含避免移动和/或复制公共代码和只读数据。在一些实施例中,方法500可包含在计算装置中的os(或管理程序)使用于os(或管理程序)的根进程分叉之后,针对应用程序执行预测的初始写入和/或读取以定制应用程序的根进程的执行,使得应用程序的根进程是用于应用程序的应用程序级进程。
86.另外,方法500可包含在至少部分地执行根进程之前将用于应用程序的根进程的数据存储在快闪存储器中(未在图中描绘)。方法500还可包含在至少部分地执行根进程之前将用于应用程序的根进程的数据存储在nvram中(图中未描绘)。所述nvram可包含3d xpoint存储器。在一些实施例中,存储新数据可覆写与应用程序的使用相关的旧的未使用数据。
87.在步骤508,方法500继续从用户接收起动应用程序的请求。在步骤510,方法500继续在接收到起动应用程序的请求之后通过使用应用程序的根进程来起动应用程序。在一些实施例中,方法500可包含根据应用程序的先前执行模式至少部分地通过计算装置中的os将应用程序的根进程执行为后台进程。在此类实施例中,方法500还可包含通过os从计算装
置的用户接收起动应用程序的请求。并且,方法500可包含在接收到起动应用程序的请求之后通过使用应用程序的根进程或根进程的分叉进程而通过os起动计算装置中的应用程序。在一些实施例中,直到通过应用程序、另一进程或os初始修改代码和数据才复制分叉进程的代码和数据。在一些实施例中,仅复制代码和数据的经修改部分,但未修改部分保持通用。在一些实施例中,可通过监测对存储器页、高速缓存线或文件系统扇区或计算机可读存储介质的其它元件的写入来标识此类部分。
88.在一些实施例中,将根进程执行到初始点可在一个装置上完成,例如在云计算环境中完成,然后在从另一装置接收到起动应用程序中的至少一者的请求之后使所述根进程分叉,接着通过网络将分叉进程传送到例如移动装置的另一装置,然后使用移动装置上的分叉进程作为应用程序的起始点。
89.具体地说,图6说明至少包含控制器和存储器404的移动装置102,且控制器和存储器404的存储器可包含图1中展示的存储器104。移动装置102的控制器和存储器404可包含用于在移动装置中执行的应用程序(例如,参看应用程序606a、606b和606c)的指令和数据。移动装置102的控制器可基于所述数据来执行应用程序的指令。所述数据可包含呈二进制格式或呈适合由编程语言解释器解释的格式的应用程序指令代码。所述数据可包含一些数据结构、库等。控制器还可将指令和数据保持在控制器的寄存器中。存储器可将指令和数据保持在其存储器单元中。在一些实施例中,移动装置102的存储器的存储器单元可包含快闪存储器单元和/或nvram单元。所述nvram单元可以是或包含3d xpoint存储器单元。
90.还如图6中展示,用于移动装置102中包含且可运行的每个应用程序的指令和数据可包含用于应用程序的根进程的根进程数据和指令。如图6中所展示,移动装置102中包含的应用程序的根进程,例如参看相应根进程608、612和616,可由控制器和存储器404实施。控制器经配置以根据用于根进程的指令和数据执行根进程的指令,且存储器经配置以保持或存储用于由控制器执行根进程的指令和数据。另外,如图6所说明,移动装置102中包含的应用程序的其它进程(例如,参看应用程序606a、606b和606c)也可由控制器和存储器404实施。控制器经配置以根据用于其它进程的指令和数据执行应用程序的其它进程的指令,且存储器经配置以保持或存储用于由控制器执行其它进程的指令和数据。
91.另外,如图6中所展示,控制器和存储器404可包含用于移动装置102中存储且可运行的应用程序的相应根进程分叉的多个进程(例如,参看分叉进程610a、610b、610c、614a、614b、618a和618b)的数据和指令。如图6中所展示,至少进程610a、610b和610c从根进程608分叉而来;但可存在从根进程608分叉的更多进程。还展示从根进程612分叉的进程614a和614b。并且,进程618a和618b从根进程616分叉而来。
92.在一些实施例中,移动装置102的操作系统或所述移动装置中或与所述移动装置相关联的管理程序经配置以使应用程序的根进程(例如,参看应用程序606a的根进程608、应用程序606b的根进程612和应用程序606c的根进程616)分叉成多个进程(例如,参看分叉进程610a、610b、610c、614a、614b、618a和618b)。在此类实施例中,操作系统或管理程序可经配置以在接收到起动应用程序的请求之后根据起动应用程序的请求通过使用多个分叉进程中的至少一者(例如,参看分叉进程610a、610b、610c、614a、614b、618a和618b)和/或相应根进程(例如,参看应用程序606a的根进程608、应用程序606b的根进程612和应用程序606c的根进程616)起动移动装置102中的应用程序。
93.多个分叉进程中的至少一些或每一者可不同于应用程序的父级根进程。差异可基于计算装置中待运行的不同应用程序和不同应用程序部分。并且,至少在执行应用程序的某个点处,多个分叉进程中的至少一些或每一者可与应用程序的父级根进程相同。
94.出于本公开的目的,应理解,虽然图1、4和6涉及每个应用程序一个根进程,但此类应用程序可以是应用程序群组的一部分,且所述根进程可以是应用程序群组的根进程。
95.具体地说,图7说明可由图6中描绘的移动装置102或由类似于移动装置102配置的另一类型的计算装置执行的方法700的操作。另外,在一些实施例中,方法700可由一般来说计算装置的操作系统或移动装置的操作系统执行。方法700还可通过管理程序和/或一或多个操作系统执行。
96.在图7中,方法700以更详细地展示于图5中的方法500的步骤502到508开始。在步骤502,方法700包含监测应用程序的使用以确定从用于所述应用程序的存储器的读取以及到所述存储器的写入的频率或新近度。在步骤504,所述方法包含根据从用于所述应用程序的存储器的读取以及到所述存储器的写入的频率或新近度来生成所述应用程序的先前执行模式。在步骤506,所述方法包含根据应用程序的先前执行模式将应用程序的根进程执行到初始点。在步骤508,所述方法包含从用户接收起动应用程序的请求。
97.在步骤702,方法702继续将应用程序的根进程分叉成多个进程。在步骤704,方法700继续在接收到起动应用程序的请求之后根据起动应用程序的请求通过使用多个进程中的至少一者来起动应用程序。替代地,在步骤702,方法700可继续在接收到起动应用程序的请求之后根据起动应用程序的请求通过使用父级根进程(例如,参看根进程608)和多个进程(例如,参看分叉进程610a、610b和610c)起动应用程序。
98.关于方法700,多个分叉进程中的至少一些或每一者可不同于应用程序的父级根进程。差异可基于计算装置中待运行的不同应用程序和不同应用程序部分。并且,至少在执行应用程序的某个点处,多个分叉进程中的至少一些或每一者可与应用程序的父级根进程相同。
99.具体地说,图8说明可由图1、4和6中描绘的移动装置102或由类似于移动装置102配置的另一类型的计算装置执行的方法800的操作。另外,在一些实施例中,方法800可由一般来说计算装置的操作系统或移动装置的操作系统执行。方法800还可通过管理程序和/或一或多个操作系统执行。
100.如图8中展示,方法800以图5中展示的方法500或图7中展示的方法700开始。在步骤802,方法800继续从用户接收结束应用程序的请求。举例来说,在步骤802,方法800继续从计算装置的用户(例如,移动装置的用户)接收结束应用程序的请求。
101.在步骤804,方法800继续在接收到结束应用程序的请求后至少部分地结束应用程序。在步骤806,方法800继续在接收到结束应用程序的请求后至少部分地结束应用程序的根进程。
102.如图8中展示,在步骤808,当完成步骤806时,方法800继续根据预定条件至少部分地重新执行根进程(在至少部分地结束应用程序和根进程之后)。在步骤808,可基于应用程序的先前执行模式至少部分地重新执行根进程。另外,在步骤808,可通过应用程序的先前执行模式更新根进程的至少部分重新执行。
103.如图8中展示,在步骤810,当步骤806未完成时,方法800向前移动以在接收到结束
应用程序的请求之后继续运行应用程序的根进程。换句话说,方法800可包含在步骤802从移动装置的用户接收结束应用程序的请求,且接着在步骤804,所述方法可包含在接收到结束应用程序的请求之后至少部分地结束应用程序,且接着在步骤810,所述方法可包含在接收到结束应用程序的请求之后继续运行应用程序的根进程且在步骤804与810之间不停止根进程。由此,如果用户决定重新起动至少部分地结束的应用程序或可使用此根进程的其它应用程序,则可再次重新使用应用程序的根进程。
104.在一些实施例,例如可实施方法500和700的实施例中,应用程序的先前执行模式源于特定用户和其它用户对特定计算装置(例如,特定移动装置)上的应用程序的使用,使得根进程被定制用于任何用户对特定计算装置上的应用程序的使用。
105.在一些其它实施例(例如,可实施方法500和700的一些其它实施例)中,应用程序的先前执行模式源于特定用户对特定计算装置(例如,特定移动装置)上的应用程序的使用,使得根进程被定制用于特定用户对特定移动装置上的应用程序的使用。
106.在一些其它实施例(例如,可实施方法500和700的一些其它实施例)中,应用程序的先前执行模式源于特定用户对特定计算装置(例如,特定移动装置)和至少一个其它计算装置上的特定应用程序的使用,使得根进程被定制用于特定用户对所述计算装置和至少一个其它计算装置上的应用程序的使用。
107.关于方法200、方法300、方法500、方法700、方法800或本文中所描述的任何其它方法、过程或操作,在一些实施例中,非暂时性计算机可读存储媒体存储指令,所述指令在由至少一个处理装置(例如图9中展示的控制器906)执行时使至少一个处理装置执行方法200、方法300、方法500、方法700、方法800或本文中所描述的任何其它方法、过程或操作,和/或其任何组合。
108.举例来说,一些实施例可包含有形地编码有计算机可执行指令的非暂时性计算机可读存储媒体,所述计算机可执行指令在由与计算装置相关联的处理器执行时执行例如图2中展示的方法200等方法。另外,举例来说,一些实施例可包含有形地编码有计算机可执行指令的非暂时性计算机可读存储媒体,所述计算机可执行指令在由与计算装置相关联的处理器执行时执行例如图3中展示的方法300、图5中展示的方法500、图7中展示的方法700和图8中展示的方法800等方法。
109.另外,举例来说,一些实施例可包含有形地编码有计算机可执行指令的非暂时性计算机可读存储媒体,所述计算机可执行指令在由与计算装置相关联的处理器执行时可执行包含在移动装置中监测应用程序的多个进程的方法。所述方法还可包含在应用程序启动期间对由多个进程使用的对象或组件进行评分以确定所述对象或组件在应用程序启动期间在存储器中的放置。并且,在应用程序启动期间,所述方法还可包含将评分为第一级的对象或组件加载到存储器的第一部分中,以及将评分为第二级的对象或组件加载到存储器的第二部分中。评分为第二级的对象或组件对启动应用程序的重要性可低于评分为第一级的对象或组件。
110.另外,举例来说,一些实施例可包含一种方法,所述方法包含在应用程序启动期间通过移动装置中的os监测应用程序的多个进程。对多个进程的监测可在后台进程中发生。所述方法还可包含在应用程序启动期间对由多个进程使用的对象或组件进行评分以确定所述对象或组件在应用程序启动期间在存储器中的放置。并且,在应用程序启动期间,所述
方法可包含将评分为第一级的对象或组件加载到存储器的第一部分中,以及将评分为第二级的对象或组件加载到存储器的第二部分中。评分为第二级的对象或组件对启动应用程序的重要性可低于评分为第一级的对象或组件。
111.图9说明根据本公开的一些实施例的可实施用于不同应用程序进程的初始数据分布的实例计算装置900。根据本公开的一些实施例,计算装置900还可实施创建用于个别应用程序或应用程序群组的定制根进程。装置900可以是或包含移动装置102或任何其它类型的计算装置(其为或在某种程度上类似于移动装置),或是其一部分,所述移动装置或计算装置例如智能手机、平板计算机、iot装置、智能电视、智能手表、眼镜或其它智能家用电器、车载信息系统、可穿戴智能装置、游戏控制台、pc、数字相机或其任何组合。如所展示,装置900可连接到通信网络914,所述通信网络至少包含广域网(wan)、局域网(lan)、内联网、外联网、互联网,和/或其任何组合。
112.本文中所描述的每个计算或移动装置(例如,移动装置102或计算装置900)可以是或替换为个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够执行指定待由机器采取的动作的一组指令(顺序或以其它方式)的任何机器。
113.另外,虽然针对图9中展示的装置900以及图1、4和6中展示的移动装置102说明单个机器,但术语“机器”还应被认为包含个别地或联合地执行一组(或多组)指令以执行本文所论述的方法或操作中的任何一或多者的机器的任何集合。并且,所说明的计算装置或移动装置中的每一者可各自至少包含总线和/或主板、一或多个控制器(例如,一或多个cpu)、可包含临时数据存储的主存储器、至少一个类型的网络接口、可包含永久性数据存储的存储系统,和/或其任何组合。在一些多装置实施例中,一个装置可完成本文中所描述的方法的一些部分,接着通过网络将完成结果发送到另一装置,使得另一装置可继续本文中所描述的方法的其它步骤。
114.图9还说明根据本公开的一些实施例的实例计算装置900的实例部分。装置900可以通信方式耦合到网络914,如所展示。装置900至少包含总线904、控制器906(例如cpu)、存储器908、网络接口910、数据存储系统912,和其它组件916(其可为在移动装置或计算装置中存在的任何类型的组件,例如gps组件、i/o组件和传感器)。其它组件916可包含一或多个显示器、不同类型的传感器、音频和/或视觉输入/输出装置、额外的专用存储器、一或多个额外控制器(例如,gpu),或其任何组合。总线904以通信方式耦合控制器906、存储器908、网络接口910、数据存储系统912和其它组件916。装置900包含计算机系统,所述计算机系统至少包含经由总线904(其可包含多个总线)彼此通信的控制器906、存储器908(例如,只读存储器(rom)、快闪存储器、例如同步dram(sdram)或rambus dram(rdram)等dram、静态随机存取存储器(sram)等),以及数据存储系统912。
115.换句话说,图9是具有其中可操作本公开的实施例的计算机系统的实例装置900的框图。在一些实施例中,计算机系统可包含一组指令,以用于在被执行时使机器执行本文中所论述的任何一或多个方法。在此类实施例中,机器可连接(例如,经由网络接口910联网)到lan、内联网、例如4g或5g的移动无线网络、外联网和/或互联网(例如,网络914)中的其它机器。机器可作为对等(或分布式)网络环境(如本文中所描述的对等网络)中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中以服
务器或客户端机器的能力操作。
116.控制器906表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、单指令多数据(simd)、多指令多数据(mimd),或实施其它指令集的处理器,或实施指令集的组合的处理器。控制器906还可以是一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。控制器906经配置以执行指令,以用于执行本文中所论述的操作和步骤。控制器906可进一步包含例如网络接口910等网络接口装置以经由一或多个通信网络(例如网络914)通信。
117.数据存储系统912可包含机器可读存储媒体(也称为计算机可读媒体),其上存储有体现本文所描述的任何一或多个方法或功能的一或多个指令集或软件。指令也可在其通过计算机系统执行期间完全地或至少部分地驻存在存储器908内和/或控制器906内,存储器908和控制器906还构成机器可读存储媒体。存储器908可以是或包含装置900的主存储器。
118.虽然存储器、控制器和数据存储装置部分在实例实施例中展示为各自是单个部分,但每个部分应被认为包含可存储指令且执行其相应操作的单个部分或多个部分。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行且使机器执行本公开的任何一或多个方法的指令集的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体以及磁性媒体。
119.图10说明根据本公开的一些实施例的图1、4和6中描绘的移动装置102,其包含根进程的实例替代方案。如图10中展示,移动装置102包含控制器和存储器404以及根进程的替代方案的四个实例情况(参看图10中展示的实例情况1、2、3和4)。图10中展示的移动装置102还可包含图1、4和6中展示的移动装置102的各方面。
120.图10中展示的第一实例情况为情况1。在情况1中,如其在图6中展示,描绘应用程序606a。应用程序606a包含根进程608,所述根进程分叉成多个分叉进程(例如,参看分叉进程610a、610b和610c)。
121.图10中展示的第二实例情况为情况2。在情况2中,应用程序1002包含根进程“a”,且应用程序1004包含根进程“b”。在情况2中,展示不同的根进程由多个应用程序使用。这是多对多映射实例,其为多对一映射实例的超集。用于应用程序的根进程可由两个或更多个应用程序使用。另外,本文中所描述的一些实施例中可使用一对多映射实例。举例来说,多个不同的根进程可由单个应用程序使用。如图10中展示,在情况2中,应用程序1002的根进程“a”分叉成分叉进程1a和2a,且进程1a由应用程序1002使用且进程2a由应用程序1004使用。还展示,在情况2中,应用程序1004的根进程“b”分叉成分叉进程1b和2b,且分叉进程1b由应用程序1002使用且进程2b由应用程序1004使用。
122.图10中展示的第三实例情况为情况3。在情况3中,应用程序1006包含根进程“a”,且操作系统1008(其为移动装置102的os)包含根进程“b”。在情况3中,根进程“a”至少分叉成分叉进程1a和2,且根进程“b”至少分叉成分叉进程1b。在情况3中,os生成的分叉进程(分叉进程1b)可由一或多个应用程序使用(例如,图10展示由应用程序1006使用的os生成的分叉进程)。并且,os 1008可从任何应用程序请求分叉进程以修改和/或生成其自身的进程(例如,参看从应用程序1006的根进程“a”分叉而来的分叉进程2,其展示为由os使用)。并
且,除os以外的其它应用程序也可使用从应用程序1006的根进程“a”分叉而来的分叉进程2。
123.图10中展示的第四实例情况为情况4。在情况4中,应用程序1010包含根进程“a”,且应用程序1012包含根进程“b”。在情况4中,分叉进程1和2从应用程序1010的根进程“a”分叉而来,且至少分叉进程1还从应用程序1012的根进程“b”分叉而来。情况4展示将来自不同应用程序的两个分叉进程合并成一个分叉进程(例如,参看分叉进程1)。在一些实例中,来自不同应用程序的分叉进程可以是合并成组合和合并的分叉进程的不同分叉进程。在一些其它实例中,合并的分叉进程可包含相同进程和/或数据。在图10的情况4中展示的合并的实施可经由合并分叉来完成,所述合并分叉可包含特殊分叉进程,所述特殊分叉进程包含分叉进程的合并。特殊分叉进程可以是os系统调用。具有合并的特殊分叉可使用一或多个进程作为输入(例如,每个进程由字节代码表示)且将进程合并成一个参考进程。其可使用合并模式(例如,通过xml文件描述的合并模式)。合并模式可指向字节代码和数据的区段,且每个区段可表示某一函数调用或任务。合并模式还可为每个区段的合并提供指令(例如,第一进程中的相关区段被第二进程中的区段取代,或插入第一进程a中,等)。
124.已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域中的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法在此处以及通常被认为是产生所要结果的操作的自洽序列。所述操作是要求对物理量进行物理操控的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。有时,已证明主要出于通用的原因将这些信号称为位、值、元件、符号、字符、项、数字等是方便的。
125.然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可指计算机系统或类似电子计算装置的动作和过程,其操控且将计算机系统的寄存器和存储器内表示为物理(电子)量的数据变换成类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据。
126.本公开还涉及用于执行本文中的操作的设备。此设备可出于既定目的而专门构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘(包含软盘、光盘、cd-rom和磁性光盘)、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡或适合存储电子指令的任何类型的媒体,各个媒体耦合到计算机系统总线。
127.本文中呈现的算法和显示在本质上不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或可证明构建更专用设备以执行所述方法是方便的。将如下文描述中所阐述的那样来呈现多种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施本文中所描述的本公开的教示。
128.本公开可提供为计算机程序产品或软件,其可包含机器可读媒体,所述机器可读媒体上存储有指令,所述指令可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程。机器可读媒体包含用于以机器(例如,计算机)可读形式存储信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、快闪存储器
组件等。
129.在前述说明书中,已参考其特定实例实施例描述了本公开的实施例。应显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和附图。
再多了解一些

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

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

相关文献