CN107430549B - 基于联合的存储器管理 - Google Patents

基于联合的存储器管理 Download PDF

Info

Publication number
CN107430549B
CN107430549B CN201680019206.6A CN201680019206A CN107430549B CN 107430549 B CN107430549 B CN 107430549B CN 201680019206 A CN201680019206 A CN 201680019206A CN 107430549 B CN107430549 B CN 107430549B
Authority
CN
China
Prior art keywords
memory
coalition
application
software
processes
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
Application number
CN201680019206.6A
Other languages
English (en)
Other versions
CN107430549A (zh
Inventor
A·D·迈里克
L·德赛
J·安德勒斯
K·克里皮斯
J·奥里基奥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Priority to CN202011221242.5A priority Critical patent/CN112347004A/zh
Publication of CN107430549A publication Critical patent/CN107430549A/zh
Application granted granted Critical
Publication of CN107430549B publication Critical patent/CN107430549B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

软件进程的一个或多个存储器联合被创建和使用,以决定是否对数据处理系统执行存储器缩减操作。一个实施方案中的一种方法包括响应于确定新启动的第二进程应为包括第一进程的存储器联合的一部分而将第二进程添加到现有的存储器联合。响应于确定可用系统存储器(例如,DRAM)低,该系统确定前台应用程序的哪个存储器联合使用最多量的系统存储器,并且然后对该存储器联合执行一个或多个存储器缩减操作,以便使更多系统存储器可供其他进程使用。

Description

基于联合的存储器管理
背景技术
本公开涉及数据处理系统中的资源管理,并且更具体地涉及由控制数据处理系统的操作系统进行的存储器管理。
操作系统(OS)诸如来自Apple Inc.的iOS或OS X或者来自Microsoft的MicrosoftWindows是管理设备硬件资源并为计算机程序诸如应用程序软件提供共性服务的软件的集合。应用程序软件可被视为是使得计算机或其他数据处理系统响应于用户请求或其他请求或其他输入而执行有用任务的计算机程序。应用程序软件的特定实例被称为软件应用程序(software application,application program,application或app),它们在本文中可互换使用。应用程序通常需要操作系统才能工作。
随着越来越多的应用程序和服务变得对于小设备或移动设备(例如智能电话)可用,在单个设备中同时运行的应用程序的数量已显著增多。此外,这些应用程序中的很多应用程序在用户完成对其的使用之后未被用户终止或退出,因此它们即使在其不再被使用时也继续运行并因此继续使用系统资源诸如存储器(例如,易失性存储器诸如DRAM)。此外,空闲的后台应用程序和前台应用程序虽然可能不使用处理资源或计算资源诸如一个或多个微处理器,但它们在空闲以及不使用时常常使用存储器资源诸如RAM。同一设备中的该多个应用程序或进程通过共享嵌入设备内的相同存储器资源和计算资源而彼此竞争,并且操作系统执行资源管理诸如存储器管理,以应对并行计算中的资源竞争。用于控制运行的或空闲的应用程序对存储器的使用的存储器管理已包括基于数据处理系统中的存储器(例如DRAM)的使用的一个或多个指示来终止应用的程序技术。美国专利7,827,358和8,892,827以及已公布的美国专利申请2013/0332936和2013/0326166描述了也包括其他技术诸如删除高速缓存的此类技术的示例。
发明内容
在本文所述的一个或多个实施方案中,主进程(诸如第一主应用程序)和任何辅助进程的联合被用于确定联合中的进程的存储器使用量(例如,总存储器占用量),以便确定是否或者如何对所述联合或者进程的其他联合执行存储器管理操作。在一个实施方案中,联合可被定义为消耗存储器并且在为了存储器管理的目的而评估存储器使用时被一起考虑的一组独立进程。在一个实施方案中,一种系统可确定每个联合的总存储器使用占用量,并使用这些所确定的占用量来选择用于存储器使用缩减操作(诸如终止所选择的联合中的一个或多个辅助进程)的一个(或多个)联合。在一个实施方案中,主进程通常是在其联合中启动的第一进程,并且主进程使得启动在联合正在使用存储器时向主进程提供服务的辅助进程。当主进程(例如,通过应用编程接口(API))调用以用于辅助进程的启动时,系统确定辅助进程是否应被添加成为主进程的联合的一部分。如果辅助进程应为主进程的联合的一部分,则该辅助进程被添加到主进程的联合以用于测量或以其他方式确定该联合的存储器使用占用量的目的。
根据一个实施方案的一种方法,该方法包括:执行可被视为第一主应用程序的第一进程;响应于第二进程的启动而确定第二进程是否为包括第一主应用程序的第一存储器联合的一部分;响应于确定第二进程为第一存储器联合的一部分而将第二进程添加到第一存储器联合;确定数据处理系统中的可用存储器低;响应于确定可用存储器低而确定由一组(包括第一存储器联合的)一个或多个存储器联合中的每个存储器联合所使用的存储器的量;以及响应于确定第一存储器联合比该一组存储器联合中的任何其他存储器联合使用更多的存储器而对第一存储器联合执行一个或多个存储器使用缩减操作,以增大可用存储器的量。在一个实施方案中,可用存储器包括易失性动态随机存取存储器(DRAM),并且每个存储器联合包括主应用程序和从其他主应用程序的软件实例化的或从主应用程序的辅助软件或从其他来源实例化的相关联的一个或多个进程。在一个实施方案中,第二进程可从第二主应用程序的软件实例化,并且第二进程在与第一进程在其中操作的第一沙箱分开且不同的第二沙箱中操作。在一个实施方案中,在对一个或多个前台应用程序的存储器联合执行存储器使用缩减操作之前,对后台主应用程序和其他后台进程执行存储器使用缩减操作。
在一个实施方案中,每个存储器联合具有联合标识符,并且当第二进程通过用于指定第一存储器联合的联合标识符的调用而被启动时,第二进程被确定为第一存储器联合的一部分。在一个实施方案中,在第一主应用程序被启动时该第一主应用程序从操作系统部件获取第一存储器联合的联合标识符。
在一个实施方案中,在对包括第一主应用程序的第一存储器联合执行存储器使用缩减操作时,第一主应用程序为前台应用程序。在一个实施方案中,对后台应用程序执行存储器缩减操作,而不考虑由包含那些后台应用程序的存储器联合所使用的存储器的量;即,后台应用程序的存储器联合的存储器使用占用量不被用于确定是否或者如何对后台应用程序或与那些后台应用程序相关联的进程执行存储器缩减操作。在一个实施方案中,第一进程可以是守护进程。在一个实施方案中,第二进程可从来自由操作系统所提供的软件库或设置有第一主应用程序提供的辅助软件(诸如设置有第一主应用程序或具有第一主应用程序的捆绑形式的辅助进程库)的软件实例化。
在一个实施方案中,该一组存储器联合中的每个存储器联合具有仅一个主应用程序和一个或多个辅助进程,其中第二进程为辅助进程。每个辅助进程在一个实施方案中在其整个生命周期中只属于一个存储器联合,并且当存储器联合中的主应用程序终止时,则该存储器联合中的所有辅助进程也终止。在一个实施方案中,当应用程序被用于对用于多于一个存储器联合的辅助进程进行实例化时,针对该一个或多个存储器联合中的每个存储器联合而对该辅助进程的独特实例进行实例化。
在一个实施方案中,存储器联合内的进程被分组到各自具有指定实施存储器缩减操作的次序的相对优先级的类别中,使得所选择的存储器联合内的一个类别中的进程在终止同一所选择的存储器联合内的另一类别中的进程之前被终止。在一个实施方案中,所选择的存储器联合中的主应用程序的进程或主要进程为在对该所选择的存储器联合执行存储器缩减操作时该存储器联合中的将被终止的最后的进程。
作为所描述的各种实施方案的一部分,本文描述了各种数据处理系统和方法、以及非暂态机器可读介质诸如DRAM或闪存存储器。
以上概述不包括本公开的所有实施方案的详尽列表。所有系统和方法可根据以上概述的各个方面和实施方案以及以下具体实施方式中所公开的那些的所有合适的组合来实践。
附图说明
本发明以举例的方式进行说明并且不仅限于各个附图的图形,在附图中类似的标号指示类似的元件。
图1示出了可在本文所述的一个实施方案中使用的进程的联合的示例。
图2A示出了可向其他软件应用程序提供辅助进程的多个软件应用程序的实施方案的示例,该辅助进程成为那些其他应用程序的存储器联合的一部分。
图2B示出了根据本文所述的一个实施方案的存储器联合的数据结构的示例。
图2C示出了可用于存储包括各种应用程序和操作系统软件部件的各种软件部件的非易失性存储系统的示例。
图3是根据一个实施方案的用于创建和使用存储器联合的方法的流程图。
图4A和图4B是示出了用于使用存储器联合的一种或多种方法的实施方案的流程图。
图5示出了可根据本文所述的实施方案而使用的进程的分级结构的示例。
图6示出了可与本文所述的一种或多种方法一起使用并且可包括一个或多个非暂态机器可读介质诸如DRAM或闪存存储器等的数据处理系统的实施方案。
具体实施方式
将参考以下讨论的细节来描述各种实施方案和方面,并且附图将对各种实施方案进行说明。以下说明书和附图为示例性的,并且不应被理解为限制性的。描述了许多具体细节,以提供对各个实施方案的全面理解。然而,在某些实例中,熟知的或常规的细节并未被描述,以便提供对实施方案的简明论述。
在本说明书中提到的“一个实施方案”或“实施方案”是指结合该实施方案所述的特定特征、结构或特性可被包括在至少一个实施方案中。在本说明书中的不同位置出现的短语“在一个实施方案中”不一定都是指同一个实施方案。在随后的附图中所描绘的过程由包括硬件(例如,电路、专用逻辑部件等等)、软件或这两者的组合的处理逻辑部件来执行。虽然下文按照某些顺序操作来描述该过程,但应当理解,所描述的某些操作可以不同的顺序执行。此外,某些操作也可并行执行而非按顺序执行。
软件进程的一个或多个存储器联合被创建和使用,以决定是否对数据处理系统执行存储器缩减操作。一个实施方案中的一种方法包括响应于确定新启动的进程(被称为第二进程)应为包括第一进程的存储器联合的一部分而将第二进程添加到现有存储器联合。响应于确定可用系统存储器诸如DRAM低,系统确定前台应用程序的一组存储器联合中的哪个存储器联合使用最多量的系统存储器,并且然后对该存储器联合执行一个或多个存储器缩减操作,以便使更多系统存储器可供其他进程使用。在一个实施方案中,新启动的第二进程可以是辅助进程诸如来自另一软件应用程序或主应用程序的扩展,或者可从辅助进程的系统级库或从由对第一进程进行实例化的第一主应用程序所提供的辅助进程库实例化。在一个实施方案中,第一主应用程序可以是web浏览器,并且第二主应用程序可以是社交网络应用程序(例如F,acebook),并且来自Facebook的软件可包括可用于创建辅助进程的实例以允许web浏览器在Facebook中创建发布或执行某个其他Facebook相关功能的扩展,而web浏览器和来自Facebook的辅助进程保持为在其各自沙箱中隔离并且通过已知的进程间通信彼此进行通信。
图1示出了进程联合101的一个示例,该进程联合包括作为图1中所示的存储器联合的主应用程序的主应用程序进程102,并且还包括来自不同软件来源的多个辅助进程。这些辅助进程中的每个辅助进程在一个实施方案中通过已知的进程间通信过程通过基于软件的消息与主进程102进行通信。在一个实施方案中,辅助进程中的每个辅助进程可在其自身的与主应用程序进程102在其中执行的沙箱分开且不同的单独的不同的沙箱中执行。在一个实施方案中,不同辅助进程可被分类在不同的类别中,该不同的类别可如本文所述在确定是否以及如何执行存储器缩减操作时被使用。在一个实施方案中,每个辅助进程的类别可取决于分配给辅助进程的角色类别。例如,扩展进程诸如扩展进程104和扩展进程108可源于与主应用程序进程102不同且与对主应用程序进程102进行实例化的软件不同的其他软件应用程序。例如,扩展进程104可源于与对主应用程序进程102进行实例化的应用程序不同的另一应用程序。类似地,扩展进程108可从与对主应用程序进程102进行实例化的软件应用程序不同的软件应用程序实例化。例如,参见图2A,如果主应用程序进程102是web浏览器应用程序215,则扩展进程104可为从来自与用于社交网络应用程序(在图2A中图示为主应用程序201)的软件捆绑包一起包括的辅助进程的软件实例化的扩展A 219。在一个实施方案中,扩展进程类别可为从与对应用进程102进行实例化的应用程序不同的其他应用程序实例化的那些进程。辅助进程106可来自与由对应用程序进程102进行实例化的软件捆绑或以其他方式一起被包括或由其提供的软件库。辅助进程106具有与扩展进程104和108不同的角色或类别。辅助进程110是未知角色或未知进程,并且具有其自身的辅助进程的类别。在一个实施方案中,未知进程或类别在以下意义上具有最低优先级,即未知的那些进程在联合内将首先被终止,而主应用程序进程将最后被终止。辅助进程104,106,108和110中的每个辅助进程被包括在还包括主应用程序进程102的存储器联合内。在一个实施方案中,在图1所示的存储器联合内的所有进程所消耗的整个存储器将总计在一起并在确定是否以及如何对存储器联合中的至少一个存储器联合执行存储器缩减操作时相对于其他存储器联合进行考虑;结合根据一个实施方案可如何执行存储器缩减操作的进一步的信息将在下文中进一步提供。
在一个实施方案中,数据处理系统诸如平板计算机或智能电话或膝上型计算机或台式计算机或其他类型的数据处理系统除了操作系统软件和与该操作系统相关联的其他软件之外可包括多个应用程序,以允许各种应用程序利用数据处理系统的硬件工作。
图2C示出了此类软件和硬件系统的一般性形式,而图2A示出了包括至少四个应用程序(web浏览器程序、电子邮件程序、照片编辑程序和社交网络应用程序)的数据处理系统的更具体的示例。参见图2C,非易失性存储系统271可包括多个应用程序捆绑包(诸如应用程序捆绑包275和281)、以及操作系统的多个部件(包括操作系统内核软件272和进程间通信软件273和启动守护软件274,其可与各个应用程序捆绑包以及从那些应用程序捆绑包实例化的软件或进程进行交互,以允许辅助进程以本文所述的方式针对主应用程序来执行服务)。在图2C中所示的每个应用程序捆绑包可包括可对主应用程序的主要可执行进程进行实例化的主应用程序,并且该捆绑包还可包括可以本文所述的方式针对其他应用程序提供服务的应用程序扩展。例如,应用程序捆绑包275包括主要可执行进程可从其实例化的主应用程序276,并且还包括可用于对其他应用程序的扩展或辅助进程进行实例化的一个或多个应用程序扩展278。此外,应用程序捆绑包275包括作为被包括在主应用程序276内的服务库(例如XPC服务)的一部分的一个或多个辅助进程。XPC服务是可在使用来自Apple Inc.(Cupertino,California)的OS X操作系统的系统上提供的辅助进程的示例。应用程序捆绑包281还包括主应用程序283以及XPC类别中的一个或多个辅助进程285和可向其他应用提供辅助进程服务的一个或多个应用程序扩展287。内核软件272可类似于传统内核软件诸如OS X操作系统的Mach内核。IPC软件273可以是允许在数据处理系统上同时执行的不同的软件进程之间进行通信的传统进程间通信软件。启动守护软件274可以是检测应用程序或其他进程的启动并且由于该启动而针对被启动的软件对一个或多个进程进行实例化的传统守护软件。在一个实施方案中,该启动可以是用户在本领域已知的图形用户界面中轻击图标或双击图标的结果。
图2A示出了包括四个主应用程序(这四个主应用程序中的两个当前正在易失性存储装置中执行)的数据处理系统的具体示例。在图2A所示的示例中,非易失性存储装置包括web浏览器应用程序和电子邮件应用程序的所存储的图像,并且易失性存储装置包括(由web浏览器应用程序实例化的)web浏览器进程和(由电子邮件应用程序实例化的)电子邮件进程。web浏览器进程创建web浏览器联合215,并且电子邮件进程创建电子邮件联合231。该非易失性存储装置还包括用于社交网络应用程序的主应用程序捆绑包201和用于照片编辑应用程序的主应用程序捆绑包207。在一个实施方案中,社交网络应用程序可为Facebook应用程序,并且照片编辑应用程序可为Adobe Photo Shop应用程序。在每种情况下,主应用程序捆绑包包括可用于针对其他应用程序进行实例化辅助进程的一个或多个扩展。此外,每个应用程序捆绑包包括主要可执行进程的软件的图像,诸如用于应用程序捆绑包201的主要可执行进程203和用于主应用程序捆绑包207的主要可执行进程209。在图2A中所示的示例中,用户已启动已在web浏览器联合215中对web浏览器进程进行实例化的web浏览器应用程序,并且还已启动电子邮件应用程序,以在电子邮件联合231中创建电子邮件进程。web浏览器联合215包括具有当前正在执行的主要可执行进程217(主要web浏览器进程)的多个进程和从社交网络应用程序捆绑包201内的扩展205实例化的扩展A的实例,并且web浏览器联合215还包括在该实例中从web浏览器的软件库实例化的辅助进程221,其在一个实施方案中可为XPC服务进程。扩展A 219可通过本领域已知的进程间通信诸如进程间通信223来与主要进程217进行通信。类似地,主要进程217可通过进程间通信225与辅助进程221进行通信。在一个实施方案中,主要进程217在第一沙箱中操作,而扩展进程219在第二沙箱中操作,并且辅助进程221在第三沙箱中操作。在一个实施方案中,扩展进程219以及扩展进程或实例235可类似于在由发明人Peter Kiehtreiber,Olivier Gutknecht,Ivan Krstic,Adele Peterson,Samuel M.Weinig,Yongjun Zhang,Ian J.Baird于2014年9月16日提交并且被分配以代理人案卷号no.04860.P23308的标题为“Consistent Extension Points ToAllow An Extension To Extend Functionality Of An Application To AnotherApplications”的共同未决美国专利申请No.14/488,126中描述的扩展,该美国专利申请以引用方式并入本文。扩展进程219在一个实施方案中可响应于来自web浏览器进程217的调用而被实例化,并且该调用可导致在执行图3中所示的可使得扩展进程219被添加到用于web浏览器联合215的存储器联合的过程或方法。例如,在一个实施方案中,web浏览器的用户可前往社交网络的网站,并在网站上进行请求诸如用于更新Facebook条目的请求,这继而使得web浏览器调用辅助进程以对扩展219进行实例化。这可包括用于指定web浏览器的存储器联合的存储器联合标识符的参数。类似地,辅助进程221可响应于请求而被启动,其中web浏览器通过(可指定存储器联合标识符的)API进行调用,以使得启动辅助进程。电子邮件应用程序231包括通过进程间通信237与从来自照片编辑应用程序207的辅助进程211实例化的扩展B实例235进行通信的主要进程233。在一个实施方案中,扩展可在电子邮件应用程序中提供照片编辑能力,其中照片编辑能力由从照片编辑应用程序的捆绑包207内的软件实例化的辅助进程来提供。如上所述,每个应用程序215和231内的每个进程可被实施并在其自己单独的不同沙箱内操作以提供增强的安全性。
图2B示出了用于存储相对于一个或多个存储器联合的信息的数据结构251的示例。具体地,数据结构251包括相对于包括web浏览器存储器联合253和电子邮件存储器联合261的两个存储器联合的数据。这个数据结构251基于在图2A中所示的web浏览器联合215和电子邮件联合231;因此,web浏览器存储器联合253对应于图2A中的web浏览器联合215,并且电子邮件存储器联合261对应于图2A中的电子邮件联合231。每个存储器联合可包括存储器联合标识符诸如存储器联合标识符255和存储器联合标识符262。这些存储器联合标识符中的每个存储器联合标识符可由操作系统(OS)在启动主进程时分配,并由OS提供至主进程中的每个主进程。web浏览器存储器联合253可包括具有主应用程序类别或角色的主web浏览器应用程序的主要可执行进程的元数据257,并且联合253还包括具有辅助进程角色的辅助进程221的元数据259,并且存储器联合253的数据结构还包括具有扩展角色的扩展A进程的元数据260。存储器联合261还可包括相对于存储器联合内的各个进程的信息,包括识别具有主应用程序角色的电子邮件应用程序的主要可执行进程263的元数据和具有扩展角色的扩展进程264的元数据。数据结构251可以本领域已知的多种方式来实现,并且可被操作系统保持以在如本文所述在其存储器管理过程中使用。
在图2B中所示的数据结构251是用于限定存储器联合的信息的一个示例,该存储器联合可用于然后提供存储器管理系统中的进程的信息,以便控制系统存储器的进程使用。在一个实施方案中,每个应用程序联合在联合中可具有仅一个主进程,并且主应用程序或进程的这个角色在现有联合中的任何点不能被转移或交让。具有主角色的主应用程序的终止在一个实施方案中将导致联合以及联合内的其所有进程的终止。在一个实施方案中,辅助进程是非主进程,但被专门启动以提供对主应用程序的支持,并且进程实例在其整个生命周期中可属于仅一个联合,使得其被启动到该联合中并且是该联合的一部分,直到主应用程序终止或辅助进程实例终止。在一个实施方案中,如果应用程序诸如电子邮件应用程序或web浏览器程序或社交网络应用程序提供两个或更多个联合需要的功能,则该进程的独特实例将被衍生或实例化到每个请求联合中,使得没有实例在联合之间被共享。在一个实施方案中,实例经由可包括属性诸如现有存储器联合的存储器联合标识符的(本领域已知的)posix_spawn来衍生。这些调用可包括对联合标识符和联合角色或角色标识符(诸如指示辅助进程是扩展还是XPC服务还是未知进程还是其他类型的辅助进程的标识符)两者的说明。在一个实施方案中,被启动到联合中的每个非主进程必须将联合ID(作为属性)提供给将创建其的posix_spawn调用,并且其可使用该调用中的将向内核告知该进程是具有扩展还是XPC服务还是联合中的某个其他角色的属性来指定其在联合中的角色。
存储器联合内的进程中的每个进程可在其自身的与存储器联合内的其他进程的沙箱隔离的沙箱内被沙箱化,以对于恶意软件等提供增强的安全性。可使用各种不同的已知的进程沙箱化技术,包括例如使用以下各项中的一者或多者:指定沙箱化进程的非易失性存储系统中的被允许和能够访问(文件系统)的存储位置的不同容器目录,使得该非易失性存储装置中的其他存储位置不能被沙箱化进程访问;(b)指定沙箱化进程被允许使用哪些硬件资源或软件资源以及哪些资源不被允许使用的权利;或(c)指定沙箱化进程可访问的存储器位置的存储器空间特权,使得其他存储器位置不可被沙箱化进程访问。应当理解,可使用沙箱化领域中的各种其他附加技术,以便对来自其他进程的每个进程进行沙箱化并将一个进程中的恶意软件与另一进程隔离。
在一个实施方案中,随着每个进程在数据处理系统中被启动,操作系统确定特定的新启动的进程是应为现有存储器联合的一部分还是应为要创建的新存储器联合的一部分。这允许新创建的进程被划分到新存储器联合或现有存储器联合中,以便系统相对于在运行时可在数据处理系统中存在的存储器联合来管理存储器。
图3示出了可用于创建新存储器联合或管理现有存储器联合的方法的示例。在图3中所示的方法可结合在图2A至图2C所示的架构以及在图4A和图4B所示的方法来使用,以实施利用存储器联合的存储器管理系统。在图3所示方法的操作301中,启动守护软件进程接收用于启动进程的调用。在一个实施方案中,该调用可包括联合角色和联合ID,但是如果新启动进程的角色将是主应用程序,则联合ID可在启动时针对主角色被创建。在一个实施方案中,响应于在操作301中所接收的调用,操作系统通过检查在调用中指定的所述一个或多个属性来确定进程的角色。如果该一个或多个属性指示进程角色是主角色,则操作303确定将在操作305中以被分配给主应用程序的新存储器联合标识符来创建新存储器联合。在一个实施方案中,主应用程序不知道其存储器联合标识符,因为系统分配该标识符并且使用该标识符,而无需将该标识符提供给主应用程序;例如,启动守护软件进程和OS的内核知道和使用每个主应用程序的存储器联合标识符,但每个主应用程序不知道其自身的存储器联合标识符。另一方面,如果操作303确定进程的角色不是主角色,则执行操作307,其中新进程将以现有存储器联合标识符被插入到现有存储器联合中。如果新进程包括角色说明,则该角色也被包括在可在执行存储器缩减操作时使用的存储器联合数据结构(例如图2B所示的数据结构251)内,如下文进一步所述的。在操作305或307之后,在操作309中创建新进程,其可包括从所存储的软件对进程进行实例化,以在存储器诸如DRAM中创建执行进程。如果新创建的进程不是主应用程序或进程,则新创建的进程被添加到现有存储器联合中,并且存储器管理系统在一个实施方案中根据本文所述的各种存储器联合进行操作。
图4A和图4B示出了根据一个实施方案的方法,其中在一个或多个存储器管理操作中使用存储器联合来管理由数据处理系统中的多个进程所使用的存储器的量。该存储器管理操作可由操作系统来实施,并且可执行在先前的存储器管理系统中执行的多个相同操作,先前的存储器管理系统包括在美国专利7,827,358和8,892,827以及已公布美国专利申请2013/0332936和2013/0326166中所述的那些,这些美国专利和已公布美国专利申请中的每个专利申请描述了用于执行存储器管理操作的技术的示例,并且据此以引用方式并入本文。另外,于2014年5月30日提交的共同未决的美国专利申请No.14/292,453也描述了存储器管理技术,并且也据此以引用方式并入本文。存储器管理过程可反复地核查系统的存储器部件(包括例如DRAM,并且任选地包括闪存存储器或其他非易失性存储器)的状态,以便确定存储器的状态。内核操作也可提供存储器可用性或低存储器水平的通知。在一个实施方案中,关于系统是否具有低存储器的确定可在整个存储器缩减过程中反复执行,以便确定是否已释放足够的存储器用于进一步的使用,并且这在图4A中示出,其中操作405和415和425和435在存储器操作也正在被执行期间在整个过程中被执行。该存储器管理过程可在操作401处开始,其前进到在操作405中测试存储器的状态。如果可用存储器足够高,则过程在某个时间点重复以测试存储器的状态;另一方面,如果基于一个或多个基准或其他类型的阈值确定可用存储器低,则前进到操作410,其中在一个实施方案中,所有高水位线侵犯方都被终止。在一个实施方案中,该侵犯方是已接收到存储器过度使用的先前通知的那些进程,并且可以是已接收到该通知的空闲的应用程序或后台应用程序。此类侵犯方的终止可释放在操作415中再次被测试的可用存储器。如果存储器仍然低,则前进到操作420,其中存储器压力通知被发送至所有应用程序,所有应用程序被给予机会执行存储器缩减操作(诸如例如删除高速缓存)和可释放存储器以增大可用存储器的其他操作。在操作420中发送通知之后,可用存储器在操作425中被再次测试。如果可用存储器不再低,则方法返回到操作401;否则,如果可用存储器仍然低,则系统在操作430中基于应用程序的优先级而终止空闲的应用程序、暂停的应用程序和后台应用程序。图5示出了优先级的分级结构的示例。该优先级可基于进程或应用程序的使用的新近性或应用程序对用户的重要性的其他指示。在操作430之后,该系统然后可在操作435中再次确定存储器的状态,并且如果存储器仍然低,则可执行操作440,其中各种存储器联合基于用于对联合进行排序的一组一个或多个规则来排序。在一个实施方案中,该联合可基于存储器使用占用量来排序。在一个实施方案中,该存储器联合被用于前台应用程序,而图4A中的在先操作已结合空闲的应用程序或暂停的应用程序或后台应用程序而被执行(并且还未结合前台应用程序被执行)。该存储器联合基于一个或多个规则的排序可允许系统选择一个或多个存储器联合以用于进一步的存储器使用缩减操作,如操作445中所示的。例如,系统可选择具有最大存储器使用占用量的存储器联合。该系统然后可在操作450中选择目标进程类别,诸如所选择的存储器联合内的进程角色。在一个实施方案中,该进程角色被用于以优先级次序对进程进行排列。例如,该系统可选择所选择的存储器联合内的未知进程角色,并开始终止那个所选择的存储器联合内的所有未知的进程。例如,在操作455中,该系统可基于所选择的存储器联合内的所选择的进程类别中的最大占用量来终止目标进程。然后在操作460中,该系统可确定存储器水平是否仍然太低,并且然后可要么如果主进程还未被终止则继续对同一所选择的存储器联合进行操作,要么如果该存储器联合中的主进程尚未被终止则前进到同一存储器联合内的其他进程。在一个实施方案中,各种进程类别或角色确定终止进程的顺序或次序。例如,在一个实施方案中,未知进程在所选择的存储器联合内首先被终止,并且然后扩展进程在所选择的存储器联合内其次被终止,并且然后XPC服务进程在所选择的存储器联合内其次被终止,并且最后所选择的存储器联合中的主应用程序被终止。
在一个实施方案中,在对前台应用程序进行操作之前可对空闲的应用程序或暂停的应用程序或后台应用程序执行在图4A中所示的操作,并且前台应用程序根据其存储器联合尺寸而被处理。对该存储器缩减操作的处理可考虑各种优先级等级,诸如在图5中所示的分级结构。在这个分级结构中,空闲的应用程序将在后台应用程序被终止之前被终止,并且后台应用程序将在扩展被终止之前被终止。最后,扩展将在前台应用程序被终止之前被终止,并且对前台应用程序的存储器缩减操作的处理以本文所述的方式基于各种前台应用程序的存储器联合。
图6示出了可与本文所述的任一个实施方案一起使用的数据处理系统的一个示例。需注意,虽然图6示出了数据处理系统的各种部件,但它并不旨在表示使这些部件互连的任何特定架构或方式,因为此类细节与本说明书并无密切关系。还应理解,具有更少部件或可能更多部件的网络计算机、平板计算机、消费电子设备以及其他数据处理系统也可与本文所述的一个或多个实施方案一起使用。
如图6所示,数据处理系统形式的计算机系统800包括耦接到一个或多个微处理器805和ROM(只读存储器)807和易失性RAM 809和非易失性存储器811的总线803。该微处理器805耦接到可选高速缓存804。该微处理器805可从存储器807,809和811中一个或多个存储器检索所存储的指令并执行挂指令以执行上述操作。这些存储器代表可存储或包含在被执行时使得数据处理系统执行本文所述的一个或多个方法的计算机程序指令的机器可读非暂态存储介质的示例。该总线803将这各种部件互连在一起,并且还将这些部件805,807,809和811互连至显示控制器和显示设备813,以及互连至外围设备诸如输入/输出(I/O)设备815,该输入/输出(I/O)设备可以是以下各项中的一者或多者:鼠标、触摸屏、触摸板、触敏输入设备、键盘、调制解调器、网络接口、打印机、和本领域熟知的其他设备。通常,该输入/输出设备815通过输入/输出控制器817而被耦接到系统。该易失性RAM(随机存取存储器)809通常被实现为需要连续供电以刷新或保持存储器中的数据的动态RAM(DRAM)。
该海量存储装置811通常为即使在系统断电后也保持数据(例如,大量数据)的磁性硬盘驱动器、或磁光驱动器、或光驱、或DVD RAM、或闪存存储器、或其他类型的存储器系统。通常,该海量存储装置811也可以是随机存取存储器,虽然这并非是必需的。虽然图6显示该海量存储装置811为直接耦接到数据处理系统中的其余部件的本地设备,但应当理解,一个或多个实施方案可利用远离系统的非易失性存储器,诸如通过网络接口诸如调制解调器或以太网接口或无线网络而被耦接到数据处理系统的网络存储设备。该总线803可包括通过本领域熟知的各种桥接器、控制器和/或适配器相互连接的一个或多个总线。
在上述说明书中,已描述特定示例性实施方案。显而易见的是,可在不脱离以下权利要求所给出的更广泛的实质和范围的情况下对那些实施方案作出各种修改。因此,说明书和附图应被认为是出于示例性目的而非限制目的。

Claims (24)

1.一种存储可执行程序指令的非暂态机器可读存储介质,所述可执行程序指令当由数据处理系统执行时使得所述数据处理系统执行一种方法,所述方法包括:
将第一进程作为第一主应用程序来执行;
响应于第二进程的启动而确定所述第二进程是否应为包括所述第一主应用程序的第一存储器联合的一部分;
响应于确定所述第二进程应为所述第一存储器联合的一部分而将所述第二进程添加到所述第一存储器联合;
确定所述数据处理系统中的可用存储器低;
响应于确定可用存储器低而确定由包括所述第一存储器联合的一组一个或多个存储器联合中的每个存储器联合所使用的存储器的量;
响应于确定所述第一存储器联合比所述一组存储器联合中的其他存储器联合使用更多的存储器而对所述第一存储器联合执行一个或多个存储器使用缩减操作,以增大可用存储器的量。
2.根据权利要求1所述的介质,其中所述可用存储器包括动态随机存取存储器DRAM,并且其中每个存储器联合包括主应用程序和从其他主应用程序的软件实例化的相关联的一个或多个进程,并且其中所述第二进程从第二主应用程序的软件实例化并且在与所述第一进程在其中操作的第一沙箱分开且不同的第二沙箱中操作。
3.根据权利要求2所述的介质,其中在对一个或多个前台应用程序的存储器联合执行存储器使用缩减操作之前,对后台主应用程序或其他后台进程执行存储器使用缩减操作。
4.根据权利要求3所述的介质,其中每个存储器联合具有联合标识符,并且其中当所述第二进程通过用于指定所述第一存储器联合的所述联合标识符的调用而被启动时,所述第二进程被确定为所述第一存储器联合的一部分。
5.根据权利要求4所述的介质,其中在所述第一主应用程序被启动时,所述第一主应用程序被分配所述第一存储器联合的所述联合标识符,并且其中在所述存储器使用缩减操作被执行时所述第一主应用程序为前台应用程序。
6.根据权利要求5所述的介质,其中在应用程序的用户界面被呈现在显示器上时该应用程序为前台应用程序,并且其中对后台应用程序执行存储器缩减操作,而不考虑由包含那些后台应用程序的存储器联合所使用的存储器的量。
7.根据权利要求1所述的介质,其中所述第一进程为守护进程,并且其中所述第二进程从应用程序的软件实例化,并且所述第二进程在与所述第一进程在其中操作的第一沙箱分开且不同的第二沙箱中操作。
8.根据权利要求1所述的介质,其中所述第二进程从来自以下的软件实例化:(1)由操作系统所提供的软件库或(2)设置有所述第一主应用程序的辅助软件。
9.根据权利要求1所述的介质,其中所述第二进程从存储在非易失性存储装置中的软件的镜像实例化并且在与所述第一进程在其中操作的第一沙箱分开且不同的第二沙箱中操作,并且其中所述第一沙箱和所述第二沙箱中的每一个使用以下各项中的一者或多者:(a)针对沙箱化进程指定非易失性存储器中的被允许和可访问的存储位置的一个或多个容器目录,使得非易失性存储器中的其他存储位置不能被所述沙箱化进程访问;(b)指定沙箱化进程被允许使用和不允许使用哪些硬件资源或软件资源的权利;或(c)指定所述沙箱化进程能访问的存储器位置的存储器空间特权,使得其他存储器位置不能被所述沙箱化进程访问。
10.根据权利要求9所述的介质,其中所述一组存储器联合中的每个存储器联合具有仅一个主应用程序和一个或多个辅助进程,所述第二进程为辅助进程,并且其中每个辅助进程在其整个生命周期中属于仅一个存储器联合,并且其中当存储器联合中的主应用程序终止时,所述存储器联合中的所有辅助进程也终止,并且其中当应用程序被用于对用于多于一个存储器联合的辅助进程进行实例化时,针对所述多于一个存储器联合中的每个存储器联合,实例化所述辅助进程的独特实例。
11.根据权利要求1所述介质,其中存储器联合内的进程被分组到各自具有指定实施存储器缩减操作的次序的相对优先级的类别中,使得所选择的存储器联合内的一个类别中的进程在终止所选择的存储器联合内的另一类别中的进程之前被终止,并且其中所选择的存储器联合中的所述主应用程序的进程为所述存储器联合中要被终止的最后的进程。
12.一种机器实现的方法,包括:
将第一进程作为第一主应用程序来执行;
响应于第二进程的启动而确定所述第二进程是否应为包括所述第一主应用程序的第一存储器联合的一部分;
响应于确定所述第二进程应为所述第一存储器联合的一部分而将所述第二进程添加到所述第一存储器联合;
确定数据处理系统中的可用存储器低;
响应于确定可用存储器低而确定由包括所述第一存储器联合的一组一个或多个存储器联合中的每个存储器联合所使用的存储器的量;
响应于确定所述第一存储器联合比所述一组存储器联合中的其他存储器联合使用更多的存储器而对所述第一存储器联合执行一个或多个存储器使用缩减操作,以增大可用存储器的量。
13.根据权利要求12所述的方法,其中所述可用存储器包括动态随机存取存储器DRAM,并且其中每个存储器联合包括主应用程序和从其他主应用程序的软件实例化的相关联的一个或多个进程,并且其中所述第二进程从第二主应用程序的软件实例化并且在与所述第一进程在其中操作的第一沙箱分开且不同的第二沙箱中操作。
14.根据权利要求13所述的方法,其中在对一个或多个前台应用程序的存储器联合执行存储器使用缩减操作之前,对后台主应用程序或其他后台进程执行存储器使用缩减操作。
15.根据权利要求14所述的方法,其中每个存储器联合具有联合标识符,并且其中当所述第二进程通过用于指定所述第一存储器联合的所述联合标识符的调用而被启动时,所述第二进程被确定为所述第一存储器联合的一部分。
16.根据权利要求15所述的方法,其中在所述第一主应用程序被启动时,所述第一主应用程序被分配所述第一存储器联合的所述联合标识符,并且其中在所述存储器使用缩减操作被执行时所述第一主应用程序为前台应用程序。
17.根据权利要求16所述的方法,其中在应用程序的用户界面被呈现在显示器上时该应用程序为前台应用程序,并且其中对后台应用程序执行存储器缩减操作,而不考虑由包含那些后台应用程序的存储器联合所使用的存储器的量。
18.根据权利要求12所述的方法,其中所述第一进程为守护进程,并且其中所述第二进程从应用程序的软件实例化,并且所述第二进程在与所述第一进程在其中操作的第一沙箱分开且不同的第二沙箱中操作。
19.根据权利要求12所述的方法,其中所述第二进程从来自以下的软件实例化:(1)由操作系统所提供的软件库或(2)设置有所述第一主应用程序的辅助软件。
20.根据权利要求12所述的方法,其中所述第二进程从存储在非易失性存储装置中的软件的镜像实例化并且在与所述第一进程在其中操作的第一沙箱分开且不同的第二沙箱中操作,并且其中所述第一沙箱和所述第二沙箱中的每一个使用以下各项中的一者或多者:(a)针对沙箱化进程指定非易失性存储器中的被允许和可访问的存储位置的一个或多个容器目录,使得非易失性存储器中的其他存储位置不能被所述沙箱化进程访问;(b)指定沙箱化进程被允许使用和不允许使用哪些硬件资源或软件资源的权利;或(c)指定所述沙箱化进程能访问的存储器位置的存储器空间特权,使得其他存储器位置不能被所述沙箱化进程访问。
21.根据权利要求20所述的方法,其中所述一组存储器联合中的每个存储器联合具有仅一个主应用程序和一个或多个辅助进程,所述第二进程为辅助进程,并且其中每个辅助进程在其整个生命周期中属于仅一个存储器联合,并且其中当存储器联合中的主应用程序终止时,所述存储器联合中的所有辅助进程也终止,并且其中当应用程序被用于对用于多于一个存储器联合的辅助进程进行实例化时,针对所述多于一个存储器联合中的每个存储器联合,实例化所述辅助进程的独特实例。
22.根据权利要求12所述方法,其中存储器联合内的进程被分组到各自具有指定实施存储器缩减操作的次序的相对优先级的类别中,使得所选择的存储器联合内的一个类别中的进程在终止所选择的存储器联合内的另一类别中的进程之前被终止,并且其中所选择的存储器联合中的所述主应用程序的进程为所述存储器联合中要被终止的最后的进程。
23.一种数据处理系统,包括:
一个或多个处理器;以及
存储器,其上存储有计算机指令,所述计算机指令当被所述一个或多个处理器执行时实现根据权利要求12至22中任一项所述的方法。
24.一种数据处理系统,包括:用于执行根据权利要求12至22中任一项所述的方法的装置。
CN201680019206.6A 2015-04-08 2016-03-17 基于联合的存储器管理 Active CN107430549B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011221242.5A CN112347004A (zh) 2015-04-08 2016-03-17 基于联合的存储器管理

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/681,364 US9465734B1 (en) 2015-04-08 2015-04-08 Coalition based memory management
US14/681,364 2015-04-08
PCT/US2016/022987 WO2016164155A1 (en) 2015-04-08 2016-03-17 Coalition based memory management

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202011221242.5A Division CN112347004A (zh) 2015-04-08 2016-03-17 基于联合的存储器管理

Publications (2)

Publication Number Publication Date
CN107430549A CN107430549A (zh) 2017-12-01
CN107430549B true CN107430549B (zh) 2020-10-13

Family

ID=55699809

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202011221242.5A Pending CN112347004A (zh) 2015-04-08 2016-03-17 基于联合的存储器管理
CN201680019206.6A Active CN107430549B (zh) 2015-04-08 2016-03-17 基于联合的存储器管理

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202011221242.5A Pending CN112347004A (zh) 2015-04-08 2016-03-17 基于联合的存储器管理

Country Status (4)

Country Link
US (1) US9465734B1 (zh)
KR (1) KR101971389B1 (zh)
CN (2) CN112347004A (zh)
WO (1) WO2016164155A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112347004A (zh) * 2015-04-08 2021-02-09 苹果公司 基于联合的存储器管理

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10581687B2 (en) 2013-09-26 2020-03-03 Appformix Inc. Real-time cloud-infrastructure policy implementation and management
US10291472B2 (en) 2015-07-29 2019-05-14 AppFormix, Inc. Assessment of operational states of a computing environment
US9690685B2 (en) 2014-05-30 2017-06-27 Apple Inc. Performance management based on resource consumption
US11068314B2 (en) * 2017-03-29 2021-07-20 Juniper Networks, Inc. Micro-level monitoring, visibility and control of shared resources internal to a processor of a host machine for a virtual environment
US11323327B1 (en) 2017-04-19 2022-05-03 Juniper Networks, Inc. Virtualization infrastructure element monitoring and policy control in a cloud environment using profiles
US10649889B2 (en) 2017-06-04 2020-05-12 Apple Inc. Method and apparatus for managing kernel memory of data processing systems
US11240207B2 (en) 2017-08-11 2022-02-01 L3 Technologies, Inc. Network isolation
US11601467B2 (en) 2017-08-24 2023-03-07 L3 Technologies, Inc. Service provider advanced threat protection
US11178104B2 (en) 2017-09-26 2021-11-16 L3 Technologies, Inc. Network isolation with cloud networks
US11184323B2 (en) * 2017-09-28 2021-11-23 L3 Technologies, Inc Threat isolation using a plurality of containers
US11223601B2 (en) 2017-09-28 2022-01-11 L3 Technologies, Inc. Network isolation for collaboration software
US11552987B2 (en) 2017-09-28 2023-01-10 L3 Technologies, Inc. Systems and methods for command and control protection
US11374906B2 (en) 2017-09-28 2022-06-28 L3 Technologies, Inc. Data exfiltration system and methods
US11336619B2 (en) 2017-09-28 2022-05-17 L3 Technologies, Inc. Host process and memory separation
US11550898B2 (en) 2017-10-23 2023-01-10 L3 Technologies, Inc. Browser application implementing sandbox based internet isolation
US11170096B2 (en) 2017-10-23 2021-11-09 L3 Technologies, Inc. Configurable internet isolation and security for mobile devices
US11120125B2 (en) 2017-10-23 2021-09-14 L3 Technologies, Inc. Configurable internet isolation and security for laptops and similar devices
US10852968B2 (en) 2018-05-07 2020-12-01 Apple Inc. Techniques for managing memory allocation within a storage device to improve operation of a camera application

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1595363A (zh) * 2003-05-09 2005-03-16 太阳微系统公司 在操作系统分区内的进程间通信
CN104102537A (zh) * 2013-04-07 2014-10-15 华为技术有限公司 一种应用调用方法及用户终端
CN104252389A (zh) * 2013-06-27 2014-12-31 腾讯科技(深圳)有限公司 应用程序运行方法、系统及应用程序

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275857B1 (en) 1996-10-30 2001-08-14 Microsoft Corporation System and method for freeing shared resources in a computer system
US7024512B1 (en) * 1998-02-10 2006-04-04 International Business Machines Corporation Compression store free-space management
DE60316783T2 (de) 2003-06-24 2008-07-24 Research In Motion Ltd., Waterloo Erkennung von Speichermangel und Feinabschaltung
US20060230246A1 (en) * 2005-04-08 2006-10-12 Mather Clifford J Memory allocation technique using memory resource groups
US7552293B2 (en) 2006-02-28 2009-06-23 Red Hat, Inc. Kernel and application cooperative memory management
US7827358B2 (en) 2007-01-07 2010-11-02 Apple Inc. Memory management methods and systems
US8850154B2 (en) 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US8381288B2 (en) 2008-09-30 2013-02-19 Intel Corporation Restricted component access to application memory
US8826269B2 (en) 2009-06-15 2014-09-02 Microsoft Corporation Annotating virtual application processes
US8850572B2 (en) 2010-01-15 2014-09-30 Apple Inc. Methods for handling a file associated with a program in a restricted program environment
US8635630B2 (en) 2010-10-25 2014-01-21 Microsoft Corporation Application lifetime management
US8892827B2 (en) * 2011-01-07 2014-11-18 Apple Inc. Cooperative memory management
US9043480B2 (en) * 2011-10-11 2015-05-26 Citrix Systems, Inc. Policy-based application management
US9002929B2 (en) * 2012-03-02 2015-04-07 Fisher Controls International Llc Methods and apparatus to reduce memory requirements for process control system software applications
US8990534B2 (en) 2012-05-31 2015-03-24 Apple Inc. Adaptive resource management of a data processing system
US9286120B2 (en) 2012-06-08 2016-03-15 Apple Inc. Resource management with dynamic resource budgeting
US20140122614A1 (en) * 2012-11-01 2014-05-01 F-Secure Corporation Cooperation In An Application Store Environment
KR101999132B1 (ko) * 2012-12-17 2019-10-01 삼성전자주식회사 가상 머신 환경에서 메모리 관리 방법 및 장치
US9207972B2 (en) * 2013-03-14 2015-12-08 International Business Machines Corporation Meta-application management in a multitasking environment
EP2782007A1 (en) * 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Launching multiple applications in containers on a processor
US9588897B2 (en) * 2013-07-19 2017-03-07 Samsung Electronics Co., Ltd. Adaptive application caching for mobile devices
US9465734B1 (en) * 2015-04-08 2016-10-11 Apple Inc. Coalition based memory management

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1595363A (zh) * 2003-05-09 2005-03-16 太阳微系统公司 在操作系统分区内的进程间通信
CN104102537A (zh) * 2013-04-07 2014-10-15 华为技术有限公司 一种应用调用方法及用户终端
CN104252389A (zh) * 2013-06-27 2014-12-31 腾讯科技(深圳)有限公司 应用程序运行方法、系统及应用程序

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112347004A (zh) * 2015-04-08 2021-02-09 苹果公司 基于联合的存储器管理

Also Published As

Publication number Publication date
KR20170132296A (ko) 2017-12-01
US20160299840A1 (en) 2016-10-13
CN107430549A (zh) 2017-12-01
KR101971389B1 (ko) 2019-04-22
CN112347004A (zh) 2021-02-09
US9465734B1 (en) 2016-10-11
WO2016164155A1 (en) 2016-10-13

Similar Documents

Publication Publication Date Title
CN107430549B (zh) 基于联合的存储器管理
CN113835895B (zh) 用于具有不同能力的核心的线程和/或虚拟机调度
US11243816B2 (en) Program execution on heterogeneous platform
US9135079B2 (en) Dynamically assigning a portion of physical computing resource to logical partitions based on characteristics of executing logical partitions
US8904386B2 (en) Running a plurality of instances of an application
TWI574202B (zh) 用於新應用程式之記憶體管理模型與介面
US8843894B2 (en) Preferential execution of method calls in hybrid systems
US20130346985A1 (en) Managing use of a field programmable gate array by multiple processes in an operating system
KR20180069807A (ko) 동기화를 리매핑하는 것에 의한 태스크 서브그래프들의 가속화
US9286199B2 (en) Modifying memory space allocation for inactive tasks
US20210200668A1 (en) Reserved memory in memory management system
CN108205469B (zh) 一种基于MapReduce的资源分配方法及服务器
US8984542B2 (en) Method and system for binding objects in dynamic programming languages using caching techniques
KR101751515B1 (ko) 테스트 실행 장치, 방법 및 컴퓨터 프로그램
US11994988B2 (en) Multi-ring shared, traversable, and dynamic advanced database
CN113741991B (zh) 提升ssd服务质量方法、装置、计算机设备和存储介质
US9535713B2 (en) Manipulating rules for adding new devices
KR102443089B1 (ko) 컴퓨팅 디바이스에서의 동기화
CN112214287A (zh) 应用软件的业务控制方法及装置、电子设备
TW201942741A (zh) 資訊處理裝置、控制方法及程式產品
CN104461636A (zh) 一种皮肤资源加载方法及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant