EP0844564A2 - Système de gestion de mémoire - Google Patents

Système de gestion de mémoire Download PDF

Info

Publication number
EP0844564A2
EP0844564A2 EP97309477A EP97309477A EP0844564A2 EP 0844564 A2 EP0844564 A2 EP 0844564A2 EP 97309477 A EP97309477 A EP 97309477A EP 97309477 A EP97309477 A EP 97309477A EP 0844564 A2 EP0844564 A2 EP 0844564A2
Authority
EP
European Patent Office
Prior art keywords
memory
blocks
stack
application
management structure
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
EP97309477A
Other languages
German (de)
English (en)
Other versions
EP0844564A3 (fr
EP0844564B1 (fr
Inventor
John Nichol
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.)
Nortel Networks Ltd
Original Assignee
Northern Telecom Ltd
Nortel Networks Corp
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 Northern Telecom Ltd, Nortel Networks Corp filed Critical Northern Telecom Ltd
Publication of EP0844564A2 publication Critical patent/EP0844564A2/fr
Publication of EP0844564A3 publication Critical patent/EP0844564A3/fr
Application granted granted Critical
Publication of EP0844564B1 publication Critical patent/EP0844564B1/fr
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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

Definitions

  • This invention relates to an arrangement and method for the management of a memory in a data processing system.
  • Malloc uses sbrk or brk to change the size of the available process memory and then manages the memory as a list of allocated and free blocks of particular sizes. Malloc can provide an application on demand with a block of memory of any size. It does this by maintaining lists of free memory blocks and of their respective sizes so as to return a block which is at least as big as the block requested by the user. Therefore Malloc must choose from the available blocks which of those blocks is most appropriate for giving to the application.
  • the implementation of the malloc family of functions is system dependant and is likely to vary from machine to machine.
  • An object of the invention is to minimise or to overcome this disadvantage.
  • a further object of the invention is to provide an improved arrangement and method for memory management and allocation of memory capacity.
  • a memory manager arrangement for use within a memory, the arrangement including a memory management structure, a set of data blocks in which data can be stored under the control of the management structure, and a stack of pointers to free data blocks within the set of data blocks, wherein the memory management structure incorporates a first management pointer to the stack of pointers and a second management pointer to a first data block in the stack whereby to provide automatic allocation of data blocks.
  • a method of data storage in a memory including a memory management structure, a set of data blocks in which data can be stored under the control of the management structure, and a stack of pointers to free data blocks within the set of data blocks, the method including providing from the memory management structure a first management pointer to the stack of pointers and a second management pointer to a first data block in the stack whereby to provide automatic allocation of data blocks.
  • a method of allocating sets of memory blocks for use by an application during execution of that application comprising creating via the application a plurality of memory manager arrangements each comprising a memory management structure, a set of similar memory blocks in which data can be stored under the control of the management structure, and a stack of pointers to free memory blocks within the set of memory blocks, the memory management structure incorporating a first management pointer to the stack of pointers and a second management pointer to a first memory block in the stack whereby to provide automatic allocation of memory blocks, wherein said memory manager arrangements are created prior to running of said application, and wherein each said memory manager arrangement is provided a memory capacity determined by the application at the time of creation of that manager arrangement.
  • the memory manager arrangement manages memory blocks of the same size only. Therefore, it is not necessary to search available blocks to find one of the correct size.
  • the arrangement allows an application to maintain a series of completely separate lists of memory of the same size and to rapidly access those blocks. Additionally the arrangement allows the application to allocate the memory it requires before it uses that memory rather than delaying allocation until the memory is actually required. The application thus determines the merory requirement prior to run time so that an appropriate memory capacity is mabde available to that application for use during execution of the application.
  • the memory management arrangement benefits from improved performance due to the simplicity of its algorithm, reduced memory fragmentation (that is management of the memory as a collection of smaller and smaller blocks) and the ability to allocate the applications memory blocks before they are required, reducing the need to dynamically allocate memory whilst the application is executing.
  • the memory manager arrangement incorporates a memory which is sufficiently large to accommodate the data blocks 11 being managed.
  • these data blocks will either be occupied or free, the free blocks being either unfilled or filled with data that is no longer required thus providing space for overwriting with new data.
  • a stack of pointers 12 to those free blocks is maintained and the blocks are allocated via push and pop operations.
  • a memory management structure 13 controls access to the data blocks 11 via the pointer stack 12.
  • the memory management structure of figure 1 is represented in memory as a contiguous memory block as shown in figure 2 with the management structure 13 followed by the data blocks 11 and the pointer stack 12 at the end of the data blocks.
  • the memory manager is represented in the C-programming language by the type ON_Mm .
  • This is a pointer to the structure.
  • ON_Mm s are returned from an ON_mm_create function provided via the language.
  • the size field is the number of blocks in the memory management structure, the blocksize field is the size of each individual block.
  • the mm_grow field is used to determine the action which should be taken if the memory management structure has no available blocks on the stack.
  • the mm_stack field of the structure is a void ** and will point to a piece of memory which contains pointers to currently unallocated data blocks.
  • the mm_stack_index field is the offset into the stack area of the next free block.
  • mm_base is the pointer to the memory block from which the data blocks will be allocated.
  • the order of fields in the S_ON_Mm structure is critical.
  • the mm_base field is assumed by the memory management structure module to be the last field in the structure. In this way the mm_base field is the address of the first data block in the memory management structure. Adding fields after the mm_base field is likely to result in segmentation violations and failure of the memory management structure algorithms to function correctly.
  • the memory management structure design is based upon the performance benefits which can be gained,
  • Each memory manager arrangement that is created has one fixed block size.
  • the block size and number of blocks are specified at memory management structure create (ON_mm_create), along with the Boolean value grow which determines the behaviour of the memory management structure when it has exhausted its supply of available blocks.
  • One final field to the ON_mm_create call is the name parameter, this is only used if the memory management structure module is compiled with the ON_MM_REPORT compile flags defined.
  • the ON_MM_REPORTS conditional compilation flag is used to allowed additional information to be collated and reported during RNI development. Additional fields are added to the S_ON_Mm structure to allow a memory management structure name, maximum size to be reached and current size information to be stored for reporting by the ON_mm_report function which dumps all the status information for existing memory management structures when called.
  • ON_MM_REPORT compile flag when used ON_mm_pop and ON_mm_push are implemented as functions rather than macros, this is to aid debugging and code maintainability. However, it is important to note that this means that two versions of the push and pop functionality are being maintained.
  • a memory block of size sizeof (struct S_ON_Mm) + (blocksize * no_of_nodes) + (sizeof (char*)*no_of_nodes - 1) is allocated, e.g. using malloc. This allows space for the S_ON_Mm data structure, the memory for the data blocks and room for the stack of free pointers which will be maintained. This is illustrated in figure 2.
  • the sum no_of_nodes-1 is needed rather than no_of_nodes because the pointer mm_base points to the first node.
  • ON_mm_pop A memory management structure is manipulated by ON_mm_pop and ON_mm_push . This functionality is implemented as macros for efficiency. The algorithms used are relatively simple. ON_mm_pop - called when memory is to be allocated (malloc)
  • the memory manager provides a means to rapidly allocate and deallocate memory in a system.
  • An application is able to create many memory managers each of which creates and maintains only memory blocks of one fixed size. The number and size of the memory blocks in a memory manager is configured by the application.
  • the memory manager will allocate all of the memory blocks in one contiguous piece of memory when the memory manager is created, and the memory manager will then manage that piece of memory.
  • the memory manager maintains a stack of pointers to its free memory blocks. These blocks can then be rapidly pushed and pulled from the stack of free blocks.
  • the advantages that the memory manager offers are reduced system memory fragmentation, fast memory allocation, and allocation of memory at system initialisation time, ahead of the application using it.
  • the memory manager can be used in any systems which require dynamic allocation of memory blocks of fixed size. Specifically the memory manager can be used in the provision of a real-time CORBA (Common Object Request Broker Architecture) implementation.
  • CORBA Common Object Request Broker Architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Devices For Executing Special Programs (AREA)
EP97309477A 1996-11-25 1997-11-25 Système et méthode de gestion de mémoire Expired - Lifetime EP0844564B1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US756200 1996-11-25
US08/756,200 US5950231A (en) 1996-11-25 1996-11-25 Memory manager system

Publications (3)

Publication Number Publication Date
EP0844564A2 true EP0844564A2 (fr) 1998-05-27
EP0844564A3 EP0844564A3 (fr) 1999-12-01
EP0844564B1 EP0844564B1 (fr) 2004-05-26

Family

ID=25042440

Family Applications (1)

Application Number Title Priority Date Filing Date
EP97309477A Expired - Lifetime EP0844564B1 (fr) 1996-11-25 1997-11-25 Système et méthode de gestion de mémoire

Country Status (3)

Country Link
US (1) US5950231A (fr)
EP (1) EP0844564B1 (fr)
DE (1) DE69729262T2 (fr)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001031454A1 (fr) * 1999-10-27 2001-05-03 Dr. Johannes Heidenhain Gmbh Procede de gestion dynamique de memoire
EP1489507A1 (fr) * 2003-06-19 2004-12-22 Texas Instruments Incorporated Préallocation de mémoire
DE102007026690A1 (de) * 2007-06-08 2008-12-11 Robert Bosch Gmbh Verfahren und Steuergerät zum Betreiben eines nichtflüchtigen Speichers, insbesondere zum Einsatz in Kraftfahrzeugen

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430665B1 (en) * 1999-06-25 2002-08-06 Sun Microsystems, Inc. System and method for heuristically allocating memory
US7093263B1 (en) * 1999-10-21 2006-08-15 Oracle International Corporation System and methodology for supporting a platform independent object format for a run-time environment
US6539464B1 (en) * 2000-04-08 2003-03-25 Radoslav Nenkov Getov Memory allocator for multithread environment
US20020163913A1 (en) * 2001-05-07 2002-11-07 Jintae Oh Pointer management and content matching packet classification
US7000087B2 (en) * 2001-11-07 2006-02-14 International Business Machines Corporation Programmatically pre-selecting specific physical memory blocks to allocate to an executing application
US8060680B2 (en) * 2002-09-16 2011-11-15 Hewlett-Packard Development Company, L.P. Method of allocating memory
WO2004066571A1 (fr) * 2003-01-20 2004-08-05 Fujitsu Limited Appareil de commutation de reseau et procede de commutation de reseau
AU2004316014B2 (en) 2004-02-19 2010-06-17 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for state memory management
EP2115593B1 (fr) * 2007-01-26 2018-10-24 Intel Corporation Processeur de mémoire adressable par le contenu hiérarchique et inaltérable
US9601199B2 (en) 2007-01-26 2017-03-21 Intel Corporation Iterator register for structured memory
CN101903869B (zh) * 2007-12-21 2013-12-18 海坎普系统公司 用于统一处理结构化数据和数据压缩的分层区块标识的数据通信
US7995596B2 (en) 2008-05-13 2011-08-09 Netlogic Microsystems, Inc. System and method for offloading packet protocol encapsulation from software

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0439920A2 (fr) * 1990-01-31 1991-08-07 Hewlett-Packard Company Système et procédé de gestion de mémoire dans un microordinateur
US5493652A (en) * 1994-04-29 1996-02-20 International Business Machines Corporation Management system for a buffer memory having buffers of uniform size in which the buffers are divided into a portion of contiguous unused buffers and a portion of contiguous buffers in which at least some are used

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247634A (en) * 1990-03-20 1993-09-21 Hewlett-Packard Company Method of managing memory allocation by association of memory blocks with a tree structure
US5577243A (en) * 1994-03-31 1996-11-19 Lexmark International, Inc. Reallocation of returned memory blocks sorted in predetermined sizes and addressed by pointer addresses in a free memory list
US5579452A (en) * 1994-09-29 1996-11-26 Xerox Corporation Method of managing memory allocation in a printing system
US5625819A (en) * 1995-04-26 1997-04-29 Honeywell, Inc. Methods and apparatus for performing heap management and protecting data structure integrity in non-volatile memory
US5835959A (en) * 1995-12-01 1998-11-10 Sand Technology Systems International, Inc. Memory management system and method using dual indexing structures
US5721858A (en) * 1995-12-12 1998-02-24 International Business Machines Corporation Virtual memory mapping method and system for memory management of pools of logical partitions for bat and TLB entries in a data processing system
US5835958A (en) * 1996-10-29 1998-11-10 Sun Microsystems, Inc. Method and apparatus for dynamically sizing non-contiguous runtime stacks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0439920A2 (fr) * 1990-01-31 1991-08-07 Hewlett-Packard Company Système et procédé de gestion de mémoire dans un microordinateur
US5493652A (en) * 1994-04-29 1996-02-20 International Business Machines Corporation Management system for a buffer memory having buffers of uniform size in which the buffers are divided into a portion of contiguous unused buffers and a portion of contiguous buffers in which at least some are used

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001031454A1 (fr) * 1999-10-27 2001-05-03 Dr. Johannes Heidenhain Gmbh Procede de gestion dynamique de memoire
US7035990B1 (en) 1999-10-27 2006-04-25 Dr. Johannes Heidenhain Gmbh Method for dynamic memory management
EP1489507A1 (fr) * 2003-06-19 2004-12-22 Texas Instruments Incorporated Préallocation de mémoire
US7434021B2 (en) 2003-06-19 2008-10-07 Texas Instruments Incorporated Memory allocation in a multi-processor system
KR101085763B1 (ko) 2003-06-19 2011-11-21 텍사스 인스트루먼츠 인코포레이티드 멀티-프로세서 시스템에서의 메모리 할당
DE102007026690A1 (de) * 2007-06-08 2008-12-11 Robert Bosch Gmbh Verfahren und Steuergerät zum Betreiben eines nichtflüchtigen Speichers, insbesondere zum Einsatz in Kraftfahrzeugen

Also Published As

Publication number Publication date
US5950231A (en) 1999-09-07
EP0844564A3 (fr) 1999-12-01
DE69729262T2 (de) 2004-09-16
DE69729262D1 (de) 2004-07-01
EP0844564B1 (fr) 2004-05-26

Similar Documents

Publication Publication Date Title
EP0844564B1 (fr) Système et méthode de gestion de mémoire
KR100541174B1 (ko) 로컬화된 메모리 재이용을 가진 데이터 처리기
US6816956B1 (en) User control of multiple memory heaps
US6490670B1 (en) Method and apparatus for efficiently allocating objects in object oriented systems
US6868488B2 (en) Binned remembered sets
US6105040A (en) Method and apparatus for managing stored objects
US6529919B1 (en) Incremental class unloading in a train-algorithm-based garbage collector
US7136887B2 (en) Method and mechanism for finding references in a card in time linear in the size of the card in a garbage-collected heap
US6105041A (en) Using three-state references to manage garbage collection of referenced objects
US6557091B2 (en) Data processor with localized memory reclamation
US7587566B2 (en) Realtime memory management via locking realtime threads and related data structures
KR20010082032A (ko) 영구적이고 확실한 저장 할당을 위한 시스템 및 방법
JPH0695954A (ja) コンサーバティブ・スタックとジェネレイショナル・ヒープガーベージ・コレクション用コンピュータシステム及び方法
EP1101167A1 (fr) Technique et dispositif de reponse d'attribution de memoire pre-deterministe dans un systeme informatique
US7043509B2 (en) Parallel non-contiguous allocation and card parsing
WO1999031582A1 (fr) Systeme et procede de gestion de memoire de programme oriente objet faisant appel a des pools de memoire de taille fixe
US20100030994A1 (en) Methods, systems, and computer readable media for memory allocation and deallocation
US5963982A (en) Defragmentation of stored data without pointer indirection
WO2001090899A2 (fr) Systeme et procede de gestion de memoire faisant appel a des blocs de dimension fixe
US7330956B1 (en) Bucket based memory allocation
US7620943B1 (en) Using class properties to segregate objects in a generation managed by the train algorithm
US20040088339A1 (en) Efficient encoding of references into a collection set
US20050154851A1 (en) Fast, high reliability dynamic memory manager
US7334104B2 (en) Satisfying memory allocation requests from memory pool or lookaside lists based on memory size requested to be allocated
US20070005552A1 (en) Methods and systems for reducing transient memory consumption in an object-oriented system

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): DE FR GB

AX Request for extension of the european patent

Free format text: AL;LT;LV;MK;RO;SI

RAP3 Party data changed (applicant data changed or rights of an application transferred)

Owner name: NORTEL NETWORKS CORPORATION

PUAL Search report despatched

Free format text: ORIGINAL CODE: 0009013

AK Designated contracting states

Kind code of ref document: A3

Designated state(s): AT BE CH DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE

AX Request for extension of the european patent

Free format text: AL;LT;LV;MK;RO;SI

17P Request for examination filed

Effective date: 20000602

AKX Designation fees paid

Free format text: DE FR GB

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: NORTEL NETWORKS LIMITED

17Q First examination report despatched

Effective date: 20020703

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: NORTEL NETWORKS LIMITED

RTI1 Title (correction)

Free format text: MEMORY MANAGER SYSTEM AND METHOD THEREFOR

GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

RTI1 Title (correction)

Free format text: MEMORY MANAGER SYSTEM AND METHOD THEREFOR

GRAS Grant fee paid

Free format text: ORIGINAL CODE: EPIDOSNIGR3

GRAA (expected) grant

Free format text: ORIGINAL CODE: 0009210

AK Designated contracting states

Kind code of ref document: B1

Designated state(s): DE FR GB

REG Reference to a national code

Ref country code: GB

Ref legal event code: FG4D

REF Corresponds to:

Ref document number: 69729262

Country of ref document: DE

Date of ref document: 20040701

Kind code of ref document: P

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: GB

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20041125

ET Fr: translation filed
PLBE No opposition filed within time limit

Free format text: ORIGINAL CODE: 0009261

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT

26N No opposition filed

Effective date: 20050301

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: DE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20050601

GBPC Gb: european patent ceased through non-payment of renewal fee

Effective date: 20041125

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: FR

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20050729

REG Reference to a national code

Ref country code: FR

Ref legal event code: ST