CN106406984A - 存储器空间预备方法及装置 - Google Patents
存储器空间预备方法及装置 Download PDFInfo
- Publication number
- CN106406984A CN106406984A CN201610352048.8A CN201610352048A CN106406984A CN 106406984 A CN106406984 A CN 106406984A CN 201610352048 A CN201610352048 A CN 201610352048A CN 106406984 A CN106406984 A CN 106406984A
- Authority
- CN
- China
- Prior art keywords
- subprocess
- preparation
- storage space
- mother
- shared memory
- 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.)
- Withdrawn
Links
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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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 the resource being the memory
-
- 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
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供至少一种存储器空间预备方法及装置,其中一种存储器空间预备方法,包含:分析母进程的多个子进程的存储器使用数据;以及至少部分基于所述分析,确定所述母进程是否预备共享存储器空间以供至少一第一子进程使用。本发明的优点之一在于可提高存储器使用的效率,避免或减少在计算时间和电力上的浪费。
Description
技术领域
本发明是有关于在计算领域的存储器使用(memory usage),更具体地,是有关于自适应的存储器预备(memory preparation)方法及装置。
背景技术
一些计算机操作系统(例如Linux)中的应用进程,通常使用母进程(parentprocess)及其子进程(child processes)的存储器共享(memory sharing)方案。例如,图8为传统方法800的方案示意图,在图8中,母进程810预备存储器空间830,母进程810所创建的子进程820使用或共享存储器空间830。由于母进程810所预备的存储器空间830被子进程820所使用/共享,因此,共享存储器只存在一份副本(copy)(例如,母进程810所预备的存储器空间830),并在存储器装置中占据实际空间,这是因为子进程820不需要预备分离的存储器空间(例如,非共享的存储器空间840)来自用,其中,存储器装置可例如随机存取存储器(Random-Access Memory,RAM)。图9为另一传统方法900的方案示意图。在方案910中,母进程创建多个子进程,且母进程预备多个存储器空间的并集(union set),以供多个子进程使用。然而,如方案920所示,当创建的子进程的数量较少时,母进程所预备的一些存储器空间可能用不到,这将造成存储器的使用浪费。另外,由于这会花费计算时间和电力来预备每个存储器空间,因此,无用的存储器空间也意味着计算时间和电力的浪费。
发明内容
有鉴于此,本发明提供至少一种存储器空间预备方法及装置。
根据本发明一实施例的存储器空间预备方法,包含:分析母进程的多个子进程的存储器使用数据;以及至少部分基于所述分析,确定所述母进程是否预备共享存储器空间以供至少一第一子进程使用。
根据本发明另一实施例的存储器空间预备方法,包含:收集母进程的多个子进程的存储器使用数据;确定启动所述多个子进程中的第一子进程的需求;启动所述母进程,所述母进程启动所述第一子进程,在所述母进程在启动时不预备供至少所述第一子进程所共享的共享存储器空间的情况下,所述第一子进程预备第一存储空间,以供所述第一子进程使用;分析收集到的所述多个子进程的所述存储器使用数据;以及至少部分基于所述分析,确定是否预备所述共享存储器空间。
根据本发明一实施例的存储器空间预备装置,包含:使用收集模块,用于维护(maintain)母进程的多个子进程的存储器使用数据的记录以及所述多个子进程中的任意子进程是否将要启动的记录;存储器预备模块,用于预备与所述母进程有关的存储器空间;判决模块,用于根据所述使用收集模块所维护的所述记录,适应性地决定是否需要预备共享存储器空间;以及控制模块,用于当确定所述多个子进程中的至少一子进程将要启动时,启动所述母进程。
本发明所提供的至少一种存储器空间预备方法及装置,其优点之一在于可提高存储器使用的效率,避免或减少在计算时间和电力上的浪费。
附图说明
图1为根据本发明一实施例的示例方案100的示意图。
图2为根据本发明一实施例的示例装置200的示意图。
图3为根据本发明一实施例的示例装置300的示意图。
图4为根据本发明一实施例的示例算法400的示意图。
图5为根据本发明一实施例的示例流程500的示意图。
图6为根据本发明另一实施例的示例流程600的示意图。
图7为根据本发明一实施例的示例流程700的示意图。
图8为传统方法800的方案示意图。
图9为另一传统方法900的方案示意图。
具体实施方式
在说明书及权利要求当中使用了某些词汇来指称特定的组件。本领域技术人员应可理解,硬件制造商可能会用不同的名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在通篇说明书及权利要求当中所提及的“包含”及“包括”为一开放式的用语,故应解释成“包含但不限定于”。“大致”是指在可接受的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性连接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表该第一装置可直接电性连接于该第二装置,或通过其它装置或连接手段间接地电性连接至该第二装置。“连接”一词在此包含任何直接及间接、有线及无线的连接手段。以下所述为实施本发明的较佳方式,目的在于说明本发明的精神而非用以限定本发明的保护范围,本发明的保护范围当视后附的权利要求所界定者为准。
在根据本说明书的多种实施方式中,确定是否预备共享存储空间以供母进程的一个或多个子进程使用的步骤,可根据母进程的多个子进程的存储器使用的数据记录来决定。举例而言,若该记录指示正在运行的子进程的数量小于阈值(例如,K1),那么母进程可以不预备共享存储空间。换言之,母进程可启动或者创建一个或多个子进程,而不为该一个或多个子进程预备共享存储器空间来使用,以及因此,该一个或多个子进程中的每个可预备各自的非共享存储器空间以供自身使用。然而在另一实施例中,当记录指示存在数量超过阈值(K1)的子进程运行了已达至少阈值(例如K2)的时间量时,那么母进程可预备存储器空间以共享使用。在又一实施例中,若记录指示数量少于阈值(K1)的子进程运行了少于阈值(K2)的时间量时,那么母进程可不预备共享使用的存储器空间。时间量的阈值(K2)可以是0或任意其它数值。母进程可在启动子进程之前,期间或之后来预备共享使用的存储器空间。在一些实施方式中,除非子进程将要被启动,母进程可不启动,相应地,当没有子进程运行时,可停止母进程。换言之,当不需要运行子进程时,母进程可停止,直至其子进程中的任意一个将要启动,此时母进程可因为该子进程而启动,或者母进程创建启动所需的子进程。在一些实施方式中,当没有存储器使用的数据记录时,母进程可不预备供该一个或多个子进程使用的共享存储器空间,因此,当被启动时,该一个或多个子进程中的每个可预备各自的非共享存储器空间以供自身使用。
图1为根据本发明一实施例的示例方案100的示意图。方案100可包含一个或多个操作、活动及/或阶段,如阶段110,120,130,140,150和160。尽管显示为分离的阶段,根据实施需求,方案100的各种阶段可划分为额外的子阶段,组合为更少的阶段或者进行省略。根据实际实施及/或需求,这些阶段可依照与图1所示的顺序相同或不同的顺序执行。方案100的多个阶段可在处理器中执行,处理器可例如但不仅限于中央处理单元(CPU),其中,处理器可执行或运行操作系统(Operating System,OS)。操作系统可以是,例如但不仅限于,Linux,Unix或任意多任务操作系统,操作系统可启动或创建母进程,而母进程可启动或创建一个或多个子进程。
在阶段110,最开始母进程不启动。在阶段120,当需要启动子进程时,可启动母进程。与传统方法中母进程预备一个或多个存储器空间而不论子进程的状态不同,在阶段120中的母进程可不自动预备供任何子进程使用的存储器空间。在阶段130,母进程启动或创建子进程。同样,与传统方法不同,此处在方案100的阶段130中的母进程仍可不预备供子进程使用的存储器空间。相应地,子进程可预备非共享存储器空间,以供子进程自身使用。
根据本说明书,存储器使用的数据可被维护或收集,并可包含多个子进程中有多少子进程同时运行多久的数据。在一些实施方式中,存储器使用的数据可包含一个或多个额外类型的数据,例如但不仅限于以下类型的数据:母进程所预备的存储器空间被使用多少次,母进程所预备的存储器空间的使用频率,同一存储器空间或片段(segment)是否被多个子进程中多于一个子进程存取,多个子进程中是否多于一个子进程需要相同类型的数据,以及/或者指示存储器片段应在多个子进程中的多于一个子进程之间共享的数据。在阶段140,当母进程的多个子进程的存储器使用的数据指示在被母进程启动之后已同时执行/运行的子进程的数量少于阈值(例如,K1)时,母进程可不预备供母进程启动的一个或多个子进程使用的共享存储器空间。在阶段150,当母进程的子进程的存储器使用的数据指示当被母进程启动后数量多于K1的子进程已同时执行/运行至少K2秒时,母进程可预备一个或多个共享存储器空间。K2可以是0或者任意其它数值。母进程可在启动子进程之前,期间或之后预备一个或多个共享存储器空间。在一些实施例中,当存储器使用的数据指示有少于K1数量的子进程运行少于K2秒,那么子进程可不预备共享使用的存储器空间。在一些实施例中,当没有存储器使用的数据记录时,母进程可不预备供该一个或多个子进程使用的共享存储器空间,因此,当被启动时,该一个或多个子进程中的每个可预备各自的非共享存储器空间以供自身使用。在阶段160,当所有的子进程已停止后,可停止母进程。
有利的是,在方案100下,与传统方法有关的上述存储器使用的浪费以及计算时间和电力的浪费可被避免或至少减少。换言之,母进程预备的存储器空间不被一个或多个子进程使用的可能性被降低。确定母进程是否预备供其子进程使用的存储器空间可取决于存储器使用的数据,而存储器使用的数据可根据近期存储器的使用状况更新以新的数据。这使得对存储器预备的判决具备可预测性和适应性。此外,由于母进程可在无需其子进程时停止,因此方案100也可改善整体的省电性能。
图2为根据本发明一实施例的示例装置200的示意图。装置200可执行多种功能来实施多种技术、方案及此处所述的方法,包括上述方案100以及下文所述算法400和流程500、600。在一些实施方式中,装置200可实施为单集成电路(Integrated-Circuit,IC)芯片或多IC芯片的芯片组(chipset)。例如,装置200可以是CPU或专用集成电路(Application-Specific Integrated Circuit,ASIC),可安装于诸如智能电话,智能手表,计算机装置(例如,平板电脑,膝上型电脑,笔记本电脑等),可穿戴式装置或物联网(Internet Of Things,LOT)装置等。装置200可至少包含图2所示的这些元件,如使用收集模块210,存储器预备模块220,判决模块230和控制模块240。使用收集模块210、存储器预备模块220、判决模块230和控制模块240中的每一个可实施为硬件、软件、中间件(middleware)、固件(firmware)或其任意组合。举例而言,收集模块210、存储器预备模块220、判决模块230和控制模块240中的至少一个可实施为软件。在另一实施例中,收集模块210、存储器预备模块220、判决模块230和控制模块240中的至少一个可实施为硬件。
使用收集模块210可用于维护母进程的多个子进程的存储器使用数据的记录,以及多个子进程中的任意子进程是否将要启动的记录。在一些实施方式中,存储器使用数据的记录可指示多个子进程中有多少子进程同时运行多久。在一些实施方式中,存储器使用数据的记录可包含一个或多个额外类型的数据,例如但不仅限于以下类型的数据:母进程预备的存储器空间被使用了多少次,母进程预备的存储器空间的使用频率,同一存储器空间或片段是否被多个子进程中的多于一个子进程存取,多个子进程中是否有多于一个子进程需要同一类数据,以及/或者指示存储器片段应在多个子进程的多于一个子进程之间共享的数据。存储器预备模块220可用于预备与母进程有关的存储器空间。判决模块230可用于根据使用收集模块210所维护的记录,适应性地决定是否需要预备共享存储器空间。控制模块240可用于启动母进程。在一些实施例中,当控制模块240确定多个子进程中的至少一个子进程将要启动时,可启动母进程。在一些实施例中,当确定所有子进程已停止时,控制模块240可停止母进程。
在一些实施方式中,控制模块240可用于确定启动多个子进程中的第一子进程的需求。举例而言,控制模块240可在启动母进程之前确定需要启动第一子进程。在另一实施例中,当母进程正在启动或者当母进程启动之后,控制模块240可确定需要启动第一子进程。在又一实施例中,控制模块240可在启动母进程之前,当母进程正在启动时,或者启动母进程之后接收指示需要启动第一子进程的信号。控制模块240也可用于启动用于启动第一子进程的母进程,该母进程不预备供至少第一子进程共享的共享存储器空间,以便第一子进程预备第一存储器空间以供自身使用。另外,控制模块240也可用于在启动第一子进程之外另外启动多个子进程中的一个或多个子进程,而母进程不预备共享存储器空间,以便该一个或多个子进程中的每个预备各自的存储器空间以供自身使用。在一些实施例中,控制模块240可进一步用于在第一子进程和该一个或多个子进程中的每个停止之后停止母进程。
在一些实施例中,当第一子进程的数量加上一个或多个子进程的数量超过第一数量阈值(例如,K1),以及第一子进程和一个或多个子进程同时运行的时间量超过第二时间量阈值(例如,K2)时,判决模块230可用于触发存储器预备模块220来预备共享存储器空间,以供两个或两个以上第一子进程和该一个或多个子进程所共享。在一些实施例中,当使用收集模块210维护的记录指示少于第一数量阈值(例如,K1)的子进程运行时间量少于第二时间量阈值(例如,K2),那么判决模块230可确定不预备共享使用的存储器空间。在一些实施例中,当没有存储器使用的数据记录时,母进程可不预备供一个或多个子进程使用的共享存储器空间,因此,当每个子进程启动时,该一个或多个子进程中的每个可预备各自的非共享存储器空间以供自身使用。
在一些实施例中,根据使用收集模块210所维护的记录,判决模块230可用于适应性地决定是否需要预备共享存储器空间。例如,基于收集到的存储器使用数据,判决模块230可确定该记录是否指示多个子进程中的至少第一数量阈值(例如,K1)的子进程已同时运行时间量已达至少第二时间量阈值(例如,K2)。此外,基于收集到的存储器使用数据,当记录指示多个子进程中至少第一数量阈值的子进程已同时运行时间已达至少第二时间量阈值时,判决模块230可进一步用于触发存储器预备模块来预备共享存储器空间,以供至少第一子进程共享。
图3为根据本发明一实施例的示例装置300的示意图。装置300可执行多种功能来实施多种技术、方案及此处所述的方法,包括上述方案100以及下文所述算法400和流程500、600。在一些实施方式中,装置300可以是电子装置,例如但不仅限于计算机装置,便携式装置或可穿戴式装置。例如,装置300可以是智能电话,智能手表,计算机装置(例如,平板电脑,膝上型电脑,笔记本电脑等),可穿戴式装置或物联网装置等。装置300可至少包含图3所示的这些元件,如一个或多个处理器310和耦接于处理器310的存储器装置320。存储器装置可包含一个或多个计算机可读介质,例如只读存储器(ROM)类型或随机存取存储器(RAM)等。举例而言,存储器装置320可包含动态随机存取存储器(DRAM),静态随机存取存储器(SRAM),闸流管随机存取存储器(Thyristor RAM,T-RAM),零电容随机存取存储器(Zero-capacitor RAM,Z-RAM)或其它类型的易失性存储器。在另一实施例中,存储器装置可包含掩膜型只读存储器(mask ROM),可编程只读存储器(Programmable ROM,PROM),可擦除可编程只读存储器(Erasable Programmable ROM,EPROM),电可擦除可编程只读存储器(Electrically-Erasable Programmable ROM,EEPROM),闪存,固态存储器或其它类型的非易失性存储器。
存储器装置320可用于储存多个软件模块,包括使用收集模块322,存储器预备模块324,判决模块326和控制模块328。使用收集模块322、存储器预备模块324、判决模块326和控制模块328中的每一个可以是使用收集模块210、存储器预备模块220、判决模块230和控制模块240以软件形式实施的例子。换言之,一旦被处理器310执行,使用收集模块322,存储器预备模块324,判决模块326和控制模块328可使得处理器310执行类似于关于使用收集模块210、存储器预备模块220、判决模块230和控制模块240的上述操作的操作。因此,简洁起见,有关使用收集模块322,存储器预备模块324,判决模块326和控制模块328的功能描述和详细描述此处加以省略。
图4为根据本发明一实施例的示例算法400的示意图。算法400可包含由一个或多个步骤(例如,步骤410,420,430,440,450,460,470,480和490)所代表的一个或多个操作,活动或功能。尽管显示为分离的步骤,根据实施需求,算法400的多个步骤可划分为额外的步骤,组合为更少的步骤或省略步骤。根据实施需求,算法400的多个步骤可依照与图4所示的顺序相同或不同的顺序来执行。算法400可由装置200及/或装置300来实施。算法400可从步骤410开始。
在步骤410中,可收集母进程的多个子进程的存储器使用的数据(例如,通过装置200的使用收集模块210及/或装置300的使用收集模块322)。在一些实施例中,存储器使用的数据可包含一种或多种数据类型,例如但不仅限于,多个子进程中有多少子进程同时运行多久,母进程预备的存储器空间的使用次数,母进程预备的存储器空间的使用频率,同一存储器空间或片段是否被多个子进程中的多于一个子进程存取,多个子进程中是否有多于一个子进程需要同一类数据,以及/或者指示存储器片段应在多个子进程中的多于一个子进程之间共享的数据。算法400可从步骤410前进至步骤420。
在步骤420中,确定当母进程尚未启动时子进程是否将要启动。该确定可由装置200的控制模块240及/或装置300的控制模块328来作出。当确定在母进程尚未启动时子进程将要启动时,算法400可从步骤420前进至步骤430。否则,算法400可从步骤420前进至步骤470。
在步骤430中,可启动母进程。这可通过装置200的控制模块240及/或装置300的控制模块328来执行。算法400可从步骤430前进至步骤440。
在步骤440中,分析收集到的存储器使用的数据。这可通过装置200的判决模块230及/或装置300的判决模块326来执行。算法400从步骤440前进至步骤450。
在步骤450中,可至少部分基于步骤440中所执行的分析,确定是否预备共享存储空间(例如,由母进程预备共享存储器空间,以供已启动的或者预计将要启动的一个或多个子进程使用)。当确定结果为“是”时,算法400可从步骤450前进至步骤460,否则,算法400可从步骤450前进至步骤490。
在步骤460中,可预备一个或多个存储器空间以供一个或多个子进程共享,该一个或多个子进程为母进程已启动的或将要启动的子进程。共享存储器空间由母进程预备。
在步骤470中,确定母进程的所有子进程是否已停止。当确定结果为“是”时,算法400可从步骤470前进至步骤480,否则,算法400可从步骤470前进至步骤410。
在步骤480中,可停止母进程。
在步骤490中,不预备共享存储器空间。相应地,母进程已启动的或将要启动的该一个或多个子进程中的每个可预备各自的存储器空间以供自身使用。
图5为根据本发明一实施例的示例流程500的示意图。流程500可包含由一个或多个步骤(如步骤510和步骤520)所代表的一个或多个操作,活动或功能。尽管显示为分离的步骤,根据实施需求,流程500的多个步骤可划分为额外的步骤,组合为更少的步骤或省略步骤。根据实施需求,流程500的多个步骤可依照与图5所示的顺序相同或不同的顺序来执行。流程500可由装置200及/或装置300来实施。为说明目的而非限制本发明的范围,下文将以装置300执行流程500为例来说明流程500。流程500可从步骤510开始。
在步骤510中,流程500可包含:装置300的处理器310在母进程启动之前确定启动母进程的多个子进程中的第一子进程的需求。在其它实施例中,流程500可包含:装置300的处理器310在母进程启动期间或者母进程启动之后启动母进程的多个子进程中的第一子进程的需求。在一些实施例中,确定启动第一子进程的需求的步骤可包含:装置300的处理器310主动(actively)检测是否需要启动第一子进程及/或被动(passively)接收指示需要启动第一子进程的信号(例如,从操作系统接收)。这可参考方案100的阶段110和120,在这里母进程和子进程均尚未启动,然后确定启动第一子进程的需求。流程500可从步骤510前进至步骤520。
在步骤520,流程500可包含:装置300的处理器310启动母进程,母进程进而启动第一子进程,母进程不预备供至少所述第一子进程共享的共享存储器空间,因而第一子进程预备第一存储器空间,以供第一子进程自身使用。这可参考方案100的阶段120,130和140,其中,母进程被启动以及母进程启动或者创建第一子进程,母进程不预备供第一子进程使用的共享存储器空间。因此,第一子进程预备第一存储器空间以供自身使用。
在一些实施例中,流程500也可包含:装置300的处理器310除启动第一子进程之外,另外启动多个子进程中的一个或多个子进程,母进程不预备共享存储器空间,因而该一个或多个子进程中的每一个预备各自的存储器空间以供自身使用。另外,流程500也可包含:当第一子进程加上该一个或多个子进程的总数超过第一数量阈值,以及第一子进程和该第一个或多个子进程已同时运行的时间超过第二时间量阈值时,装置300的处理器310预备供两个或两个以上第一子进程和该一个或多个子进程共享的共享存储器空间。第二时间量阈值可以是0或者任意其它数值。此外,流程500也可包含:当第一子进程和该一个或多个子进程中的每一个已停止时,装置300的处理器310停止母进程。
在一些实施例中,流程500可进一步包含:装置300的处理器310分析多个子进程的存储器使用数据,并至少部分基于该分析,确定是否预备共享存储器空间。若确定预备共享存储器空间,则母进程可预备共享存储器空间。在一些实施例中,在至少部分基于上述分析而确定是否预备共享存储器空间的步骤中,流程500可包含:基于存储器使用数据,当上述分析指示多个子进程中至少第一数量阈值的第一子进程已同时运行时间已达至少第二时间量阈值,装置300的处理器310确定是否需要母进程预备共享存储器空间。另外,流程500可另外包含:基于上述分析,当确定需要母进程预备共享存储器空间时,装置300的处理器310预备共享存储器空间,以供至少第一子进程共享。
在一些实施例中,当存在少于第一数量阈值的子进程欲行时间少于第二时间量阈值时,那么可不预备共享使用的存储器空间。在一些实施例中,当没有存储器使用的数据记录时,母进程可不预备共享存储器空间以供一个或多个子进程使用,以及因此,当每个子进程启动时,该一个或多个子进程可预备各自的存储器空间以供自身使用。
图6为根据本发明另一实施例的示例流程600的示意图。流程600可由一个或多个步骤(如步骤610,620,630,640和650)所代表的一个或多个操作,活动或功能。尽管显示为分离的步骤,根据实施需求,流程600的多个步骤可划分为额外的步骤,组合为更少的步骤或省略步骤。根据实施需求,流程600的多个步骤可依照与图6所示的顺序相同或不同的顺序来执行。流程600可由装置200及/或装置300来实施。为说明目的而非限制本发明的范围,下文将以装置200执行流程600为例来说明流程600。流程600可从步骤610开始。
在步骤610中,流程600可包含:装置200的使用收集模块210收集母进程的多个子进程的存储器使用数据。在一些实施例中,存储器使用的数据可包含一种或多种类型的数据,例如但不仅限于,多个子进程中有多少子进程同时运行多久,母进程预备的存储器空间的使用次数,母进程预备的存储器空间的使用频率,同一存储器空间或片段是否被多个子进程中多于一个子进程存取,多个子进程中是否多于一个子进程需要同一类数据,以及/或者指示存储器片段应在多个子进程的多于一个子进程之间共享的数据。流程可从步骤610前进至步骤620。
在步骤620中,流程600可包含:装置200的使用收集模块210确定启动多个子进程中的第一子进程的需求。在一些实施例中,确定启动第一子进程的需求的步骤可包含:使用收集模块210主动侦测是否存在启动第一子进程的需求,以及/或者被动接收指示启动第一子进程的需求的信号(例如,从操作系统,控制模块240或判决模块230)。流程600从步骤620前进至步骤630。
在步骤630中,流程600可包含:装置200的控制模块240启动母进程,母进程启动第一子进程,母进程不预备供至少第一子进程共享的共享存储器空间,因而第一子进程预备第一存储器空间,以供第一子进程自身使用。流程600可从步骤630前进至步骤640。
在步骤640中,流程600可包含:装置200的判决模块230分析收集到的多个子进程的存储器使用数据。流程600可从步骤640前进至步骤650。
在步骤650中,流程600可包含:至少部分基于上述分析,装置200的判决模块230确定是否预备共享存储器空间。若确定预备共享存储器空间,母进程可预备共享存储器空间。
在一些实施例中,在至少部分基于上述分析来确定是否预备共享存储器空间的步骤中,流程600可包含:基于使用收集模块210所收集到的存储器使用数据,当上述分析指示多个子进程中达到至少第一数量阈值的子进程已同时运行时间已达至少第二时间量阈值时,装置200的判决模块230确定需要母进程预备共享存储器空间。
在一些实施例中,流程600也可包含:基于判决模块230所作出的分析结果,当确定需要母进程预备共享存储器空间时,确定装置200的存储器预备模块220预备供至少第一子进程共享的共享存储器空间。
在一些实施例中,流程600可进一步包含:装置200的控制模块240除启动第一子进程之外,另外启动多个子进程中的一个或多个子进程,母进程不预备共享存储器空间,因而该一个或多个子进程中的每个预备各自的存储器空间以供自身使用。在一些实施例中,流程600可另外包含:当第一子进程的数量加上一个或多个子进程的数量超过第一数量阈值,以及第一子进程和该一个或多个子进程已同时运行的时间超过至少第二时间量阈值时,装置200的存储器预备模块220预备共享存储器空间,以供两个或两个以上第一子进程和一个或多个子进程共享。可选择地或者另外地,流程600也可包含:当第一子进程和该一个或多个子进程中的每个已停止后,装置200的控制模块240停止母进程。
在一些实施例中,当少于第一数量阈值的子进程运行少于第二时间量阈值时,那么不预备共享使用的存储器空间。在一些实施例中,当没有存储器使用的数据记录时,母进程可不预备供一个或多个子进程使用的共享存储器空间,以及因此,当每个子进程启动时,该一个或多个子进程中的每个可预备各自的非共享存储器空间以供自身使用。
图7为根据本发明一实施例的示例流程700的示意图。流程700可包含由一个或多个步骤(如步骤710和步骤720)所代表的一个或多个操作,活动或功能。尽管显示为分离的步骤,根据实施需求,流程700的多个步骤可划分为额外的步骤,组合为更少的步骤或省略步骤。根据实施需求,流程700的多个步骤可依照与图7所示的顺序相同或不同的顺序来执行。流程500可由装置200及/或装置300来实施。为说明目的而非限制本发明的范围,下文将以装置300执行流程700为例来说明流程700。流程700可从步骤710开始。
在步骤710中,流程700可包含:装置300的处理器310分析母进程的多个子进程的存储器使用数据,以确定是否需要启动多个子进程中的第一子进程。例如,流程700可包含:至少部分基于上述分析,装置300的处理器310确定母进程是否预备共享存储器空间以供至少第一子进程使用。流程700可从步骤710前进至步骤720。
在步骤720中,流程700可包含:当确定需要启动第一子进程时,装置300的处理器310预备第一存储器空间,以供多个子进程中的第一子进程使用,母进程不预备供至少第一子进程使用的共享存储器。例如,流程700可包含:装置300的处理器310启动母进程,母进程启动第一子进程,母进程不预备共享存储器空间,因而第一子进程预备第一存储器空间,以供第一子进程自身使用。
在一些实施例中,在预备供第一子进程使用的第一存储器空间时,流程700可包含:装置300的处理器310启动母进程,母进程启动第一子进程,母进程不预备共享存储器空间,因而第一子进程预备第一存储器空间,以供第一子进程自身使用。
在一些实施例中,流程700也可包含:装置300的处理器310除启动第一子进程之外,另外启动多个子进程中的一个或多个子进程,母进程不预备共享存储器空间,因而该一个或多个子进程中的每个预备各自的存储器空间以供自身使用。
可选择地或者另外地,流程700也可包含:装置300的处理器310除启动第一子进程之外,另外启动多个子进程中的一个或多个子进程。此外,流程700可进一步包含:当第一子进程的数量加上该一个或多个子进程的数量超过第一数量阈值,以及第一子进程和该一个或多个子进程已同时运行的时间超过第二时间量阈值时,装置300的处理器310预备共享存储器空间,以供两个或两个以上第一子进程和该一个或多个子进程共享。
可选择地或者另外地,流程700也可包含:装置300的处理器310除启动第一子进程之外,另外启动多个子进程中的一个或多个子进程。此外,流程700可进一步包含:当第一子进程和该一个或多个子进程中的每个已停止后,装置300的处理器310停止母进程。
在一些实施例中,流程700也可包含:装置300的处理器310分析多个子进程的存储器使用数据,并至少部分基于该分析,确定母进程是否预备供至少第一子进程使用的共享存储器空间。在一些实施例中,在至少部分基于上述分析而确定是否预备共享存储器空间的步骤中,流程700可包含:基于存储器使用数据,当上述分析指示多个子进程中至少第一数量阈值的子进程已同时运行时间已达第二时间量阈值时,装置300的处理器310确定是否需要母进程预备共享存储器空间。
在一些实施例中,存储器使用数据可包含一种或多种类型的数据,包括:多个子进程中有多少子进程同时运行多久,母进程预备的存储器空间的使用次数,母进程预备的一个或多个存储器空间的使用频率,同一存储器空间是否被多个子进程中多于一个子进程存取,多个子进程中是否有多于一个子进程需要同一类数据,以及指示存储器片段应在多个子进程中多于一个子进程之间共享的数据。
在一些实施例中,确定是否需要启动多个子进程中的第一子进程的步骤可在母进程启动之前执行。
以上所述实施例有时可包含不同组件,或可与其它不同组件相连。应当理解,此处所述架构仅用于举例说明,事实上也可实施为能够实现相同功能的多种其它架构。在概念上,可实现相同功能的多个组件的任意安排均为有关,从而实现所需的功能。因此,此处可实现特定功能的任意两个组件的组合可视为彼此相关,从而实现所需的功能,而不论架构或中间连接组件。类似地,任意两个如此关联的组件也可视为彼此操作性关联或操作性耦接以实现所需功能,以及任意能够彼此关联的两个组件也可视为彼此操作性可耦接以实现所需功能。操作性可耦接的具体例子包含但不仅限于物理耦合及/或物理互操作组件,及/或无线互操作,及/或无线互操作组件,及/或逻辑互操作,及/或逻辑互操作组件等。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视后附的权利要求所界定者为准。
Claims (20)
1.一种存储器空间预备方法,包含:
分析母进程的多个子进程的存储器使用数据;以及
至少部分基于所述分析,确定所述母进程是否预备共享存储器空间以供至少一第一子进程使用。
2.根据权利要求1所述的存储器空间预备方法,其特征在于进一步包含:
启动所述母进程,所述母进程启动所述第一子进程,在所述母进程不预备所述共享存储器空间的情况下,所述第一子进程预备第一存储器空间,以供所述第一子进程使用。
3.根据权利要求2所述的存储器空间预备方法,其特征在于进一步包含:
在所述母进程不预备所述共享存储器空间的情况下,除启动所述第一子进程之外,另外启动所述多个子进程中的一个或多个子进程,所述一个或多个子进程中的每个预备各自的存储器空间以供自身使用。
4.根据权利要求2所述的存储器空间预备方法,其特征在于进一步包含:
除启动所述第一子进程之外,另外启动所述多个子进程中的一个或多个子进程;以及
当所述第一子进程的数量加上所述一个或多个子进程的数量超过第一数量阈值,以及当所述第一子进程和所述一个或多个子进程已同时运行的时间超过第二时间量阈值时,预备供两个或两个以上所述第一子进程和所述一个或多个子进程所共享的所述共享存储器空间。
5.根据权利要求2所述的存储器空间预备方法,其特征在于进一步包含:
除启动所述第一子进程之外,另外启动所述多个子进程中的一个或多个子进程;以及
当所述第一子进程和所述一个或多个子进程中的每个已停止之后,停止所述母进程。
6.根据权利要求1所述的存储器空间预备方法,其特征在于,确定所述母进程是否预备所述共享存储器空间以供至少所述第一子进程使用的步骤包含:
基于所述存储器使用数据,当所述分析指示所述多个子进程中数量已达到至少第一数量阈值的子进程已同时运行时间已达至少第二时间量阈值时,确定是否需要所述母进程预备所述共享存储器空间。
7.根据权利要求6所述的存储器空间预备方法,其特征在于,所述存储器使用数据包含一种或多种类型的数据,所述数据包含所述多个子进程中有多少子进程同时运行了多久的数据,所述母进程所预备的存储器空间已使用多少次的数据,所述母进程所预备的一个或多个存储器空间的使用频率的数据,同一存储器空间是否被所述多个子进程中的多于一个子进程所存取,所述多个子进程中是否多于一个子进程需要同一类数据的数据,以及指示存储器片段将在所述多个子进程中的多于一个子进程之间共享的数据。
8.根据权利要求1所述的存储器空间预备方法,其特征在于进一步包含:
在启动所述母进程之前,确定是否需要启动所述多个子进程中的所述第一子进程。
9.一种存储器空间预备方法,包含:
收集母进程的多个子进程的存储器使用数据;
确定启动所述多个子进程中的第一子进程的需求;
启动所述母进程,所述母进程启动所述第一子进程,在所述母进程在启动时不预备供至少所述第一子进程所共享的共享存储器空间的情况下,所述第一子进程预备第一存储空间,以供所述第一子进程使用;
分析收集到的所述多个子进程的所述存储器使用数据;以及
至少部分基于所述分析,确定是否预备所述共享存储器空间。
10.根据权利要求9所述的存储器空间预备方法,其特征在于,确定是否预备所述共享存储器空间的步骤包含:
基于收集到的所述存储器使用数据,当所述分析指示所述多个子进程中数量达到至少第一数量阈值的子进程已同时运行时间已达至少第二时间量阈值时,确定是否需要所述母进程预备所述共享存储器空间。
11.根据权利要求9所述的存储器空间预备方法,其特征在于进一步包含:
在所述母进程不预备所述共享存储器空间的情况下,除启动所述第一子进程之外,另外启动所述多个子进程中的一个或多个子进程,所述一个或多个子进程中的每个预备各自的存储器空间以供自身使用。
12.根据权利要求9所述的存储器空间预备方法,其特征在于进一步包含:
除启动所述第一子进程之外,另外启动所述多个子进程中的一个或多个子进程;以及
当所述第一子进程的数量加上所述一个或多个子进程的数量超过第一数量阈值,以及所述第一子进程和所述一个或多个子进程已同时运行的时间量超过第二时间量阈值时,预备所述共享存储器空间,以供两个或两个以上所述第一子进程和所述一个或多个子进程共享。
13.根据权利要求9所述的存储器空间预备方法,其特征在于进一步包含:
除启动所述第一子进程之外,另外启动所述多个子进程中的一个或多个子进程;以及
当所述第一子进程和所述一个或多个子进程已停止后,停止所述母进程。
14.根据权利要求9所述的存储器空间预备方法,其特征在于,确定启动所述多个子进程中的所述第一子进程的所述需求的步骤是在启动所述母进程之前执行的。
15.一种存储器空间预备装置,包含:
使用收集模块,用于维护母进程的多个子进程的存储器使用数据的记录以及所述多个子进程中的任意子进程是否将要启动的记录;
存储器预备模块,用于预备与所述母进程有关的存储器空间;
判决模块,用于根据所述使用收集模块所维护的所述记录,适应性地决定是否需要预备共享存储器空间;以及
控制模块,用于当确定所述多个子进程中的至少一子进程将要启动时,启动所述母进程。
16.根据权利要求15所述的存储器空间预备装置,其特征在于,所述控制模块进一步用于执行以下操作:
确定启动所述多个子进程中的第一子进程的需求;以及
启动所述母进程,所述母进程启动所述第一子进程,在所述母进程不预备供至少所述第一子进程共享的所述共享存储器空间的情况下,所述第一子进程预备第一存储器空间,以供所述第一子进程使用。
17.根据权利要求16所述的存储器空间预备装置,其特征在于,所述控制模块进一步用于执行以下操作:
在所述母进程不预备所述共享存储器空间的情况下,除启动所述第一子进程之外,另外启动所述多个子进程中的一个或多个子进程,所述一个或多个子进程中的每个预备各自的存储器空间以供自身使用。
18.根据权利要求16所述的存储器空间预备装置,其特征在于,除启动所述第一子进程之外,所述控制模块进一步用于启动所述多个子进程中的一个或多个子进程,以及所述判决模块进一步用于执行以下操作:
当所述第一子进程的数量加上所述一个或多个子进程的数量超过第一数量阈值,以及所述第一子进程和所述一个或多个子进程已同时运行的时间超过第二时间量阈值时,触发所述存储器预备模块以预备所述共享存储器空间,以供两个或两个以上所述第一子进程和所述一个或多个子进程所共享。
19.根据权利要求16所述的存储器空间预备装置,其特征在于,所述控制模块进一步用于执行以下操作:
除启动所述第一子进程以外,另外启动所述多个子进程中的一个或多个子进程;以及
当所述第一子进程和所述一个或多个子进程中的每个停止后,停止所述母进程。
20.根据权利要求15所述的存储器空间预备装置,其特征在于,基于收集到的存储器使用数据,所述判决模块通过确定所述记录是否指示所述多个子进程中数量达到至少第一数量阈值的子进程已同时运行时间已达第二时间量阈值,来适应性地决定是否需要预备共享存储器空间。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562197194P | 2015-07-27 | 2015-07-27 | |
US62/197,194 | 2015-07-27 | ||
US15/139,309 US9977696B2 (en) | 2015-07-27 | 2016-04-26 | Methods and apparatus of adaptive memory preparation |
US15/139,309 | 2016-04-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106406984A true CN106406984A (zh) | 2017-02-15 |
Family
ID=56622042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610352048.8A Withdrawn CN106406984A (zh) | 2015-07-27 | 2016-05-25 | 存储器空间预备方法及装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9977696B2 (zh) |
CN (1) | CN106406984A (zh) |
Families Citing this family (2)
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 |
US11836087B2 (en) | 2020-12-23 | 2023-12-05 | Micron Technology, Inc. | Per-process re-configurable caches |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175854A (en) * | 1989-06-19 | 1992-12-29 | Digital Equipment Corporation | Inter-applicataion interface system |
US5794040A (en) * | 1994-11-10 | 1998-08-11 | International Business Machines Corporation | Program creation apparatus for reactive systems |
CN1996257A (zh) * | 2006-12-26 | 2007-07-11 | 华为技术有限公司 | 对进程进行监控的方法和系统 |
CN102375702A (zh) * | 2010-07-01 | 2012-03-14 | 索尼公司 | 存储器管理设备、存储器管理方法及其程序 |
US20130254383A1 (en) * | 2012-03-22 | 2013-09-26 | Tier3, Inc. | Flexible storage provisioning |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5838976A (en) * | 1995-11-28 | 1998-11-17 | Hewlett-Packard Co. | System and method for profiling code on symmetric multiprocessor architectures |
US6463509B1 (en) | 1999-01-26 | 2002-10-08 | Motive Power, Inc. | Preloading data in a cache memory according to user-specified preload criteria |
US7426720B1 (en) | 2003-12-22 | 2008-09-16 | Sun Microsystems, Inc. | System and method for dynamic preloading of classes through memory space cloning of a master runtime system process |
US9513949B2 (en) * | 2014-08-23 | 2016-12-06 | Vmware, Inc. | Machine identity persistence for users of non-persistent virtual desktops |
US9389901B2 (en) * | 2014-09-09 | 2016-07-12 | Vmware, Inc. | Load balancing of cloned virtual machines |
-
2016
- 2016-04-26 US US15/139,309 patent/US9977696B2/en active Active
- 2016-05-25 CN CN201610352048.8A patent/CN106406984A/zh not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5175854A (en) * | 1989-06-19 | 1992-12-29 | Digital Equipment Corporation | Inter-applicataion interface system |
US5794040A (en) * | 1994-11-10 | 1998-08-11 | International Business Machines Corporation | Program creation apparatus for reactive systems |
CN1996257A (zh) * | 2006-12-26 | 2007-07-11 | 华为技术有限公司 | 对进程进行监控的方法和系统 |
CN102375702A (zh) * | 2010-07-01 | 2012-03-14 | 索尼公司 | 存储器管理设备、存储器管理方法及其程序 |
US20130254383A1 (en) * | 2012-03-22 | 2013-09-26 | Tier3, Inc. | Flexible storage provisioning |
Also Published As
Publication number | Publication date |
---|---|
US20160239236A1 (en) | 2016-08-18 |
US9977696B2 (en) | 2018-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103207797B (zh) | 基于通用可扩展固件接口固件系统的胶囊式定制更新方法 | |
CN103761182A (zh) | 一种死锁检测方法及装置 | |
CN102880519A (zh) | 一种批量修改bios配置的方法 | |
RU2009139312A (ru) | Способ устранения исключительной ситуации в одном из ядер многоядерной системы | |
CN106406984A (zh) | 存储器空间预备方法及装置 | |
CN103365392B (zh) | 内存管理系统 | |
CN104360927A (zh) | 一种基于numa的计算机体系结构的监控信息采集方法 | |
CN102323899B (zh) | Numa体系结构下面向容错的操作系统内存管理方法 | |
CN106528065B (zh) | 一种线程获取方法及设备 | |
CN103309833A (zh) | 设备整合方法、终端装置和分布式多终端装置系统 | |
CN103647723A (zh) | 一种流量监控的方法和系统 | |
CN207281744U (zh) | 操作系统启动装置和系统主板 | |
US10222823B2 (en) | Computing apparatus with real time clock without a battery | |
CN112068960A (zh) | 一种cpu资源分配方法、装置、存储介质及设备 | |
CN112181595A (zh) | 虚拟机的numa节点绑定方法、装置、设备及存储介质 | |
CN108710475A (zh) | 增强固态硬盘低温鲁棒性的方法、装置及计算机设备 | |
CN103049298A (zh) | 一种Nandflash烧写方法 | |
CN103617129A (zh) | 一种内存处理的方法及装置 | |
CN110865869B (zh) | 一种申威架构上的虚拟机访存特征提取方法及系统 | |
US20230185991A1 (en) | Multi-processor simulation on a multi-core machine | |
CN102317927B (zh) | 设备动态添加处理方法、装置及动态移除处理方法、装置 | |
CN107391174A (zh) | 一种系统在线升级的控制方法及控制装置 | |
US9749577B1 (en) | Host video recording by baseboard management controller (BMC) | |
US11216194B2 (en) | Memory management system and method thereof | |
CN105323289A (zh) | 一种基于分布式的数据同步方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20170215 |
|
WW01 | Invention patent application withdrawn after publication |