[go: up one dir, main page]

DE69903496T2 - Flexibles Löschen von Objekten in einer Umgebung mit beschränkten Resourcen - Google Patents

Flexibles Löschen von Objekten in einer Umgebung mit beschränkten Resourcen

Info

Publication number
DE69903496T2
DE69903496T2 DE69903496T DE69903496T DE69903496T2 DE 69903496 T2 DE69903496 T2 DE 69903496T2 DE 69903496 T DE69903496 T DE 69903496T DE 69903496 T DE69903496 T DE 69903496T DE 69903496 T2 DE69903496 T2 DE 69903496T2
Authority
DE
Germany
Prior art keywords
objects
volatile memory
root
memory
header
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.)
Expired - Lifetime
Application number
DE69903496T
Other languages
English (en)
Other versions
DE69903496D1 (de
Inventor
Michael Baentsch
Peter Buhler
Thomas Eirich
Frank Hoering
Marcus Oestreicher
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE69903496D1 publication Critical patent/DE69903496D1/de
Application granted granted Critical
Publication of DE69903496T2 publication Critical patent/DE69903496T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Description

    TECHNISCHES GEBIET
  • Die Erfindung betrifft einen neuartigen Ansatz zum Nachweisen · von "Datenmüll" (Speicherbereiche, die nicht mehr benötigte Daten enthalten) und zur Speicherbereinigung. Dieser Ansatz eignet sich gut für den Einsatz in Systemen mit begrenzter Speichergröße, wie beispielsweise Karten mit integrierten Schaltkreisen (z. B. Smartcards).
  • HINTERGRUND DER ERFINDUNG
  • Objektbasierte Anwendungsprogramme (in Java, C++ o. ä. geschrieben) bedienen sich für gewöhnlich gerichteter Graphen. Diese Graphen umfassen Stammobjekte und normale Objekte, die mittels Zeigern untereinander verknüpft sind. Während der Ausführung eines objektbasierten Anwendungsprogramms verändert sich der Graph dynamisch, wenn Objekte und/oder Zeiger hinzugefügt, verändert oder entfernt werden.
  • Objektbasierte Ausführungsumgebungen unterstützen den Programmentwickler oft bei einer der aufwendigsten und fehlerträchtigsten Programmieraufgaben, der Speicherzuordnung. Bei vielen Systemen werden Objekte durch das Anwendungsprogramm nur zugewiesen, aber nie wieder ausdrücklich entfernt. Bei diesen Systemen besteht die Aufgabe eines so genannten Speicherreinigers (garbage collector, GC) darin, die nicht mehr benötigten Objekte zu ermitteln. Weiterhin leert der Speicherreiniger die betreffenden Speicherbereiche und führt sie dem freien Speicherbereich zu. Ein Speicherreiniger muss ab und zu ungenutzte Speicherbereiche reinigen. Außerdem könnte der Speicherreiniger zum Zusammenführen der Speicherbereiche verwendet werden, um die durch Fragmentierung entstandenen Lücken zu beseitigen.
  • Das Entfernen von Datenmüll aus einem Speicher erfolgt üblicherweise in zwei Schritten, die als Markieren und Leeren bezeichnet werden. Auch der aktuelle Speicherreiniger unter SUN Java bedient sich des Konzepts Markieren und Leeren, nach dem zunächst jedes Stammobjekt im System markiert wird. Dann werden alle Objektverweise innerhalb dieser Objekte auf andere noch nicht markierte Objekte fortschreitend verfolgt. Abschließendwerden dann, wenn keine zu verfolgenden Objektverweise mehr vorliegen, alle nicht markierten Objekte gelöscht.
  • Die Patentschrift US 5 485 613 beschreibt ein Verfahren zum automatischen Wiederherstellen von Speicherbereichen in objektorientierten Systemen unter Echtzeitbedingungen. Das Wiederherstellen der Speicherressourcen in objektorientierten Systemen erfolgt segmentweise in diskreten Echtzeitabschnitten, die so überwacht werden, dass sich die Speicherbereinigung nicht störend auf das System auswirkt, während die Speicherbereiche etwa genauso schnell wiedergewonnen werden, wie sie zugewiesen werden. Die von anderen Objekten her querverwiesenen Objekte werden mittels eines schrittweisen Markier-/Leerungsverfahrens überprüft. Auch Objekte, auf die von Stapeln her verwiesen wird, werden einbezogen. Wenn ein Stapel nicht nach Objektverweisen in einem Echtzeitabschnitt durchsucht werden kann, wird der Stapel in einen Sicherungsbereich kopiert und während eines oder mehrerer aufeinander folgender Echtzeitabschnitte durchsucht.
  • Neuere Speicherbereinigungsverfahren sind für die Verwendung in Systemen mit beschränkten Ressourcen nicht sehr geeignet, da diese Speicherreiniger-Verfahren mehr flüchtigen Speicherbereich benötigen als in derartigen Systemen verfügbar ist.
  • Eine integrierte Schaltkreiskarte (integrated circuit card, ICC), bekannter unter der Bezeichnung Smartcard, stellt ein Beispiel für ein derartiges System mit beschränkten Ressourcen dar. Weitere Beispiele sind: mobile und/oder Handgeräte, wie beispielsweise Mobiltelefone, Pager, digitale Personalassistenten, personengebundene Netzgeräte und so weiter.
  • Im Folgenden sollen vorwiegend ICCs und insbesondere Smartcards betrachtet werden. Die Entwicklung von Smartcards hat in Europa vor 1985 begonnen, und die Anwendungen liegen heute bei Telefonsystemen, Mautstationen, Spielhallen und Personal Computern, um nur einige Anwendungen zu nennen.
  • Im Folgenden wird der Begriff integrierte Schaltkreiskarte verwendet, da er von der ISO dazu verwendet wird, alle diejenigen Bauteile zu erfassen, bei denen sich in einem Stück Plastik o. ä. von Kartengröße eine integrierte Schaltung befindet.
  • Typische ICCs umfassen einen Mikroprozessor (central processing unit, CPU), einen Nur-Lese-Speicher (read only memory, ROM), einen flüchtigen Arbeitsspeicher (random access memory, RAM) und bestimmte nichtflüchtige programmierbare Speicher, wie beispielsweise einen EEPROM (electrically erasable programmable read only memory, elektrisch löschbarer programmierbarer Nur- Lese-Speicher). Außerdem umfasst eine ICC einen bestimmten Bus (wie beispielsweise einen seriellen Bus) und E/A-Anschlüsse zum Verbinden mit einem Kartenterminal.
  • Der Inhalt eines ROM-Speichers ist festgeschrieben und kann nach der Herstellung durch einen Halbleiterhersteller nicht mehr geändert werden. Hierbei handelt es sich um einen preiswerten Speicher, da er auf dem Substrat nur wenig Platz beansprucht. Es stellt einen Nachteil eines ROM dar, dass er nicht geändert werden kann und seine Herstellung mehrere Monate beansprucht. Im Gegensatz dazu kann ein EEPROM durch den Benutzer vielfach gelöscht und neu beschrieben werden. ROMs und EEPROMs sind nichtflüchtige Speicher, d. h., ihr Inhalt bleibt nach Abschalten der Versorgungsspannung erhalten.
  • Ein RAM stellt einen flüchtigen Speicher dar, dessen Dateninhalt nach Abschalten der Versorgungsspannung verloren geht. Ein RAM weist jedoch den Vorteil auf, dass er viel schneller als ROMs und EEPROMs ist. Andererseits ist ein RAM bezüglich seiner Größe jedoch teurer. Normalerweise ist der RAM relativ klein. Der RAM wird überhaupt nicht benötigt, wenn Daten zu verarbeiten sind, die dauerhaft erhalten werden sollen. Allerdings weist die Verwendung nichtflüchtiger Speicher stets eine Reihe ernster Nachteile auf. Ein Nachteil besteht in der extrem starken Leistungsminderung, da bei Verwendung eines EEPROMs jeder Schreibzugriff auf den Speicher 500 bis tausendmal langsamer ist als bei einem RAM. Ein noch schwerer wiegendes Problem besteht in der begrenzten Anzahl garantierter Schreibzyklen (100.000-mal für den EEPROM).
  • Es ist eine Aufgabe der vorliegenden Erfindung, ein neuartiges System zum Nachweisen ungenutzter Daten und zur Speicherbereinigung zur Verfügung zu stellen, insbesondere ein System zum Nachweisen ungenutzter Daten und zur Speicherbereinigung, das für den Einsatz in Systemen mit beschränkten Ressourcen gut geeignet ist.
  • Es ist eine Aufgabe der vorliegenden Erfindung, eine Lösung zur Speicherbereinigung in Systemen mit beschränkten Ressourcen, wie beispielsweise bei integrierten Schaltkreiskarten, zur Verfügung zu stellen.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Die vorliegende Erfindung stellt ein in Anspruch 1 dargelegtes Verfahren sowie eine in Anspruch 15 dargelegte Vorrichtung zum Unterscheiden von erreichbaren und nicht erreichbaren Objekten zur Verfügung, welche sich in einem nichtflüchtigen Speicher befinden, der von einer objektbasierten Anwendung in einem System mit einem flüchtigen Speicher von beschränktem Umfang benutzt wird.
  • Das Verfahren gemäß der Erfindung verringert den zur Speicherbereinigung erforderlichen Aufwand. Weiterhin ermöglicht das Verfahren gemäß der Erfindung einen Kompromiss bezüglich des Speicherplatzbedarfs für die Ausführungszeit und die Laufzeit.
  • Das Verfahren eignet sich gut für den Einsatz in Systemen mit beschränkten Ressourcen.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • Im Folgenden wird die Erfindung unter Bezug auf die folgenden schematischen Zeichnungen detailliiert beschrieben. Es wird betont, dass die Figuren nicht maßstabgerecht sind.
  • Fig. 1 ist eine schematische Ansicht einer integrierten Schaltkreiskarte (ICC) gemäß der vorliegenden Erfindung.
  • BESCHREIBUNG BEVORZUGTER AUSFÜHRUNGSARTEN
  • Die vorliegende Erfindung kann in beliebigen Systemen eingesetzt werden, in denen eine objektbasierte Anwendung ausgeführt wird. Die Erfindung ist besonders für den Einsatz in Systemen mit beschränkten Ressourcen geeignet. Typische Systeme mit beschränkten Ressourcen sind:
  • - integrierte Schaltkreiskarten (ICCs)(z. B. Smartcards);
  • - Telefone;
  • - Set-top Boxen (Entschlüsselungsgeräte für das Pay-TV);
  • - eingebettete Controller;
  • - Handgeräte;
  • - tragbare Computer;
  • - Geräte für Privatnetze (personal area network, PAN) usw.
  • In einem System mit beschränkten Ressourcen ist die Größe des flüchtigen Speichers für gewöhnlich beschränkt; ebenso ist auch die Rechenleistung beschränkt, z. B. weil nur eine kleine CPU (central processing unit, Zentraleinheit) benutzt wird. Solche beschränkten Systeme arbeiten normalerweise mit niedrigen Taktraten.
  • Das Grundkonzept der vorliegenden Erfindung wird in Verbindung mit einer integrierten Schaltkreiskarte (TCC) 10 beschrieben, die in Fig. 1 veranschaulicht wird. Diese Karte verfügt über einen Mikroprozessor 12, einen ROM 11, einen EEPROM 13 und einen RAM 14, wie dies in den meisten herkömmlichen ICCs der Fall ist. Die ICC 10 umfasst ferner einen internen Bus 19, auf dem Daten und Signale zwischen den Bauteilen der ICC übermittelt werden · können. Die ICC 10 ist eine Kontaktkarte. Die E/A-Anschlüsse stellen die Verbindung zu entsprechenden Mitteln eines Kartenterminals her. Wie in Fig. 1 gezeigt, wird die Versorgungsspannung über Anschluss 17 (Masse, GND) und Anschluss 18 (positive Spannung, VCC) zugeführt.
  • Die vorliegende Erfindung betrifft ein erfindungsgemäßes Verfahren zur Speicherbereinigung (garbage collection, GC) zum Einsatz in Systemen mit beschränkten Ressourcen. Zu dem System, das das erfindungsgemäße Speicherbereinigungsverfahren ausführt, werden die folgenden Annahmen getroffen:
  • Es liegen zwei Speichertypen V (volatile, flüchtig) und P (persistent, nichtflüchtig) vor. Der Speicher V weist die folgenden Eigenschaften auf:
  • - Der verfügbare Umfang dieses Speichers ist begrenzt, weil entweder die physische Speichergröße begrenzt ist oder weil der Speicherbereinigungs-Task nur ein begrenzter Teil des Speicherplatzes zugewiesen werden kann.
  • - Schreib- und Lesevorgänge verlaufen beim Speicher V schneller als der Schreibzugriff auf den Speicher P.
  • Der Speicher P weist die folgenden Eigenschaften auf:
  • - In diesem Speichertyp sind eine Vielzahl von Objekten gespeichert.
  • - Das Beschreiben dieses Speichertyps ist zeitaufwendiger als das Beschreiben des Speichers V.
  • - Die in P gespeicherten Objekte können aufgelistet werden.
  • - Jedes Objekt besteht aus einem Header und Nutzinformationen. Der Header und die Nutzinformationen müssen sich nicht in aufeinander folgenden Speicherzellen befinden.
  • - Während die Nutzinformationen durch den Programmcode frei genutzt werden können, ist der Header für Systemaufgaben vorgesehen. Für das Sammeln ungenutzter Daten (Speicherbereinigung) muss der Header jedes Objekts bestimmte Informationen enthalten. Der Umfang der im Header für die Speicherbereinigung zu speichernden Daten sollte so gering wie möglich gehalten werden, da der Header nur Verwaltungszwecken dient.
  • Typische Beispiele für den Speicher V sind der RAM oder Cache und Beispiele für den Speicher P könnten EEPROM, FlashRAM oder Plattenspeicher sein.
  • In einer objektbasierten Umgebung enthält der Speicher P üblicherweise eine Vielzahl von Objekten. Jedes Objekt kann aufgelistet und mittels eines Zeigers (eine Adresse, anhand der das Objekt gefunden werden kann) aufgerufen werden. In diesem Zusammenhang stellt ein Zeiger einen Datensatz dar, der eine Objektadresse enthält, welche sich auf ein bestimmtes Objekt bezieht. Jedes Objekt enthält eine möglicherweise leere Menge von Objektzeigern und eine möglicherweise leere Menge anderer Informationen, die sich nicht auf Objekte beziehen. Beispielsweise können für ein bestimmtes Objekt A alle in A gespeicherten Zeiger aufgelistet werden, die sich auf (andere) Objekte beziehen. Die Menge der Objekte ist im Speicher P gespeichert, und ihre Zeiger bilden (dementsprechend) einen gerichteten Graphen (directed graph, DG).
  • Da die Speicherbereinigung Objekte nachweisen soll, auf die kein Bezug mehr genommen wird, müssen bestimmte Ausgangsobjekte (bekannt als Stammobjekte) von besonderer Bedeutung bekannt sein, die nicht entfernt werden sollen. Diese Menge von Objekten ist systemabhängig und beeinflusst nicht das vorliegende Verfahren zum Nachweisen ungenutzter Daten und zur Speicherbereinigung. Diese Menge von Objekten wird als Anfangsstammsatz (initial rootset, IR) bezeichnet.
  • Definitionsgemäß werden Objekte, die innerhalb des gerichteten Graphen im Speicher P von Objekten im Anfangsstammsatz aus erreicht werden können, nicht als unbenutzte Daten deklariert. Alle von den Objekten im Anfangsstammsatz aus erreichbaren Objekte werden als unbenutzte Daten deklariert. Deren Speicherplatz, der den Header und den Nutzbereich umfasst, kann vom System wieder zurückgewonnen werden.
  • Mit dem vorliegenden Verfahren zum Nachweisen ungenutzter Daten und zur Speicherbereinigung soll eine Unterscheidung zwischen erreichbaren und nicht erreichbaren Objekten getroffen werden. Zu diesem Zweck werden im Speicher V die folgenden Zustände verwaltet:
  • - die Anzahl der unbearbeiteten Stammobjekte Z (z. B. mittels eines Zählers)
  • - das aktuelle Stammobjekt T
  • - eine Beschreibung eines Pfads TO im gerichteten Graphen, der beim aktuellen Stammobjekt T beginnt und bei einem bestimmten Objekt O endet. Das Objekt T soll das erste Objekt und das Objekt O das letzte Objekt in TO sein.
  • Im Speicher P könnte jeder Objektheader zwei Bits aufweisen, die dem erfindungsgemäßen Speicherbereinigungsverfahren dienen.
  • - Bit VF: Dieses Bit zeigt an, ob ein Objekt während der laufenden Ausführung des Speicherbereinigungsalgorithmus bereits besucht worden ist. Die Angabe 0 und 1 (entsprechend, besucht oder nicht besucht) kann geändert werden, damit nach einem Speicherbereinigungsdurchlauf nicht die Bits VF aller Objekte zurückgesetzt werden müssen. "VF gesetzt" bedeutet unabhängig von dem im Speicher enthaltenen aktuellen Wert des Bits VF, dass das Objekt bereits besucht wurde.
  • - Bit RF (root flag, Stammmarkierung): Diese Markierung zeigt an, dass das Objekt ein Stammobjekt ist und noch nicht verarbeitet wurde. "RF gesetzt" oder "RF = 1" bedeutet, dass das Objekt als Stammobjekt markiert wurde und noch verarbeitet werden muss.
  • Im Folgenden werden die Schritte einer beispielhaften Implementierung des erfindungsgemäßen Speicherbereinigungsverfahrens angegeben:
  • 1. Alle anfänglichen Stammobjekte im Anfangsstammsatz mit RF = 1 markieren. Z auf die Anzahl der markierten Stammobjekte setzen.
  • 2. Wenn Z gleich Null ist, alle Objekte in P auflisten und den Speicherplatz derjenigen reservieren, bei denen VF nicht gesetzt ist. Speicherplatzsuche beenden.
  • 3. Objekte im Speicher P auflisten und das Erste mit gesetztem RF finden. T soll sich auf dieses Objekt beziehen. Aktuelles Objekt C auf das aktuelle Stammobjekt T setzen.
  • 4. Auflistung aller Zeiger in C starten und für jeden Zeiger, der sich auf ein Objekt O bezieht, die Schritte (a)-(e) ausführen:
  • a. Wenn VF von 0 gesetzt ist, Auflistung mit Schritt 4 fortsetzen.
  • b. VF an Objekt O setzen.
  • c. Wenn Speicher V nicht voll belegt ist, Objekt C dem Pfad TO hinzufügen und C auf das aktuelle Objekt O setzen. Mit Schritt 4 fortfahren.
  • d. Markierung RF an Objekt O setzen, Z um Eins erhöhen und mit Schritt 4 fortfahren.
  • 5. Wenn Pfad TO leer ist, mit Schritt 2 fortfahren. RF löschen und VF an T setzen. Z um Eins erniedrigen.
  • 6. Letztes Objekt aus TO entfernen. Dieses entfernte Objekt C zuweisen und mit Schritt 4 fortfahren.
  • Der Speicherbereinigungsalgorithmus benötigt im Speicher V mindestens so viel Speicherplatz, dass Pfade der Länge 2 gespeichert werden können. Je länger der Pfad sein kann, umso schneller verläuft die Ausführung der vorliegenden Speicherbereinigung.
  • Der Aufwand kann durch die Wahl bestimmter Darstellungen des Pfads TO im Speicher V weiter verringert werden. Eine schnellere, aber auch mehr Speicherplatz belegende Darstellung wäre eine Folge von Zeigern, die sich auf die Objekte des Pfads beziehen. Da die Anzahl möglicher Zeiger normalerweise größer ist als die durchschnittliche Anzahl in Objekten enthaltener Zeiger, kann die folgende Optimierung eingesetzt werden:
  • - r sei die Anzahl der Zeiger in Objekt O. r' sei die minimale Anzahl, die größer oder gleich r sowie eine Potenz von zwei ist. Um einen Pfadabschnitt von 0 bis zu einem seiner bezogenen Objekte Q darzustellen, werden lediglich log&sub2;(r') Bits benötigt. Wenn man annimmt, dass der Zeiger auf ein Objekt Q der i-te Zeiger in 0 ist, dann werden nur die letzten log&sub2;(r') Bits von i in TO gespeichert.
  • Die Errechnung des letzten Objekts in einem bestimmten Pfad TO erfolgt, indem man beim Stamm T beginnt und den i-ten Zeigern von Objekt zu Objekt folgt.
  • Die erfindungsgemäße Speicherbereinigung beginnt, wie auch die standardmäßigen Speicherbereinigungsverfahren mit Markieren und Löschen, bei den Stammobjekten.
  • Üblicherweise enthalten die Nutzinformationen eines Objekts Zeiger auf andere Objekte. Um bei den Nutzinformationen eines Objekts befindliche Zeiger nachzuweisen, sind Metadaten im Layout der Nutzinformationen erforderlich. Der Umfang der Metadaten kann durch Zusammenfassen der Zeiger in den Nutzinformationen auf ein Minimum beschränkt werden.
  • Durch die vorliegende Erfindung können herkömmliche ICCs und andere Systeme und insbesondere Systeme mit beschränkten Ressourcen, abgeändert werden, indem einfach die erforderlichen Bauelemente in Form von Hardware, von Software oder in einer Kombination von Hardware und Software eingefügt werden. Durch die Erfindung werden eine Vielzahl von Anwendungen ermöglicht, die diejenigen Objekte nachweisen, welche nicht mehr benötigt werden. Wenn diese Objekte einmal erfolgreich nachgewiesen worden sind, können sie gelöscht werden, um die entsprechenden Speicherbereiche freizugeben. Anstatt diese Objekte zu löschen, können Zeiger in eine Warteschlange eingereiht werden. Die Zeiger in dieser Warteschlange zeigen dann auf Speicherbereiche, die überschrieben werden können. Jedes Mal, wenn zum Speichern eines Objekts Speicherplatz benötigt wird, kann ein Zeiger aus der Warteschlange entfernt werden. Dann wird das Objekt in den durch den entsprechenden Zeiger ermittelten Speicherbereich geschrieben.
  • Wenn alle nicht erreichbaren Objekte ermittelt worden sind, können die Speicherbereiche auch zusammengeführt werden. Dies ist von Vorteil, wenn der Speicher zuvor fragmentiert war.

Claims (25)

1. Verfahren zum Unterscheiden erreichbarer Objekte und nicht erreichbarer Objekte, die sich in einem nichtflüchtigen Speicher (13) befinden, welches von einer objektbasierten Anwendung in einem System mit einem flüchtigen Speicher (14) mit beschränkter Größe angewendet wird, wobei die objektorientierte Anwendung mit einer Menge von n Objekten arbeitet, von denen eine Teilmenge Z Stammobjekte sind, und das Verfahren die folgenden Schritte umfasst:
für jedes Stammobjekt
- von dem Stammobjekt auf jedes andere Objekt zuzugreifen, das vom Stammobjekt aus erreichbar ist,
- alle Objekte zu markieren, die vom Stammobjekt erreicht wurden, und während des Markierens eine Beschreibung des Pfads vom Stammobjekt zum aktuell besuchten Objekt im flüchtigen Speicher (14) zu speichern,
wenn die Markierungsphase ein Objekt erreicht und der entsprechende Pfad nicht in den flüchtigen Speicher (14) passt,
- dieses Objekt nicht zu markieren, sondern als ein später zu verarbeitendes Objekt zu kennzeichnen,
die Markierungsphase so lange fortzusetzen, bis alle Stammobjekte verarbeitet worden sind und alle von einem Stammobjekt aus erreichten Objekte entweder markiert oder als später noch zu verarbeitende Objekte gekennzeichnet worden sind.
2. Verfahren nach Anspruch 1, bei dem ein später zu verarbeitendes Objekt als ein weiteres Stammobjekt gekennzeichnet wird.
3. Verfahren nach Anspruch 1, bei dem ein Zähler dazu verwendet wird, um die Anzahl der bereits verarbeiteten Stammobjekte zu zählen.
4. Verfahren nach Anspruch 1, bei dem die Beschreibung des Pfads das Stammobjekt und beliebige andere Objekte enthält, auf die vom Stammobjekt aus zugegriffen wurde.
5. Verfahren nach Anspruch 3, bei dem der Zähler im flüchtigen Speicher (14) gespeichert ist.
6. Verfahren nach Anspruch 1, bei dem jedes Objekt Nutzinformationen und einen Header aufweist.
7. Verfahren nach Anspruch 6, bei dem der Header mindestens zwei für das Verfahren reservierte Bits umfasst, mit denen erreichbare Objekte und nicht erreichbare Objekte unterschieden werden.
8. Verfahren nach Anspruch 6, bei dem der Header ein Bit (Bit VF) umfasst, welches anzeigt, ob ein Objekt während des Zugreifens von einem Stammobjekt auf andere Objekte bereits besucht worden ist.
9. Verfahren nach Anspruch 6, bei dem der Header ein Bit (Bit RF) umfasst, welches anzeigt, dass ein Objekt ein Stammobjekt ist.
10. Verfahren nach Anspruch 1, bei dem alle Stammobjekte initialisiert werden, um anzuzeigen, dass sie noch nicht verarbeitet worden sind, wobei diese Initialisierung vor dem Ausführen der in Anspruch 1 aufgeführten Schritte bewirkt wurde.
11. Verfahren nach Anspruch 1, bei dem Bereiche des nichtflüchtigen Speichers (13) zurückgewonnen werden, die unmarkierte Objekte enthalten.
12. Verfähren nach Anspruch 1, bei dem der nichtflüchtige Speicher (13) durch Umordnen derjenigen Speicherbereiche des nichtflüchtigen Speichers (13), die markierte Objekte enthalten, komprimiert wird.
13. Verfahren nach Anspruch 6, bei dem die Nutzinformationen Zeiger auf andere Objekte enthalten.
14. Verfahren nach Anspruch 13, bei dem die Zeiger so im Feld der Nutzinformationen angeordnet werden, dass die Zeiger mit Hilfe von im Objektheader enthaltenen Metadaten gefunden werden können.
15. Vorrichtung zum Unterscheiden von erreichbaren Objekten und nicht erreichbaren Objekten, die sich in einem nichtflüchtigen Speicher (13) befinden, welche von einer objektbasierten Anwendung in einem System mit einem flüchtigen Speicher (14) beschränkter Größe verwendet wird, wobei die objektorientierte Anwendung mit n Objekten arbeitet, von denen Z Objekte Stammobjekte sind, wobei die Vorrichtung Folgendes umfasst:
- Mittel zum Zugreifen von jedem Stammobjekt auf alle anderen Objekte, die von den Stammobjekten aus erreichbar sind,
- Mittel zum Markieren aller vom Stammobjekt aus erreichten Objekte und zum Speichern einer Beschreibung des Pfads vom Stammobjekt zum aktuell besuchten Objekt im flüchtigen Speicher (14), wobei die Mittel zum Markieren ein Objekt dann nicht markieren, wenn der · zugehörige Pfad nicht in den flüchtigen Speicher (14) passt,
- Mittel zum Ermitteln eines Objekts, das nicht markiert wurde, weil dessen Pfad nicht in den flüchtigen Speicher (14) passt, als ein später zu verarbeitendes Objekt.
16. Vorrichtung nach Anspruch 15, bei der die Mittel zum Ermitteln eines Objekts dieses Objekt als ein weiteres Stammobjekt festlegen.
17. Vorrichtung nach Anspruch 16, in der ein Zähler vorhanden ist, der zum Zählen der durch die Zugriffsmittel bereits verarbeiteten Stammobjekte verwendet wird.
18. Vorrichtung nach Anspruch 16, bei der die Beschreibung des Pfads das Stammobjekt sowie beliebige andere vom Stammobjekt aus erreichte Objekte beinhaltet.
19. Vorrichtung nach Anspruch 18, bei der der Zähler im flüchtigen Speicher (14) gespeichert ist.
20. Vorrichtung nach Anspruch 16, bei der jedes Objekt Nutzinformationen und einen Header aufweist.
21. Vorrichtung nach Anspruch 18, bei der der Header mindestens zwei Bits umfasst, die dem Unterscheiden zwischen erreichbaren und nicht erreichbaren Objekten dienen.
22. Vorrichtung nach Anspruch 16, die Mittel zum Wiedergewinnen der Bereiche des nichtflüchtigen Speichers (13) umfassen, welche unmarkierte Objekte enthalten.
23. Vorrichtung nach Anspruch 16, die Mittel zum Komprimieren des nichtflüchtigen Speichers (13) durch Umordnen derjenigen Speicherbereiche des nichtflüchtigen Speichers (13) umfasst, welche markierte Objekte enthalten.
24. Vorrichtung nach Anspruch 16 als Bestandteil eines Systems mit beschränkten Ressourcen.
25. Vorrichtung nach Anspruch 16 als Bestandteil einer integrierten Schaltkreiskarte.
DE69903496T 1998-05-07 1999-04-22 Flexibles Löschen von Objekten in einer Umgebung mit beschränkten Resourcen Expired - Lifetime DE69903496T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP98108331 1998-05-07

Publications (2)

Publication Number Publication Date
DE69903496D1 DE69903496D1 (de) 2002-11-21
DE69903496T2 true DE69903496T2 (de) 2003-12-04

Family

ID=8231892

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69903496T Expired - Lifetime DE69903496T2 (de) 1998-05-07 1999-04-22 Flexibles Löschen von Objekten in einer Umgebung mit beschränkten Resourcen

Country Status (2)

Country Link
US (1) US6272504B1 (de)
DE (1) DE69903496T2 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001235915A1 (en) * 2000-03-24 2001-10-03 International Business Machines Corporation Method and apparatus for distinguishing reachable objects and non-reachable objects in an object-based application
EP1387275B1 (de) * 2002-07-31 2009-06-17 Texas Instruments Inc. Speicherverwaltung von lokalen Variablen während einer Kontextveränderung
US8213428B2 (en) * 2003-07-24 2012-07-03 International Business Machines Corporation Methods and apparatus for indexing memory of a network processor

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4989132A (en) * 1988-10-24 1991-01-29 Eastman Kodak Company Object-oriented, logic, and database programming tool with garbage collection
US5485613A (en) 1991-08-27 1996-01-16 At&T Corp. Method for automatic memory reclamation for object-oriented systems with real-time constraints
US5577246A (en) * 1992-09-25 1996-11-19 Lucent Technologies Inc. Database memory compaction and reclamation method
JP3714483B2 (ja) * 1993-11-29 2005-11-09 三菱電機株式会社 マネジメント・インフォメーション・ベース・管理システム
US5535390A (en) * 1994-07-22 1996-07-09 Hildebrandt; Thomas H. Method for reusing temporaries and reclaiming shared memory
JP2924705B2 (ja) * 1995-04-10 1999-07-26 富士ゼロックス株式会社 メモリ管理方法およびオブジェクト管理方法
US6098089A (en) * 1997-04-23 2000-08-01 Sun Microsystems, Inc. Generation isolation system and method for garbage collection
US6199075B1 (en) * 1997-05-30 2001-03-06 Sun Microsystems, Inc. Method and apparatus for generational garbage collection of a heap memory shared by multiple processors

Also Published As

Publication number Publication date
DE69903496D1 (de) 2002-11-21
US6272504B1 (en) 2001-08-07

Similar Documents

Publication Publication Date Title
DE60032694T2 (de) Speicherrückforderungsverfahren
DE69432878T2 (de) Informationsverarbeitungssystem mit Flash-Speicher und Cache-Speicher
DE69923657T2 (de) Markierung von gespeicherten datenobjekten für garbage-kollektoren
DE69623720T2 (de) Verfahren zum Aufräumen eines Flash-Speichers mit Übersetzungsschicht
DE69700574T2 (de) Verfahren zum Cache-Speichern von Netzwerk- und CD-ROM-Zugriffen unter Verwendung einer lokalen Festplatte
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE69033064T2 (de) Verfahren zur Zuordnung von reellen Seiten zu virtuellen Seiten mit davon verschiedenen Seitengrössen
DE102006005877A1 (de) Adresszuordnungstabelle und Verfahren zum Erzeugen einer Adresszuordnungstabelle
DE19623853A1 (de) Halbleiter-Speichervorrichtung
DE69027017T2 (de) Anordnung und Verfahren zur Speicherverwaltung in einem Mikrorechner
DE102009046444A1 (de) An die Software angepasste Abnutzungsausgleichung
DE102009033961A1 (de) Emulation eines einmal programmierbaren Speichers
DE102015013125A1 (de) Vorrichtung, Systeme und Verfahren zur Bereitstellung eines speichereffizienten Caches
WO2000070620A1 (de) Speicheranordnung mit adressverwürfelung
DE102004014227A1 (de) Steuervorrichtung für einen nicht flüchtigen Speicher
DE102005019842B4 (de) System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher
DE112019000627T5 (de) Speicherstrukturbasiertes Coherency Directory Cache
DE602004008240T2 (de) Verfahren zum Verwalten von defekten Speicherblöcken in einem nicht-flüchtigen Speicher und nicht-flüchtiger Speicher zur Ausführung des Verfahrens
DE69701364T2 (de) Verfahren und Rechnerprogramprodukt zum Wiederverwenden von Strukturen zum Durchsuchen von Verzeichnissen
DE60317801T2 (de) Verfahren und vorrichtung zur erkennung von fehlern während des schreibens in einen nichtflüchtigen speicher
EP1352318B1 (de) Mikroprozessorschaltung für tragbare datenträger
DE69903496T2 (de) Flexibles Löschen von Objekten in einer Umgebung mit beschränkten Resourcen
EP1449091B1 (de) Verfahren zum synchronisieren eines speichers mit dem hauptspeicher einer rechenanlage
EP0917053B1 (de) Programmgesteuerte Einheit und Verfahren zu ihrem Betreiben
DE19928939A1 (de) Datenträger sowie Verfahren zur Datenübertragung und zur Speicherverwaltung

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)
8328 Change in the person/name/address of the agent

Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7