CN1275221A - 动态存贮器空间的分配 - Google Patents

动态存贮器空间的分配 Download PDF

Info

Publication number
CN1275221A
CN1275221A CN99801399.4A CN99801399A CN1275221A CN 1275221 A CN1275221 A CN 1275221A CN 99801399 A CN99801399 A CN 99801399A CN 1275221 A CN1275221 A CN 1275221A
Authority
CN
China
Prior art keywords
memory
free
request
catalogue
pointer
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.)
Granted
Application number
CN99801399.4A
Other languages
English (en)
Other versions
CN1114864C (zh
Inventor
R·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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1275221A publication Critical patent/CN1275221A/zh
Application granted granted Critical
Publication of CN1114864C publication Critical patent/CN1114864C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/5016Allocation 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
    • 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
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

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

Abstract

一种数据处理装置包括含有多个数据对象(DO)的堆栈存贮器(HM),每个目标由来源于程序线程存贮器堆栈(SF)的各自的指针来存取。在一种实施方案中,无用单元收集应用程序(100)周期性地扫描堆栈(HM)并识别对于自由目录(FL)冗余的数据对象,使得它们的存贮器空间能够被重新使用。系统请求存贮器(AREQ),如果它们不可能被自由目录(FL)满足,则被存贮(ALLIST)供随后处理。如果在扫描期间进一步的数据对象被标明为冗余时,在通常通过自由目录(FL)可得到以前,它们占据的空间首先提供给已存贮的系统请求(ALLIST)。

Description

动态存贮器空间的分配
本发明涉及一种处理已存贮的数据对象的方法和装置,特别是,然而是非排它性的,涉及一种在数据处理装置的实在的或虚拟的存贮器空间中,处理实时执行无用单元收集过程期间发生的存贮器分配的系统请求的方法和装置。
无用单元收集是在程序最后使用存贮器以后系统存贮器空间的自动回收。无用单元收集技术的许多例子讨论在下文中:“无用单元收集:自动动态存储器管理的算法”“Garbage Collection:Algorithms for Automatic Dynamic Memory Management”by R.Jones et al,pub John Wiley & Sons 1996,ISBN 0-471-94148-4,at pages 1 to 18。虽然许多计算机程序的存贮要求是简单的和可以预测的,当存贮器分配与回收由编程器或编译器处理时,有一种倾向具有更复杂的执行型式的功能性语言的趋势,使得特定数据结构的生存期可能不再在运行时间以前被确定,因此,当程序运行时,这种存贮的自动回收是必不可少的。
许多无用单元收集技术包含对存贮器堆上数据对象的扫描,以便识别那些已经成为冗余的对象。在这样的一些无用单元收集系统中,存贮器分配请求与将死(收集到的无用单元)对象移到自由结构的扫描器过程同时操作。如果系统存贮器管理不可能立即从自由结构为分配请求服务,典型情况下,分配过程被闭锁直到当前的扫描周期完成为止。然后分配请求可再次尝试,如果再次失败,就要采取更极端的行动。这些行动可包括堆栈的扩展或压缩,或者过程带着差错矢折。正如将会认识到的那样,分配请求的闭锁可使系统变慢并且一般会降低效率。
因此本发明的一个目标是提供一种处理存贮器请求的改进技术和实现的装置。
依据本发明在此提供一种在数据处理装置中使用的存贮器管理方法,其中随机存取存贮器包含多个数据对象,每个所述的数据对象位于存贮器内各自已知的位置并通过由存贮器堆栈携带的各自的指针存取,本方法包括周期性的扫描存贮器以便确定从任何源到此没有范围指针的那些数据对象并将由此取得的存贮器空间块传送到自由存贮器结构,通过来自自由存贮器结构的分配满足对存贮器空间的外部请求;其特征在于对于来自自由存贮器结构可得到的存贮器不够的外部请求被列入请求目录,自由的存贮器空间块对列入目录的请求是可得到的,如果未分配到任何列入目录的请求,则只传送到自由存贮器结构。通过将自由的存贮器块指向特别需要它们(通过它们存在于未完成的请求对象中表示出来)的那些程序线程或系统应用程序,系统的总效率得到改善,像停止压缩堆栈那样剧烈的措施被推迟,在某些情况下完全被避免。
将自由块传送到自由存贮器结构可适当地包括建立从自由块的地址表到此的指针,在请求目录中的表列值可按先进先出的次序保存,所存贮的外部请求按最老的到最近的请求的顺序得到自由块。
虽然本发明减少了为得到存贮器空间而采取极端措施的需要,然而一种或多种附加的存贮器回收技术(如压缩)仍可在扫描结束时应用到随机存取存贮器的内容中,利用存贮器空间的回收来清除所列出的请求。在这样的环境中,为每个所列出的请求适当地保留一份从列入目录起的时间的记录,一个或多个列在目录上的时间已经长于预定的周期的所列出的请求会启动采用一种或多种附加的存贮器回收技术。作为一种保留实时计数的替换方案,请求已列入目录的时间可作为从列入目录起进行存贮器扫描的次数给出。
依据本发明在此也提供数据处理装置,包括一个与包含多个数据目录的随机存取存贮器连接的数据处理器,每个所述的数据目录位于存贮器内各自的已知位置上并通过由存贮器堆栈携带的各自的指针存取,处理器被配置成周期性地扫描存贮器的内容以便识别那些没有范围指针的所存贮的数据对象并将取得的存贮器空间块传送到自由存贮器结构,处理器被安排为通过自由存贮器结构的分配来满足程序对存贮器空间的请求;其特征在于与处理器连接的进一步的存贮装置,处理器被安排来将那些从自由结构得不到足够的存贮器的程序请求进入所述的进一步的存贮装置,并且在放到自由存贮器结构中以前将自由存贮器块分配给一个或多个所存贮的程序请求。
本装置还可包括进一步的存贮装置,以一种按次序的自由存贮器目标的随机存取存贮器位置指针目录的形式保持自由存贮器结构,保持所存贮的程序请求的进一步的存贮装置为每个表列值适当地包括各自的区,其中处理器保留从此请求被存贮起存贮器扫描数的现时计数。
现在,将只用举例的方法,参考附图对本发明作描述,其中:
图1是适于实现本发明的一种数据处理系统的方框图;和
图2简要地表示在图1的系统中扫描功能和许多离散的存贮器区之间的功能性关系。
图1表示一个数据处理系统,例如一台个人计算机,作为许多软件应用程序的主机,例如,可以将系统配置为一个规定虚拟环境数据的浏览器。系统包括一个中央处理单元(CPU)10,通过地址与数据总线12连接随机存取(RAM)和只读(ROM)存贮器14、16。这些存贮器可包括一个或几个集成电路设备和可由一个系统硬盘以及从附加的(可移动的)存贮器设备,例如CD-ROM读出的装置加以扩大。也通过总线12连到CPU10的是第一和第二用户输入设备18,20,它们可适当地包括键盘,光标控制和选择设备,如鼠标或跟踪球。系统的声频输出是通过由声频处理级24驱动的一个或多个扬声器22。系统的视频输出被展示在由CPU10控制下的显示器驱动级28驱动的显示屏26上。系统的其它数据源是通过在线链路到远处,例如通过互联网到系统用连接总线12的网络接口30提供的端点。
本发明特别地实现在CPU10控制下RAM14的工作区的存贮器管理;用于此目的的控制程序起初保存在ROM16中并在上电时用操作系统装载。以下的例子是依照Java(Sun Microsystems lnc)虚拟机中的存贮器管理技术并且此术语应该作相应地解释:然而将认识到,本发明并不限于依从Java的系统,也并不限于纯粹的虚拟存贮器管理。
图2扼要地表示图1系统的许多离散的存贮器区,尤其是,堆栈存贮器HM,其中保存大量由各种程序的线程使用的数据对象DO。在所示的安排中,执行无用单元收集的是堆栈存贮器HM,数据对象由跟随其后的扫描器100移去或者仅仅由程序参考:由目标移去所释放的空间被保留在自由结构中:在本实施方案中,自由结构由未用的或可得到的块组成,由来自或送到自由目录FL的指针来识别。自由结构的特定形式并不是本发明的必不可少的特点,熟练的读者将了解可以同样使用的替代配置。
每个操作程序线程具有其自己的堆栈帧SF的集合,通过处理表HT参考堆栈存贮器HM中的目标。两个级别的结构CL示于堆栈的右面:这些可由堆栈中的数据对象DO参考,但它们自己不可能把指针放到数据对象上。等级结构的特定形式和功能并不由依据本发明的操作来承担,因而将不作进一步描述。
在本系统中,将请求AREQ分配到起初失败的自由目录FL导致那些请求被插入到分配请求结构ALLIST中。请求分配的过程被闭锁直到此请求得到服务为止。同时,扫描器100通过将新释放的块加到自由目录FL中将它们插入到自由结构中。然而,在插入时,自由块与结构ALLIST中未完成的请求作比较,如果有可能,一个块直接从自由块结构转移到被闭锁的过程,使其能重新开始并从ALLIST中移去请求,在扫描器周期完成时,其余在ALLIST中未完成的请求被查看。请求最好以FIFO的次序得到服务,虽然可以采用优先权准则,然而这要求小心的管理,以避免某些具有低的被分配的优先权的请求始终被靠边。如果在ALLIST中的任何请求经过相当长的时间,就可以采取以前提到过的极端动作。在ALLIST中请求的时间可用扫描器周期来适当地测量,在ALLIST中的每个表列值有各自的计数,在完成一周时,所有的计数增加1。
这种安排具有降低用于分配待服务的请求的平均时间的优点。过程将得到很好的处理,因为那些等待的数据将在它们通过自由目录FL的其它过程可得到以前直接接收被释放的数据块。因为不希望的紧急动作,如堆栈压缩或“存贮器溢出”差错也被推迟,在许多情况下被避免,因而系统性能得以改善。
虽然通过软件浏览器大体上解释了实施方案,熟练的读者将知道以上描述的许多功能性特性可以同样用硬件或硬件或软件的组合来实现。也将认识到,所描述的步骤可应用于许多存贮器管理系统,不管是否包括自动无用单元收集过程。
通过阅读本内容,对于本领域的技术人员来说,其它的修改将是明显的。这样的修改可以包含在数据处理装置与设备以及元部件的设计,制造和使用中已知了解的其它特性,并且可用来代替或添加到已经在此描述过的特性中。

Claims (10)

1.一种用于数据处理装置的存贮器管理方法,其中随机存取存贮器包含多个数据对象,每个所述的数据对象位于存贮器内各自的已知位置上并通过由存贮器堆栈携带的各自的指针存取,本方法包括周期性地扫描存贮器以便确定那些没有从任何源到此的范围指针的数据对象并将由此取得的存贮器空间块传送到自由存贮器结构,通过自由存贮器结构的分配来满足对存贮器空间的外部请求;
其特征在于从自由存贮器结构得不到足够存贮器的外部请求被列入请求目录,列入目录的请求可得到自由的存贮器空间块,如果未分配到任何列入目录的请求,则只传送到自由存贮器结构。
2.根据权利要求1的方法,其中将自由块传送到自由存贮器结构包括建立从自由块的地址表到此的指针。
3.根据权利要求1的方法,其中在请求目录中的表列值以先进先出的次序保留并且所存贮的外部请求以最老的到最近的请求的顺序得到自由块。
4.根据权利要求1的方法,其中一种或多种附加的存贮器回收技术在扫描结束时被应用于随机存取存贮器的内容,由此被回收的存贮器空间被用于清除列入目录的请求。
5.根据权利要求4的方法,其中为每个列入目录的请求保留一份从列入目录起的时间的记录,由一个或多个列在目录上已比预定周期长的列入目录的请求启动应用所述的一种或多种附加的存贮器回收技术。
6.根据权利要求5的方法,其中请求已在目录上的时间被作为从列入目录起经过的存贮器扫描数给出。
7.根据权利要求4到6的任一项的方法,其中所述的一种或多种附加的存贮器回收技术包括存贮器内容的压缩。
8.一种数据处理装置包括一个数据处理器,连接包含多个数据对象的随机存取存贮器,每个所述的数据对象位于存贮器内各自的已知位置上并通过由存贮器堆栈携带的各自的指针存取,处理器被配置成周期性地扫描存贮器的内容以便识别那些已存贮的没有范围指针的数据对象并将由此取得的存贮器空间块传送到自由存贮器结构,处理器被安排通过自由存贮器结构的分配来满足程序对存贮器空间的请求。
其特征在于与处理器连接的进一步的存贮装置,处理器被安排来将那些从自由结构得不到足够的存贮器的程序请求记入所述的进一步的存贮装置,在放到自由存贮器结构中以前将自由存贮器块分配给一个或多个已存贮的程序请求。
9.根据权利要求8的装置,仍然包括进一步的存贮装置,以一份自由存贮器目标的随机存取存贮器位置指针有序目录的形式保持所述的自由存贮器结构。
10.根据权利要求8的装置,其中保持已存贮的程序请求的进一步的存贮装置为每个表列值包括一个各自的区,其中处理器保留从此请求被存贮的存贮器扫描次数的现时计数。
CN99801399.4A 1998-06-25 1999-06-14 动态存贮器空间的分配 Expired - Fee Related CN1114864C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB9813592.4A GB9813592D0 (en) 1998-06-25 1998-06-25 Dynamic memory space allocation
GB9813592.4 1998-06-25

Publications (2)

Publication Number Publication Date
CN1275221A true CN1275221A (zh) 2000-11-29
CN1114864C CN1114864C (zh) 2003-07-16

Family

ID=10834277

Family Applications (1)

Application Number Title Priority Date Filing Date
CN99801399.4A Expired - Fee Related CN1114864C (zh) 1998-06-25 1999-06-14 动态存贮器空间的分配

Country Status (8)

Country Link
US (1) US6360233B1 (zh)
EP (1) EP1038211B1 (zh)
JP (1) JP2002519752A (zh)
CN (1) CN1114864C (zh)
DE (1) DE69923658T8 (zh)
GB (1) GB9813592D0 (zh)
TW (1) TW442723B (zh)
WO (1) WO1999067699A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1306415C (zh) * 2002-03-20 2007-03-21 捷讯研究有限公司 移动设备上的安全无用信息收集系统和方法
CN100422932C (zh) * 2002-12-31 2008-10-01 上海科泰世纪科技有限公司 自描述数据对象的处理方法

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111307B1 (en) * 1999-11-23 2006-09-19 Microsoft Corporation Method and system for monitoring and verifying software drivers using system resources including memory allocation and access
JP3832341B2 (ja) * 2001-12-27 2006-10-11 日本電気株式会社 メモリプール管理方式
KR100497722B1 (ko) * 2002-07-02 2005-06-23 주식회사 인터와이즈 메모리 데이터 저장공간 관리 방법, 그 방법을 기록한기록매체 및 그 방법 을 이용한 응용프로그램 수행장치
US7096339B2 (en) * 2003-03-01 2006-08-22 International Business Machines Corporation System and method for detecting memory management programming errors
US20050071595A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation Methods and apparatus for allocating memory
JP4144609B2 (ja) 2004-09-29 2008-09-03 ソニー株式会社 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム
WO2008005298A2 (en) * 2006-06-30 2008-01-10 Wms Gaming Inc. Systems and methods for managing memory in wagering game machines
US8202168B2 (en) * 2006-06-30 2012-06-19 Wms Gaming Inc. Systems and methods for managing memory in wagering game machines
US8839225B2 (en) 2008-01-23 2014-09-16 International Business Machines Corporation Generating and applying patches to a computer program code concurrently with its execution
US8019873B2 (en) * 2008-09-30 2011-09-13 Microsoft Corporation Mesh platform utility computing portal
CN101551764B (zh) * 2009-02-27 2010-11-10 北京时代民芯科技有限公司 基于同步冗余线程与编码技术的抗单粒子效应系统及方法
CN102033804A (zh) * 2009-09-29 2011-04-27 国际商业机器公司 辅助内存分析的方法和系统
JP5614348B2 (ja) 2011-03-18 2014-10-29 富士通株式会社 命令処理方法、命令処理装置、及び命令処理プログラム
US10180901B2 (en) 2012-10-19 2019-01-15 Oracle International Corporation Apparatus, system and method for managing space in a storage device
KR102166332B1 (ko) * 2013-10-25 2020-10-16 삼성전자주식회사 메모리 관리 장치 및 메모리 관리 방법
KR102237566B1 (ko) * 2014-01-23 2021-04-07 한국전자통신연구원 완전 복제된 가상 머신의 디스크 이미지 파일 캐싱 시스템 및 방법
GB2546577B (en) * 2016-01-19 2020-07-08 Arm Ip Ltd A method for allocating memory
KR101990201B1 (ko) * 2017-09-04 2019-06-17 울산과학기술원 뉴메모리 기반 메모리 관리 방법 및 이를 수행하는 장치들
CN112965663A (zh) * 2021-03-05 2021-06-15 上海寒武纪信息科技有限公司 对数据块的存储空间进行复用的方法和相关产品

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2265734A (en) * 1992-03-27 1993-10-06 Ibm Free memory cell management system
WO1994002898A1 (en) * 1992-07-24 1994-02-03 Microsoft Corporation Computer method and system for allocating and freeing memory
US5560003A (en) * 1992-12-21 1996-09-24 Iowa State University Research Foundation, Inc. System and hardware module for incremental real time garbage collection and memory management
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US6055612A (en) * 1997-07-11 2000-04-25 Geodesic Systems, Inc. Incremental garbage collector with decommit barrier
US6047295A (en) * 1998-05-05 2000-04-04 International Business Machines Corporation Computer system, program product and method of managing weak references with a concurrent mark sweep collector

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1306415C (zh) * 2002-03-20 2007-03-21 捷讯研究有限公司 移动设备上的安全无用信息收集系统和方法
CN100422932C (zh) * 2002-12-31 2008-10-01 上海科泰世纪科技有限公司 自描述数据对象的处理方法

Also Published As

Publication number Publication date
DE69923658T2 (de) 2006-03-23
JP2002519752A (ja) 2002-07-02
DE69923658D1 (de) 2005-03-17
CN1114864C (zh) 2003-07-16
WO1999067699A2 (en) 1999-12-29
DE69923658T8 (de) 2006-06-08
WO1999067699A3 (en) 2000-04-06
EP1038211B1 (en) 2005-02-09
GB9813592D0 (en) 1998-08-19
US6360233B1 (en) 2002-03-19
EP1038211A2 (en) 2000-09-27
TW442723B (en) 2001-06-23

Similar Documents

Publication Publication Date Title
CN1114864C (zh) 动态存贮器空间的分配
US6363468B1 (en) System and method for allocating memory by partitioning a memory
EP0814405B1 (en) Method and apparatur for information processing and memory allocation system
EP0938706B1 (en) Data processor with localised memory reclamation
US6353838B2 (en) Incremental garbage collection
US5339411A (en) Method for managing allocation of memory space
US7310718B1 (en) Method for enabling comprehensive profiling of garbage-collected memory systems
US6557091B2 (en) Data processor with localized memory reclamation
EP0778525A1 (en) Method and apparatus for detecting memory leaks
EP0395606A2 (en) Process for memory space allocation
US7069279B1 (en) Timely finalization of system resources
US6105040A (en) Method and apparatus for managing stored objects
JP2001504971A (ja) データ・ブロックを圧縮するメモリ管理
US6801990B2 (en) Demand-based memory-block splitting
US7765375B2 (en) Memory management method, information processing apparatus, and memory management program
EP1826672A2 (en) Apparatus and method for managing resources in a multiple application environment
US7870171B2 (en) Method and system for garbage collection in a multitasking environment
US20060161598A1 (en) Method and apparatus for data versioning and recovery using delta content save and restore management
EP0919927A2 (en) Dynamic memory allocation technique for maintaining an even distribution of cache page addresses within an address space
US4984150A (en) Virtual memory control management system
US7318219B2 (en) System and method for performance monitoring
KR100315500B1 (ko) 메모리할당방법
US7757053B2 (en) Apparatus and method for managing stacks for efficient memory usage
CN112000471B (zh) 内存优化方法及装置
JP2989608B2 (ja) セルプール管理装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20030716