DE10393835T5 - Ausführung einer modifizierten Cheney-Abtastung in einer Multithreaded-Verarbeitungsumgebung - Google Patents
Ausführung einer modifizierten Cheney-Abtastung in einer Multithreaded-Verarbeitungsumgebung Download PDFInfo
- Publication number
- DE10393835T5 DE10393835T5 DE10393835T DE10393835T DE10393835T5 DE 10393835 T5 DE10393835 T5 DE 10393835T5 DE 10393835 T DE10393835 T DE 10393835T DE 10393835 T DE10393835 T DE 10393835T DE 10393835 T5 DE10393835 T5 DE 10393835T5
- Authority
- DE
- Germany
- Prior art keywords
- pointer
- memory
- area
- slot
- load
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0269—Incremental or concurrent garbage collection, e.g. in real-time systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
- Y10S707/99957—Garbage collection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Processing (AREA)
Abstract
Speicherverwaltungsverfahren,
umfassend:
das Aufweisen eines Ladezeigers, der an Speicherobjekten, die in einem zweiten Speicherbereich zwischen einem Abtastzeiger und einem Zuweisungszeiger angeordnet sind, arbeitet, wobei er Speicherobjekte abtastet, um Slots zu finden, die Zeiger auf Objekte im ersten Speicherbereich enthalten,
das Bewegen des Ladezeigers zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und
das Vorablesen des Speicherobjekts im ersten Bereich in einem Cache, der mit einem Thread, der den Zuweisungszeiger unterstützt, gemeinsam benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
das Aufweisen eines Ladezeigers, der an Speicherobjekten, die in einem zweiten Speicherbereich zwischen einem Abtastzeiger und einem Zuweisungszeiger angeordnet sind, arbeitet, wobei er Speicherobjekte abtastet, um Slots zu finden, die Zeiger auf Objekte im ersten Speicherbereich enthalten,
das Bewegen des Ladezeigers zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und
das Vorablesen des Speicherobjekts im ersten Bereich in einem Cache, der mit einem Thread, der den Zuweisungszeiger unterstützt, gemeinsam benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
Description
- GEBIET DER ERFINDUNG
- Die vorliegende Erfindung betrifft eine Rechenanlagensoftware. Ins Besonderen betrifft diese Erfindung die Speicherverwaltung.
- Der verlässliche Betrieb von Softwaresystemen erfordert üblicherweise eine Speicherverwaltung, welche die Verfügbarkeit dynamisch zugewiesenen Speichers automatisch sicherstellt. Diese automatische Aufgabe, die oftmals als Speicherbereinigung bezeichnet wird, erfolgt durch einen Müllsammler, der Speicher wieder verwertet, der nie mehr verwendet werden wird. Die automatische Speicherbereinigung umgeht die Notwendigkeit, dass ein Programmierer Speicherblöcke explizit freigeben muss, und hilft bei der Vermeidung von Schwierigkeiten in Zusammenhang mit Speicherverlust und vorzeitiger Speicherfreigabe.
- Objekte sind eine Sammlung von Feldern und Verfahren. Die Felder können Slots umfassen, die möglicherweise rekursive Verweise auf andere Objekte enthalten. Da die Speicherbereinigung auch die Programmentwicklung vereinfachen kann, indem sie die Notwendigkeit zur Verwaltung von Speicher, der verwendet wird, um Objekte zu instanziieren, verringert, ist sie oft in modernen Sprachen, einschließlich Java und deren Varianten oder C# (Microsoft Common Language Runtime (CLR)), verfügbar.
- Allerdings bringt die Speicherbereinigung einen beträchtlichen Laufzeitüberhang mit sich, wobei diese Befehlsverarbeitungszeit wiederum vom spezifischen Speicherbereinigungsalgorithmus abhängt, der verwendet wird. Aufgrund des bekannten Halteproblems ist es für einen Müllsammler im Allgemeinen nicht möglich, genau zu ermitteln, welche Speicherobjekte noch aktuell sind und in der Zukunft vom Programm noch verwendet werden. Alle Müllsammler bzw. Speicherbereiniger verwenden irgendeine Näherung, um die Aktualität von Speicher zu ermitteln. In einer „zurückverfolgenden" Speicherbereinigung werden Objekte als aktuell ermittelt, wenn sie erreichbar sind. „Kopierspeicherbereinigung" ist eine Art von zurückverfolgender Speicherbereinigung, die funktioniert, indem sie erreichbare Objekte verschiebt (Spülung) und zurückgelassene Objekte (also Objekte, die unerreichbar und daher tot sind) zurückgewinnt.
- Ein Zweibereich-Kopiensammler ist eine einfache Form von Kopiermüllsammler, der den verfügbaren Speicher in zwei Bereiche einteilt. Speicherobjekte können im ersten Bereich, der auch als „Von-Bereich" oder „alter" Bereich bezeichnet wird, angeordnet sein. Objekte können in den zweiten Bereich, der auch als „Nach-Bereich" oder „neuer" Bereich bezeichnet wird, verschoben oder diesem zugewiesen werden. Gemeinsam werden die ersten beiden Bereiche als erfasster Bereich oder C-Bereich bezeichnet. Schließlich kann ein Objekt in einem dritten nicht erfassten Bereich oder U-Bereich angeordnet sein. Objekte werden dem ersten Bereich zugewiesen, bis dieser voll ist. Dann wird dieser Bereich zum „alten" Bereich. Die erreichbaren Objekte werden dann in den anderen „neuen" Bereich kopiert (üblicherweise unter Verwendung einer Cheney-Abtastung), und der zuvor zugewiesene Speicher des alten Bereiches wird für den verfügbaren Speicherpool zurück gewonnen. Die Cheney-Abtastung ist ein besonders leistungsstarker Algorithmus, der keinen Stack oder anderen Hilfsbereich benötigt, um die Liste der Speicherobjekte zu führen, die noch nicht abgetastet worden sind. Die Zuweisung wird fortgesetzt, bis der neue Bereich gefüllt ist, und der Vorgang dann in umgekehrter Richtung wiederholt wird. Man wird verstehen, dass Verbesserungen der Leistung zum Kopieren erreichbarer Objekte eine Verbesserung der Speicherbereinigung und der Systemleistung insgesamt mit sich bringen.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
- Aus der untenstehenden ausführlichen Beschreibung sowie den beiliegenden Zeichnungen der Ausführungsformen der Erfindungen, sind die Erfindungen besser verständlich, wobei die Beschreibung oder die Zeichnungen jedoch keinesfalls verwendet werden dürfen, um die Erfindungen auf die spezifischen Ausführungsformen, die beschrieben sind, einzugrenzen, sondern ausschließlich zur Erklärung und zum besseren Verständnis dienen.
-
1 stellt schematisch eine Rechenanlage dar, die eine Multithreaded-Verarbeitung unterstützt; -
2 ist eine Abbildung der Arbeitsweise einer Cheney-Abtastung nach dem Stand der Technik; -
3 stellt die Programmlogik einer modifizierten Cheney-Abtastung unter Verwendung mehrere Programmfäden dar; und -
4 zeigt die Arbeitsweise einer modifizierten Cheney-Abtastung unter Verwendung eines „Dritter-Finger"-Zeigers. - AUSFÜHRLICHE BESCHREIBUNG
-
1 stellt grundsätzlich eine Rechenanlage10 dar, die einen Prozessor12 und ein Speichersystem13 (das ein externer Cache-Speicher, ein externer Direktzugriffsspeicher und oder ein teilweise im Prozessor integrierter Speicher sein kann) zur Ausführung von Befehlen, die als externe Software in Form eines Computerprogrammproduktes bereitgestellt und in der Datenspeichereinheit18 gespeichert sein können, aufweist. Der Prozessor12 ist imstande, mehrere Programmthreads (Programmfäden) zu unterstützen (ein Thread bzw. ein Faden ist eine Abfolge von Befehlsausführungen, die unabhängig von anderen Threads bzw. Fäden ablaufen kann, die jedoch Daten direkt gemeinsam mit anderen Threads bzw. Fäden benutzen kann). Eine Programmthreadunterstützung ist üblicherweise in Zusammenhang mit Computersprachen, wie zum Beispiel Java und C#, verfügbar. - Die Rechenanlage
10 der vorliegenden Erfindung kann ein oder mehrere Eingabe/Ausgabe-Geräte (I/O devices)15 aufweisen, die ein Anzeigegerät, wie zum Beispiel einen Monitor, umfassen. Die Eingabe/Ausgabe-Geräte können auch ein Eingabegerät, wie zum Beispiel eine Tastatur, und eine Cursorsteuerung, wie zum Beispiel eine Maus, einen Trackball oder ein Trackpad umfassen. Des Weiteren können die Eingabe/Ausgabe-Geräte auch einen Netzwerkverbinder umfassen, so dass die Rechenanlage10 Teil eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzes (WAN) ist. - Beispiele einer Anlage
10 umfassen, sind aber nicht beschränkt auf, einen Computer (zum Beispiel einen Tischcomputer, einen tragbaren PC, einen Server, einen Blade-Server, eine Arbeitsstation, einen elektronischen Assistenten, etc.) oder irgendwelche damit verbunden Peripheriegeräte; Fernmeldeanlagen (zum Beispiel einen Telefonhörer, einen Funkrufempfänger, etc.); ein Fernseh-Aufsatzgerät und ähnliches. Eine „Verbindung" oder ein „Link" ist weitestgehend definiert als logischer oder physischer Kommunikationspfad, wie zum Beispiel eine elektrische Leitung, eine Lichtleitfaser, ein Kabel, eine Sammelleitung oder sogar ein drahtloser Kanal, der Infrarot, Funkübertragung (RF) oder irgendeinen anderen drahtlosen Signalübertragungsmechanismus benützt. Des Weiteren ist der Begriff „Information" definiert als ein oder mehrere Bits von Daten, Adressen und/oder Steuerungen. „Code" umfasst Software oder Firmware, die bei der Ausführung bestimmte Funktionen erfüllt. Beispiele für Code umfassen eine Anwendung, ein Betriebssystem, ein Applet, Urladercode oder jegliche andere Reihe von Befehlen, oder Mikrobefehlskode (das heißt, Code, der auf privilegierter Ebene und unterhalb des Betriebssystems arbeitet). - Ersatzweise könnte die Logik zur Ausführung der oben erläuterten Verfahren und Anlagen in zusätzlichen computer- und/oder maschinenlesbaren Medien ausgeführt werden, wie zum Beispiel in einzelnen Hardwarekomponenten, wie zum Beispiel hochintegrierten Schaltkreisen (LSIs), anwenderspezifischen Schaltkreisen (ASICs), Mikrobefehlskode, oder Firmware, wie zum Beispiel elektrisch löschbarem, programmierbarem Nur-Lese-Speicher (EEPROM); oder in räumlich entfernten Computern, die Informationen durch elektrische, optische, akustische und andere Formen von verbreiteten Signalen (zum Beispiel Funkwellen oder optische Infrarotsignale) weiterleiten.
- In einer Ausführungsform kann ein Computerprogrammprodukt, das durch die Datenspeichereinheit
18 gelesen werden kann, ein maschinen- oder computerlesbares Medium umfassen, das darauf gespeicherte Befehle aufweist, die verwendet werden können, um einen Computer (oder ein anderes elektronisches Gerät) zu programmieren (das heißt, dessen Betrieb zu definieren), um einen Vorgang gemäß der vorliegenden Erfindung durchzuführen. Das computerlesbare Medium der Datenspeichereinheit18 kann Floppy-Disks, optische Speicherplatten, Compactdiscs, Nur-Lese-Speicher-Disks (CD-ROMs) und magnetooptische Disketten, Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM), löschbaren, programmierbaren Nur-Lese-Speicher (EPROM), elektrisch löschbaren, programmierbaren Nur-Lese-Speicher (EEPROM), Magnetkarten oder optische Speicherkarten, Flash-Speicher oder ähnliches, eingeschlossen alle Verfahren zum Aufrüsten oder Umprogrammieren oder Erzeugen oder Aktivieren oder Reservieren der Aktivierung von Mikrobefehlskodeerweiterung, umfassen, ist jedoch nicht auf diese beschränkt. - Demgemäß umfasst das computerlesbare Medium jegliche Art von Medien/maschinenlesbarem Medium, das zum Speichern elektronischer Befehle geeignet ist. Des Weiteren kann die vorliegende Erfindung auch als ein Computerprogrammprodukt heruntergeladen werden. Als solches kann das Programm von einem Ferncomputer (zum Beispiel einem Server) zu einem anfordernden Computer (zum Beispiel einem Kunden) übertragen werden. Die Übertragung des Programms kann durch Datensignale, die in einer Trägerwelle oder einem anderen Verbreitungsmedium eingebettet sind, über eine Nachrichtenverbindung (zum Beispiel ein Modem, eine Netzwerkverbindung oder ähnliches) erfolgen.
- In einer Ausführungsform sind die Verfahren der vorliegenden Erfindung in maschinenlesbaren Befehlen dargestellt, die dazu dienen sollen, den Betrieb der Rechenanlage
10 , und insbesondere den Betrieb des Prozessors, des Registerspeichers, des Cache-Speichers und des allgemeinen Speichers zu steuern. Die Befehle können dazu verwendet werden, zu bewirken, dass ein Mehrzweckcomputer oder ein Spezialcomputer, der mit den Befehlen programmiert worden ist, die Schritte der vorliegenden Erfindung ausführt. Ersatzweise können die Schritte der vorliegenden Erfindung durch spezifische Hardwarekomponenten (die Mikrokode aufweisen), die festverdrahtete Logik zur Durchführung der Schritte enthalten, oder durch irgendeine Kombination von programmierten Computerkomponenten und kundenspezifischen Hardwarekomponenten ausgeführt werden. - Es versteht sich, dass Fachleute verschiedene Begriffe und Verfahren verwenden, um Nachrichten, Protokolle, Anwendungen, Ausführungen, Mechanismen, etc. zu beschreiben.
- Ein solches Verfahren ist die Beschreibung der Ausführung eines Verfahrens in Form eines Algorithmus oder eines mathematischen Ausdrucks. Das heißt, obwohl das Verfahren zum Beispiel durch Ausführungscode auf einem Computer verwirklicht werden kann, kann der Ausdruck dieses Verfahrens treffender und prägnanter als Pseudocode übermittelt und mitgeteilt werden, der die Programmablaufslogik durch Formeln, Algorithmen oder mathematische Ausdrücke allgemein definiert.
- Demgemäß würden Fachleute einen Block, der A+B=C anzeigt, als Addierfunktion erkennen, deren Ausführung in Hardware und/oder Software zwei Eingaben (A und B) nehmen und daraus eine Summenausgabe (C) erzeugen würde. Daher ist die Verwendung von Formeln, Algorithmen oder mathematischen Ausdrücken als Beschreibungen so zu verstehen, dass diese eine physische Ausführungsform zumindest entweder in Hardware und/oder Software aufweisen (wie ein Computersystem, in dem die Verfahren der vorliegenden Erfindung angewendet beziehungsweise als eine Ausführungsform ausgeführt werden können).
-
2 ist eine Darstellung einer Cheney-Abtastung, wie sie nach dem Stand der Technik bekannt ist. Wie aus2 ersichtlich, beginnt eine klassische Cheney-Abtastung20 durch Kopieren von Objekten, die erreichbar sind, vom Stammverzeichnis in den „Nach"-Bereich. Die Objekte werden durch Verwendung eines „Zuweisungszeigers", der die Grenze zwischen den zugewiesenen und den nicht zugewiesenes Bereichen des Cheney-Bereichs markiert, sequentiell zugewiesen. Die Objekte werden durch Verwendung eines Abtastzeigers abgetastet, der mit dem ersten zugewiesenen Objekt beginnt und die Objekte der Reihe nach von links nach rechts abtastet. Findet die Cheney-Abtastung einen Slot, der auf ein Objekt im „Von"-Bereich verweist, das bereits eine „Nach"-Bereich-Version aufweist, wird der Slot aktualisiert, so dass er auf die „Nach"-Version verweist. Entdeckt die Cheney-Abtastung ein Objekt im „Von"-Bereich, das noch nicht in den „Nach"-Bereich verschoben worden ist, so wird eine Version des Objekts unter Verwendung des Zuweisungszeigers dem „Nach"-Bereich zugewiesen. Der Zuweisungszeiger wird durch die Größe des Objekts vorgeschoben. Schließlich wird der Slot, der die Adresse des „Von"-Objekts enthält, aktualisiert, so dass er auf die neue „Nach"-Version des Objekts verweist. Dieses Verfahren wird manchmal als Zweifingerverfahren bezeichnet, wobei der rechte Finger den Zuweisungszeiger und der linke Finger den Abtastzeiger darstellt. Das Abtasten bewegt den linken Finger und das Zuweisen bewegt den rechten Finger. Die Cheney-Abtastung ist beendet, wenn der Abtastzeiger den Zuweisungszeiger eingeholt hat, wenn sich – mit anderen Worten – die Finger treffen. Da der „Von"-Bereich begrenzt ist, endet der Algorithmus in jedem Fall. - Unglücklicherweise findet die Cheney-Abtastung von
2 im Betrieb häufig ein Objekt im „Von-Bereich, das nicht im Speichercache angeordnet ist. Die Cheney-Abtastung bleibt stehen, bis das Objekt in den Cache gezogen werden kann, wodurch die Leistung der Speicherbereinigung verringert wird. - Wie unter Bezugnahme auf Vorgang
30 in3 ersichtlich ist, kann ein Stehenbleiben der Cheney-Abtastung verhindert werden, indem Multithreaded-Rechenanlagen verwendet werden, die einen gemeinsamen Cache benützen. Ein „dritter Finger" wird verwendet, um dem Abtaster zu helfen, indem er vor dem Abtastzeiger Objekte im ersten „Von"-Speicherbereich in den Cache lädt. Dieser Dritter-Finger-Lade-Faden arbeitet an Objekten zwischen dem Abtastzeiger und dem Zuweisungszeiger. Er tastet das Objekt ab, wobei er jeden Slot untersucht. Wenn der Slot einen Nullzeiger oder einen Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, enthält, wird er als uninteressant angesehen, und der Ladefaden bewegt sich zum nächsten Slot. - Wenn der Slot einen Zeiger auf ein Objekt im „Von-"Bereich enthält, dann wird das Objekt in den Cache geladen, der gemeinsam mit dem Zuweisungsfaden benutzt wird. Wenn der Zeiger auf ein Objekt im zweiten „Nach"-Bereich verweist, so weiß der Ladethread bzw. Ladefaden, dass er „hinter" dem Kopierthead bwz. dem Kopierfaden zurückliegt und nimmt die Arbeit am genannten Objekt umgehend wieder auf. Mit anderen Worten springt er nach vor zu einem Objekt, das noch nicht abgetastet worden ist. Dieses Verfahren führt zu einer preiswerten blockierungsfreien Koordination zwischen den beiden Programmthreads.
-
4 zeigt wie der Ladethread Zeiger vor dem Abtastzeiger aktualisiert. Wenn der Ladefaden daran geht, das nächste Objekt zu untersuchen, wird er erkennen, dass ein Objekt noch nicht kopiert worden ist, wenn ein Zeiger auf ein Objekt im ersten „Von"-Speicherbereich verweist, und liest dieses Objekt vorab, so dass der Abtastfaden möglichst keinen Cache-Verlust erleiden wird. - Auf starken Speicherzugriffsauftragsmaschinen, löscht der Zuweisungszeiger den Vtable gleich nach dem Grenzzeiger, bevor er das Objekt kopiert, so dass der Ladefaden den Null-Vtable sieht und weiß, dass er den Grenzzeiger erreicht hat. Wenn der Ladefaden einen Slot entdeckt, der einen Verweis auf ein Objekt enthält, das bereits verschoben worden ist, so aktualisiert er den Slot, so dass dieser auf die „Nach"-Version des Objekts verweist. Das hilft dem Zuweisungsfaden, indem es die Notwendigkeit ausmerzt, das „Von"-Objekt zu laden und dann den Objektkennsatz zu analysieren, um zu bestimmen, ob es bereits verschoben worden ist. Auf schwachen Speicherzugriffsauftragsmaschinen muss der Ladefaden den Zuweisungszeiger regelmäßig laden und bis zum Zuweisungszeiger abtasten.
- Es gibt mehrere günstige Rennbedingungen, die durch diesen Vorgang eingebracht worden sind. Zunächst ist es dem Zuweisungsfaden möglich, den Ladefaden zu überholen. Der Zuweisungsfaden wird dadurch nicht beeinflusst. Der Ladefaden wird jedoch auf Objekte mit Zeigern in den „Nach"-Bereich treffen. Das ist die einzige Situation, in welcher der Ladefaden auf solche Zeiger trifft. Verweist der Zeiger, den er findet, auf ein Objekt zur Rechten des Objekts, das abgetastet wird, so kann der Ladezeiger das Laden an diesem Objekt wieder aufnehmen, da der Zuweisungsfaden mindestens so weit fortgeschritten ist.
- Da sich der Ladefaden und der Zuweisungsfaden gegenseitig überholen, ist es möglich, dass beide Fäden versuchen, einen Slot im Objekt, das abgetastet wird, zu aktualisieren. Da beide Fäden versuchen, den Zeiger mit demselben Wert zu aktualisieren, ist diese Rennbedingung gutartig und der Algorithmus bleibt korrekt.
- Man beachte, dass der Ladefaden niemals ein Objekt kopiert oder den Zuweisungszeiger aktualisiert. Diese Aufgabe ist dem Zuweisungsfaden vorbehalten, so dass wir den Zuweisungszeiger nicht synchronisieren müssen. Der Ladefaden kann den Zuweisungszeiger überholen, was erkannt wird, da Speicher jenseits des Zuweisungszeigers auf Null gesetzt ist. Da der Zuweisungszeiger niemals an initialisiertem Speicher vorbeizielen wird, ist das Schlimmste, was passieren kann, dass der Ladefaden einen überholten Zuweisungszeiger erfasst und die Abtastung vorzeitig beendet. Es gibt nichts, was der Ladefaden tun muss, um sicherzustellen, dass der Algorithmus korrekt ist, er ist nur ein Versuch, Arbeit zu übernehmen, die üblicherweise durch den Zuweisungsfaden erfolgt, wodurch der Zuweisungsfaden beschleunigt wird.
-
- Ein Verweis in der Patentschrift auf „Ausführungsform" oder „eine Ausführungsform", „einige Ausführungsformen" oder „andere Ausführungsformen" bedeutet, dass mindestens einige Ausführungsformen, aber nicht notwendigerweise alle Ausführungsformen der Erfindung ein bestimmtes Merkmal, einen bestimmten Aufbau oder eine bestimmte Eigenschaft, die in Verbindung mit den Ausführungsformen beschrieben ist, aufweisen. Die verschiedenen Vorkommen von „Ausführungsform", „eine Ausführungsform" oder „einige Ausführungsformen" beziehen sich nicht unbedingt alle auf dieselben Ausführungsformen.
- Wenn die Patentschrift angibt, dass ein Bestandteil, ein Merkmal, ein Aufbau oder eine Eigenschaft umfasst sein „kann" oder „könnte", so muss dieser bestimmte Bestandteil, dieses bestimmte Merkmal, dieser bestimmte Aufbau oder diese bestimmte Eigenschaft nicht unbedingt umfasst sein. Wenn sich die Patentschrift oder der Anspruch auf „ein" Element bezieht, bedeutet dies nicht, dass es nur eines dieser Elemente gibt. Wenn sich die Patentschrift oder die Ansprüche auf „ein zusätzliches" Element beziehen, schließt das nicht aus, dass es möglicherweise mehr als eines der zusätzlichen Elemente gibt.
- Fachleute, die diese Offenbarung kennen, werden erkennen, dass viele andere Variationen der obigen Beschreibung und der Zeichnungen innerhalb des Umfangs der vorliegenden Erfindung gemacht werden können. Demgemäß sind es die folgenden Ansprüche einschließlich aller Ergänzungen dazu, die den Umfang der Erfindung definieren.
- Zusammenfassung
- Bei einer Ausführungsform verwendet ein Speichermanagement einen "third finger" Ladezeigerthread, der mit Speicherobjekten arbeitet, die in einem zweiten Speicherbereich zwischen einem Abtastzeigerthread und einem Zuweisungszeigerthread angeordnet sind, um Objekte in den zweiten Speicherbereich zu lesen, bevor diese abgetastet werden. Der Lesethread wird zu einem nächsten Speicherslot in dem zweiten Speicherbereich bewegt, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt in dem ersten Speicherbereich enthält. Das Speicherobjekt wird in einen Cache vorab gelesen, der mit einem Zuweisungszeigerthread gemeinsam benutzt wird, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt in dem ersten Bereich enthält.
Claims (30)
- Speicherverwaltungsverfahren, umfassend: das Aufweisen eines Ladezeigers, der an Speicherobjekten, die in einem zweiten Speicherbereich zwischen einem Abtastzeiger und einem Zuweisungszeiger angeordnet sind, arbeitet, wobei er Speicherobjekte abtastet, um Slots zu finden, die Zeiger auf Objekte im ersten Speicherbereich enthalten, das Bewegen des Ladezeigers zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und das Vorablesen des Speicherobjekts im ersten Bereich in einem Cache, der mit einem Thread, der den Zuweisungszeiger unterstützt, gemeinsam benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
- Speicherverwaltungsverfahren nach Anspruch 1, wobei der Ladezeiger beim Abtasten eines Nullzeigers zum nächsten Speicherslot bewegt wird.
- Speicherverwaltungsverfahren nach Anspruch 1, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, wenn er auf einen Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, trifft.
- Speicherverwaltungsverfahren nach Anspruch 1, des Weiteren umfassend das Aktualisieren des Ladezeigers, so dass er dem Abtastzeiger gleicht, wenn ein Slot entdeckt wird, der einen Zeiger auf ein Objekt im zweiten Bereich enthält.
- Speicherverwaltungsverfahren nach Anspruch 1, wobei der Programm-Thread, der den Zuweisungszeiger unterstützt, gleich nach dem Grenzzeiger einen Vtable löscht, bevor er das Speicherobjekt kopiert, um zu erreichen, dass der Ladefaden einen Null-Vtable sieht.
- Verfahren zur Speicherbereinigung, umfassend: das Aufteilen des erfassten Speichers in erste und zweite Speicherbereiche, das Abtasten des zweiten Speicherbereichs mit einem Ladezeiger, einem Abtastzeiger und einem Zuweisungszeiger, um zu bestimmen, welche Speicherobjekte in den zweiten Speicherbereich verschoben werden sollen; das Bewegen des Ladezeigers zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und das Vorablesen des Speicherobjekts in einen Cache, der gemeinsam mit dem Thread, der den Zuweisungszeiger unterstützt, benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
- Speicherverwaltungsverfahren nach Anspruch 5, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, sobald er einen Nullzeiger abtastet.
- Speicherverwaltungsverfahren nach Anspruch 5, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, wenn ein Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, abgetastet wird.
- Speicherverwaltungsverfahren nach Anspruch 5, des Weiteren umfassend das Verweisen des Zeigers auf ein Objekt im zweiten Speicherbereich, wenn der Ladezeiger hinter dem Kopierzeigerthread zurückliegt.
- Speicherverwaltungsverfahren nach Anspruch 5, wobei der Thread, der den Zuweisungszeiger unterstützt, gleich nach dem Grenzzeiger einen Vtable löscht, bevor er das Speicherobjekt kopiert, um zu erreichen, dass der Ladefaden einen Null-Vtable sieht.
- Gegenstand umfassend ein Speichermedium, auf dem Befehle gespeichert sind, die, wenn sie von einer Maschine ausgeführt werden, zu einer Speicherverwaltung führen, umfassend: das Aufweisen eines Ladezeigers, der an Speicherobjekten, die in einem zweiten Speicherbereich zwischen einem Abtastzeiger und einem Zuweisungszeiger angeordnet sind, arbeitet, wobei er Speicherobjekte abtastet, um Slots zu finden, die Zeiger auf Objekte im ersten Speicherbereich enthalten, das Bewegen des Ladezeigers zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und das Vorablesen des Speicherobjekts im ersten Bereich in den Cache, der mit einem Thread, der den Zuweisungszeiger unterstützt, gemeinsam benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
- Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 11 gespeichert sind, wobei der Ladezeiger beim Abtasten eines Nullzeigers zum nächsten Speicherslot bewegt wird.
- Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 11 gespeichert sind, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, wenn er auf einen Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, trifft.
- Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 11 gespeichert sind, des Weiteren umfassend das Aktualisieren des Ladezeigers, so dass er dem Abtastzeiger gleicht, wenn ein Slot entdeckt wird, der einen Zeiger auf ein Objekt im zweiten Bereich enthält.
- Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 11 gespeichert sind, wobei der Programmthread, der den Zuweisungszeiger unterstützt, gleich nach dem Grenzzeiger einen Vtable löscht, bevor er das Speicherobjekt kopiert, um zu erreichen, dass der Ladefaden einen Null-Vtable sieht.
- Gegenstand umfassend ein Speichermedium, auf dem Befehle gespeichert sind, die, wenn sie von einer Maschine ausgeführt werden, zu einer Speicherbereinigung führen, umfassend: das Aufteilen des erfassten Speichers in erste und zweite Speicherbereiche, das Abtasten des zweiten Speicherbereichs mit einem Ladezeiger, einem Abtastzeiger und einem Zuweisungszeiger, um zu bestimmen, welche Speicherobjekte in den zweiten Speicherbereich verschoben werden sollen; das Bewegen des Ladezeigers zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und das Vorablesen des Speicherobjekts in einen Cache, der gemeinsam mit einem Thread, der den Zuweisungszeiger unterstützt, benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
- Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 16 gespeichert sind, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, sobald er einen Nullzeiger abtastet.
- Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 16 gespeichert sind, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, wenn ein Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, abgetastet wird.
- Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 16 gespeichert sind, des Weiteren umfassend das Verweisen des Zeigers auf ein Objekt im zweiten Speicherbereich, wenn der Ladezeiger hinter dem Kopierzeigerthread zurückliegt.
- Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 16 gespeichert sind, wobei der Thread, der den Zuweisungszeiger unterstützt, gleich nach dem Grenzzeiger einen Vtable löscht, bevor er das Speicherobjekt kopiert, um zu erreichen, dass der Ladefaden einen Null-Vtable sieht.
- Speicherverwaltungssystem, umfassend: einen Prozessor, der einen Speicher, der mit ihm verbunden ist, aufweist, wobei der Prozessor so ausführbar ist, dass er an Speicherobjekten, die im Speicher, der mit dem Prozessor verbunden ist, angeordnet sind, arbeiten kann, wobei die Speicherobjekte in einem zweiten Speicherbereich zwischen einem Abtastzeiger und einem Zuweisungszeiger angeordnet sind, wobei das System betrieben wird, um Speicherobjekte abzutasten, um Slots zu finden, die Zeiger auf Objekte in einem ersten Speicherbereich enthalten, Bewegen eines Ladezeiges zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und Vorablesen des Speicherobjekts im ersten Bereich in einen Cache, der gemeinsam mit dem Thread, der den Zuweisungszeiger unterstützt, benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
- Speicherverwaltungsverfahren nach Anspruch 21, wobei der Ladezeiger beim Abtasten eines Nullzeigers zum nächsten Speicherslot bewegt wird.
- Speicherverwaltungssystem nach Anspruch 21, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, wenn er auf einen Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, trifft.
- Speicherverwaltungssystem nach Anspruch 21, des Weiteren umfassend das Aktualisieren des Ladezeigers, so dass er dem Abtastzeiger gleicht, wenn ein Slot entdeckt wird, der einen Zeiger auf ein Objekt im zweiten Bereich enthält.
- Speicherverwaltungsverfahren nach System 21, wobei der Programmthread, der den Zuweisungszeiger unterstützt, gleich nach dem Grenzzeiger einen Vtable löscht, bevor er das Speicherobjekt kopiert, um zu erreichen, dass der Ladefaden einen Null-Vtable sieht.
- Speicherbereinigungssystem, umfassend: einen Prozessor, der einen Speicher, der mit ihm verbunden ist, aufweist, wobei der Prozessor so ausführbar ist, dass er an Speicherobjekten, die im Speicher, der mit dem Prozessor verbunden ist, angeordnet sind, arbeiten kann, wobei der Prozessor den erfassten Speicher in erste und zweite Speicherbereiche aufteilen kann, Abtasten des zweiten Speicherbereichs mit einem Ladezeiger, einem Abtastzeiger und einem Zuweisungszeiger, um zu bestimmen, welche Speicherobjekte in den zweiten Speicherbereich verschoben werden sollen; Bewegen des Ladezeigers zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und Vorablesen des Speicherobjekts in einen Cache, der gemeinsam mit einem Thread, der den Zuweisungszeiger unterstützt, benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
- Speicherverwaltungsverfahren nach Anspruch 26, wobei der Ladezeiger beim Abtasten eines Nullzeigers zum nächsten Speicherslot bewegt wird.
- Speicherverwaltungsverfahren nach Anspruch 26, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, wenn er auf einen Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, trifft.
- Speicherverwaltungsverfahren nach Anspruch 26, des Weiteren umfassend das Verweisen des Zeigers auf ein Objekt im zweiten Speicherbereich, wenn der Ladezeiger hinter dem Kopierzeigerfaden zurückliegt.
- Speicherverwaltungsverfahren nach Anspruch 26, wobei der Programmthread, der den Zuweisungszeiger unterstützt, gleich nach dem Grenzzeiger einen Vtable löscht, bevor er das Speicherobjekt kopiert, um zu erreichen, dass der Ladefaden einen Null-Vtable sieht.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/327,557 US6993540B2 (en) | 2002-12-20 | 2002-12-20 | Prefetching memory objects into a shared cache during garbage collection with a three-finger Cheney scan in a multithreaded processing environment |
US10/327,557 | 2002-12-20 | ||
PCT/US2003/037256 WO2004061674A2 (en) | 2002-12-20 | 2003-11-20 | Execution of modified cheney scanning in a multithreaded processing environment |
Publications (2)
Publication Number | Publication Date |
---|---|
DE10393835T5 true DE10393835T5 (de) | 2005-11-17 |
DE10393835B4 DE10393835B4 (de) | 2012-10-25 |
Family
ID=32594286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10393835T Expired - Fee Related DE10393835B4 (de) | 2002-12-20 | 2003-11-20 | Ausführung einer modifizierten Cheney-Abtastung in einer Multithreaded-Verarbeitungsumgebung |
Country Status (8)
Country | Link |
---|---|
US (1) | US6993540B2 (de) |
CN (1) | CN100530136C (de) |
AU (1) | AU2003294425A1 (de) |
DE (1) | DE10393835B4 (de) |
GB (1) | GB2412203B (de) |
HK (1) | HK1075511A1 (de) |
TW (1) | TWI249669B (de) |
WO (1) | WO2004061674A2 (de) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7870170B2 (en) * | 2005-05-03 | 2011-01-11 | International Business Machines Corporation | Method and apparatus for determining leaks in a Java heap |
WO2006119272A2 (en) * | 2005-05-04 | 2006-11-09 | Rosenthal Collins Group, Llc | Method and system for providing automatic exeuction of black box strategies for electronic trading |
US8799882B2 (en) * | 2005-12-07 | 2014-08-05 | Microsoft Corporation | Compiler support for optimizing decomposed software transactional memory operations |
US8266609B2 (en) * | 2005-12-07 | 2012-09-11 | Microsoft Corporation | Efficient placement of software transactional memory operations around procedure calls |
US8799432B1 (en) * | 2006-10-31 | 2014-08-05 | Hewlett-Packard Development Company, L.P. | Managed computer network caching requested and related data from remote computers |
US7991808B2 (en) * | 2008-05-21 | 2011-08-02 | Apple Inc. | Per thread garbage collection |
US8898376B2 (en) | 2012-06-04 | 2014-11-25 | Fusion-Io, Inc. | Apparatus, system, and method for grouping data stored on an array of solid-state storage elements |
US10235208B2 (en) * | 2012-12-11 | 2019-03-19 | Nvidia Corporation | Technique for saving and restoring thread group operating state |
US9208080B2 (en) * | 2013-05-30 | 2015-12-08 | Hewlett Packard Enterprise Development Lp | Persistent memory garbage collection |
US10025702B1 (en) * | 2014-12-10 | 2018-07-17 | Amazon Technologies, Inc. | Browser capable of saving and restoring content item state |
US9639460B1 (en) * | 2014-12-18 | 2017-05-02 | Amazon Technologies, Inc. | Efficient string formatting |
CN104536773B (zh) * | 2015-02-03 | 2017-11-21 | 积成电子股份有限公司 | 基于内存扫描的嵌入式软件动态内存回收方法 |
GB2544315B (en) * | 2015-11-12 | 2018-02-14 | Advanced Risc Mach Ltd | An apparatus and method for controlling use of bounded pointers |
US11194714B2 (en) | 2020-03-31 | 2021-12-07 | International Business Machines Corporation | Deep object graph traversal |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5088036A (en) * | 1989-01-17 | 1992-02-11 | Digital Equipment Corporation | Real time, concurrent garbage collection system and method |
US5687368A (en) * | 1994-07-22 | 1997-11-11 | Iowa State University Research Foundation, Inc. | CPU-controlled garbage-collecting memory module |
US5590332A (en) * | 1995-01-13 | 1996-12-31 | Baker; Henry G. | Garbage collection, tail recursion and first-class continuations in stack-oriented languages |
US7013454B2 (en) * | 1999-02-22 | 2006-03-14 | Sun Microsystems, Inc. | Thread suspension system and method using trapping instructions |
US6604182B1 (en) * | 1999-10-21 | 2003-08-05 | Oracle Corp. | Methods for managing memory in a run-time environment including activation and deactivation of objects |
US6393440B1 (en) * | 1999-12-13 | 2002-05-21 | International Business Machines Corporation | Data structure for keeping track of objects remaining to be traced by concurrent garbage collector |
US6886085B1 (en) * | 2000-04-19 | 2005-04-26 | International Business Machines Corporation | Method and apparatus for efficient virtual memory management |
US7124252B1 (en) * | 2000-08-21 | 2006-10-17 | Intel Corporation | Method and apparatus for pipelining ordered input/output transactions to coherent memory in a distributed memory, cache coherent, multi-processor system |
US7111294B2 (en) * | 2001-01-16 | 2006-09-19 | Microsoft Corporation | Thread-specific heaps |
US6542911B2 (en) * | 2001-03-01 | 2003-04-01 | Sun Microsystems, Inc. | Method and apparatus for freeing memory from an extensible markup language document object model tree active in an application cache |
US6662274B2 (en) * | 2001-06-20 | 2003-12-09 | Intel Corporation | Method for using cache prefetch feature to improve garbage collection algorithm |
-
2002
- 2002-12-20 US US10/327,557 patent/US6993540B2/en not_active Expired - Fee Related
-
2003
- 2003-11-13 TW TW092131865A patent/TWI249669B/zh not_active IP Right Cessation
- 2003-11-20 AU AU2003294425A patent/AU2003294425A1/en not_active Abandoned
- 2003-11-20 WO PCT/US2003/037256 patent/WO2004061674A2/en not_active Application Discontinuation
- 2003-11-20 DE DE10393835T patent/DE10393835B4/de not_active Expired - Fee Related
- 2003-11-20 GB GB0506294A patent/GB2412203B/en not_active Expired - Fee Related
- 2003-11-20 CN CNB200380106554XA patent/CN100530136C/zh not_active Expired - Fee Related
-
2005
- 2005-09-28 HK HK05108567A patent/HK1075511A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US20040122876A1 (en) | 2004-06-24 |
HK1075511A1 (en) | 2005-12-16 |
GB2412203B (en) | 2006-07-12 |
GB2412203A (en) | 2005-09-21 |
GB0506294D0 (en) | 2005-05-04 |
WO2004061674A3 (en) | 2006-07-27 |
DE10393835B4 (de) | 2012-10-25 |
AU2003294425A1 (en) | 2004-07-29 |
TWI249669B (en) | 2006-02-21 |
AU2003294425A8 (en) | 2004-07-29 |
CN1894673A (zh) | 2007-01-10 |
TW200413912A (en) | 2004-08-01 |
US6993540B2 (en) | 2006-01-31 |
CN100530136C (zh) | 2009-08-19 |
WO2004061674A2 (en) | 2004-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69427174T2 (de) | Dynamische Hochleistungsprogrammverknüpfung durch Cachespeicherung | |
DE69800909T2 (de) | Verfahren und Vorrichtung zur Optimierung der präzisen Speicherbereinigung, bei der Programmschleifen mit Zeiger-Feldern verwendet werden | |
DE69909021T2 (de) | Dynamische Speicherrückforderung ohne Compiler- oder Programmverbinderunterstützung | |
DE69428848T2 (de) | Mehrsprachige Standardressourcen | |
DE69825751T2 (de) | Garbage-sammlungs-anordnung und verfahren mit begrenzter pausenzeit und mit einer schreibschranke die mit einer quelleninstanz eines partiell relokierten objektes assoziiert ist | |
DE60207222T2 (de) | Verfahren und system zur profilerstellung, zur kontinuierlichen detektion von profilphasen | |
DE60006410T2 (de) | Verfahren und system zum verteilen von objektorientierten rechnerprogrammen | |
DE69802437T2 (de) | Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen | |
DE69400406T2 (de) | System und methode zur lokalisierung von geteilten bibliotheken | |
DE69800686T2 (de) | Verfahren und Gerät für effizienten Operationen auf primären Typwerten ohne statisches Überladen | |
DE69738101T2 (de) | Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen | |
DE69130580T2 (de) | Cache-Speicheranordnung | |
DE69801186T2 (de) | Verfahren und Vorrichtung zum Auffinden von Objekt-Zeigern, für die Erkennung/Sammlung von nicht-referenzierten Daten-Objekten | |
DE69836796T2 (de) | Datenverarbeiter mit lokalisierter gedächtnisreklamierung | |
DE69735342T2 (de) | Binärprogrammkonvertiergerät und -verfahren | |
DE60032694T2 (de) | Speicherrückforderungsverfahren | |
DE69930855T2 (de) | Verfahren und vorrichtung zur durchführung einer deterministischen speicherzuordnungsantwort in einem computer-system | |
DE19945992B4 (de) | Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren | |
DE10393835T5 (de) | Ausführung einer modifizierten Cheney-Abtastung in einer Multithreaded-Verarbeitungsumgebung | |
DE69229156T2 (de) | Digitaldatenprozessor mit verbesserter Wiederanlaufkennzeichnung und Verzweigung | |
DE69519904T2 (de) | Verfahren und Vorrichtung zur Bereitstellung einer zusammenhängenden Navigation in historischen Daten | |
DE19681256C2 (de) | Ausführung von Anwendungen am Platz vom Speicher | |
DE3833933C2 (de) | Informationsverarbeitungseinrichtung mit einer Adressenerweiterungsfunktion | |
DE69618221T2 (de) | Mechanismus zur wartung objektorientierter "methoden" der keine unterbrechung des computersystems erfordert | |
DE69623146T2 (de) | Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law |
Ref document number: 10393835 Country of ref document: DE Date of ref document: 20051117 Kind code of ref document: P |
|
8139 | Disposal/non-payment of the annual fee | ||
8170 | Reinstatement of the former position | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |
Effective date: 20130126 |
|
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |