EP1889159A2 - Method for managing memories of digital computing devices - Google Patents

Method for managing memories of digital computing devices

Info

Publication number
EP1889159A2
EP1889159A2 EP06742576A EP06742576A EP1889159A2 EP 1889159 A2 EP1889159 A2 EP 1889159A2 EP 06742576 A EP06742576 A EP 06742576A EP 06742576 A EP06742576 A EP 06742576A EP 1889159 A2 EP1889159 A2 EP 1889159A2
Authority
EP
European Patent Office
Prior art keywords
memory
stack
bytes
memory object
stacks
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
Application number
EP06742576A
Other languages
German (de)
French (fr)
Inventor
Michael Roth
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.)
Rohde and Schwarz GmbH and Co KG
Original Assignee
Rohde and Schwarz GmbH and Co KG
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 Rohde and Schwarz GmbH and Co KG filed Critical Rohde and Schwarz GmbH and Co KG
Publication of EP1889159A2 publication Critical patent/EP1889159A2/en
Withdrawn legal-status Critical Current

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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

Definitions

  • the invention relates to a method for managing memory of digital computing device.
  • Modern computing facilities allow the use of complex programs due to the large existing memory and the enormous computing power. Through these programs, processes run on the computing device, within which several so-called threads are processed simultaneously. Because many of these threads are not synchronized with each other in time, multiple threads may simultaneously attempt to access memory management, potentially accessing a particular block of available memory. Such concurrent access can lead to system instability. However, intervention of the operating system can prevent such simultaneous access to a particular memory block.
  • the prevention of access to a memory block already in access by another thread is described in DE 679 15 532 T2. In this case, simultaneous access is prevented only if the simultaneous access concerns the same memory block.
  • the object is achieved by the method according to claim 1.
  • a stack management is used for the available memory.
  • at least one such stack is initially created in the available memory area.
  • the inclusion and return of a storage object by a thread is then carried out by one atomic operation.
  • a further blocking of the remaining threads is not required. It is already ensured by the atomic operation that the access to the memory object takes place in only a single step, whereby an overlap with parallel steps of further threads can not occur.
  • Figure 1 is a schematic representation of a known memory management with double-linked lists.
  • Fig. 2 is a memory management means of stacking and atomic recording and return functions
  • Fig. 3 is a schematic representation of the process sequence of the invention
  • the memory is divided into a plurality of memory objects 1, 2, 3 and 4, which are shown schematically in FIG.
  • a first field Ia and a second field Ib are applied.
  • the first field 1a of the first memory object 1 refers to the position of the second memory object 2.
  • the first field 2a of the second memory object 2 refers to the position of the third memory object 3 and so on.
  • the position of the next storage object is not only indicated in the forward direction, but in the second field 2b, 3b and 4b of the storage objects 2, 3 and 4, the position of the respective preceding storage object 1, 2 and 3 indicated. In this way, it is possible to take out a memory object arranged between two memory objects and at the same time to update the fields of the adjacent memory objects.
  • the first memory object 1 in a list can be reached by a special pointer 5 and is also characterized in that a zero vector is stored in the second field Ib instead of the position of a preceding memory object. Accordingly, the memory object 4 is identified last by storing a zero vector instead of the position of a further memory object in the first field 4a of the memory object 4.
  • FIG. 2 shows an example of a memory management according to the invention.
  • an initialization preferably creates a plurality of stacks or stacks. These stacks are a special form of simply linked lists. 2, four such stacks are shown, which are designated by the reference numerals 6, 7, 8 and 9.
  • Each of these stacks 6 to 9 comprises a plurality of memory objects of different sizes.
  • the first stack 6 objects up to a size of 16 bytes
  • the second stack 7 objects up to a size of 32 bytes
  • in the third stack 8 objects up to a size of 64 bytes
  • the fourth stack 9 Objects can be stored up to a size of 128 bytes.
  • the fourth stack 9 consists of a series of memory objects 10.1, 10.2, 10.3 ... to 10.k, which are simply linked together.
  • the last memory object 10.k of the fourth stack 9 is shown slightly offset in FIG. An access to the individual memory objects is possible on all stacks 6 to 9 only for the lowest memory object of the stacks 6 to 9, for example on stack 9 only for the memory object 10. In Fig. 2, therefore, upon request of memory z. B. the last memory object 10 k of the fourth stack 9 are used. If the memory object 10 k is freed again because it is no longer needed by a thread, it will be returned accordingly at the end of the fourth stack 9.
  • this is represented schematically by a number of different threads 11, by which a memory requirement is given in each case.
  • a process in multiple threads 12, 13, and 14 requests storage volumes of the same size.
  • the size of the requested memory results from the data to be stored.
  • the fourth stack 9 is selected as soon as there is a memory requirement of more than 64 bytes up to a maximum size of 128 bytes. If a storage volume of, for example, 75 bytes is required by the first thread 12, then that one of the stacks 6 through 9 is selected, which contains a free storage object of suitable size. In the illustrated embodiment, this is the fourth stack 9.
  • memory objects 10. I having a size of 128 bytes are made available. Since the memory object 10. K is the last memory object in the fourth stack 9, a so-called "pop" operation is processed on the basis of the memory request of the first thread 12 and thus the memory object 10. k is made available to the thread 12.
  • Such a pop routine is atomic or indivisible, i. H. the memory object 10. k is removed from the fourth stack 9 for the thread 12 in a single processing step.
  • This atomic or atomic operation which maps memory object 10.k to thread 12, prevents another thread, such as thread 13, from accessing the same memory object
  • 10. k can access at the same time. Ie. as soon as a new one Processing step can be performed by the system. the processing with regard to the storage object 10 k is completed and the 10 th storage object is no longer part of the fourth stack 9. In the case of a further storage request by the thread 13, then the last storage object of the fourth stack 9 is the storage object 10 k -1. Again, an atomic pop operation is performed to transfer the memory object 10.k-1 to the thread 13.
  • Such atomic operations require appropriate hardware support and can not be formulated directly in normal programming languages, but require the use of machine language.
  • these hardware-implemented, but usually not used for memory management so-called lock-free-pop calls or lock-free push calls are used to manage memory.
  • lock-free-pop calls or lock-free push calls are used to manage memory.
  • a singly linked list is used in which memory objects can only be retrieved or returned at one end of the applied stacks.
  • FIG. 2 it is further shown for a number of threads 15, as after a delete call of a thread, the respective released memory object is given back to the appropriate stack.
  • each of the memory objects 10. I there is a header 10. I head , as shown for the memory object 10. K in FIG. 2, in which the assignment to a particular stack is coded. For example, the assignment to the fourth stack 9 is contained in the header 10.k head .
  • a delete function is now called by a thread 16, which was assigned the memory object 10.k due to a corresponding lock-free-pop operation, then the memory object is activated by a corresponding, likewise atomic lock-free push operation 10. k returned.
  • the storage object 10. k is appended to the last memory element 10 k belonging to the fourth stack 9.
  • the order of the memory objects 10.sub.i in the fourth stack 9 is changed.
  • the stacks 6 required for the process flow 9 are merely initialized, but at this point in time there are no memory objects 10. If a memory object of a certain size is needed for the first time, for example a memory object of the third stack 8 for a 50-byte element to be stored, this first memory request is processed via the slower system memory management and the memory object is made available therefrom. Concurrent access is prevented in the illustrated example of doubly linked lists as system memory management by a slow mutex opertation.
  • the memory object made available in this way to a first thread is not returned again via the slower system memory management after a delete call, instead the third stack 8 is locked onto a corresponding stack, in the exemplary embodiment described by a lock-free push Operation filed. For the next invocation of a storage object of this size, therefore, this storage object can be accessed with a very fast lock-free-pop operation.
  • This procedure has the advantage that it is not necessary to allocate a fixed number of storage objects to the individual stacks 6, 7, 8 and 9 at the start of a process. Rather, the memory requirement can be dynamically adapted to the running process or its threads. For example, if a process runs in the background with few concurrent threads and has little need for memory objects, then resources are significantly reduced in such an approach.
  • step 19 a program is started, thus generating a process on, for example, a computer.
  • multiple stacks 6 through 9 are initialized.
  • the initialization of the stacks 6-9 is shown in step 20.
  • step 20 In the in 3 illustrated embodiment of the process flow initially only individual stacks 6-9 are created, but without filling them with a certain predefined number of memory objects.
  • a corresponding stack is first selected on the basis of the object size defined by the thread.
  • the second stack 7 is selected in the stack selection of FIG. Subsequently, in step 23, the atomic pop operation is performed a query. Part of this atomic operation is a query 26, whether in the second stack 7, a memory object is available.
  • a null vector ("NULL") is returned and a memory object is accessed through a system call in step 24 through slower system memory management Size 32 bytes provided.
  • NULL null vector
  • the size of the provided storage object is not determined directly by the thread in step 21, but via the selection of a particular object size in step 22, taking into account the initialized stack.
  • the memory request is changed to request a memory object of size 32 bytes.
  • step 26 would therefore have to be answered with "yes" and a storage object is immediately delivered.
  • the return of the same on the basis of a delete call is shown in the further course of the method both for a memory object made available by means of a lock-free-pop call and via the system memory management.
  • the process following a thread's delete call is the same for both situations. Ie. In this case, no account is taken of the way in which the storage object was made available.
  • Fig. 3 this is schematically represented by the two parallel paths, wherein on the right side painted reference numerals are used.
  • a thread starts a delete call.
  • the corresponding memory object is assigned to a specific stack by evaluating the information of the header of the memory object. Consequently, in the described embodiment, the memory object of size 32 bytes is assigned to the second stack 7.
  • the return of the memory object to the second stack 7 takes place in both cases via a lock-free-push operation 29 or 29 '.
  • the last method step 30 indicates that the memory object of the second stack 7 returned in this way is thus available for a next call. This next call can then, as already explained, be made available to a thread by a lock-free-pop operation.
  • a reduction in memory waste can be achieved by creating frequency distributions for requested object sizes. This can also be defined during the execution of different processes for the individual processes. Will such a process with his concurrent threads are started once again, the previously determined frequency distribution from the previous process run is used to allow an adapted size distribution of the stacks 6 to 9.
  • the system can be self-learning, ie with each new pass, the knowledge gained about the size distributions of the memory requirement is updated and the updated data are used each time the process is called.

Abstract

The invention relates to a method for managing memories. When carrying out a process, at least one stack (6, 7, 8, 9) is created for memory objects (10.1, 10.2, ... 10.k). A request for a memory object (10.k) from a stack (6, 7, 8, 9) is carried out by using an atomic operation, and a return of a memory object (10.k) to the stack (6, 7, 8, 9) is likewise carried out by using an atomic operation.

Description

Verfahren zur Speicherverwaltung von digitalen Recheneinrichtungen Method for memory management of digital computing devices
Die Erfindung betrifft ein Verfahren zur Verwaltung von Speicher von digitalen Recheneinrichtung.The invention relates to a method for managing memory of digital computing device.
Moderne Recheneinrichtungen ermöglichen auf Grund des großen vorhandenen Speichers und der enormen Rechenleistungen die Verwendung komplexer Programme. Durch diese Programme laufen auf der Recheneinrichtung Prozesse ab, innerhalb derer mehrere sogenannte Threads gleichzeitig abgearbeitet werden. Da viele dieser Threads zeitlich nicht unmittelbar aufeinander abgestimmt sind, kann es vorkommen, dass mehrere Threads gleichzeitig auf die Speicherverwaltung und damit potentiell auf einen bestimmten Block des verfügbaren Speichers zuzugreifen versuchen. Ein solcher gleichzeitiger Zugriff kann zu einer Systeminstabilität führen. Durch einen Eingriff des Betriebssystems kann ein solcher gleichzeitiger Zugriff auf einen bestimmten Speicherblock jedoch verhindert werden. Das Verhindern des Zugriffs auf einen bereits im Zugriff befindlichen Speicherblock durch einen weiteren Thread ist in der DE 679 15 532 T2 beschrieben. Dabei wird ein gleichzeitiger Zugriff nur dann verhindert, wenn der gleichzeitige Zugriff denselben Speicherblock betrifft.Modern computing facilities allow the use of complex programs due to the large existing memory and the enormous computing power. Through these programs, processes run on the computing device, within which several so-called threads are processed simultaneously. Because many of these threads are not synchronized with each other in time, multiple threads may simultaneously attempt to access memory management, potentially accessing a particular block of available memory. Such concurrent access can lead to system instability. However, intervention of the operating system can prevent such simultaneous access to a particular memory block. The prevention of access to a memory block already in access by another thread is described in DE 679 15 532 T2. In this case, simultaneous access is prevented only if the simultaneous access concerns the same memory block.
In gängigen Speicherverwaltungen werden beispielsweise häufig sogenannte doppelt verkettete Listen zur Verwaltung des gesamten Speichervolumens in einzelnen Speicherobjekten verwendet. Bei diesen doppelt verketteten Listen erfolgt ein Zugriff auf ein bestimmtes Speicherobjekt in mehreren Schritten. Es ist daher erforderlich, mit dem ersten Zugriff auf ein solches Speicherobjekt die übrigen Threads zu sperren, so dass ein gleichzeitiger Zugriff durch einen weiteren Thread nicht möglich ist, bevor die einzelnen Schritte des ersten Zugriffs abgearbeitet sind. Diese Zugriffssperrung erfolgt unter Zuhilfenahme des Betriebssystems durch eine sogenannte Mutex-Routine. Durch das Einbinden des Betriebssystems und das Ausführen der Mutex-Routine geht jedoch kostbare Rechenzeit verloren. In dieser Zeit sind die übrigen Threads blockiert, indem sie durch Mutex- basiertes Locking vom Betriebssystem vorübergehend von der Ausführung abgehalten werden.For example, in common memory management systems, so-called double-linked lists are frequently used to manage the entire storage volume in individual storage objects. With these doubly linked lists, access to a specific storage object takes place in several steps. It is therefore necessary to block the remaining threads with the first access to such a memory object, so that simultaneous access by another thread is not possible before the individual steps of the first access have been processed. This access locking is done with the help of the operating system through a so-called Mutex routine. By incorporating the Operating system and running the mutex routine, however, lost precious computing time. During this time, the remaining threads are blocked by temporarily being prevented from running by Mutex-based locking from the operating system.
Es ist die Aufgabe der Erfindung, ein Verfahren zur Verwaltung von Speicher einer digitalen Recheneinheit zu schaffen, bei dem in einer Multithread-Umgebung der gleichzeitige Zugriff durch nebenläufige Threads auf einen bestimmten Speicherblock unmöglich ist, das aber gleichzeitig kurze Speicherzugriffszeiten erlaubt.It is the object of the invention to provide a method for managing memory of a digital arithmetic unit, in which in a multithreaded environment the concurrent access by concurrent threads to a particular memory block is impossible, but at the same time allows short memory access times.
Die Aufgabe wird durch das erfindungsgemäße Verfahren nach Anspruch 1 gelöst.The object is achieved by the method according to claim 1.
Anstelle von doppelt verketteten Listen wird erfindungsgemäß eine StapelVerwaltung für den verfügbaren Speicher verwendet. Hierzu wird in dem verfügbaren Speicherbereich zunächst zumindest ein solcher Stapel angelegt. Die Aufnahme und Rückgabe eines Speicherobjekts durch einen Thread erfolgt dann durch jeweils eine atomare Operation. Durch Verwenden einer solchen atomaren Operation für den Speicherzugriff zusammen mit einer Stapelorganisation des Speichers, der lediglich einen Zugriff auf das letzte Objekt des Stapels ermöglicht, ist eine weitergehende Blockierung der übrigen Threads nicht erforderlich. Dabei wird durch die atomare Operation bereits gewährleistet, dass der Zugriff auf das Speicherobjekt in lediglich einem einzigen Schritt erfolgt, wodurch ein Überlapp mit parallel ablaufenden Schritten weiterer Threads nicht auftreten kann.Instead of doubly linked lists, according to the invention a stack management is used for the available memory. For this purpose, at least one such stack is initially created in the available memory area. The inclusion and return of a storage object by a thread is then carried out by one atomic operation. By using such an atomic operation for the memory access together with a stack organization of the memory which only allows access to the last object of the stack, a further blocking of the remaining threads is not required. It is already ensured by the atomic operation that the access to the memory object takes place in only a single step, whereby an overlap with parallel steps of further threads can not occur.
In den Unteransprüchen sind vorteilhafte Weiterbildungen des erfindungsgemäßen Verfahrens beansprucht .Advantageous developments of the method according to the invention are claimed in the subclaims.
Ein bevorzugtes Ausführungsbeispiel ist in den Figuren dargestellt und wird in der nachfolgenden Beschreibung näher erläutert. Es zeigen: Fig. 1 eine Schematische Darstellung einer bekannten Speicherverwaltung mit doppel verketteten Listen;A preferred embodiment is shown in the figures and will be explained in more detail in the following description. Show it: Figure 1 is a schematic representation of a known memory management with double-linked lists.
Fig. 2 eine Speicherverwaltung mittels Stapeln und atomarer Aufnahme- und Rückgabefunktionen undFig. 2 is a memory management means of stacking and atomic recording and return functions and
Fig. 3 eine schematische Darstellung über den Verfahrensablauf der erfindungsgemäßenFig. 3 is a schematic representation of the process sequence of the invention
Speicherverwaltung .Memory management.
Bei sogenannten doppelt verketteten Listen wird der Speicher in mehrere Speicherobjekte 1, 2, 3 und 4 eingeteilt, die in Fig. 1 schematisch dargestellt sind. Innerhalb eines jeden solchen Speicherobjekts 1 bis 4 sind ein erstes Feld Ia und ein zweites Feld Ib angelegt. Dabei verweist das erste Feld Ia des ersten Speicherobjekts 1 auf die Position des zweiten Speicherobjekts 2. Ebenso verweist das erste Feld 2a des zweiten Speicherobjekts 2 auf die Position des dritten Speicherobjekts 3 u.s.w. . Um die Aufnahme eines beliebigen mittleren Blocks zu ermöglichen, ist nicht nur in Vorwärtsrichtung die Position des jeweils nächsten Speicherobjekts angegeben, sondern es ist in dem zweiten Feld 2b, 3b und 4b der Speicherobjekte 2, 3 und 4 die Position des jeweils vorausgehenden Speicherobjekts 1, 2 und 3 angegeben. Auf diese Weise ist es möglich, einen zwischen zwei Speicherobjekten angeordnetes Speicherobjekt herauszunehmen und gleichzeitig die Felder der benachbarten Speicherobjekte zu aktualisieren.In so-called double-linked lists, the memory is divided into a plurality of memory objects 1, 2, 3 and 4, which are shown schematically in FIG. Within each such memory object 1 to 4, a first field Ia and a second field Ib are applied. In this case, the first field 1a of the first memory object 1 refers to the position of the second memory object 2. Likewise, the first field 2a of the second memory object 2 refers to the position of the third memory object 3 and so on. , In order to enable the inclusion of any middle block, the position of the next storage object is not only indicated in the forward direction, but in the second field 2b, 3b and 4b of the storage objects 2, 3 and 4, the position of the respective preceding storage object 1, 2 and 3 indicated. In this way, it is possible to take out a memory object arranged between two memory objects and at the same time to update the fields of the adjacent memory objects.
Solche doppelt verketteten Listen ermöglichen zwar den individuellen Zugriff auf ein beliebiges Speicherobjekt, weisen andererseits aber den Nachteil auf, dass in einer Multithread-Umgebung der gleichzeitige Zugriff mehrere Threads auf ein Speicherobjekt nur mit langsamen Operationen zu verhindern ist. Eine Möglichkeit ist die in der Einleitung bereits beschriebene Verwaltung der Zugriffe über die Mutex-Funktion. Das erste Speicherobjekt 1 in einer Liste ist durch einen speziellen Zeiger 5 erreichbar und außerdem dadurch gekennzeichnet, dass in dem zweiten Feld Ib anstelle der Position eines vorausgehenden Speicherobjekts ein Nullvektor abgelegt ist. Dementsprechend wird das Speicherobjekt 4 als letztes gekennzeichnet, indem anstelle der Position eines weiteren Speicherobjekts in dem ersten Feld 4a des Speicherobjekts 4 ein Nullvektor abgelegt ist.While such dual-linked lists allow for individual access to any storage object, they also have the disadvantage that in a multithreaded environment, concurrent access to multiple threads on a storage object is only to be prevented with slow operations. One possibility is the management of the already described in the introduction Accesses via the mutex function. The first memory object 1 in a list can be reached by a special pointer 5 and is also characterized in that a zero vector is stored in the second field Ib instead of the position of a preceding memory object. Accordingly, the memory object 4 is identified last by storing a zero vector instead of the position of a further memory object in the first field 4a of the memory object 4.
In der Fig. 2 ist dagegen ein Beispiel einer erfindungsgemäßen Speicherverwaltung dargestellt. Bei der erfindungsgemäßen Speicherverwaltung werden zunächst bei einer Initatialisierung vorzugsweise mehrere Stapel oder Stacks angelegt. Diese Stacks sind eine spezielle Form einfach verketteter Listen. In der Fig. 2 sind vier solcher Stacks dargestellt, die mit den Bezugszeichen 6, 7, 8 und 9 bezeichnet sind. Jeder dieser Stacks 6 bis 9 umfasst mehrere Speicherobjekte unterschiedlicher Größe. So können in dem ersten Stack 6 Objekte bis zu einer Größe von 16 Bytes, in dem zweiten Stack 7 Objekte bis zu einer Größe von 32 Bytes, in dem dritten Stack 8 Objekte bis zu einer Größe von 64 Bytes und schließlich in dem vierten Stack 9 Objekte bis zu einer Größe von 128 Bytes gespeichert werden. Bei Auftreten größerer zu speichernder Elemente können auch Stacks mit größeren Speicherobjekten angelegt werden, wobei vorzugsweise jeweils zum nächsten Stack die Größe der einzelnen Speicherobjekte verdoppelt wird. Die Aufteilung eines solchen Stacks in einzelne Speicherobjekte 10. i ist für den vierten Stack 9 detailliert dargestellt. Der vierte Stack 9 besteht aus einer Reihe einfach miteinander verketteten Speicherobjekten 10.1, 10.2, 10.3 ... bis 10. k. Das letzte Speicherobjekt 10. k des vierten Stacks 9 ist in der Fig. 2 leicht abgesetzt dargestellt. Ein Zugriff auf die einzelnen Speicherobjekte ist auf allen Stapeln 6 bis 9 jeweils nur für das unterste Speicherobjekt der Stapel 6 bis 9 möglich, beispielsweise auf Stapel 9 nur für das Speicherobjekt 10. k. In der Fig. 2 kann folglich bei einer Anforderung von Speicher z. B. das letzte Speicherobjekt 10. k des vierten Stapels 9 verwendet werden. Wird das Speicherobjekt 10. k wieder frei, da es durch einen Thread nicht länger benötigt wird, so wird es entsprechend am Ende des vierten Stacks 9 wieder zurückgegeben.In contrast, FIG. 2 shows an example of a memory management according to the invention. In the case of the memory management according to the invention, at first an initialization preferably creates a plurality of stacks or stacks. These stacks are a special form of simply linked lists. 2, four such stacks are shown, which are designated by the reference numerals 6, 7, 8 and 9. Each of these stacks 6 to 9 comprises a plurality of memory objects of different sizes. Thus, in the first stack 6 objects up to a size of 16 bytes, in the second stack 7 objects up to a size of 32 bytes, in the third stack 8 objects up to a size of 64 bytes and finally in the fourth stack 9 Objects can be stored up to a size of 128 bytes. If larger elements to be stored occur, stacks with larger memory objects can also be created, with the size of the individual memory objects preferably being doubled in each case to the next stack. The division of such a stack into individual memory objects 10 i is shown in detail for the fourth stack 9. The fourth stack 9 consists of a series of memory objects 10.1, 10.2, 10.3 ... to 10.k, which are simply linked together. The last memory object 10.k of the fourth stack 9 is shown slightly offset in FIG. An access to the individual memory objects is possible on all stacks 6 to 9 only for the lowest memory object of the stacks 6 to 9, for example on stack 9 only for the memory object 10. In Fig. 2, therefore, upon request of memory z. B. the last memory object 10 k of the fourth stack 9 are used. If the memory object 10 k is freed again because it is no longer needed by a thread, it will be returned accordingly at the end of the fourth stack 9.
In der Fig. 2 ist dies schematisch durch eine Anzahl unterschiedlicher Threads 11, durch die jeweils eine Speicheranforderung gegeben ist, dargestellt. Bei dem konkreten Ausführungsbeispiel fordert beispielsweise ein Prozess in mehreren Threads 12, 13 und 14 Speichervolumen derselben Größe an. Die Größe des angeforderten Speichers ergibt sich aus den zu speichernden Daten. In dem dargestellten Ausführungsbeispiel wird der vierte Stack 9 ausgewählt, sobald ein Speicherbedarf von mehr als 64 Bytes bis zu einer Maximalgröße von 128 Bytes vorhanden ist. Wird nun durch den ersten Thread 12 ein Speichervolumen von beispielsweise 75 Bytes benötigt, so wird zunächst derjenige der Stacks 6 bis 9 ausgewählt, der ein freies Speicherobjekt passender Größe enthält. In dem dargestellten Ausführungsbeispiel ist dies der vierte Stack 9. Hier werden Speicherobjekte 10. i mit einer Größe von 128 Bytes zur Verfügung gestellt. Da das Speicherobjekt 10. k das letzte Speicherobjekt in dem vierten Stack 9 ist, wird auf Grund der Speicheranfrage des ersten Threads 12 eine sogenannte "Pop" -Operation abgearbeitet und damit das Speicherobjekt 10.k dem Thread 12 zur Verfügung gestellt.In FIG. 2, this is represented schematically by a number of different threads 11, by which a memory requirement is given in each case. For example, in the particular embodiment, a process in multiple threads 12, 13, and 14 requests storage volumes of the same size. The size of the requested memory results from the data to be stored. In the illustrated embodiment, the fourth stack 9 is selected as soon as there is a memory requirement of more than 64 bytes up to a maximum size of 128 bytes. If a storage volume of, for example, 75 bytes is required by the first thread 12, then that one of the stacks 6 through 9 is selected, which contains a free storage object of suitable size. In the illustrated embodiment, this is the fourth stack 9. Here, memory objects 10. I having a size of 128 bytes are made available. Since the memory object 10. K is the last memory object in the fourth stack 9, a so-called "pop" operation is processed on the basis of the memory request of the first thread 12 and thus the memory object 10. k is made available to the thread 12.
Eine solche Pop-Routine ist atomar bzw. unteilbar, d. h. das Speicherobjekt 10. k wird für den Thread 12 in einem einzigen Verarbeitungsschritt von dem vierten Stack 9 abgenommen. Durch diese atomare bzw. unteilbare Operation, mit der das Speicherobjekt 10. k dem Thread 12 zugeordnet wird, wird verhindert, dass ein anderer Thread, beispielsweise der Thread 13 auf dasselbe SpeicherobjektSuch a pop routine is atomic or indivisible, i. H. the memory object 10. k is removed from the fourth stack 9 for the thread 12 in a single processing step. This atomic or atomic operation, which maps memory object 10.k to thread 12, prevents another thread, such as thread 13, from accessing the same memory object
10. k gleichzeitig zugreifen kann. D. h. , sobald ein neuer Verarbeitungsschritt durch das System durchgeführt werden kann. ist die Verarbeitung hinsichtlich des Speicherobjekts 10. k abgeschlossen und das lO.kte Speicherobjekt nicht länger Bestandteil des vierten Stacks 9. Bei einer weiteren Speicheranforderung durch den Thread 13 ist daher das dann letzte Speicherobjekt des vierten Stacks 9 das Speicherobjekt 10. k - 1. Auch hier wird wiederum zur Übergabe des Speicherobjekts 10. k - 1 an den Thread 13 eine atomare Pop-Operation durchgeführt.10. k can access at the same time. Ie. as soon as a new one Processing step can be performed by the system. the processing with regard to the storage object 10 k is completed and the 10 th storage object is no longer part of the fourth stack 9. In the case of a further storage request by the thread 13, then the last storage object of the fourth stack 9 is the storage object 10 k -1. Again, an atomic pop operation is performed to transfer the memory object 10.k-1 to the thread 13.
Solche atomaren Operationen setzen hardwareseitig entsprechende Unterstützung voraus und können nicht direkt in normalen Programmiersprachen formuliert werden, sondern erfordern den Einsatz von Maschinensprache. Erfindungsgemäß werden diese hardwareseitig implementierten, üblicherweise jedoch nicht zur Speicherverwaltung verwendeten sogenannten Lock-Free-Pop- Aufrufe bzw. Lock-Free-Push-Aufrufe zur Verwaltung von Speicher eingesetzt. Hierzu wird beispielsweise anstelle der doppelt verketteten Listen, wie sie in der Fig. 1 schematisch dargestellt wurden, eine einfach verkettete Liste verwendet, bei der lediglich an einem Ende der angelegten Stacks Speicherobjekte abgerufen bzw. zurückgegeben werden können.Such atomic operations require appropriate hardware support and can not be formulated directly in normal programming languages, but require the use of machine language. According to the invention, these hardware-implemented, but usually not used for memory management so-called lock-free-pop calls or lock-free push calls are used to manage memory. For this purpose, for example, instead of the double-linked lists, as shown schematically in FIG. 1, a singly linked list is used in which memory objects can only be retrieved or returned at one end of the applied stacks.
In der Fig. 2 ist es weiterhin für eine Anzahl von Threads 15 dargestellt, wie nach einem Delete-Aufruf eines Threads das jeweilige freiwerdende Speicherobjekt wieder zurück zu dem passenden Stack gegeben wird. In jedem der Speicherobjekte 10. i ist ein Header 10.ihead vorhanden, wie es für das Speicherobjekt 10. k in der Fig. 2 gezeigt ist, in dem die Zuordnung zu einem bestimmten Stack kodiert ist. So ist beispielsweise in dem Header 10.khead die Zuordnung zu dem vierten Stack 9 enthalten. Wird nun durch einen Thread 16, dem auf Grund einer entsprechenden Lock- Free-Pop-Operation das Speicherobjekt 10. k zugeordnet wurde, eine Delete-Funktion aufgerufen, so wird durch eine entsprechende, ebenfalls atomare Lock-Free-Push-Operation das Speicherobjekt 10. k zurückgegeben. Das Speicherobjekt 10. k wird dabei an das letzte zu dem vierten Stack 9 gehörende Speicherelement 10. k - 1 angehängt. Damit wird abhängig von der Reihenfolge in der unterschiedliche Threads 16, 17, 18 die Speicherobjekte 10. i zurückgeben, die Reihenfolge der Speicherobjekte 10. i in dem vierten Stack 9 geändert.In FIG. 2, it is further shown for a number of threads 15, as after a delete call of a thread, the respective released memory object is given back to the appropriate stack. In each of the memory objects 10. I, there is a header 10. I head , as shown for the memory object 10. K in FIG. 2, in which the assignment to a particular stack is coded. For example, the assignment to the fourth stack 9 is contained in the header 10.k head . If a delete function is now called by a thread 16, which was assigned the memory object 10.k due to a corresponding lock-free-pop operation, then the memory object is activated by a corresponding, likewise atomic lock-free push operation 10. k returned. The storage object 10. k is appended to the last memory element 10 k belonging to the fourth stack 9. Thus, depending on the order in which different threads 16, 17, 18 return the memory objects 10.sub.i, the order of the memory objects 10.sub.i in the fourth stack 9 is changed.
Entscheidend ist es, dass diese sogenannten Lock-Free-Pop- und Lock-Free-Push-Aufrufe atomar sind und daher extrem schnell abgearbeitet werden können. Der Geschwindigkeitsvorteil beruht dabei entscheidend darauf, dass die Verwendung einer Betriebssystemoperation, beispielsweise Mutex, nicht erforderlich ist, um weitere Threads von einem gleichzeitigen Zugriff auf ein bestimmtes Speicherobjekt auszuschließen. Ein solcher Ausschluss für den gleichzeitigen Zugriff durch weitere Threads ist auf Grund der atomaren Eigenschaft der Popbzw. Push-Aufrufe nicht erforderlich. Insbesondere muss das Betriebssystem bei einem tatsächlich gleichzeitigen Zugriff auf die Speicherverwaltung (sog. Contention-Fall) keinen Threadwechsel durchführen, der im Vergleich zur Speicheroperation selbst ungleich mehr Rechenzeit erfordert.It is crucial that these so-called lock-free-pop and lock-free-push calls are atomic and can therefore be processed extremely quickly. The speed advantage is crucially based on the fact that the use of an operating system operation, such as Mutex, is not required to exclude additional threads from concurrent access to a specific storage object. Such an exclusion for concurrent access by further threads is due to the atomic property of the pop. Push calls not required. In particular, the operating system does not have to perform a thread change in the case of an actually simultaneous access to the memory management (so-called contention case), which requires much more computation time than the memory operation itself.
Bei einer solchen Verwaltung von Speicher in Stacks und Zugriffen mittels Lock-Free-Pop- und Lock-Free-Push- Aufrufen ist es unvermeidbar, dass ein Teil des vorhandenen Speichervolumens verschenkt wird. Diese Verschwendung entsteht durch die nicht ideal angepasste Größe der einzelnen Stacks bzw. deren Speicherobjekte. Ist eine bestimmte Größenstruktur der zu speichernden Daten bekannt, so kann jedoch die Verteilung der Speicherobjektgrößen der einzelnen Stacks 6 bis 9 hieran angepasst werden.With such management of stacks and accesses using lock-free-pop and lock-free-push calls, it is inevitable that part of the existing storage volume will be wasted. This waste is caused by the size of the individual stacks or their storage objects, which is not ideally adapted. If a certain size structure of the data to be stored is known, however, the distribution of the memory object sizes of the individual stacks 6 to 9 can be adapted to this.
Gemäß einer besonders bevorzugten Form der erfindungsgemäßen Speicherverwaltung ist es vorgesehen, dass zu Beginn eines Prozesses, beispielsweise nach einem Programmstart, die zum Prozessablauf benötigten Stacks 6 bis 9 lediglich initialisiert werden, zu diesem Zeitpunkt aber noch keine Speicherobjekte 10. i enthalten. Wird nun ein Speicherobjekt einer bestimmten Größe zum ersten Mal benötigt, beispielsweise für ein zu speicherndes Element der Größe 50 Bytes ein Speicherobjekt des dritten Stacks 8, so wird diese erste Speicheranforderung über die langsamere Systemspeicherverwaltung abgearbeitet und das Speicherobjekt von dort zur Verfügung gestellt. Der gleichzeitige Zugriff wird in dem erläuterten Beispiel doppelt verketteter Listen als Systemspeicherverwaltung durch eine langsame Mutex Opertation verhindert . Das auf diese Art und Weise einem ersten Thread zur Verfügung gestellte Speicherobjekt wird jedoch nach einem Delete- Aufruf nicht wieder über die langsamere Systemspeicherverwaltung zurückgegeben, sondern es wird auf einen entsprechenden Stack, im beschriebenen Ausführungsbeispiel den dritten Stack 8 durch eine Lock- Free-Push-Operation abgelegt. Für den nächsten Aufruf eines Speicherobjekts dieser Größe kann daher auf dieses Speicherobjekt mit einer sehr schnellen Lock-Free-Pop- Operation zugegriffen werden.According to a particularly preferred form of the memory management according to the invention, it is provided that at the beginning of a process, for example after a program start, the stacks 6 required for the process flow 9 are merely initialized, but at this point in time there are no memory objects 10. If a memory object of a certain size is needed for the first time, for example a memory object of the third stack 8 for a 50-byte element to be stored, this first memory request is processed via the slower system memory management and the memory object is made available therefrom. Concurrent access is prevented in the illustrated example of doubly linked lists as system memory management by a slow mutex opertation. However, the memory object made available in this way to a first thread is not returned again via the slower system memory management after a delete call, instead the third stack 8 is locked onto a corresponding stack, in the exemplary embodiment described by a lock-free push Operation filed. For the next invocation of a storage object of this size, therefore, this storage object can be accessed with a very fast lock-free-pop operation.
Diese Vorgehensweise hat den Vorteil, dass nicht pauschal zu Beginn eines Prozesses bereits eine festgelegte Anzahl von Speicherobjekten den einzelnen Stacks 6, 7, 8 und 9 zugeordnet werden muss. Vielmehr kann dynamisch der Speicherbedarf an den laufenden Prozess bzw. dessen Threads angepasst werden. Läuft beispielsweise ein Prozess im Hintergrund mit wenigen nebenläufigen Threads ab und hat nur geringen Bedarf an Speicherobjekten, so werden bei einer solchen Vorgehensweise entscheidend Resourcen gespart .This procedure has the advantage that it is not necessary to allocate a fixed number of storage objects to the individual stacks 6, 7, 8 and 9 at the start of a process. Rather, the memory requirement can be dynamically adapted to the running process or its threads. For example, if a process runs in the background with few concurrent threads and has little need for memory objects, then resources are significantly reduced in such an approach.
Das Verfahren ist schematisch noch einmal in Fig. 3 dargestellt. Zunächst wird in Schritt 19 ein Programm gestartet und somit ein Prozess auf beispielsweise einem Computer generiert. Mit dem Beginn des Prozesses werden mehrere Stacks 6 bis 9 initialisiert. Die Initialisierung der Stacks 6-9 ist in Schritt 20 dargestellt. In dem in der Fig. 3 dargestellten Ausführungsbeispiel des Verfahrensablaufs werden zunächst nur einzelne Stacks 6-9 angelegt, ohne diese jedoch mit einer bestimmten vordefinierten Anzahl von Speicherobjekten zu füllen. Bei einer im Verfahrensschritt 21 auftretenden Speicheranforderung durch einen Thread wird zunächst auf Grund der durch den Thread festgelegten Objektgröße ein entsprechender Stack selektiert.The method is shown schematically once again in FIG. First, in step 19, a program is started, thus generating a process on, for example, a computer. At the beginning of the process, multiple stacks 6 through 9 are initialized. The initialization of the stacks 6-9 is shown in step 20. In the in 3 illustrated embodiment of the process flow initially only individual stacks 6-9 are created, but without filling them with a certain predefined number of memory objects. In the case of a memory request by a thread occurring in method step 21, a corresponding stack is first selected on the basis of the object size defined by the thread.
Wird beispielsweise ein 20 Bytes großes Speicherobjekt benötigt, so wird in der Stack-Auswahl der Fig. 2 der zweite Stack 7 gewählt. Anschließend wird in Schritt 23 die atomare Pop-Operation eine Abfrage durchgeführt . Bestandteil dieser unteilbaren Operation ist eine Abfrage 26, ob in dem zweiten Stack 7 ein Speicherobjekt verfügbar ist. Für den Fall, dass der Stack 7 mit einer Größe von 32 Bytes pro Speicherobjekt lediglich initialisiert ist, jedoch noch kein verfügbares Speicherobjekt enthält, wird ein Nullvektor ("NULL") zurückgegeben und über einen Systemaufruf in Schritt 24 über die langsamere Systemspeicherverwaltung ein Speicherobjekt der Größe 32 Bytes zur Verfügung gestellt. Die Größe des zur Verfügung gestellten Speicherobjekts wird dabei jedoch nicht unmittelbar durch den Thread in Schritt 21 festgelegt, sondern über die Auswahl einer bestimmten Objektgröße in Schritt 22 unter Berücksichtigung der initialisierten Stapel .If, for example, a 20-byte memory object is required, the second stack 7 is selected in the stack selection of FIG. Subsequently, in step 23, the atomic pop operation is performed a query. Part of this atomic operation is a query 26, whether in the second stack 7, a memory object is available. In the event the stack 7 having a size of 32 bytes per storage object is merely initialized but does not yet contain an available memory object, a null vector ("NULL") is returned and a memory object is accessed through a system call in step 24 through slower system memory management Size 32 bytes provided. However, the size of the provided storage object is not determined directly by the thread in step 21, but via the selection of a particular object size in step 22, taking into account the initialized stack.
In dem beschriebenen Ausführungsbeispiel wird folglich die Speicheranfrage so geändert, dass ein Speicherobjekt mit der Größe 32 Bytes angefordert wird. Um einen gleichzeitigen Zugriff auf dieses Speicherobjekt während der Aufnahme durch den Thread zu verhindern, würde in demThus, in the described embodiment, the memory request is changed to request a memory object of size 32 bytes. In order to prevent concurrent access to this memory object during recording by the thread, would
Beispiel der Systemspeicherverwaltung mittels doppelt verketteter Listen über das Betriebssystem eine Mutex-Example of system memory management using dual-linked lists through the operating system, a mutex
Operation gestartet.Operation started.
Handelt es sich bei dem benötigten Speicherobjekt dagegen um ein bereits im Laufe des Prozesses zurückgegebenes Speicherobjekt, so liegt dieses bereits in dem zweiten Stack 7 vor. Die Abfrage in Schritt 26 wäre daher mit "Ja" zu beantworten und es wird unmittelbar ein Speicherobjekt geliefert. Der Vollständigkeit halber ist im weiteren Verlauf des Verfahrens sowohl für einen mittels Lock-Free- Pop-Aufruf als auch über die Systemspeicherverwaltung zur Verfügung gestellten Speicherobjekt die Rückgabe desselben auf Grund eines Delete-Aufrufs dargestellt. Der Ablauf in Folge eines Delete-Aufrufs eines Threads ist für beide Situationen identisch. D. h. hier wird in keiner Weise Rücksicht darauf genommen, auf welchem Weg das Speicherobjekt zur Verfügung gestellt wurde. In der Fig. 3 ist dies schematisch durch die beiden parallelen Wege dargestellt, wobei auf der rechten Seite gestrichene Bezugszeichen verwendet werden.On the other hand, if the required storage object is an already returned during the process Memory object, this is already in the second stack 7 before. The query in step 26 would therefore have to be answered with "yes" and a storage object is immediately delivered. For the sake of completeness, the return of the same on the basis of a delete call is shown in the further course of the method both for a memory object made available by means of a lock-free-pop call and via the system memory management. The process following a thread's delete call is the same for both situations. Ie. In this case, no account is taken of the way in which the storage object was made available. In Fig. 3, this is schematically represented by the two parallel paths, wherein on the right side painted reference numerals are used.
Zunächst wird durch einen Thread ein Delete-Aufruf gestartet. Der entsprechende Speicherobjekt wird über ein Auswerten der Informationen des Headers des Speicherobjekts einem bestimmten Stack zugeordnet. In dem beschriebenen Ausführungsbeispiel wird folglich das Speicherobjekt mit der Größe 32 Bytes dem zweiten Stack 7 zugeordnet. Die Rückgabe des Speicherobjekts an den zweiten Stack 7 erfolgt in beiden Fällen über eine Lock- Free-Push-Operation 29 bzw. 29'. Mit dem letzten Verfahrensschritt 30 ist angedeutet, dass das so zurückgegebene Speicherobjekt des zweiten Stacks 7 somit für einen nächsten Aufruf zur Verfügung steht. Dieser nächste Aufruf kann dann, wie es bereits erläutert wurde, durch eine Lock-Free-Pop-Operation einem Thread zur Verfügung gestellt werden.First, a thread starts a delete call. The corresponding memory object is assigned to a specific stack by evaluating the information of the header of the memory object. Consequently, in the described embodiment, the memory object of size 32 bytes is assigned to the second stack 7. The return of the memory object to the second stack 7 takes place in both cases via a lock-free-push operation 29 or 29 '. The last method step 30 indicates that the memory object of the second stack 7 returned in this way is thus available for a next call. This next call can then, as already explained, be made available to a thread by a lock-free-pop operation.
Wie es bereits beschrieben wurde, kann bei der Initalisierung der Stacks 6 bis 9 eine Verringerung der Speicherverschwendung erreicht werden, indem Häufigkeitsverteilungen für angeforderte Objektgrößen erstellt werden. Dies kann auch während des Abarbeitens verschiedener Prozesse für die einzelnen Prozesse festgelegt werden. Wird ein solcher Prozess mit seinen nebenläufigen Threads ein weiteres Mal gestartet, so wird auf die zuvor ermittelte Häufigkeitsverteilung aus dem vorangegangenen Prozessdurchlauf zurückgegriffen, um eine angepasste Größenverteilung der Stacks 6 bis 9 zu ermöglichen. Das System kann selbstlernend ausgeführt werden, d. h. dass mit jedem neuen Durchlauf die bereits gewonnenen Erkenntnisse über die Größenverteilungen des Speicherbedarfs aktualisiert werden und bei jedem neuen Aufruf des Prozesses die jeweils aktualisierten Daten verwendet werden.As already described, in the initialization of stacks 6 through 9, a reduction in memory waste can be achieved by creating frequency distributions for requested object sizes. This can also be defined during the execution of different processes for the individual processes. Will such a process with his concurrent threads are started once again, the previously determined frequency distribution from the previous process run is used to allow an adapted size distribution of the stacks 6 to 9. The system can be self-learning, ie with each new pass, the knowledge gained about the size distributions of the memory requirement is updated and the updated data are used each time the process is called.
Die Erfindung ist nicht auf das dargestellte Ausführungsbeispiel beschränkt. Vielmehr sind beliebige Kombinationen der einzelnen erläuternden Merkmale möglich. The invention is not limited to the illustrated embodiment. Rather, any combinations of the individual explanatory features are possible.

Claims

Ansprüche claims
1. Verfahren zur Verwaltung von Speicher mit folgenden Verfahrensschritten: - Anlegen zumindest eines Stapels (6, 7, 8, 9) für Speicherobjekte (10.1, 10.2,... lO.k);1. A method for managing memory with the following method steps: - creating at least one stack (6, 7, 8, 9) for memory objects (10.1, 10.2, ... 10k);
Ausführen einer Anforderung für ein Speicherobjekt (10.k) aus einem Stapel (6, 7, 8, 9) mittels einer atomaren Operation und - Rückgabe eines Speicherobjekts (10.k) an den Stapel (6, 7, 8, 9) mittels einer atomaren OperationExecuting a request for a memory object (10.k) from a stack (6, 7, 8, 9) by means of an atomic operation and - returning a memory object (10.k) to the stack (6, 7, 8, 9) an atomic operation
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass mehrere Stapel (6, 7, 8, 9) für jeweils unterschiedliche Speicherobjektgrößen (16 Byte, 32 Byte, 64 Byte, 128 Byte) angelegt werden.2. The method according to claim 1, characterized in that a plurality of stacks (6, 7, 8, 9) for each different memory object sizes (16 bytes, 32 bytes, 64 bytes, 128 bytes) are created.
3. Verfahren nach Anspruch 1 oder 2 , dadurch gekennzeichnet, dass vor der Aufnahme eines Speicherobjekts (10.k) der jeweilige Stapel (6, 7, 8, 9) mit der gegenüber einer Speicheranforderung nächstgrößeren Speicherobjektgröße (16 Byte, 32 Byte, 64 Byte, 128 Byte) ausgewählt wird.3. The method according to claim 1 or 2, characterized in that prior to the recording of a memory object (10.k) of the respective stack (6, 7, 8, 9) with respect to a memory requirement next larger memory object size (16 bytes, 32 bytes, 64 Byte, 128 bytes) is selected.
4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass nach einer Initialisierung der Stapel (6, 7, 8,9) in den Stapeln (6, 7, 8, 9) zunächst keine Speicherobjekte (10.i) existieren und jeweils bei einer erstmaligen Speichervolumenanforderung ein Speicherobjekt über eine Systemspeicherverwaltung angefordert wird und dieses Speicherobjekt bei seiner Rückgabe einem Stapel (6, 7, 8, 9) zugeordnet wird.4. The method according to any one of claims 1 to 3, characterized in that after initialization of the stack (6, 7, 8,9) in the stacks (6, 7, 8, 9) initially no memory objects (10.i) exist and a storage object is requested via a system memory management in each case for a first-time storage volume request, and this storage object is assigned to a stack (6, 7, 8, 9) when it is returned.
5. Verfahren nach Anspruch 4 , dadurch gekennzeichnet, dass vor der Anforderung des Speicherobjekts über die5. The method according to claim 4, characterized in that before the request of the memory object on the
Systemspeicherverwaltung die Größe des Speicherobjekts durch die Größe der initialisierten Stapel (6, 7, 8, 9) und der aktuellen Speichervolumenanforderung festgelegt wird.System memory management the size of the memory object is determined by the size of the initialized stacks (6, 7, 8, 9) and the current storage volume requirement.
6. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass zum Festlegen der Größen der Speicherobjekte (lO.i) der Stapel (6, 7, 8, 9) eine Häfugkeitsverteilung der Speicherobjektgrößen während eines Prozesses aktualisiert wird und bei einer neuerlich Ausführung des Prozesses die jeweils aktualisierte Häufigkeitsverteilung auf der Initialisierung der Stapel (6, 7, 8, 9) zu Grunde gelegt wird.6. The method according to any one of claims 1 to 4, characterized in that for determining the sizes of the memory objects (lO.i) of the stack (6, 7, 8, 9) a Häfugkeitsverteilung the memory object sizes is updated during a process and at one again Execution of the process based on the updated frequency distribution on the initialization of the stack (6, 7, 8, 9).
7. Digitales Speichermedium mit elektronisch auslesbaren Steuersignalen, die so mit einem programmierbaren Computer oder digitalen Signalprozessor eines Telekommunikationsgerätes zusammenwirken können, dass das Verfahren nach einem der Ansprüche 1 bis 6 ausgeführt wird.7. A digital storage medium with electronically readable control signals, which can cooperate with a programmable computer or digital signal processor of a telecommunication device, that the method according to one of claims 1 to 6 is executed.
8. Computerprogamm-Produkt mit auf einem maschinenlesbaren Träger gespeicherten Programmcode-Mitteln, um alle Schritte gemäß einem der Ansprüche 1 bis 6 durchführen zu können, wenn das Programm auf einem Computer oder einem digitalen Signalprozessor eines Telekommunikationsgerätes ausgeführt wird.A computer program product having program code means stored on a machine-readable medium for carrying out all the steps according to any one of claims 1 to 6 when the program is executed on a computer or a digital signal processor of a telecommunication device.
9. Computerprogramm mit Progammcode-Mitteln, um alle Schritte gemäß einem der Ansprüche 1 bis 6 durchführen zu können, wenn das Programm auf einem Computer oder einem digitalen Signalprozessor eines Telekommunikationsgerätes ausgeführt wird.A computer program comprising program code means for carrying out all the steps according to any one of claims 1 to 6 when the program is executed on a computer or a digital signal processor of a telecommunication device.
10. Computerprogramm mit Programmcode-Mitteln, um alle Schritte gemäß einem der Ansprüche 1 bis 6 durchführen zu können, wenn das Programm auf einem maschinenlesbaren Datenträger gespeichert ist. A computer program with program code means for performing all the steps according to one of claims 1 to 6 when the program is stored on a machine-readable medium.
EP06742576A 2005-06-09 2006-04-12 Method for managing memories of digital computing devices Withdrawn EP1889159A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102005026721A DE102005026721A1 (en) 2005-06-09 2005-06-09 Method for memory management of digital computing devices
PCT/EP2006/003393 WO2006131167A2 (en) 2005-06-09 2006-04-12 Method for managing memories of digital computing devices

Publications (1)

Publication Number Publication Date
EP1889159A2 true EP1889159A2 (en) 2008-02-20

Family

ID=37103066

Family Applications (1)

Application Number Title Priority Date Filing Date
EP06742576A Withdrawn EP1889159A2 (en) 2005-06-09 2006-04-12 Method for managing memories of digital computing devices

Country Status (8)

Country Link
US (1) US20080209140A1 (en)
EP (1) EP1889159A2 (en)
JP (1) JP2008542933A (en)
KR (1) KR20080012901A (en)
CN (1) CN101208663B (en)
CA (1) CA2610738A1 (en)
DE (1) DE102005026721A1 (en)
WO (1) WO2006131167A2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0808576D0 (en) * 2008-05-12 2008-06-18 Xmos Ltd Compiling and linking

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6391755A (en) * 1986-10-06 1988-04-22 Fujitsu Ltd Memory dividing system based on estimation of quantity of stack usage
JPH0713852A (en) * 1993-06-23 1995-01-17 Matsushita Electric Ind Co Ltd Area management device
US5784698A (en) * 1995-12-05 1998-07-21 International Business Machines Corporation Dynamic memory allocation that enalbes efficient use of buffer pool memory segments
US5978893A (en) * 1996-06-19 1999-11-02 Apple Computer, Inc. Method and system for memory management
GB9717715D0 (en) * 1997-08-22 1997-10-29 Philips Electronics Nv Data processor with localised memory reclamation
US6065019A (en) * 1997-10-20 2000-05-16 International Business Machines Corporation Method and apparatus for allocating and freeing storage utilizing multiple tiers of storage organization
US6275916B1 (en) * 1997-12-18 2001-08-14 Alcatel Usa Sourcing, L.P. Object oriented program memory management system and method using fixed sized memory pools
US6449709B1 (en) * 1998-06-02 2002-09-10 Adaptec, Inc. Fast stack save and restore system and method
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
WO2001061471A2 (en) * 2000-02-16 2001-08-23 Sun Microsystems, Inc. An implementation for nonblocking memory allocation
US6539464B1 (en) * 2000-04-08 2003-03-25 Radoslav Nenkov Getov Memory allocator for multithread environment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2006131167A2 *

Also Published As

Publication number Publication date
DE102005026721A1 (en) 2007-01-11
JP2008542933A (en) 2008-11-27
CA2610738A1 (en) 2006-12-14
US20080209140A1 (en) 2008-08-28
WO2006131167A3 (en) 2007-03-08
CN101208663A (en) 2008-06-25
CN101208663B (en) 2012-04-25
WO2006131167A2 (en) 2006-12-14
KR20080012901A (en) 2008-02-12

Similar Documents

Publication Publication Date Title
EP0048767B1 (en) Priority stage controlled interruption device
DE2224537C2 (en) Device and method for instruction selection in an assembly line processor
DE2423194C2 (en) Device for calculating an absolute main memory address in a data processing system
DE2354521C2 (en) Method and device for simultaneous access to different memory modules
EP1228432B1 (en) Method for dynamic memory management
DE1499182C3 (en) Data storage system
DE2346525B2 (en) Virtual storage facility
DE69936257T2 (en) GENERATE AND REVIEW REFERENCE ADDRESSES
EP0635792A2 (en) Coordination method for parallel access to resource configurations by a plurality of processors
DE2031040B2 (en) PROCEDURE FOR DETERMINING ACCESS OF SEVERAL USERS TO A UNIT OF A DATA PROCESSING SYSTEM AND ARRANGEMENT FOR PERFORMING THE PROCEDURE
EP0010570A2 (en) Method and device for self-adaptive load association in a data processing system
DE2101949A1 (en) Method for protecting data groups in a multiprocessing data processing system
DE69729262T2 (en) Storage management system and method therefor
DE2617485C3 (en) Circuit arrangement for data processing systems for processing micro instruction sequences
WO2001040931A2 (en) Method for synchronising program sections of a computer program
EP0655688B1 (en) Program memory expansion for a microprocessor
EP1889159A2 (en) Method for managing memories of digital computing devices
EP2102766A1 (en) Method for reading out data from a storage medium
EP0360899B1 (en) Queue comprising a plurality of memory elements
DE2419522A1 (en) PROCEDURE AND ARRANGEMENT FOR DIVISION OF ONE OR MORE UNUSED AREAS OF A MEMORY CONNECTED TO A COMPUTER
DE4342521C1 (en) Compressed data expansion method
DE1474090B2 (en) DATA PROCESSING SYSTEM
EP0651897B1 (en) Method for the dynamic management of a free store in a computer, the free store being designed for subdivision into at least two logic zones with different access characteristics
DE1774866C3 (en) Circuit for determining the address of a piece of information contained in a memory of a data processing system
EP4332766A1 (en) Method for the computer-aided restriction of persistent memory for a container-based application

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

17P Request for examination filed

Effective date: 20071011

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20140806

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

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20141217