CN114467081A - 用于个别应用程序的定制根进程 - Google Patents
用于个别应用程序的定制根进程 Download PDFInfo
- Publication number
- CN114467081A CN114467081A CN202080067754.2A CN202080067754A CN114467081A CN 114467081 A CN114467081 A CN 114467081A CN 202080067754 A CN202080067754 A CN 202080067754A CN 114467081 A CN114467081 A CN 114467081A
- Authority
- CN
- China
- Prior art keywords
- application
- root process
- mobile device
- memory
- request
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 417
- 230000008569 process Effects 0.000 title claims abstract description 302
- 230000000977 initiatory effect Effects 0.000 claims abstract description 16
- 230000015654 memory Effects 0.000 claims description 115
- 238000012544 monitoring process Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 5
- 238000013500 data storage Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
Images
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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
-
- 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/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
计算装置(例如,移动装置)可根据应用程序的先前执行模式而将所述应用程序的根进程执行到初始点。所述根进程可为所述计算装置中的个别应用程序的许多相应定制根进程中的一者。所述装置可从所述装置的用户接收启动所述应用程序的请求。并且,所述装置可在接收到启动所述应用程序的所述请求之后且通过使用所述应用程序的所述根进程来启动所述应用程序。所述执行、接收或启动中的至少一者可由所述装置中的操作系统执行。所述装置还可使所述应用程序的所述根进程分叉成多个进程,且可在接收到启动所述应用程序的所述请求之后且通过根据启动所述应用程序的所述请求使用所述多个进程中的至少一者来启动。
Description
相关申请的交叉引用
本申请主张2019年10月3日提交的标题为“用于个别应用程序的定制根进程(CUSTOMIZED ROOT PROCESSES FOR INDIVIDUAL APPLICATIONS)”的第16/592,529号美国专利申请,其全部公开内容特此以引用的方式并入本文中。
技术领域
本文所公开的至少一些实施例大体上涉及用于计算系统的根进程,且更具体来说,涉及用于计算装置中的个别应用程序的定制根进程。
背景技术
ANDROID操作系统的内部工作包含充当所有ANDROID应用程序进程的父或根进程的接合子(zygote)。在UNIX及类似于UNIX的操作系统(例如,LINUX及ANDROID)中,任何非初始进程(或任何非零进程)可至少部分地源自操作系统(OS)的初始或零进程。因此,ANDROIDOS使用术语“接合子”来引用其根进程或进程0。
ANDROID是由谷歌(GOOGLE)开发的用于移动装置的移动OS。其基于LINUX内核和其它开源软件的修改版本,且主要设计用于移动装置(例如智能手机、平板计算机等)。谷歌还开发了用于物联网(IoT)的ANDROID版本。并且,已开发ANDROID版本用于电视机和其它家用电器、车载信息系统、可穿戴智能装置、游戏控制台、数码相机,以及包含PC的其它类型的电子元件。
当另一个进程执行由“fork()”表示的系统调用时,ANDROID、UNIX或类似于UNIX的另一个OS创建非零进程,这导致一个进程分叉成多个进程。调用分叉的进程是父进程,且新创建的进程是子进程。在UNIX或类似于UNIX的操作系统中,内核可通过其进程标识符来识别每个进程,例如,“0”表示初始或零进程。在UNIX和类似操作系统中,零进程(即,进程0)是在OS启动时生成的根进程。称为“init”的第一子进程(例如,进程1)可至少部分地源自零进程并且可成为OS中所有其它进程的祖先。
附图说明
根据下文给出的实施方式且根据本公开的各种实施例的附图将更加充分地理解本公开。
图1和3说明根据本公开的一些实施例的包含且运行用于多个应用程序的相应根进程的实例移动装置。
图2、4、5和6说明根据本公开的一些实施例的可由图1和3中描绘的移动装置执行的实例操作的流程图。
图7说明根据本公开的一些实施例的可实施创建用于个别应用程序的定制根进程的实例计算装置。
图8说明根据本公开的一些实施例的图1和3中描绘的实例移动装置,其包含根进程的实例替代方案。
具体实施方式
本文所公开的至少一些实施例大体上涉及用于计算系统的根进程,且更具体来说,涉及用于计算装置中的个别应用程序的定制根进程。
本文所公开的一些实施例涉及一或多个计算装置的操作系统(OS)或超管理器等,其被配置成监测一或多个装置中的用户对一或多个应用程序的使用。举例来说,一些实施例可涉及移动装置的OS,其被配置成监测用户对装置中的应用程序的使用。对此类实施例的监测可识别通过应用程序的典型的初始读取或写入,所述应用程序使OS、超管理器等针对应用程序从存储器读取且写入到存储器中。监测还可包含监测应用程序和相关应用程序的使用模式(例如,数据存取模式、一周中用户惯常使用的一天、一天中通常使用的时间、与应用程序的使用相关的使用的其它应用程序等)。初始读取和写入可存储或高速缓存于存储器中以特别针对应用程序经由相应根进程使用。初始读取和写入可由OS、超管理器等经由存储器根据使用频率、使用新近度等管理、维持、优先排序等。在一些实施例中,可在用于加速初始读取和写入的较快存储器中进行存储或高速缓存。
在一些实施例中,用于应用程序的根进程的指令和/或数据可存储于例如快闪存储器或非易失性随机存取存储器(NVRAM)的持久非易失性存储器中。在一些实施例中,NVRAM可包含3D XPoint存储器。
用于应用程序的根进程可在启动OS、超管理器等时启动。在一些实施例中,如果应用程序未在特定时间段内使用或如果应用程序消耗太多系统资源(例如,CPU、GPU、存储器或其它资源),那么可终止应用程序的根进程。在此类实施例中,在预期应用程序的使用时,OS、超管理器等可配置成根据在对应用程序的监测中标识的模式重新启动根进程。对模式的优选可基于模式的量、频率和/或新近度,且可监测和跟踪用于应用程序的任何类型的存储器存取模式。监测及跟踪可包含硬件和软件性能计数器,其可经由读取和写入专用寄存器(例如,模型特定的寄存器)通过OS获得。模式可基于度量(例如从存储器读取、写入到存储器的量、频率和/或新近度)、物理存储器空间中的地址模式、虚拟空间中的地址模式、数据位置(空间上和/或时间上)、存储体冲突,或每条指令的CPU循环。模式还可基于度量,例如转译后备缓冲器(TLB)度量的数量、频率和/或新近度,及可用于OS的其它度量。
在一些实施例中,在应用程序安装在计算装置(例如,移动装置)中之后,装置的OS或相关联的超管理器可预启动应用程序以生成针对用户定制的根应用程序进程。预启动可在用户请求计算装置启动应用程序之前发生。应用程序可至少部分地经由OS或超管理器等执行。因此,应用程序的预启动进程或根进程不同于OS的根进程。在此类实施例中,OS或超管理器等可移动和/或复制数据,以设置应用程序的根进程。在一些实施例中,数据的复制和/或移动最初可通过OS的根进程完成。这可在应用程序的任何初始读取或写入之前例如通过应用程序的根进程发生。在一些实施例中,不通过OS的根进程或应用程序的相应根进程复制和/或移动公共代码和只读数据(例如,库、运行时间、驱动器、存储器页)。在一些实施例中,直到通过根进程、另一进程或OS修改代码及数据才复制根进程的代码和数据。在一些实施例中,仅复制代码和数据的经修改部分,但未修改部分保持通用。在一些实施例中,可通过监测对存储器页、高速缓存行或文件系统扇区或计算机可读存储媒体的其它元件的写入来识别这些部分。
计算装置(例如,移动装置)可监测用户对应用程序的频繁或当前使用来确定初始读取和写入添加到应用程序的根进程。这可使OS、超管理器等针对应用程序从存储器读取和/或写入到存储器。因初始写入所致的数据移动和/或复制还可在用户请求OS、超管理器等启动应用程序之前执行。
在OS、超管理器等使系统级根进程分叉之后,针对应用程序的预测初始读取和/或写入可用于定制应用程序的根进程。在此类实例中,应用程序的定制根进程可保存在持久非易失性存储器(例如,快闪存储器和/或NVRAM)中以用于应用程序的快速启动。
当用户请求OS、超管理器等启动应用程序时,OS、超管理器等可使用应用程序的预启动进程(即,应用程序的根进程),或来自预启动进程的分叉进程以服务用户。来自应用程序的根进程的分叉进程可类似于或不同于根进程。
另外,当用户终止应用程序时,OS可完全地或部分地终止应用程序的活动进程和/或应用程序的根进程。在预期用户将运行应用程序的情况下,OS、超管理器等可重新启动应用程序的根进程,所述根进程可基于应用程序的最近和/或频繁用户使用模式而进一步定制。
图1和3说明根据本公开的一些实施例的包含且运行用于多个应用程序的相应根进程的实例移动装置102。图2、4、5和6说明根据本公开的一些实施例的可由图1和3中所描绘的移动装置102执行的实例方法200、400、500和600的流程图。
具体来说,图1说明至少包含控制器和存储器104的移动装置102。移动装置102的控制器和存储器104可包含用于在移动装置中执行的应用程序(例如,参见应用程序106a、106b及106c)的指令和数据。移动装置102的控制器可基于数据来执行应用程序的指令。数据可包含呈二进制格式或呈适合由编程语言解释器解释的格式的应用程序指令代码。数据可包含一些数据结构、库等。控制器还可将指令和数据保持在控制器的寄存器中。存储器可将指令和数据保持在其存储器单元中。在一些实施例中,移动装置102的存储器的存储器单元可包含快闪存储器单元和/或NVRAM单元。NVRAM单元可为或包含3D XPoint存储器单元。
在一些实施例中,存储器可具有不同速度、时延、带宽及其它参数。举例来说,SRAM存储器可用作高速缓存器,DRAM可用作主存储器,且NVRAM可用作存储存储器。
移动装置102中所包含且可运行的每一应用程序的指令和数据可包含用于应用程序的根进程的根进程数据和指令。包含于移动装置102中的应用程序的相应根进程(例如,参见应用程序106a的根进程108、应用程序106b的根进程112和应用程序106c的根进程116)可由控制器和存储器104实施。控制器可配置成根据用于根进程的指令和数据执行根进程的指令,且存储器可配置成保持或存储用于由控制器执行根进程的指令和数据。
包含于移动装置102中的应用程序(例如,参见应用程序106a、106b和106c)的其它进程也可由控制器和存储器104实施。控制器可配置成根据用于其它进程的指令和数据执行应用程序的其它进程的指令,且存储器可配置成保持或存储用于由控制器执行其它进程的指令和数据。
具体地说,图2说明可由图1中描绘的移动装置102或由类似于移动装置102配置的另一类型的计算装置执行的方法200的操作。另外,在一些实施例中,方法200可至少部分地通过一般来说计算装置的OS或移动装置的OS执行。方法200还可至少部分地通过超管理器和/或一或多个操作系统执行。
在图2中,方法200在步骤202处开始,其中根据应用程序的先前执行模式将应用程序的根进程执行到初始点。并且,方法200可开始于根据应用程序的先前执行模式定制应用程序的根进程,且接着根据应用程序的先前执行模式将应用程序的根进程执行到初始点。
应用程序的先前执行模式可至少包含、关于或基于所监测和/或跟踪的应用程序的先前执行中的模式的量、频率和/或新近度。所监测和/或跟踪的模式可为用户或机器的任何类型的应用程序使用模式。举例来说,可监测和/或跟踪应用程序的任何类型的存储器存取和使用模式。应用程序的先前执行模式可包含、关于或基于例如用户或机器的任何类型的应用程序使用模式的至少量、频率和/或新近度的度量。举例来说,模式可包含、关于或基于度量(例如从存储器读取、写入到存储器的量、频率和/或新近度)、物理存储器空间中的地址模式、虚拟空间中的地址模式、数据位置(在空间上和/或在时间上)、存储体冲突、每条指令的CPU循环等。
执行应用程序的根进程可包含在针对应用程序对存储器进行任何初始写入和/或从所述存储器读取之前移动存储器中的数据。而且,执行应用程序的根进程可包含在针对应用程序对存储器进行任何初始写入和/或从所述存储器读取之前复制存储器中的数据。而且,移动和/或复制的数据可包含与应用程序的先前执行模式相关的数据。在一些实施例中,在对存储器进行任何初始写入之前移动和/或复制存储器中的数据可包含避免移动和/或复制公共代码和只读数据。在一些实施例中,方法200可包含在计算装置中的OS(或超管理器)使用于OS(或超管理器)的根进程分叉之后,针对应用程序执行预测的初始写入和/或读取以定制应用程序的根进程的执行,使得应用程序的根进程是用于应用程序的应用程序级进程。
并且,方法200可包含在至少部分地执行根进程(图中未描绘)之前将用于应用程序的根进程的数据存储在快闪存储器中。方法200还可包含在至少部分地执行根进程(图中未描绘)之前,将用于应用程序的根进程的数据存储在NVRAM中。NVRAM可包含3DXPoint存储器。在一些实施例中,存储新数据可覆写与应用程序的使用有关的旧的未使用数据。
在步骤204处,方法200继续从用户接收启动应用程序的请求。在步骤206处,方法200继续在接收到启动应用程序的请求之后且通过使用应用程序的根进程来启动应用程序。在一些实施例中,方法200可包含根据应用程序的先前执行模式至少部分地通过计算装置中的OS将应用程序的根进程执行为后台进程。在此类实施例中,方法200还可包含通过OS从计算装置的用户接收启动应用程序的请求。并且,方法200可包含在接收到启动应用程序的请求之后且通过使用应用程序的根进程或根进程的分叉进程而通过OS启动计算装置中的应用程序。在一些实施例中,直到通过应用程序、另一进程或OS初始地修改代码和数据才复制分叉进程的代码和数据。在一些实施例中,仅复制代码和数据的经修改部分,但未修改部分保持通用。在一些实施例中,可通过监测对存储器页、高速缓存行或文件系统扇区或计算机可读存储媒体的其它元件的写入来识别此类部分。
在一些实施例中,将根进程执行到初始点可在一个装置上,例如在云计算环境中完成,然后在从另一装置接收到启动应用程序中的至少一个的请求之后使所述根进程分叉,接着通过网络将分叉进程传递到例如移动装置的另一装置,然后使用移动装置上的分叉进程作为应用程序的起始点。
在一些实施例中,方法200可包含在步骤202处在计算装置(例如,移动装置)或多个计算装置中根据应用程序的先前执行模式将应用程序的根进程执行到初始点。方法200还可包含在步骤204处通过计算装置从计算装置的用户接收启动应用程序的请求。方法200还可包含在步骤206处在接收到启动应用程序的请求之后且通过使用应用程序的根进程来启动计算装置中的应用程序。在此类实施例中,方法200的每一步骤或步骤中的至少一些可由计算装置的操作系统、计算装置的一或多个操作系统、超管理器或其任何组合执行。举例来说,执行、接收或启动步骤中的至少一者可至少部分地由计算装置中的OS执行。
具体来说,图3说明至少包含控制器和存储器104的移动装置102。如图3中所示,移动装置102的控制器和存储器104可包含用于在移动装置中执行的应用程序(例如,参见应用程序306a、306b和306c)的指令和数据。移动装置102的控制器可基于数据来执行应用程序的指令。数据可包含呈二进制格式或呈适合由编程语言解释器解释的格式的应用程序指令代码。数据可包含一些数据结构、库等。控制器还可将指令和数据保持在控制器的寄存器中。存储器可将指令和数据保持在其存储器单元中。在一些实施例中,移动装置102的存储器的存储器单元可包含快闪存储器单元和/或NVRAM单元。
如图3所示,同样,移动装置102中所包含且可运行的每一应用程序的指令和数据可包含用于应用程序的根进程的根进程数据和指令。包含于移动装置102中的应用程序的根进程(如图3中所展示),例如参见相应根进程308、312和316可由控制器和存储器104实施。控制器配置成根据用于根进程的指令和数据执行根进程的指令,且存储器配置成保持或存储用于由控制器执行根进程的指令和数据。并且,如通过图3所说明,包含于移动装置102中的应用程序(例如,参见应用程序306a、306b和306c)的其它进程也可由控制器和存储器104实施。控制器配置成根据用于其它进程的指令和数据执行应用程序的其它进程的指令,且存储器配置成保持或存储用于由控制器执行其它进程的指令和数据。
另外,如图3中所示,控制器和存储器104可包含用于从存储且可运行在移动装置102中的应用程序的相应根进程分叉的多个进程(例如,参见分叉进程310a、310b、310c、314a、314b、318a和318b)的数据和指令。如图3中所示,至少进程310a、310b和310c从根进程308分叉;但可存在从根进程308分叉的更多进程。还展示从根进程312分叉的进程314a和314b。并且,进程318a和318b从根进程316分叉。
在一些实施例中,移动装置102的操作系统或移动装置中或与所述移动装置相关联的超管理器配置成使应用程序的根进程(例如,参见应用程序306a的根进程308、应用程序306b的根进程312和应用程序306c的根进程316)分叉成多个进程(例如,参见分叉进程310a、310b、310c、314a、314b、318a和318b)。在此类实施例中,操作系统或超管理器可配置成在接收到启动应用程序的请求之后且通过根据启动应用程序的请求使用多个分叉进程中的至少一者(例如,参见分叉进程310a、310b、310c、314a、314b、318a和318b)和/或根据启动应用程序的请求启动相应根进程(例如,参见应用程序306a的根进程308、根进程306b的根进程312和应用程序306c的根进程316)启动移动装置102中的应用程序。
分叉的多个进程中的至少一些或每一个可不同于应用程序的父根进程。差异可基于计算装置中将运行的不同应用程序和不同应用程序部分。而且,至少在执行应用程序的某个点处,分叉的多个进程中的至少一些或每一个可与应用程序的父根进程相同。
在一些实施例中,分叉根进程的初始执行可限于预加载库、从所需库及初始数据结构中组成分叉进程,及保存分叉进程以供进一步再使用。而且,在任何时间,可在某一状态下将分叉进程的执行保存在存储器中,使得分叉进程可重复使用以避免花费时间重新执行进程。
具体来说,图4说明可由图3中描绘的移动装置102或由类似于移动装置102配置的另一类型的计算装置执行的方法400的操作。而且,在一些实施例中,方法400可由一般来说计算装置的操作系统或移动装置的操作系统执行。方法400还可至少部分地通过超管理器和/或一或多个操作系统执行。
在图4中,方法400开始于步骤402(其类似于图2中所描绘的步骤202),其中根据应用程序的先前执行模式将应用程序的根进程执行到初始点。并且,方法400可开始于根据应用程序的先前执行模式定制应用程序的根进程,且接着根据应用程序的先前执行模式将应用程序的根进程执行到初始点。
应用程序的先前执行模式可至少包含、关于或基于所监测和/或跟踪的应用程序的先前执行中的模式的量、频率和/或新近度。所监测和/或跟踪的模式可为用户或机器的任何类型的应用程序使用模式。举例来说,可监测和/或跟踪应用程序的任何类型的存储器存取和使用模式。应用程序的先前执行模式可包含、关于或基于例如用户或机器的任何类型的应用程序使用模式的至少量、频率和/或新近度的度量。举例来说,模式可包含、关于或基于度量(例如从存储器读取、写入到存储器的量、频率和/或新近度)、物理存储器空间中的地址模式、虚拟空间中的地址模式、数据位置(在空间上和/或在时间上)、存储体冲突、每条指令的CPU循环等。
执行应用程序的根进程可包含在针对应用程序对存储器进行任何初始写入和/或从所述存储器读取之前移动存储器中的数据。而且,执行应用程序的根进程可包含在针对应用程序对存储器进行任何初始写入和/或从所述存储器读取之前复制存储器中的数据。而且,移动和/或复制的数据可包含与应用程序的先前执行模式相关的数据。在一些实施例中,在对存储器进行任何初始写入之前移动和/或复制存储器中的数据可包含避免移动和/或复制公共代码和只读数据。在一些实施例中,方法400可包含在计算装置中的操作系统(或超管理器)使用于操作系统(或超管理器)的根进程分叉之后,针对应用程序执行预测的初始写入和/或读取以定制应用程序的根进程的执行,使得应用程序的根进程是用于应用程序的应用程序级进程。
并且,方法400可包含在至少部分地执行根进程(图中未描绘)之前将用于应用程序的根进程的数据存储在快闪存储器中。方法400还可包含在至少部分地执行根进程(图中未描绘)之前,将用于应用程序的根进程的数据存储在NVRAM中。NVRAM可包含3DXPoint存储器。
在步骤404处(其类似于图2中所示的步骤204),方法400继续从用户接收启动应用程序的请求。在步骤406处,方法400继续使应用程序的根进程分叉成多个进程。在步骤408处,方法400继续在接收到启动应用程序的请求之后且通过根据启动应用程序的请求使用多个进程中的至少一者来启动应用程序。替代地,在步骤408处,方法400可在接收到启动应用程序的请求之后且通过根据启动应用程序的请求使用父根进程(例如,参见根进程308)和多个进程(例如,参见分叉进程310a、310b和310c)中的至少一者继续启动应用程序。
在一些实施例中,方法400可包含在步骤402处在计算装置(例如,移动装置)或多个计算装置中根据应用程序的先前执行模式将应用程序的根进程执行到初始点。方法400还可包含在步骤404处通过计算装置从计算装置的用户接收启动应用程序的请求。方法400还可包含在步骤406处通过计算装置(例如,通过计算装置的OS)使应用程序的根进程分叉成多个进程。方法400还可包含在步骤408处在接收到启动应用程序的请求之后且通过根据启动应用程序的请求使用多个进程中的至少一者启动计算装置中的应用程序。
在此类实施例中,方法400的每一步骤或步骤中的至少一些可由计算装置的操作系统、计算装置的一或多个操作系统、超管理器或其任何组合执行。举例来说,执行、接收或启动步骤中的至少一者可由计算装置中的OS执行。在一些实施例中,方法400可包含在步骤406处使应用程序的根进程分叉成多个相同进程,且步骤408处在接收到启动应用程序的请求之后且通过根据启动应用程序的请求使用多个相同进程中的至少一者启动移动装置中的应用程序。
关于方法400,分叉的多个进程中的至少一些或每一个可不同于应用程序的父根进程。差异可基于计算装置中将运行的不同应用程序和不同应用程序部分。而且,至少在执行应用程序的某个点处,分叉的多个进程中的至少一些或每一个可与应用程序的父根进程相同。
在一些实施例(例如,可实施方法200和400的实施例)中,应用程序的先前执行模式是根据特定用户和其它用户对特定计算装置(例如,特定移动装置)上的应用程序的使用,使得根进程被定制用于任何用户对特定计算装置上的应用程序的使用。
在一些其它实施例(例如,可实施方法200和400的一些其它实施例)中,应用程序的先前执行模式是根据特定用户对特定计算装置(例如,特定移动装置)上的应用程序的使用,使得根进程被定制用于特定用户对特定移动装置上的应用程序的使用。
在一些其它实施例(例如,可实施方法200和400的一些其它实施例)中,应用程序的先前执行模式是根据特定用户对特定计算装置(例如,特定移动装置)和至少一个其它计算装置上的特定应用程序的使用,使得根进程被定制用于特定用户对计算装置和至少一个其它计算装置上的应用程序的使用。
可定制根进程,但不限于从各种库中组合根进程、使用默认可用的其它根进程、形成数据结构,及通过网络查询根进程组件的各种源。
具体地说,图5说明可由图1和3中描绘的移动装置102或由类似于移动装置102配置的另一类型的计算装置执行的方法500的操作。而且,在一些实施例中,方法500可由一般来说计算装置的操作系统或移动装置的操作系统执行。方法200还可至少部分地通过超管理器和/或一或多个操作系统执行。
在图5中,方法500在步骤502处开始,其中监测应用程序的使用以确定针对应用程序从存储器读取及写入到所述存储器的频率或新近度。在一些实施例中(未描绘),方法500可开始于监测和/或跟踪应用程序的使用,以确定应用程序的先前执行模式的量、频率和/或新近度。
应用程序的先前执行模式可至少包含、关于或基于所监测和/或跟踪的应用程序的先前执行中的模式的量、频率和/或新近度。所监测和/或跟踪的模式可为用户或机器的任何类型的应用程序使用模式。举例来说,可监测和/或跟踪应用程序的任何类型的存储器存取和使用模式。模式可包含、关于或基于度量(例如从存储器读取、写入到存储器的量、频率和/或新近度)、物理存储器空间中的地址模式、虚拟空间中的地址模式、数据位置(在空间上和/或在时间上)、存储体冲突、每条指令的CPU循环等。
另外,监测和跟踪应用程序的使用可在应用程序启动期间(例如,包含当应用程序被加载到存储器时)和/或在应用程序运行期间之后发生。监测和跟踪应用程序的使用可在启动应用程序期间以及在启动后运行应用程序的任何其它时段发生。在运行时期间监测和跟踪应用程序的使用可促进应用程序的有效和/或高效根进程的推导。举例来说,在启动之后,用户可触碰屏幕来触发应用程序的一些元件且期待某一结果。在一些实施例中,结果的传递可能非常快,因为可基于在应用程序的运行时期间发生的监测来预加载重要存储器对象。在一些实施例中,可完成从例如NAND型快闪存储器的较慢存储器到例如DRAM的较快存储器的对象的预加载。
在步骤504,方法500继续根据针对应用程序从存储器读取以及写入到所述存储器的频率或新近度来生成应用程序的先前执行模式。在一些实施例中(未描绘),方法500可继续根据所监测和/或跟踪的应用程序的先前执行中的模式的量、频率和/或新近度来生成应用程序的先前执行模式。
并且,应用程序的先前执行模式可至少包含、关于或基于所监测和/或跟踪的应用程序的先前执行中的模式的量、频率和/或新近度。在步骤504处生成的模式可为用户或机器的任何类型的应用程序使用模式。举例来说,在步骤504生成的模式可包含可监测和/或跟踪的针对应用程序的任何类型的存储器存取和使用模式。并且,举例来说,所生成的模式可包含、关于或基于度量(例如从存储器读取、写入到存储器的量、频率和/或新近度)、物理存储器空间中的地址模式、虚拟空间中的地址模式、数据位置(在空间上和/或在时间上)、存储体冲突或与应用程序的使用和应用程序的存储器相关的任何其它类型的度量。
如图5中所示,方法500在步骤504之后继续进行方法200的步骤。举例来说,在步骤504之后,方法继续进行步骤202:根据在步骤504处所生成的应用程序的先前执行模式将应用程序的根进程执行到初始点。随后,方法500继续进行步骤204:从用户接收启动应用程序的请求。并且,方法500继续进行步骤206:在接收到启动应用程序的请求之后且通过使用应用程序的根进程来启动应用程序。
具体地说,图6说明可由图1和3中描绘的移动装置102或由类似于移动装置102配置的另一类型的计算装置执行的方法600的操作。而且,在一些实施例中,方法600可由一般来说计算装置的操作系统或移动装置的操作系统执行。方法600还可至少部分地通过超管理器和/或一或多个操作系统执行。
如图6中所示,方法600开始于方法200的步骤。方法600开始于步骤202:根据应用程序的先前执行模式将应用程序的根进程执行到初始点。随后,方法600继续进行步骤204:从用户接收启动应用程序的请求。并且,方法600继续进行步骤206:在接收到启动应用程序的请求之后且通过使用应用程序的根进程来启动应用程序。
在步骤602处,方法600继续从用户接收结束应用程序的请求。举例来说,在步骤602处,方法600继续从计算装置的用户(例如,移动装置的用户)接收结束应用程序的请求。
在步骤604处,方法600继续在接收到结束应用程序的请求之后至少部分地结束应用程序。在步骤606处,方法600继续在接收到结束应用程序的请求之后至少部分地结束应用程序的根进程。
如图6中所示,在步骤608处,当完成步骤606时,方法600继续根据预定条件至少部分地重新执行根进程(在至少部分地结束应用程序和根进程之后)。在步骤608处,可基于应用程序的先前执行模式进行根进程的至少部分的重新执行。而且,在步骤608处,可通过应用程序的先前执行模式更新根进程的至少部分的重新执行。
如图6中所示,在步骤610处,当步骤606未完成时,方法600向前移动,其中在接收到结束应用程序的请求之后继续运行应用程序的根进程。换句话说,方法600可包含在步骤602处从移动装置的用户接收结束应用程序的请求,且接着在步骤604处,其可包含在接收到结束应用程序的请求之后至少部分地结束应用程序,且接着在步骤610处,其可包含在接收结束应用程序的请求之后继续运行应用程序的根进程且在步骤604与610之间不停止根进程。因此,如果用户决定重新启动至少部分地结束的应用程序或可使用此根进程的其它应用程序,则可再次重新使用应用程序的根进程。
相对于方法200、方法400、方法500、方法600或本文中所描述的任何其它方法、过程或操作,在一些实施例中,非暂时性计算机可读存储媒体存储指令,所述指令在由至少一个处理装置(例如图7中所示的控制器706)执行时使至少一个处理装置执行方法200、方法400、方法500、方法600或本文中所描述的任何其它方法、过程或操作,和/或其任何组合。
举例来说,一些实施例可包含有形地编码有计算机可执行指令的非暂时性计算机可读存储媒体,所述计算机可执行指令在由与计算装置相关联的处理器执行时执行例如图2中展示的方法200等方法。举例来说,方法可包含在移动装置中根据应用程序的先前执行模式将应用程序的根进程执行到初始点。方法还可包含从移动装置的用户接收启动应用程序的请求。并且,方法可包含在接收到启动应用程序的请求之后且通过使用应用程序的根进程来启动移动装置中的应用程序。
并且,举例来说,一些实施例可包含有形地编码有计算机可执行指令的非暂时性计算机可读存储媒体,所述计算机可执行指令在由与计算装置相关联的处理器执行时执行例如图4中展示的方法400、图5中展示的方法500和图6中展示的方法600等方法。
图7说明根据本公开的一些实施例的可实施创建用于个别应用程序的定制根进程的实例计算装置700。装置700可为或包含或为移动装置102或为或某种程度上类似于移动装置的任何另一类型的计算装置,例如智能手机、平板计算机、IoT装置、智能电视、智能手表、眼镜或其它智能家用电器、车载信息系统、可穿戴智能装置、游戏控制台、PC或数码相机或其任何组合。如所展示,装置700可连接到通信网络714,所述通信网络至少包含广域网(WAN)、局域网(LAN)、内联网、移动无线网络(例如,4G或5G)、外联网、因特网和/或其任何组合。
本文中所描述的计算或移动装置中的每一个(例如,移动装置102或计算装置700)可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够执行规定待由机器采取的动作的指令的集合(依序或以其它方式)的任何机器或由其替代。
而且,虽然针对图7中所示的装置700以及图1和3中所示的移动装置102说明单个机器,但术语“机器”还应理解为包含个别地或联合地执行一(或多个)指令集以执行本文所论述的方法或操作中的任何一或多个的机器的任何集合。而且,所说明的计算装置或移动装置中的每一个可各自包含至少总线和/或母板、一或多个控制器(例如,一或多个CPU)、可包含暂时性数据存储装置的主存储器、至少一种类型的网络接口、可包含永久性数据存储装置的存储系统,和/或其任何组合。在一些多装置实施例中,一个装置可完成本文所描述的方法的一些部分,接着通过网络将完成的结果发送到另一装置,使得另一装置可继续本文所描述的方法的其它步骤。
图7还说明根据本公开的一些实施例的实例计算装置700的实例部分。装置700可以通信方式耦合到网络714,如所展示。装置700至少包含总线704、控制器706(例如CPU)、存储器708、网络接口710、数据存储系统712,及其它组件716(其可为在移动装置或计算装置中发现的任何类型的组件,例如GPS组件、I/O组件及传感器)。其它组件716可包含一或多个显示器、不同类型的传感器、音频和/或视觉输入/输出装置、额外的应用程序特定存储器、一或多个额外控制器(例如,GPU),或其任何组合。总线704以通信方式耦合控制器706、存储器708、网络接口710、数据存储系统712和其它组件716。装置700包含计算机系统,所述计算机系统至少包含经由总线704(其可包含多个总线)彼此通信的控制器706、存储器708(例如,只读存储器(ROM)、快闪存储器、例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等),以及数据存储系统712。
换句话说,图7是具有计算机系统的实例装置700的框图,在所述计算机系统中可操作本公开的实施例。在一些实施例中,计算机系统可包含指令集,以用于在被执行时使得机器执行本文中所论述的方法中的任何一或多种。在此类实施例中,机器可以连接(例如,经由网络接口710联网)到LAN、内联网、外联网和/或因特网(例如,网络714)中的其它机器。机器可作为对等(或分布式)网络环境(如本文中所描述的对等网络)中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
控制器706表示一或多个通用处理装置,例如微处理器、中央处理单元等。更确切地说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、单指令多数据(SIMD)、多指令多数据(MIMD),或实施其它指令集的处理器,或实施指令集的组合的处理器。控制器706也可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。控制器706配置成执行指令以用于执行本文所论述的操作和步骤。控制器706可进一步包含例如网络接口710的网络接口装置以经由一或多个通信网络(例如网络714)通信。
数据存储系统712可包含机器可读存储媒体(也称为计算机可读媒体),所述机器可读存储媒体上存储有一或多个指令集或体现本文所描述的方法或功能中的任何一或多个的软件。指令也可以在其通过计算机系统执行的期间完全地或至少部分地驻存于存储器708内和/或控制器706内,所述存储器708和控制器706也构成机器可读存储媒体。存储器708可以是或包含装置700的主存储器。
虽然存储器、控制器和数据存储装置部分在实例实施例中展示为各自是单个部分,但每一部分应被认为包含可以存储指令并且执行它们的相应操作的单个部分或多个部分。术语“机器可读存储媒体”还应被认为包含能够存储由机器执行的一组指令或对其进行编码且使机器执行本公开的方法中的任何一或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
图8说明根据本公开的一些实施例的图1和3中描绘的移动装置102,其包含根进程的实例替代方案。如图8中所示,移动装置102包含控制器和存储器104以及根进程的替代方式的四个实例情况(参见图8中展示的实例情况1、2、3和4)。图8中展示的移动装置102还可包含图1和3中所展示的移动装置102的方面。
图8中展示的第一实例情况为情况1。在情况1中,如其在图3中所示描绘应用程序306a。应用程序306a包含根进程308,所述根进程分叉成多个分叉进程(例如,参见分叉进程310a、310b和310c)。
图8中展示的第二实例情况为情况2。在情况2中,应用程序802包含根进程“a”,且应用程序804包含根进程“b”。在情况2中,不同的根进程展示为由多个应用程序使用。这是多对多映射实例,其为多对一映射实例的超集。用于应用程序的根进程可由两个或更多个应用程序使用。并且,本文中所描述的一些实施例中可使用一对多映射实例。举例来说,多个不同的根进程可由单一应用程序使用。如图8中所示,在情况2中,应用程序802的根进程“a”分叉成分叉进程1a和2a中,且进程1a由应用程序802使用且进程2a由应用程序804使用。还展示,在情况2中,应用程序804的根进程“b”分叉成分叉进程1b和2b中,且分叉进程1b由应用程序802使用且进程2b由应用程序804使用。
图8中展示的第三实例情况为情况3。在情况3中,应用程序806包含根进程“a”,且操作系统808(其为移动装置102的OS)包含根进程“b”。在情况3中,第一根进程“a”至少分叉成分叉进程1a和2,且根进程“b”至少分叉成分叉进程1b。在情况3中,OS生成的分叉进程(分叉进程1b)可由一个或多个应用程序使用(例如,图8展示由应用程序806使用的OS生成的分叉进程)。并且,OS 808可从任何应用程序请求分叉进程以修改和/或生成其自身的进程(例如,参见从应用程序806的根进程“a”分叉的分叉进程2,其示出为由OS使用)。并且,除OS以外,其它应用程序还可使用从应用程序806的根进程“a”分叉的分叉进程2。
图8中展示的第四实例情况为情况4。在情况4中,应用程序810包含根进程“a”,且应用程序812包含根进程“b”。在情况4中,分叉进程1和2是从应用程序810的根进程“a”分叉,且至少分叉进程1也是从应用程序812的根进程“b”分叉。情况4展示将来自不同应用程序的两个分叉进程合并成一个分叉进程(例如,参见分叉进程1)。在一些实例中,来自不同应用程序的分叉进程可以是合并成组合和合并的分叉进程的不同分叉进程。在一些其它实例中,合并的分叉进程可包含相同进程和/或数据。在图8的情况4中展示的合并的实施方式可经由合并分叉来完成,所述合并分叉可包含特殊分叉进程,所述特殊分叉进程包含分叉进程的合并。特殊分叉进程可为OS系统调用。具有合并的特殊分叉可使用一或多个进程作为输入(例如,每一进程由字节代码表示)且将进程合并成一个参考进程。其可使用合并模式(例如,通过XML文件描述的合并模式)。合并模式可指向字节代码和数据的区段,且每一区段可表示某一功能调用或任务。合并模式还可提供用于合并每一区段的指令(例如,在第一进程中由相关区段取代所述区段,在第二进程中由一取代所述区段,或在第一进程A中插入所述区段等)。
已就对计算机存储器内的数据位的操作的算法和符号表示而言呈现了先前详细描述的一些部分。这些算法描述及表示是数据处理领域的技术人员用于将其工作的主旨最有效地传达给本领域其它技术人员的方式。算法在本文中且一般被认为是产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操控的那些操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电信号或磁信号的形式。主要出于常用的原因,已证明将这些信号称为位、值、元素、符号、字符、术语、编号或类似者有时是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅是应用于这些量的方便标记。本公开可涉及将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操控且变换成类似地表示为计算机系统的存储器或寄存器或其它此类信息存储系统内的物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及一种用于执行本文中的操作的设备。此设备可出于预期目的而专门构建,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可以存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM和磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。
本文中呈现的算法和显示本质上并不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造更专用的设备来执行方法是方便的。将如下文描述中所阐述的那样呈现用于各种这些系统的结构。另外,并不参考任何特定编程语言来描述本公开的实施例。应了解,可使用多种编程语言来实施如本文所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,所述计算机程序产品或软件可包含其上存储有可用以对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于存储呈机器(例如,计算机)可读形式的信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已参考本公开具体实例实施例描述了本公开的实施例。将显而易见的是,可以在不脱离如所附权利要求书中阐述的本公开实施例的更广精神和范围的情况下对本公开进行各种修改。因此,说明书和图式应被视为说明性的而非限制性的。
Claims (20)
1.一种方法,其包括:
在移动装置中,根据应用程序的先前执行模式将所述应用程序的根进程执行到初始点;
从所述移动装置的用户接收启动所述应用程序的请求;以及
在接收到启动所述应用程序的所述请求之后且通过使用所述应用程序的所述根进程来启动所述移动装置中的所述应用程序。
2.根据权利要求1所述的方法,其中所述执行、接收或启动中的至少一者由所述移动装置中的操作系统(OS)执行。
3.根据权利要求1所述的方法,其包括:
通过所述移动装置中的操作系统(OS)使所述应用程序的所述根进程分叉成多个进程;以及
在接收到启动所述应用程序的所述请求之后且通过根据启动所述应用程序的所述请求使用所述多个进程中的至少一者来启动所述移动装置中的所述应用程序。
4.根据权利要求3所述的方法,其中所述多个进程中的至少一些不同于所述根进程。
5.根据权利要求1所述的方法,其中所述应用程序的所述先前执行模式是根据所述用户和其它用户对所述移动装置上的所述应用程序的使用,使得所述根进程被定制用于任何用户对所述移动装置上的所述应用程序的使用。
6.根据权利要求1所述的方法,其中所述应用程序的所述先前执行模式是根据所述用户对所述移动装置上的所述应用程序的使用,使得所述根进程被定制用于所述用户对所述移动装置上的所述应用程序的使用。
7.根据权利要求1所述的方法,其中所述应用程序的所述先前执行模式是根据所述用户对所述移动装置和至少一个其它计算装置上的所述应用程序的使用,使得所述根进程被定制用于所述用户对所述移动装置和所述至少一个其它计算装置上的所述应用程序的使用。
8.根据权利要求1所述的方法,其中所述执行所述应用程序的所述根进程包括在针对所述应用程序对存储器进行任何初始写入之前移动存储器中的数据,其中经移动数据包括与所述应用程序的所述先前执行模式相关的数据。
9.根据权利要求8所述的方法,其中所述在对存储器进行任何初始写入之前移动存储器中的数据包括避免移动公共代码和只读数据。
10.根据权利要求8所述的方法,其包括在所述移动装置中的操作系统(OS)使用于所述OS的根进程分叉之后,针对所述应用程序执行预测初始写入以定制所述应用程序的所述根进程的所述执行。
11.根据权利要求10所述的方法,其包括:
通过所述OS使所述应用程序的所述根进程分叉成多个进程;以及
在接收到启动所述应用程序的所述请求之后且通过根据启动所述应用程序的所述请求使用所述多个进程中的至少一者来通过所述OS启动所述移动装置中的所述应用程序。
12.根据权利要求1所述的方法,其包括将用于所述应用程序的所述根进程的数据存储在快闪存储器中。
13.根据权利要求1所述的方法,其包括将用于所述应用程序的所述根进程的数据存储在非易失性随机存取存储器(NVRAM)中。
14.根据权利要求13所述的方法,其中所述NVRAM包括3D XPoint存储器。
15.根据权利要求1所述的方法,其包括:
监测所述应用程序的使用以确定针对所述应用程序从存储器读取及写入到所述存储器的频率或新近度;以及
根据针对所述应用程序从存储器读取及写入到存储器的频率或新近度生成所述应用程序的所述先前执行模式。
16.根据权利要求1所述的方法,其包括:
从所述移动装置的所述用户接收结束所述应用程序的请求;
在接收到结束所述应用程序的所述请求后,至少部分地结束所述应用程序和所述应用程序的所述根进程;以及
在至少部分地结束所述应用程序和所述根进程之后,根据预定条件至少部分地重新执行所述根进程。
17.根据权利要求16所述的方法,其中所述至少部分地重新执行所述根进程是基于所述应用程序的所述先前执行模式或通过其更新。
18.根据权利要求1所述的方法,其包括:
从所述移动装置的所述用户接收结束所述应用程序的请求;
在接收到结束所述应用程序的所述请求之后至少部分地结束所述应用程序;以及
在接收到结束所述应用程序的所述请求之后继续运行所述应用程序的所述根进程。
19.一种有形地编码有计算机可执行指令的非暂时性计算机可读存储媒体,所述计算机可执行指令在由与计算装置相关联的处理器执行时执行方法,所述方法包括以下各项:
在移动装置中,根据应用程序的先前执行模式将所述应用程序的根进程执行到初始点;
从所述移动装置的用户接收启动所述应用程序的请求;以及
在接收到启动所述应用程序的所述请求之后且通过使用所述应用程序的所述根进程来启动所述移动装置中的所述应用程序。
20.一种方法,其包括:
通过计算装置中的操作系统(OS)根据所述应用程序的所述先前执行模式执行应用程序的根进程作为后台进程;
通过所述OS从所述计算装置的用户接收启动所述应用程序的请求;以及
在接收到启动所述应用程序的所述请求之后且通过使用所述应用程序的所述根进程或所述根进程的分叉进程来通过所述OS启动所述计算装置中的所述应用程序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/592,529 US11599384B2 (en) | 2019-10-03 | 2019-10-03 | Customized root processes for individual applications |
US16/592,529 | 2019-10-03 | ||
PCT/US2020/053529 WO2021067424A1 (en) | 2019-10-03 | 2020-09-30 | Customized root processes for individual applications |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114467081A true CN114467081A (zh) | 2022-05-10 |
Family
ID=75274148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080067754.2A Pending CN114467081A (zh) | 2019-10-03 | 2020-09-30 | 用于个别应用程序的定制根进程 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11599384B2 (zh) |
EP (1) | EP4038496A4 (zh) |
JP (1) | JP2022550446A (zh) |
KR (1) | KR20220054394A (zh) |
CN (1) | CN114467081A (zh) |
WO (1) | WO2021067424A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11436041B2 (en) | 2019-10-03 | 2022-09-06 | Micron Technology, Inc. | Customized root processes for groups of applications |
US11474828B2 (en) | 2019-10-03 | 2022-10-18 | Micron Technology, Inc. | Initial data distribution for different application processes |
US11429445B2 (en) | 2019-11-25 | 2022-08-30 | Micron Technology, Inc. | User interface based page migration for performance enhancement |
US11366752B2 (en) | 2020-03-19 | 2022-06-21 | Micron Technology, Inc. | Address mapping between shared memory modules and cache sets |
US11836087B2 (en) * | 2020-12-23 | 2023-12-05 | Micron Technology, Inc. | Per-process re-configurable caches |
KR20230115752A (ko) * | 2022-01-27 | 2023-08-03 | 삼성전자주식회사 | 애플리케이션을 백그라운드 프로세스에서 실행하는 전자 장치 및 그 동작 방법 |
EP4369194A1 (en) | 2022-01-27 | 2024-05-15 | Samsung Electronics Co., Ltd. | Electronic device for executing application in background process, and operation method thereof |
Family Cites Families (103)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4476524A (en) | 1981-07-02 | 1984-10-09 | International Business Machines Corporation | Page storage control methods and means |
US5218677A (en) | 1989-05-30 | 1993-06-08 | International Business Machines Corporation | Computer system high speed link method and means |
US6138179A (en) * | 1997-10-01 | 2000-10-24 | Micron Electronics, Inc. | System for automatically partitioning and formatting a primary hard disk for installing software in which selection of extended partition size is not related to size of hard disk |
CA2312444A1 (en) | 2000-06-20 | 2001-12-20 | Ibm Canada Limited-Ibm Canada Limitee | Memory management of data buffers incorporating hierarchical victim selection |
US6976114B1 (en) | 2001-01-25 | 2005-12-13 | Rambus Inc. | Method and apparatus for simultaneous bidirectional signaling in a bus topology |
US6847366B2 (en) | 2002-03-01 | 2005-01-25 | Hewlett-Packard Development Company, L.P. | System and method utilizing multiple processes to render graphical data |
US7370288B1 (en) | 2002-06-28 | 2008-05-06 | Microsoft Corporation | Method and system for selecting objects on a display device |
US8001266B1 (en) * | 2003-03-31 | 2011-08-16 | Stretch, Inc. | Configuring a multi-processor system |
EP1473906A2 (en) * | 2003-04-28 | 2004-11-03 | Matsushita Electric Industrial Co., Ltd. | Service management system, and method, communications unit and integrated circuit for use in such system |
JP4164423B2 (ja) | 2003-08-29 | 2008-10-15 | キヤノン株式会社 | センシング部とポインティングデバイスとを含み構成される装置 |
US20050060174A1 (en) * | 2003-09-15 | 2005-03-17 | Heyward Salome M. | Absence management systems and methods |
US7574709B2 (en) | 2004-04-30 | 2009-08-11 | Microsoft Corporation | VEX-virtual extension framework |
WO2006026403A2 (en) | 2004-08-26 | 2006-03-09 | Availigent, Inc. | Method and system for providing transparent incremental and multiprocess checkpointing to computer applications |
JP4529612B2 (ja) | 2004-09-21 | 2010-08-25 | 株式会社セガ | 携帯端末におけるアプリケーションプログラム使用時の通信料の削減方法 |
US20070045961A1 (en) | 2005-08-31 | 2007-03-01 | Morris Robert P | Method and system providing for navigation of a multi-resource user interface |
KR100678913B1 (ko) | 2005-10-25 | 2007-02-06 | 삼성전자주식회사 | 가상 메모리 시스템에서 페이지 폴트를 줄이는 장치 및방법 |
US7917723B2 (en) | 2005-12-01 | 2011-03-29 | Microsoft Corporation | Address translation table synchronization |
US7502888B2 (en) | 2006-02-07 | 2009-03-10 | Hewlett-Packard Development Company, L.P. | Symmetric multiprocessor system |
US8042109B2 (en) * | 2006-03-21 | 2011-10-18 | Intel Corporation | Framework for domain-specific run-time environment acceleration using virtualization technology |
US20070226702A1 (en) * | 2006-03-22 | 2007-09-27 | Rolf Segger | Method for operating a microcontroller in a test environment |
TW200805394A (en) * | 2006-07-07 | 2008-01-16 | Alcor Micro Corp | Memory storage device and the read/write method thereof |
JP2008097425A (ja) * | 2006-10-13 | 2008-04-24 | Mitsubishi Electric Corp | 携帯情報端末および携帯情報端末の制御方法 |
US9274921B2 (en) | 2006-12-27 | 2016-03-01 | International Business Machines Corporation | System and method for managing code displacement |
US20090049389A1 (en) | 2007-08-13 | 2009-02-19 | Siemens Medical Solutions Usa, Inc. | Usage Pattern Driven Graphical User Interface Element Rendering |
US20090150541A1 (en) | 2007-12-06 | 2009-06-11 | Sony Corporation And Sony Electronics Inc. | System and method for dynamically generating user interfaces for network client devices |
US8789159B2 (en) | 2008-02-11 | 2014-07-22 | Microsoft Corporation | System for running potentially malicious code |
US8135890B2 (en) | 2008-05-28 | 2012-03-13 | Rambus Inc. | Selective switching of a memory bus |
US8898667B2 (en) | 2008-06-04 | 2014-11-25 | International Business Machines Corporation | Dynamically manage applications on a processing system |
US8464256B1 (en) | 2009-04-10 | 2013-06-11 | Open Invention Network, Llc | System and method for hierarchical interception with isolated environments |
US20100169708A1 (en) | 2008-12-29 | 2010-07-01 | John Rudelic | Method and apparatus to profile ram memory objects for displacment with nonvolatile memory |
US8161260B2 (en) | 2009-02-09 | 2012-04-17 | Oracle International Corporation | Optimal memory allocation for guested virtual machine(s) |
KR101612922B1 (ko) | 2009-06-09 | 2016-04-15 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템 관리 방법 |
US8832683B2 (en) | 2009-11-30 | 2014-09-09 | Red Hat Israel, Ltd. | Using memory-related metrics of host machine for triggering load balancing that migrate virtual machine |
US8607023B1 (en) | 2009-12-16 | 2013-12-10 | Applied Micro Circuits Corporation | System-on-chip with dynamic memory module switching |
US8806140B1 (en) | 2009-12-16 | 2014-08-12 | Applied Micro Circuits Corporation | Dynamic memory module switching with read prefetch caching |
US20120221785A1 (en) | 2011-02-28 | 2012-08-30 | Jaewoong Chung | Polymorphic Stacked DRAM Memory Architecture |
US8775731B2 (en) | 2011-03-25 | 2014-07-08 | Dell Products, L.P. | Write spike performance enhancement in hybrid storage systems |
US9141528B2 (en) | 2011-05-17 | 2015-09-22 | Sandisk Technologies Inc. | Tracking and handling of super-hot data in non-volatile memory systems |
US8631131B2 (en) | 2011-09-07 | 2014-01-14 | Red Hat Israel, Ltd. | Virtual machine pool cache |
US9916538B2 (en) | 2012-09-15 | 2018-03-13 | Z Advanced Computing, Inc. | Method and system for feature detection |
US11195057B2 (en) | 2014-03-18 | 2021-12-07 | Z Advanced Computing, Inc. | System and method for extremely efficient image and pattern recognition and artificial intelligence platform |
US11074495B2 (en) | 2013-02-28 | 2021-07-27 | Z Advanced Computing, Inc. (Zac) | System and method for extremely efficient image and pattern recognition and artificial intelligence platform |
US8738875B2 (en) | 2011-11-14 | 2014-05-27 | International Business Machines Corporation | Increasing memory capacity in power-constrained systems |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US8719540B1 (en) | 2012-03-15 | 2014-05-06 | Pure Storage, Inc. | Fractal layout of data blocks across multiple devices |
US8838887B1 (en) | 2012-03-30 | 2014-09-16 | Emc Corporation | Drive partitioning for automated storage tiering |
WO2013164878A1 (ja) | 2012-05-01 | 2013-11-07 | 株式会社日立製作所 | 計算機システムの管理装置および管理方法 |
US20150301743A1 (en) | 2012-09-24 | 2015-10-22 | Hitachi, Ltd. | Computer and method for controlling allocation of data in storage apparatus hierarchical pool |
GB2507596B (en) * | 2012-10-30 | 2014-09-17 | Barclays Bank Plc | Secure computing device and method |
US10311609B2 (en) | 2012-12-17 | 2019-06-04 | Clinton B. Smith | Method and system for the making, storage and display of virtual image edits |
US9508040B2 (en) | 2013-06-12 | 2016-11-29 | Microsoft Technology Licensing, Llc | Predictive pre-launch for applications |
US10296297B2 (en) * | 2013-08-09 | 2019-05-21 | Oracle International Corporation | Execution semantics for sub-processes in BPEL |
US9292448B2 (en) | 2013-09-19 | 2016-03-22 | Google Inc. | Dynamic sizing of memory caches |
KR20150043102A (ko) | 2013-10-14 | 2015-04-22 | 한국전자통신연구원 | 하이브리드 메모리의 데이터 관리 장치 및 방법 |
US10338826B2 (en) | 2013-10-15 | 2019-07-02 | Cypress Semiconductor Corporation | Managed-NAND with embedded random-access non-volatile memory |
CA2867589A1 (en) | 2013-10-15 | 2015-04-15 | Coho Data Inc. | Systems, methods and devices for implementing data management in a distributed data storage system |
US10013500B1 (en) | 2013-12-09 | 2018-07-03 | Amazon Technologies, Inc. | Behavior based optimization for content presentation |
US9411638B2 (en) | 2013-12-19 | 2016-08-09 | International Business Machines Corporation | Application startup page fault management in a hardware multithreading environment |
US9892121B2 (en) | 2014-07-15 | 2018-02-13 | Hitachi, Ltd. | Methods and systems to identify and use event patterns of application workflows for data management |
US9477427B2 (en) | 2014-09-19 | 2016-10-25 | Vmware, Inc. | Storage tiering based on virtual machine operations and virtual volume type |
US10452538B2 (en) | 2015-01-21 | 2019-10-22 | Red Hat, Inc. | Determining task scores reflective of memory access statistics in NUMA systems |
WO2016134035A1 (en) | 2015-02-17 | 2016-08-25 | Coho Data, Inc. | Virtualized application-layer space for data processing in data storage systems |
US20170017576A1 (en) | 2015-07-16 | 2017-01-19 | Qualcomm Incorporated | Self-adaptive Cache Architecture Based on Run-time Hardware Counters and Offline Profiling of Applications |
KR102401772B1 (ko) | 2015-10-02 | 2022-05-25 | 삼성전자주식회사 | 전자 장치에서 어플리케이션 실행 장치 및 방법 |
US9985946B2 (en) | 2015-12-22 | 2018-05-29 | Intel Corporation | System, apparatus and method for safety state management of internet things (IoT) devices |
US10509564B2 (en) | 2015-12-28 | 2019-12-17 | Netapp Inc. | Storage system interface |
US11182344B2 (en) * | 2016-03-14 | 2021-11-23 | Vmware, Inc. | File granular data de-duplication effectiveness metric for data de-duplication |
US10324760B2 (en) | 2016-04-29 | 2019-06-18 | Advanced Micro Devices, Inc. | Leases for blocks of memory in a multi-level memory |
US20200348662A1 (en) | 2016-05-09 | 2020-11-05 | Strong Force Iot Portfolio 2016, Llc | Platform for facilitating development of intelligence in an industrial internet of things system |
US11507064B2 (en) | 2016-05-09 | 2022-11-22 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for industrial internet of things data collection in downstream oil and gas environment |
US11774944B2 (en) | 2016-05-09 | 2023-10-03 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for the industrial internet of things |
US20190339688A1 (en) | 2016-05-09 | 2019-11-07 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for data collection, learning, and streaming of machine signals for analytics and maintenance using the industrial internet of things |
US20200225655A1 (en) | 2016-05-09 | 2020-07-16 | Strong Force Iot Portfolio 2016, Llc | Methods, systems, kits and apparatuses for monitoring and managing industrial settings in an industrial internet of things data collection environment |
US11327475B2 (en) | 2016-05-09 | 2022-05-10 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for intelligent collection and analysis of vehicle data |
WO2019216975A1 (en) | 2018-05-07 | 2019-11-14 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for data collection, learning, and streaming of machine signals for analytics and maintenance using the industrial internet of things |
US11194517B2 (en) | 2016-05-24 | 2021-12-07 | Samsung Electronics Co., Ltd. | Method and apparatus for storage device latency/bandwidth self monitoring |
KR20170138765A (ko) | 2016-06-08 | 2017-12-18 | 삼성전자주식회사 | 메모리 장치, 메모리 모듈 및 메모리 장치의 동작 방법 |
US10037173B2 (en) | 2016-08-12 | 2018-07-31 | Google Llc | Hybrid memory management |
US10152427B2 (en) | 2016-08-12 | 2018-12-11 | Google Llc | Hybrid memory management |
CN107220076B (zh) | 2016-09-27 | 2018-10-30 | 华为技术有限公司 | 一种内存回收方法及装置 |
US10445126B2 (en) | 2017-02-21 | 2019-10-15 | Red Hat, Inc. | Preloading enhanced application startup |
US20180276112A1 (en) | 2017-03-27 | 2018-09-27 | International Business Machines Corporation | Balancing memory pressure across systems |
US10452397B2 (en) | 2017-04-01 | 2019-10-22 | Intel Corporation | Efficient multi-context thread distribution |
EP3425499A1 (en) | 2017-07-07 | 2019-01-09 | Facebook, Inc. | Systems and methods for loading features |
US11442445B2 (en) | 2017-08-02 | 2022-09-13 | Strong Force Iot Portfolio 2016, Llc | Data collection systems and methods with alternate routing of input channels |
JP2019035798A (ja) * | 2017-08-10 | 2019-03-07 | 日本放送協会 | エレクトロデポジション素子を駆動する駆動回路 |
US20190050163A1 (en) | 2017-08-14 | 2019-02-14 | Seagate Technology Llc | Using snap space knowledge in tiering decisions |
CN107783801B (zh) | 2017-11-06 | 2021-03-12 | Oppo广东移动通信有限公司 | 应用程序预测模型建立、预加载方法、装置、介质及终端 |
CN109814936A (zh) | 2017-11-20 | 2019-05-28 | 广东欧珀移动通信有限公司 | 应用程序预测模型建立、预加载方法、装置、介质及终端 |
KR102416929B1 (ko) | 2017-11-28 | 2022-07-06 | 에스케이하이닉스 주식회사 | 메모리 모듈 및 메모리 모듈의 동작 방법 |
TWI647567B (zh) | 2017-12-13 | 2019-01-11 | 國立中正大學 | 使用記憶體位址定位冷熱存取區間之方法 |
WO2019171237A1 (en) | 2018-03-05 | 2019-09-12 | Tensera Networks Ltd. | Application preloading in the presence of user actions |
US10606670B2 (en) | 2018-04-11 | 2020-03-31 | EMC IP Holding Company LLC | Shared memory usage tracking across multiple processes |
US20200133254A1 (en) | 2018-05-07 | 2020-04-30 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for data collection, learning, and streaming of machine signals for part identification and operating characteristics determination using the industrial internet of things |
US11144468B2 (en) | 2018-06-29 | 2021-10-12 | Intel Corporation | Hardware based technique to prevent critical fine-grained cache side-channel attacks |
JP7261037B2 (ja) | 2019-02-21 | 2023-04-19 | 株式会社日立製作所 | データ処理装置、ストレージ装置およびプリフェッチ方法 |
US11436041B2 (en) | 2019-10-03 | 2022-09-06 | Micron Technology, Inc. | Customized root processes for groups of applications |
US11474828B2 (en) | 2019-10-03 | 2022-10-18 | Micron Technology, Inc. | Initial data distribution for different application processes |
US20210157718A1 (en) | 2019-11-25 | 2021-05-27 | Micron Technology, Inc. | Reduction of page migration between different types of memory |
US11429445B2 (en) | 2019-11-25 | 2022-08-30 | Micron Technology, Inc. | User interface based page migration for performance enhancement |
WO2021141474A1 (en) | 2020-01-10 | 2021-07-15 | Samsung Electronics Co., Ltd. | Method and device of launching an application in background |
US11366752B2 (en) | 2020-03-19 | 2022-06-21 | Micron Technology, Inc. | Address mapping between shared memory modules and cache sets |
US11836087B2 (en) | 2020-12-23 | 2023-12-05 | Micron Technology, Inc. | Per-process re-configurable caches |
-
2019
- 2019-10-03 US US16/592,529 patent/US11599384B2/en active Active
-
2020
- 2020-09-30 WO PCT/US2020/053529 patent/WO2021067424A1/en unknown
- 2020-09-30 KR KR1020227010630A patent/KR20220054394A/ko unknown
- 2020-09-30 CN CN202080067754.2A patent/CN114467081A/zh active Pending
- 2020-09-30 JP JP2022520359A patent/JP2022550446A/ja active Pending
- 2020-09-30 EP EP20871293.5A patent/EP4038496A4/en active Pending
-
2023
- 2023-03-06 US US18/179,228 patent/US20230205575A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4038496A4 (en) | 2023-10-11 |
US20230205575A1 (en) | 2023-06-29 |
KR20220054394A (ko) | 2022-05-02 |
US11599384B2 (en) | 2023-03-07 |
US20210103462A1 (en) | 2021-04-08 |
WO2021067424A1 (en) | 2021-04-08 |
JP2022550446A (ja) | 2022-12-01 |
EP4038496A1 (en) | 2022-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230205575A1 (en) | Customized root processes for individual applications | |
US11436041B2 (en) | Customized root processes for groups of applications | |
US11474828B2 (en) | Initial data distribution for different application processes | |
US10592135B2 (en) | Peer to peer volume extension in a shared storage environment | |
US20180081674A1 (en) | Updating Machine Emulator | |
CN107368353B (zh) | 一种实现虚拟机内存热添加的方法和装置 | |
JP2010039895A (ja) | 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム | |
JP7072103B2 (ja) | ブロックチェーンのスマートコントラクト実現方法、装置、機器及び媒体 | |
CN112286656B (zh) | 小程序模拟方法、装置、电子设备和计算机可读存储介质 | |
US10901644B2 (en) | Data-aware orchestration | |
CN106020905B (zh) | 一种微控制器固件开发与更新的方法及系统 | |
US10310863B1 (en) | Patching functions in use on a running computer system | |
KR102315102B1 (ko) | 가상 머신을 부팅하기 위한 방법, 장치, 기기 및 매체 | |
CN110781016A (zh) | 一种数据处理方法、装置、设备及介质 | |
CN114090171A (zh) | 虚拟机创建方法、迁移方法及计算机可读介质 | |
CN115033337A (zh) | 虚拟机内存迁移方法、装置、设备及存储介质 | |
US10496433B2 (en) | Modification of context saving functions | |
US9727257B2 (en) | Maintaining relative references when unlinking volumes from a volume chain | |
CN111258657A (zh) | 流水线控制方法及相关设备 | |
CN118860485A (zh) | 一种非对称多处理器架构生成方法、装置、设备及介质 | |
JP2019101553A (ja) | 情報処理システム、サーバ装置、情報処理方法及びプログラム |
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 |