DE3784387T2 - Vorrichtung und verfahren zur parallelen verwaltung von freien speicherbereichen. - Google Patents

Vorrichtung und verfahren zur parallelen verwaltung von freien speicherbereichen.

Info

Publication number
DE3784387T2
DE3784387T2 DE8787304321T DE3784387T DE3784387T2 DE 3784387 T2 DE3784387 T2 DE 3784387T2 DE 8787304321 T DE8787304321 T DE 8787304321T DE 3784387 T DE3784387 T DE 3784387T DE 3784387 T2 DE3784387 T2 DE 3784387T2
Authority
DE
Germany
Prior art keywords
area
identifier
allocator
list
storage
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 - Fee Related
Application number
DE8787304321T
Other languages
English (en)
Other versions
DE3784387D1 (de
Inventor
John Richard Gurd John Ri Gurd
Katsura Kawakami Kats Kawakami
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.)
University of Manchester
Panasonic Holdings Corp
Original Assignee
University of Manchester
Matsushita Electric Industrial Co Ltd
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 University of Manchester, Matsushita Electric Industrial Co Ltd filed Critical University of Manchester
Publication of DE3784387D1 publication Critical patent/DE3784387D1/de
Application granted granted Critical
Publication of DE3784387T2 publication Critical patent/DE3784387T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Description

  • Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung zur parallelen Zuordnung von Speicherbereichen in elektronischen Computern.
  • In elektronischen Computern, wie eine Speichervorrichtung einschließenden Mikrocomputern, muß bisher benutzt gewesener Bereich im Speicher auf eine wirkungsvolle Weise zur Wiederverwendung verfügbar gemacht werden. Fig. 1a stellt die Beziehung zwischen einer Verarbeitungsvorrichtung und einer Speichervorrichtung mit der Möglichkeit zur Steuerung der Speicherbereichsverwendung dar.
  • Unter Bezugnahme auf Fig. 1a umfaßt eine Speichervorrichtung 100 einen Verteilerteil (Zuordnungsteil) 100a, einen Speicherteil 100b, einen Verzögerung-Verarbeitungsteil (Zurückstellungsteil) 100c und einen Löschsteuerteil 100d. Die Übertragungskanäle 101 und 102 führen jeweils von der Verarbeitungsvorrichtung 103 zur Speichervorrichtung 100 bzw. von der Speichervorrichtung 100 zur Verarbeitungsvorrichtung 103.
  • Jeglicher Austausch von Informationen zwischen der Betriebsvorrichtung 103 und der Speichervorrichtung 100 geschieht durch die Übertragung einzelner Datenpakete, die im folgenden mit "Token" bezeichnet werden. Beim Empfang eines Speicherbereichsanforderung-Tokens 104 im Verteilerteil 100a der Speichervorrichtung 100 schickt dieser eine Anfangsadresse für den Bereich (was von der erforderlichen Bereichsgröße abhängt) in Gestalt eines Tokens 105. Der Speicherteil 100b kann ferner ein Schreib-Token 106 oder ein Leseanforderung-Token 107 empfangen. Als Antwort auf das erstere trägt der Speicher 100b den Parameter V in die Adresse A ein, und als Antwort auf das letztere liest er den Inhalt V der Adresse A aus und schickt den Befund zur Verarbeitungsvorrichtung 103 in Gestalt eines Daten- Tokens 108. Außer im Falle eines Schreib-Tokens WRT besteht die Notwendigkeit einer Antwort zur Verarbeitungsvorrichtung, und derartige Antworten sind durch die Parameter Ra identifiziert. Zwischen dem Verzögerung-Verwaltungsteil 100c oder der Löschsteuervorrichtung 100d und der Betriebsvorrichtung 103 werden keine Token direkt verschickt. Der Verzögerung-Verwaltungsteil 100c und der Speicherteil 100b führen jeweils die Funktionen einer Abwicklung von Leseanforderung-Token in Zusammenhang mit noch nicht im Speicherteil eingetroffenen Daten bzw. einer Löschung von Speicherbereich, dessen Nutzung die Löschsteuervorrichtung 100d abgeschlossen hat, durch. Die unterschiedlichen Tokenarten lassen sich anhand eines Codes in jedem Token erkennen.
  • Fig. 1b stellt schematische Beispiele jeder Tokenart dar. Unter Bezugnahme auf Fig. 1b umfaßt jedes Token vier Felder, nämlich ein Codefeld 451, ein zweites Feld 452, ein drittes Feld 453 und ein viertes Feld 454.
  • Beim Codefeld 451 handelt es sich um dasjenige Feld, das zur Unterscheidung verschiedener Tokenarten eingesetzt wird. Im Beispiel der Fig. 1 sind ihm vier Bit zugewiesen, aus denen sich sechzehn unterschiedliche Tokenarten darstellen lassen. Der Einfachheit halber umfassen die dargestellten Felder 452 bis 454 jeweils 24 Bit, es läßt sich aber eine beliebige Länge wählen, um einem bestimmten System gerecht zu werden. Die schattierten Bereiche in den Diagrammen stehen für nicht benutzte Felder.
  • In den Fig. 2a bis 2c sind die Funktionen des oben erwähnten Verteilerteils 100a und Speicherteils 100b ausführlich dargestellt. Der Verteilerteil 100a sucht und reserviert Speicherbereich (im folgenden mit "Bereich" bezeichnet), der nicht benutzt ist, um den Anforderungen der Verarbeitungsvorrichtung 103 gerecht zu werden. Dann schickt er ein Zeiger- Token, das den reservierten Bereich für die Verarbeitungsvorrichtung 103 identifiziert. Unter Bezugnahme auf Fig. 2a tragen die Kanäle 201 und 202 Token jeweils von der bzw. zur Verarbeitungsvorrichtung 103 und entsprechen den Teilen mit der Beschriftung 101, 102 in Fig. 1a. Eine Verteilertabelle 220 umfaßt die folgenden Gegenstände: ein gültiges Markierungsflag 221, ein Größenfeld 222 und ein Anfangsadressfeld 223. Wenn das gültige Markierungsflag 221 auf "0" steht, dann bedeutet dies, daß der mit den assoziierten Feldern 222 und 223 zusammenhängende Bereich nicht benutzt, das heißt "frei" ist. Das Größenfeld 222 und das Anfangsadressfeld 223 enthalten die Größe und Anfangsadresse des freien Bereichs.
  • Die gespeicherte Adresse von jedem Bereich in Speicherteil 100b und die letzte Adresse des Bereichs umfassen ein freies Markierungsflag 224 und ein Größenflag 225. Wenn das freie Markierungsflag 224 auf "1" steht, dann bedeutet dies, daß sein Bereich nicht benutzt ist; das Größenflag 225 hält den gleichen Inhalt wie das Größenfeld der Verteilertabelle 220.
  • Zu einem von der Verarbeitungsvorrichtung 103 zur Verteilervorrichtung 100a geschickten Bereichsanforderung-Token SRQ 203 gehören die beiden Parameter Zr, die Größe des erforderlichen Bereichs und Ra. Es folgt nun eine nähere Beschreibung der Funktionsweise dieses Systems:
  • (1)
  • Unter Bezugnahme auf Fig. 2a überprüft der Verteilerteil 100a beim Eintreffen des Bereichsanforderung-Tokens 203 (SRQ) die Verteilertabelle 220 und sucht diese nach einer Adresse ab, die einen Wert, der in seiner Größe dem Wert für den Parameter Zr des Bereichsanforderung-Tokens SRQ 203 entspricht, speichert. Falls eine derartige Adresse gefunden wird, sind der Parameter Ra der Bereichsanforderung und die Anfangsadresse des zusammenhängenden Bereichs assoziiert. Wie die Fig. 2b zeigt, kann beispielsweise die mit dem Bereich N zusammenhängende Adresse lokalisiert werden, in welchem Falle ein Zeiger-Token (PNT) 204 erzeugt wird.
  • Gleichzeitig wird in das gültige Markierungsflag der entsprechenden Adresse in der Verteilertabelle 220 eine "0" eingetragen. Die Eintragung "0" in das gültige Markierungsflag 221 für den Bereich N zeigt an, daß der Bereich N nun benutzt ist.
  • Kann nicht genug Bereich gefunden werden, um die Bereichsanforderungen des Verteilerteils 100a zu erfüllen, kommt es zu einem Überlauf, welcher ein typisches Steuersignal aufweist, und es erfolgt die Meldung an die Verarbeitungsvorrichtung 103, daß der Programmablauf nicht weiter fortschreiten kann. Da dies ohne direkten Bezug zur vorliegenden Erfindung ist, soll es hier nicht näher besprochen werden.
  • Wenn ein Bereich (beispielsweise M) in der Speichervorrichtung 100b bisher benutzt wurde, aber nicht mehr benutzt wird, ermittelt die Speichervorrichtung 100b diesen Umstand.
  • Falls der Bereich neben dem Bereich M noch frei ist, dann werden der besagte Bereich neben M und M als ein einzelner kombinierter Bereich angesehen und als solcher in der Tabelle 220 aufgezeichnet. Falls Bereich M keinen benachbarten freien Bereich hat, wird M allein in der Tabelle 220 aufgezeichnet. In Fig. 2b werden die Vorgänge dargestellt, die bei Beendigung der Nutzung von Bereich M eintreten (d.h. wenn der Bereich M frei geworden ist).
  • (2)
  • Der Speicherteil 100b untersucht das freie Markierungsflag von Bereich M benachbarten Adressen, nämlich Adresse (SM - 1) und Adresse (SM + ZM + 1). (SM + ZM + 1 = SN). Da das gültige Markierungsflag der Adresse SN eine "0" ist, geschieht in Bezug auf den benutzten Bereich N gar nichts. Da das gültige Markierungsflag der Adresse SN - 1 eine "1" ist, ist bekannt, daß der Bereich L frei ist. Die Anfangsadresse SL des Bereichs L wird aus dem Größenfeld (SL = SM - ZL) errechnet. Die Anfangsadresse SL des aus dem Zusammenfügen von Bereich L und Bereich H gebildeten Bereichs sowie dessen Größe (ZL + ZM) werden errechnet.
  • (3)
  • Der Verteilerteil 100a und die Verteilertabelle 220 werden überprüft und die den Wert SL im Anfangsadressfeld haltende Adresse herausgesucht, und der Wert ZL + ZM wird - unter Bezugnahme auf Fig. 2c - ins Größenfeld dieser Adresse eingetragen.
  • Wenn keine freien Bereiche durch das Wirken des Speicherteils 100b (wie in (2) oben erläutert) zusammengefügt wurden, ist die die Anfangsadresse (SM) haltende Adresse des zu registrierenden Bereichs nicht in der Verteilertabelle 200 vorhanden. Dementsprechend werden die Anfangsadresse SM und die Größe ZM in eine Adresse eingetragen, in der das gültige Markierungsflag "0" ist, und das gültige Markierungsflag ändert sich zu "1".
  • Wenn ein Speicherblock nicht mehr benutzt wird, ist es im oben aufgeführten System nicht möglich, die Verteilertabelle direkt zu unterrichten und dann die Anfangsadresse des Bereichs und die letzte Adresse gleichzeitig neu zu schreiben. Dies ist insofern von Nachteil, als die Token zu langsam verarbeitet werden. Weiterhin entstehen bei Durchführung der oben erwähnten beiden Vorgänge gemäß der oben beschriebenen Vorgehensweise logische Widersprüchlichkeiten. Unter Bezugnahme auf Fig. 3 und Fig. 4a bis 4h wird dieses Problem nun erläutert.
  • In der Fig. 3 ist ein System gezeigt, worin der Verteilerteil 100a und der Speicherteil 100b getrennt sind, und die Übertragung zwischen ihnen wird gänzlich mittels Token ausgeführt. Mit dem Wort "getrennt" ist im folgenden das Kommunizieren rein durch die Verschickung von Token gemeint.
  • Die Tokenkanäle 306 und 307 verbinden in der Fig. 3 den Verteilerteil 100a und den Speicherteil 100b. Die Kanäle tragen ein Speicherbereichsanforderung-Token (RSV) 308 und ein Freieplatz-Token (LIB) 309. Das Speicherbereichsanforderung- Token ergibt sich aus der Bemühung des Verteilerteils 100a, freien Bereich in benutzten Bereich zu verwandeln, und das Freieplatz-Token (LIB) 309 ergibt sich aus dem Verfügbarwerden von freiem Bereich, was in der Verteilertabelle aufgezeichnet werden muß. Die Probleme dieses Systems werden unter Bezugnahme auf die Fig. 4a bis 4h erläutert. Fig. 4a zeigt die gleiche Art von Situation wie Fig. 2a, und ein Speicherbereichsanforderung- Token (SRQ) 303 wird gerade von der Verarbeitungsvorrichtung 103 geschickt. Im Speicher sind die Bereiche L und N frei, und Bereich M wird benutzt. Der Vorgang wird im Anschluß erläutert:
  • (1)
  • Beim Eintreffen eines Speicherbereichsanforderung-Tokens SRQ (303) prüft der Verteilerteil 100a nach, ob zur Befriedigung der Anforderung noch ausreichend freier Bereich vorhanden ist. Nimmt man an, daß der Bereich N (den angeforderten Bereich) Zr unterbringen kann, wird Bereich N in der Verteilertabelle nachgeschlagen. Der Verteilerteil 100a liest die Vorschubadresse SN und -größe ZN aus der Verteilertabelle ab, fügt diesen den Parameter Ra des Speicherbereichsanforderung-Tokens hinzu, und schickt - unter Bezugnahme auf Fig. 4b - den Befund als ein Zeiger-Token 404 zur Verarbeitungsvorrichtung 103. Gleichzeitig erfolgt die Verschickung eines SN und ZN als Parameter umfassenden Bereichsreservier-Tokens (RSV) 408 zum Speicherteil 100b. Dann wird das gültige Markierungsflag der dem Bereich N entsprechenden Adresse in der Verteilertabelle zu "0" geändert.
  • (2)
  • Beim Empfang des Bereichsreservier-Tokens 408 (RSV) im Speicherteil 100b wird in die freien Markierungsflags der ersten und der letzten Adresse des Bereichs N eine "0" eingetragen und dies zeigt an, daß der Bereich N benutzt ist. Die Adressen SN sowie (SN + ZN - 1) des jeweils ersten bzw. letzten Wortes werden aus den Parametern des Bereichsreservier-Tokens RSV 408 errechnet. Die Resultate verhalten sich so, wie in Fig. 4c gezeigt.
  • Der Speicherteil 100b ermittelt den Abschluß der Nutzung eines Speicherbereichs und ändert das gültige Markierungsflag des Bereichs zu "1". Auch die Verteilertabelle muß aktualisiert werden. In Fig. 4d ist der Fall dargestellt, in dem der Bereich M nicht mehr benutzt wird.
  • (3)
  • Bei Ermittlung, daß der Bereich M nicht mehr benutzt wird, trägt der Speicherteil 100b eine "1" in die gültigen Markierungsflags der ersten und der letzten Adresse des Bereichs M ein. Um zu bestimmen, ob die Nachbarbereiche gegebenenfalls frei sind, liest er als nächstes die M benachbarten Adressen aus, nämlich (SM + 1) und (SM + ZM). Folglich wird bekannt, daß der Bereich L frei ist. Daraus werden die Anfangsadresse und Größe des durch Zusammenlegung von L und M gebildeten Bereichs und die Parameter (SL und ZL + ZM in Fig. 4d) in Gestalt eines Freieplatz-Tokens (LIB) 409 zum Verteilerteil 100a geschickt.
  • Unter Bezugnahme auf Fig. 4d sei die Situation betrachtet, worin an dieser Stelle ein neues Bereichsanforderung-Token 410 von der Verarbeitungsvorrichtung 103 eingetroffen ist.
  • Falls das Freieplatz-Token vor dem Bereichsanforderung- Token eintrifft, gilt:-
  • (3')
  • Beim Empfang eines Freieplatz-Tokens 409 im Verteilerteil 100a löst dieser seinen Adreßparameter SL heraus und sucht nach der Adresse in der Verteilertabelle, welche den Parameter SL als eine Anfangsadresse hält. Unter Bezugnahme auf Fig. 4d folgt daraus, daß die Adresse 430 in der Verteilertabelle lokalisiert und eine neue Bereichsgröße (ZL + ZM) in sie eingetragen wird. Die sich ergebende Verteilertabelle verhält sich so, wie in Fig. 4e gezeigt ist.
  • Der Abschluß des obigen Freieplatz-Vorgangs erfolgt ohne Widersprüchlichkeiten, falls jedoch in derselben Situation wie der in Fig. 4d dargestellten das Bereichsanforderung-Token 410 vor dem Freieplatz-Token 409 eintrifft, dann treten Widersprüchlichkeiten auf. Dies wird wie folgt erläutert:-
  • (4)
  • Beim Eintreffen des Bereichsanforderung-Tokens 410 sucht der Verteilerteil 100a freien Bereich und lokalisiert beispielsweise Bereich L. Unter Bezugnahme auf Fig. 4f werden folglich ein Zeiger-Token 411 und ein Bereichsanforderung-Token 412 erzeugt und gleichzeitig eine "0" in das gültige Markierungsflag der entsprechenden Adresse 430 eingetragen.
  • (5)
  • Beim anschließenden Erreichen des Verteilerteils 100a sucht das Freieplatz-Token 409 in der Verteilertabelle eine Adresse mit der Anfangsadresse SL. Es wird keine derartige Adresse gefunden, da das gültige Markierungsflag der Adresse 430 auf "0" steht und deshalb werden - wie die Fig. 4g zeigt - die Anfangsadresse SL und Größe (ZL + ZM) als ein neuer Bereich in die Tabelle eingetragen. Ein Bereichsanforderung-Token 412 (in Fig. 4f gezeigt) trifft am Speicherteil 100b ein, und der Speicherteil 100b trägt folglich "0" in das gültige Markierungsflag des mit der Adresse SL beginnenden Bereichs ein.
  • Die Gestalt von Token RSV 408 der Fig. 4b, 4d und 4f und das Token LlB 409 sind in Fig. 4h gezeigt. In den gleichen Abbildungen stehen 491 bis 494 entsprechend für 451 bis 454 der Fig. 1b.
  • Unter Bezugnahme auf Fig. 4g zeigt die Adresse 430 an, daß der Bereich mit der Anfangsadresse SL und Größe (ZL + ZM) frei ist, selbst wenn jener Bereich benutzt ist, und der Inhalt des Verteilerteils und des Speicherteils stimmen deshalb nicht überein. Die Wurzel dieses Problems liegt in der Existenz eines Zeitraums zwischen der Zeit, zu welcher der Bereich M nicht mehr benutzt und durch den Speicherteil 100b benachbarte Bereiche zusammengefügt sind, und der Zeit, zu welcher die sich daraus ergebenden Resultate in die Verteilertabelle eingetragen sind, und der erfolgten Einleitung eines Bereichsanforderung-Vorgangs während dieses Zeitraums. Es muß notwendigerweise eine spezielle Signalleitung zwischen dem Speicherteil 100b und dem Verteilerteil 100a errichtet werden, damit derartiges vermieden und die Ausführung einer Bereichsanforderung in der oben erwahnten Zeit verhütet wird. Beim Freiwerden von Speicherbereich muß unbedingt bestimmt werden, ob es gegebenenfalls eine entsprechende Speicheradresse in der Verteilertabelle gibt, und das braucht seine Zeit.
  • Falls mehrere Verteilerteile 100a, 100a' bei dem Versuch einer Lastverteilung des Verteilervorgangs parallel verarbeitet werden, muß - unter Bezugnahme auf Fig. 5 - notwendigerweise die gesamte Verteilertabelle durchsucht werden und die Steuerung ist sehr kompliziert.
  • Es ist eine Aufgabe der vorliegenden Erfindung, die oben aufgeführten Nachteile zu umgehen oder zu mildern.
  • Die vorliegende Erfindung liefert ein Verfahren zur parallelen Zuordnung von Speicherbereichen, bei welchem ein Verteilerteil einschließlich einer Serie von Zuordnern die Zuordnung von Speicherbereichen in einem Speicherteil regelt, worin jeder zur Nutzung verfügbare Speicherbereich mit einem jeweiligen Zuordner assoziiert ist und eine Kennung für den jeweiligen Zuordner speichert, Daten, die nicht benutzte Zuordner identifizieren, gespeichert werden, eine Liste von mit zur Nutzung verfügbaren Bereichen assoziierten Zuordnern gespeichert wird, eine Überprüfung jedesmal erfolgt, wenn ein Speicherbereich nicht mehr benutzt wird, um die Zuordnerkennung irgendeines, zur Nutzung verfügbaren und mit dem nicht mehr benutzten Speicherbereich kombinierbaren Bereichs zu bestimmen, für einen nicht mehr benutzten Bereich Freieplatzdaten erzeugt werden, wobei die Freieplatzdaten eine erste Kennung, welche die Kennung eines aus den nicht benutzten Zuordnern ausgewählten Zuordners ist, und eine zweite Kennung enthalten, welche die Kennung des Zuordners ist, der mit irgendeinem mit dem nicht mehr benutzten Bereich kombinierbaren Bereich in Zusammenhang steht, der Verteilerteil die zweite Kennung durchsieht und in der besagten Liste nach dem mit der zweiten Kennung assoziierten Zuordner sucht und, falls die Liste den assoziierten Zuordner nicht enthält, den mit der ersten Kennung assoziierten Zuordner in die Liste mit passenden Bereichskennungsdaten einträgt, um anzuzeigen, daß der bisher benutzte Bereich nun zur Nutzung verfügbar ist, falls aber die Liste den assoziierten Zuordner enthält, Bereichskombinierungsdaten erzeugt, was erstens dazu führt, daß die Bereiche kombiniert werden, und zweitens dazu, daß der mit der ersten Kennung assoziierte Zuordner in die Liste mit zum kombinierten Bereich passenden Bereichskennungsdaten eingetragen wird.
  • Die vorliegende Erfindung liefert ferner eine Vorrichtung zur parallelen Zuordnung von Speicherbereichen mit einem Verteilerteil einschließlich einer Serie von Zuordnern und einem Speicherteil, in welchem die Zuordnung von Speicherbereichen durch den Verteilerteil geregelt ist, wobei die Vorrichtung folgendes umfaßt: Mittel zur Speicherung einer jeweiligen Zuordnerkennung in jedem zur Nutzung verfügbaren Speicherbereich, Mittel zur Speicherung von Daten, die nicht benutzte Zuordner identifizieren, Mittel zur Speicherung einer Liste von mit zur Nutzung verfügbaren Bereichen assoziierten Zuordnern, Mittel zur Ermittlung, wann ein Speicherbereich nicht mehr benutzt ist, Mittel zur Bestimmung der Zuordnerkennung irgendeines, zur Nutzung verfügbaren und mit einem ermittelten, nicht mehr benutzten Speicherbereich kombinierbaren Bereichs, Mittel zur Erzeugung von mit einem ermittelten, nicht mehr benutzten Speicherbereich in Zusammenhang stehenden Freieplatzdaten, wobei die Freieplatzdaten eine erste Kennung, welche die Kennung eines aus den nicht benutzten Zuordnern ausgewählten Zuordners ist, und eine zweite Kennung umfassen, welche die Kennung des Zuordners ist, der mit irgendeinem, mit dem nicht mehr benutzten Bereich kombinierbaren Bereich in Zusammenhang steht, Mittel zum Durchsuchen der besagten gespeicherten Liste nach der zweiten Kennung, Mittel zum Eintragen des mit der ersten Kennung assoziierten Zuordners in die Liste mit passenden Bereichskennungsdaten, falls die zweite Kennung nicht in der durchsuchten Liste gefunden wird, Mittel zur Erzeugung von Bereichskombinierungsdaten, falls die zweite Kennung in der durchsuchten Liste gefunden wird, Mittel, die auf die Bereichskombinierungsdaten ansprechen, um erstens die Bereiche, die mit den ersten und zweiten Kennungen in Zusammenhang stehen, zu kombinieren und um zweitens den mit der ersten Kennung assoziierten Zuordner in die besagte Liste mit zur kombinierten Liste passenden Bereichskennungsdaten einzutragen.
  • Die vorliegende Erfindung wird nachfolgend beispielhaft anhand der beigefügten Zeichnungen beschrieben. Es zeigen:
  • Fig. 1a ein Blockdiagramm einer Verteilerverarbeitung- Vorrichtung gemäß dem Stand der Technik;
  • Fig. 1b ein schematisches Diagramm der Gestalt der in der Vorrichtung der Fig. 1a eingesetzten Token;
  • die Fig. 2a bis 2c, Fig. 3, die Fig. 4a bis 4h und Fig. 5 schematische Diagramme zur Darstellung eines Verteilervorgangs gemäß dem Stand der Technik;
  • Fig. 6 ein schematisches Diagramm zur Darstellung einer Speicherverteiler-Vorrichtung gemäß der vorliegenden Erfindung;
  • Fig. 7 ein schematisches Diagramm von Komponenten der Vorrichtung der Fig. 6;
  • die Fig. 8a bis 8h eine Darstellung zum Betrieb der Vorrichtung der Fig. 6 und Fig. 7; und
  • die Fig. 9a bis 9e eine Darstellung einer weiteren erfindungsgemäßen Ausführungsform.
  • Unter Bezugnahme auf Fig. 6 steht das Zahlzeichen 1 für eine der Verarbeitungsvorrichtung 103 in Fig. 1a entsprechende Verarbeitungsvorrichtung. Die Zahlzeichen 2 und 3 bezeichnen jeweils einen Verteilerteil bzw. einen Speicherteil, die jeweils dem Verteilerteil 100a bzw. dem Speicherteil 100b in Fig. 1a entsprechen. Die Zahlzeichen 4 und 5 bezeichnen Übertragungsvorrichtungen, die Token zwischen der Verarbeitungsvorrichtung 1 und dem Verteilerteil 2 und dem Speicherteil 3 übertragen, und jeweils den Kanälen 101 bzw. 102 in Fig. 1a entsprechen.
  • Im Verteilerteil 2 speichert ein Puffer 2a vorübergehend vom Übertragungsteil 4 geschickte Token. Zahlzeichen 2b bezeichnet einen Steuerteil, der die eingetragene Tokenart bestimmt und je nach Art entweder die Parameter des Tokens in Speicher 2c speichert oder den Inhalt des Speichers 2c ausliest. Zahlzeichen 2d bezeichnet einen Puffer, dessen Zweck darin besteht, Token vom Steuerteil 2b zur Übertragungsvorrichtung 5 zu übertragen.
  • Im Speicherteil 3 bezeichnet Zahlzeichen 3a einen Puffer, der vorübergehend von der Übertragungsvorrichtung 4 geschickte Token speichert. Zahlzeichen 3b bezeichnet einen Steuerteil, der den eingetragenen Tokentypus bestimmt und je nach Typus entweder die Parameter des Tokens in einem Speicher 3c speichert oder den Inhalt des Speichers 3c ausliest. Zahlzeichen 3d bezeichnet einen Puffer, dessen Zweck darin besteht, vom Steuerteil 3d zur Übertragungsvorrichtung 5 geschickte Token zu übertragen.
  • Unter Bezugnahme auf Fig. 7 wird der Aufbau der Speicher 2c und 3c jeweils im Verteilerteil 2 bzw. dem Speicherteil 3 erläutert. In der Fig. 7 bezeichnet das Zahlzeichen 30 einen Speicherbereich im Speicher 2c des Verteilerteils 2, und Zahlzeichen 31 bezeichnet den Speicherbereich im Speicher 3c des Speicherteils 3. Zahlzeichen 32, 33, 34 und 35 stehen für die Kanäle, über welche Token verschickt und empfangen werden, und entsprechen den Übertragungsvorrichtungen 4 und 5 in Fig. 6. Zahlzeichen 603 bezeichnet ein Bereichsanforderung-Token, Zahlzeichen 604 bezeichnet ein Zeiger-Token, Zahlzeichen 608 bezeichnet ein Bereichsreservier-Token, Zahlzeichen 609 bezeichnet ein Freieplatz-Token, und diese entsprechen jeweils den Token 303, 304, 308 und 309 aus Fig. 3. Zahlzeichen 613 bezeichnet ein Bereichskombinierung-Token (CMB), Zahlzeichen 614 bezeichnet ein Freizuordner-Token (FDA). Zahlzeichen 630 bis 632 bezeichnen Zuordner, und einer der Zuordner entspricht dem freien Bereich im Speicherteil 3 der Fig. 6. Die Zuordner 630 bis 632 bilden eine Doppelkettenserie, die aus den vier Worten F-Link, B-Link, Größe und Anfangsadresse besteht. F-Link und B- Link zeigen jeweils den nächsten Zuordner in der Serie bzw. den vorherigen Zuordner in der Serie. Die Größe und Anfangsadresse stehen mit den entsprechenden freien Bereichen in Zusammenhang.
  • Zahlzeichen 636 bezeichnet das gültige Markierungsflag, welches den Zeitpunkt einer Entsprechung des Zuordners mit einem freien Bereich anzeigt. Die erste und die letzte Adresse des freien Bereichs innerhalb des Speichers 31 enthält die zusammenhängenden Verteilerinformationen. Die erste oder Anfangsadresse umfaßt ein gültiges Markierungsflag 633, einen Zuordnerzeiger 634, und ein Größenfeld 635, aber nur das letzte Wort weist das gültige Markierungsflag und das Größenfeld auf. Das gültige Markierungsflag 633 ist "1", wenn der Bereich frei ist, und "0", wenn der Bereich benutzt ist. Der Zuordnerzeiger 634 hält die Adresse innerhalb des Verteilerteils 2 des Zuordners, der mit dem Bereich in Zusammenhang steht. In einem benutzten Bereich gibt es nur das gültige Markierungsflag 633 und das Größenfeld 635 der Beginnadresse und der Letztadresse.
  • Es folgt die Erläuterung eines Beispiels zum Verfahren der Speicherbereichsverteilung im Einklang mit der vorliegenden Erfindung. Die Fig. 6 und 7 zeigen nur ein Beispiel eines Detailaufbaus gemäß der vorliegenden Erfindung. Beispielsweise beschränkt sich die vorliegende Erfindung nicht unbedingt auf die Puffer 2a und 2d sowie den Steuerteil 2b im Verteilerteil. Der Grundbetrieb dieses Beispiels der vorliegenden Erfindung wird am ehesten aus den Fig. 8a bis 8f verständlich.
  • (a) Beim Eintreffen eines Bereichsanforderung-Tokens 603 tastet der Verteilerteil 2 die Zuordnerserie ab und sucht einen freien Bereich passender Größe. Auf die Entdeckung beispielsweise von Bereich N hin liest der Verteilerteil 2 dessen Anfangsadresse SN und Größe ZN von innerhalb des entsprechenden Zuordners A2 aus, gibt den Parameter Ra des Bereichsanforderung-Tokens hinzu und schickt dies unter Bezugnahme auf Fig. 8b als ein Zeiger-Token 604 zur Verarbeitungsvorrichtung 103. Gleichzeitig schickt er ein Bereichsreservier-Token 608 zum Speicherteil 3. Der dem Bereich N entsprechende Zuordner A2 wird aus einer Serie von Zuordnern genommen und wird zum freien Zuordner.
  • (b) Beim Empfang des Bereichsreservier-Tokens 608 im Speicherteil 3 wird "0" in das freie Markierungsflag der ersten und der letzten Adresse des Bereichs eingetragen, womit angezeigt ist, daß dieser Bereich nun benutzt ist. Die erste Adresse SN und die letzte Adresse (SN + ZN - 1) werden aus den Parametern des Bereichsreservier-Tokens 608 errechnet, und folglich verhält sich der Speicherbereich wie in Fig. 8c.
  • (c) Wenn der Verteilerteil 2 seit Freiwerden des Zuordners A2 ein Bereichsreservier-Token 608 ausgeschickt hat, wird - wie die Fig. 8c zeigt - seine Adresse als ein Freizuordner- Adressen-Token (FDA) 614 zum Speicherteil 3 geschickt.
  • (d) Beim Empfang von (FDA) Token 614 im Speicherteil 4 speichert dieser die Freizuordner-Adresse. Wenn ein Speicherbereich nicht mehr benutzt wird, ermittelt der Speicherteil 3 diesen Umstand und leitet einen Vorgang ein, bei dem der Inhalt der Zuordnerserie innerhalb des Verteilerteils 2 und die angezeigten Inhalte des Speicherbereichs in Übereinstimmung gebracht werden. Eine Beschreibung dieses Vorgangs schließt sich unten an.
  • Wird beispielsweise Bereich M nicht mehr benutzt, hat dies - unter Bezugnahme auf Fig. 8c - die Bedeutung, daß Bereich M nun ein freier Bereich ist.
  • (e) Nach Ermittlung, daß der Bereich M nicht mehr benutzt wird, trägt Speicher 3 eine "1" in das freie Markierungsflag der ersten und der letzten Adresse dieses Bereichs ein. Um zu bestimmen, ob gegebenenfalls die Nachbarbereiche von Bereich M frei sind, liest er dann die Adresse (SM - 1) und die Adresse (SM + ZM), die gleich SN ist, aus, um ihre freien Markierungsflags zu bestimmen. Es folgt daraufhin in der in Fig. 8d dargestellten Situation die Entdeckung, daß der Bereich L frei ist.
  • (f) Zur Erfassung von M als einen freien Bereich erzeugt der Speicherteil 3 dementsprechend ein Freieplatz-Token (LIB) 609, wie die Fig. 8d zeigt. Dieses LIB Token weist vier Parameter auf, nämlich:
  • (a) die Adresse A1 des dem freien Bereich L neben dem Bereich M entsprechenden Zuordners;
  • (b) die Adresse des Bereichs M;
  • (c) die Größe des Bereichs M;
  • (d) die Adresse des dem Bereich M entsprechenden Zuordners Ax.
  • In der Freizuordner-Adresse (beispielsweise A2), die sich im Speicherteil 3 ansammelt, gibt es vier Parameter. Jeder einzelne dieser vier Parameter kann von Bedeutung sein. Die Fig. 8d zeigt genau wie in der Erläuterung der Probleme des in den Fig. 4a bis 4h gezeigten Beispiels den Fall, bei dem ein neues Bereichsanforderung-Token (SQR) 610 von der Verarbeitungsvorrichtung 103 eingetroffen ist. Es gilt, falls Token LIB 609 eingetroffen ist:
  • (g) Bei Empfang des Freieplatz-Tokens 609 empfängt der Verteilerteil 2 aus diesem Token die Adresse A1 des Zuordners, der dem dem Bereich M benachbarten Bereich L entspricht. Der Verteilerteil 2 untersucht das gültige Markierungsflag der Adresse A1. In der Fig. 8d handelt es sich bei diesem Markierungsflag um "1" und der Verteilerteil erkennt somit, daß Bereich L frei ist und die Bereiche L und M zusammenfügbar sind. Wie die Fig. 8e zeigt, erzeugt er ein Bereichskombinierung-Token (CMB) 613. Das CMB Token hält die Anfangsadressen der beiden Bereiche SL und SM, die zusammengefügt werden sollen. Anschließend wird "0" in das gültige Markierungsflag des Zuordners A1 eingetragen.
  • (h) Nach Empfang des Bereichskombinierung-Tokens 613 im Speicher 3 errechnet dieser die Anfangsadresse sowie Größe des sich beim Zusammenfügen der beiden Bereiche L und M bildenden Bereichs, und er trägt - wie die Fig. 8f zeigt - die Größe (ZL plus ZM) in die Anfangsadresse SL ein. Wenn weiterhin der kombinierte Bereich L + M nicht mehr benutzt ist, ermittelt der Speicher 3 diesen Umstand und wiederholt dann den oben beschriebenen Vorgang, beginnend bei Abschnitt (e). Wo kein freier Nachbarbereich vorhanden ist, dort wird - unter Bezugnahme auf Fig. 8f - ein "null"- artiges LIB Token 615 erzeugt und zeigt an, daß keine einem freien Nachbarbereich entsprechende Zuordner-Adresse vorhanden ist.
  • (i) Beim Empfang des Freieplatz-Tokens 615 der Fig. 8f im Verteilerteil 2 steht das gültige Markierungsflag der Zuordner-Adresse Ax auf "0", die Anfangsadresse SL und die Größe (ZL + ZM) wird somit in einen Freizuordner Ax eingetragen und dieser Zuordner wird in die Zuordnerserie eingeführt.
  • Bei angenommenem Abschluß der obigen Serie von Vorgängen soll nun die beim Eintreffen eines Bereichsanforderung- Tokens 610 bestehende Situation als Umstand der Fig. 8d erläutert werden.
  • (j) Beim Eintreffen eines Bereichsanforderung-Tokens 610 tastet der Verteilerteil 2 die Zuordnerserie ab und reserviert beispielsweise Bereich L. Dementsprechend werden wie in Fig. 3g ein Zeiger-Token 611 und ein Bereichsreservier- Token 612 erzeugt. Gleichzeitig wird in das gültige Markierungsflag des dem Bereich L entsprechenden Zuordners A1 eine "0" eingetragen.
  • (k) Beim Empfang des Freieplatz-Tokens 609 im Verteilerteil 2 nimmt dieser den Parameter A1 aus dem Token und überprüft das gültige Markierungsflag der Adresse A1. Dieses Markierungsflag ist zur "0" geworden und der Verteilerteil 2 erkennt somit, daß er die Bereiche nicht zusammenfügen kann. Damit werden die Anfangsadresse SM und die Größe ZM des Bereichs M in die Freizuordner-Adresse Ax, die im LIB Token 609 gehalten ist, eingetragen. Jedes der Markierungsflags wird zu "1" gemacht, und der Zuordner Ax wird in die Zuordnerserie eingetragen. Das Resultat verhält sich so, wie in Fig. 8g gezeigt.
  • Die Gestalt jedes der Token RSV 608, LIB 609, CMB 613 und FDA 614, die sich in den Fig. 8b, c, d, und e befinden, wird in Fig. 8h gezeigt. In diesen Abbildungen entsprechen die Zahlzeichen 691 bis 694 jeweils den Feldern 151 bis 154 in Fig. 1b.
  • Aus Fig. 8h wird offensichtlich, daß das LIB Token 609 vier Parameter aufweist und sich vom LIB Token in Fig. 4h unterscheidet.
  • Obwohl der Verteilerteil 2 das Freieplatz-Token (LIB) 609 empfangen hat, ist tatsächlich eine Bereichskombinierung gelegentlich nicht durchführbar, und zwar wenn die neuen Zuordner wie folgt in eine Serie gewechselt werden:-
  • (a) wie in (k) oben erwahnt, befindet sich der durch das LIB Token 609 angezeigte Zuordner nicht in einer Zuordnerserie;
  • (b) wie in (i) oben hält das LIB Token 609 gerade als Zuordnerkennung eine "0".
  • Nur wenn bestätigt worden ist, daß die Bereiche sowohl im Speicherteil als auch im Verteilerteil 2 kombinierbar sind, werden Bereiche kombiniert. Dies bedeutet, daß sogar bei Trennung des Speicherteils und des Verteilerteils 2 die richtige Zuweisung und das richtige Zusammenfügen freier Bereiche möglich sind. Weiterhin muß der Verteilerteil 2 nicht unbedingt die Zuordnerserie einhalten, weil das LIB Token 609 als einen Parameter eine Zuordner-Adresse hält, und es ist mithin rasch bestimmbar, ob die Bereiche gegebenenfalls zusammenfügbar sind. Sogar bei Systemen mit mehreren Verteilerteilen stellt die vorliegende Erfindung eine Verbesserung dar.
  • Die Fig. 9a bis 9e zeigen ein Beispiel eines Systems mit mehreren Verteilerteilen 2a und 2b.
  • Unter Bezugnahme auf Fig. 9a empfangen die Verteilerteile 2a und 2b unabhängig von der Verarbeitungsvorrichtung 1 die Bereichsanforderung-Token 610a und 610b, und bringen - wie in Fig. 9b gezeigt - unabhängig die Zeiger-Token 611a und 611b sowie die Bereichsanforderung-Token 612a und 612b hervor. Dies kann im Betrieb zu Widersprüchlichkeiten führen und es ist klar, daß kein Konflikt aufkommen darf.
  • Es folgt als nächstes eine Erläuterung dazu, wie sich ein Konflikt aus der Kombinierung von Bereichen in der Situation, bei der die Nutzung eines Bereichs aufgehört hat, ergeben kann.
  • Jeder freie Bereich läßt sich in verschiedenen Verteilerteilen eintragen. Die Fig. 9c bis 9e sollen ein Beispiel der Situation darstellen, bei der ein Bereich B nicht mehr benutzt wird.
  • Unter Bezugnahme auf Fig. 9d sei der dem Bereich B benachbarte Bereich C betrachtet, und zwar wird zur Zeit, da der Speicherteil 3 ermittelt, daß der Bereich B nicht mehr benutzt ist, ein Freieplatz-Token 609b zu einem Verteilerteil 2b, der einen dem Bereich C entsprechenden Zuordner hält, geschickt. In diesem Fall sind auch Informationen zur Unterscheidung des Verteilerteils 2 im Zuordner-Zeiger im Anfang des freien Bereichs enthalten. Daraus läßt sich der richtige Bestimmungsort für das freisetzende Freieplatz-Token 609b festlegen und es müssen nicht mehr die Informationen in der Gesamtheit des Speichers 3 - wie noch in den vorherigen Beispielen notwendig - untersucht werden.
  • Der Verteilerteil 2b führt seinen Betrieb ganz genau wie in der oben unter (i) beschriebenen Weise durch und schickt das Bereichskombinierung-Token CMB an den Speicherteil 3. Der Speicherteil 2 führt die Kombinierung genau wie in der oben unter (j) beschriebenen Weise durch. Der Situationsverlauf, worin ein LIB Token 615 einen Zuordner als nicht im Verteilerteil 2 befindlich anzeigt, erfolgt entsprechend der Beschreibung in (k) oben, und es treten keine Widersprüchlichkeiten auf.
  • Weiterhin berücksichtigt die oben erwähnte Erklärung die Kombinierung eines nicht mehr benutzten Bereichs und eines benachbarten freien Bereichs. Man braucht allerdings nicht lediglich die Kombinierung von "Nachbarbereichen" in Betracht ziehen. Falls es beispielsweise eine Art von Beziehung gibt, bei der die Durchführung des gleichen Vorgangs möglich ist, wobei sich der Bereich aus der Kombination zweier getrennter Bereiche ergibt, dann ist offensichtlich, daß das Verfahren der vorliegenden Erfindung anwendbar ist. Eine Art von Trenn- und Kombinationsalgorithmus ist denkbar. In K.G. Knowlton "A Fast Storage Allocator" [Ein schneller Speicherungszuordner] (CACM Band 8; Nr. 10; Oktober 1965; Seiten 623 bis 625) ist ein Algorithmus beschrieben, der Speicherbereich in 2er Potenzschritten aufteilt und kombiniert.
  • Wie oben erwähnt, werden bei der vorliegenden Erfindung Zuordner eingesetzt, von denen jeder einem freien Bereich in der Speichervorrichtung entspricht, jeder freie Bereich enthält einen Zeiger zum betreffenden Zuordner und jeder Zuordner enthält einen Zeiger zum betreffenden freien Bereich (beispielsweise der Anfangsadresse) und irgendwelche sonstigen gewünschten Informationen in Zusammenhang mit dem freien Bereich, wie beispielsweise seine Größe. Beim Freiwerden eines Speicherbereichs untersucht die Speichervorrichtung, ob gegebenenfalls jener Bereich mit einem anderen freien Bereich kombinierbar ist.

Claims (4)

1. Verfahren zur parallelen Zuordnung von Speicherbereichen, bei welchem ein Verteilerteil einschließlich einer Serie von Zuordnern die Zuordnung von Speicherbereichen in einem Speicherteil regelt, worin jeder zur Nutzung verfügbare Speicherbereich mit einem jeweiligen Zuordner assoziiert ist und eine Kennung für den jeweiligen Zuordner speichert, Daten, die nicht benutzte Zuordner identifizieren, gespeichert werden, eine Liste von mit zur Nutzung verfügbaren Bereichen assoziierten Zuordnern gespeichert wird, eine Überprüfung jedesmal erfolgt, wenn ein Speicherbereich nicht mehr benutzt wird, um die Zuordnerkennung irgendeines, zur Nutzung verfügbaren und mit dem nicht mehr benutzten Speicherbereich kombinierbaren Bereichs zu bestimmen, für einen nicht mehr benutzten Bereich Freieplatzdaten erzeugt werden, wobei die Freieplatzdaten eine erste Kennung, welche die Kennung eines aus den nicht benutzten Zuordnern ausgewählten Zuordners ist, und eine zweite Kennung enthalten, welche die Kennung des Zuordners ist, der mit irgendeinem mit dem nicht mehr benutzten Bereich kombinierbaren Bereich in Zusammenhang steht, der Verteilerteil die zweite Kennung durchsieht und in der besagten Liste nach dem mit der zweiten Kennung assoziierten Zuordner sucht und, falls die Liste den assoziierten Zuordner nicht enthält, den mit der ersten Kennung assoziierten Zuordner in die Liste mit passenden Bereichskennungsdaten einträgt, um anzuzeigen, daß der bisher benutzte Bereich nun zur Nutzung verfügbar ist, falls aber die Liste den assoziierten Zuordner enthält, Bereichskombinierungsdaten erzeugt, was erstens dazu führt, daß die Bereiche kombiniert werden, und zweitens dazu, daß der mit der ersten Kennung assoziierte Zuordner in die Liste mit zum kombinierten Bereich passenden Bereichskennungsdaten eingetragen wird.
2. Verfahren zur parallelen Zuordnung von Speicherbereichen nach Anspruch 1, bei welchem Bereiche durch auf einanderfolgende Adressenserien im Speicherteil definiert sind.
3. Verfahren zur parallelen Zuordnung von Speicherbereichen nach Anspruch 1 oder 2, bei welchem die besagte Liste von Zuordnern dadurch gebildet wird, daß bezüglich jedes Zuordners die Zuordnerkennung, die Größe und Anfangsadresse des zur Nutzung verfügbaren Speicherbereichs, mit welchem der Zuordner in Zusammenhang steht, und die Kennungen der Zuordner, welche dazu benachbarte Stellungen in der besagten Liste belegen, gespeichert werden, wobei die Liste durch Betrachten jedes Zuordners der Reihe nach und durch Folgen der Liste unter Bezugnahme auf die gespeicherten benachbarten Zuordnerdaten durchsucht wird.
4. Vorrichtung zur parallelen Zuordnung von Speicherbereichen mit einem Verteilerteil einschließlich einer Serie von Zuordnern und einem Speicherfeld, in welchem die Zuordnung von Speicherbereichen durch den Verteilerteil geregelt ist, wobei die Vorrichtung folgendes umfaßt: Mittel zur Speicherung einer jeweiligen Zuordnerkennung in jedem zur Nutzung verfügbaren Speicherbereich, Mittel zur Speicherung von Daten, die nicht benutzte Zuordner identifizieren, Mittel zur Speicherung einer Liste von mit zur Nutzung verfügbaren Bereichen assoziierten Zuordnern, Mittel zur Ermittlung, wann ein Speicherbereich nicht mehr benutzt ist, Mittel zur Bestimmung der Zuordnerkennung irgendeines, zur Nutzung verfügbaren und mit einem ermittelten, nicht mehr benutzten Speicherbereich kombinierbaren Bereichs, Mittel zur Erzeugung von mit einem ermittelten, nicht mehr benutzten Speicherbereich in Zusammenhang stehenden Freieplatzdaten, wobei die Freieplatzdaten eine erste Kennung, welche die Kennung eines aus den nicht benutzten Zuordnern ausgewählten Zuordners ist, und eine zweite Kennung umfassen, welche die Kennung des Zuordners ist, der mit irgendeinem, mit dem nicht mehr benutzten Bereich kombinierbaren Bereich in Zusammenhang steht, Mittel zum Durchsuchen der besagten gespeicherten Liste nach der zweiten Kennung, Mittel zum Eintragen des mit der ersten Kennung assoziierten Zuordners in die Liste mit passenden Bereichskennungsdaten, falls die zweite Kennung nicht in der durchsuchten Liste gefunden wird, Mittel zur Erzeugung von Bereichskombinierungsdaten, falls die zweite Kennung in der durchsuchten Liste gefunden wird, Mittel, die auf die Bereichskombinierungsdaten ansprechen, um erstens die Bereiche, die mit den ersten und zweiten Kennungen in Zusammenhang stehen, zu kombinieren und um zweitens den mit der ersten Kennung assoziierten Zuordner in die besagte Liste mit zur kombinierten Liste passenden Bereichskennungsdaten einzutragen.
DE8787304321T 1986-05-29 1987-05-15 Vorrichtung und verfahren zur parallelen verwaltung von freien speicherbereichen. Expired - Fee Related DE3784387T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB868613069A GB8613069D0 (en) 1986-05-29 1986-05-29 Parallel storage allocation

Publications (2)

Publication Number Publication Date
DE3784387D1 DE3784387D1 (de) 1993-04-08
DE3784387T2 true DE3784387T2 (de) 1993-06-09

Family

ID=10598628

Family Applications (1)

Application Number Title Priority Date Filing Date
DE8787304321T Expired - Fee Related DE3784387T2 (de) 1986-05-29 1987-05-15 Vorrichtung und verfahren zur parallelen verwaltung von freien speicherbereichen.

Country Status (5)

Country Link
US (1) US5025367A (de)
EP (1) EP0251461B1 (de)
JP (1) JPS63233448A (de)
DE (1) DE3784387T2 (de)
GB (1) GB8613069D0 (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864497A (en) * 1988-04-13 1989-09-05 Digital Equipment Corporation Method of integrating software application programs using an attributive data model database
US5664177A (en) * 1988-04-13 1997-09-02 Digital Equipment Corporation Data processing system having a data structure with a single, simple primitive
US5247658A (en) * 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5247634A (en) * 1990-03-20 1993-09-21 Hewlett-Packard Company Method of managing memory allocation by association of memory blocks with a tree structure
WO1993003435A1 (en) * 1991-08-08 1993-02-18 Pure Software, Inc. Method and apparatus for identifying memory leaks and tracking pointers in a computer program
US5485613A (en) * 1991-08-27 1996-01-16 At&T Corp. Method for automatic memory reclamation for object-oriented systems with real-time constraints
US5659744A (en) * 1991-10-15 1997-08-19 International Computers Limited Data file store system with means for efficiently managing freeing of data blocks
US6256642B1 (en) * 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
JP3378594B2 (ja) * 1992-09-25 2003-02-17 富士通株式会社 データベース再配置を行う処理装置
US5577246A (en) * 1992-09-25 1996-11-19 Lucent Technologies Inc. Database memory compaction and reclamation method
US5561785A (en) * 1992-10-29 1996-10-01 International Business Machines Corporation System for allocating and returning storage and collecting garbage using subpool of available blocks
US5555405A (en) * 1993-07-06 1996-09-10 Digital Equipment Corporation Method and apparatus for free space management in a forwarding database having forwarding entry sets and multiple free space segment queues
US5493652A (en) * 1994-04-29 1996-02-20 International Business Machines Corporation Management system for a buffer memory having buffers of uniform size in which the buffers are divided into a portion of contiguous unused buffers and a portion of contiguous buffers in which at least some are used
EP0686918A1 (de) * 1994-05-31 1995-12-13 Siemens Nixdorf Informationssysteme AG Verfahren zur Verwaltung von Objekten in Datenverarbeitungsanlagen, insbesondere zur Speicherverwaltung
US5652864A (en) * 1994-09-23 1997-07-29 Ibm Concurrent storage allocations or returns without need to lock free storage chain
EP0706130A1 (de) * 1994-10-07 1996-04-10 International Business Machines Corporation Speicherzuordnungsverfahren
US5604902A (en) * 1995-02-16 1997-02-18 Hewlett-Packard Company Hole plugging garbage collection for a data storage system
US5689707A (en) * 1995-12-04 1997-11-18 Ncr Corporation Method and apparatus for detecting memory leaks using expiration events and dependent pointers to indicate when a memory allocation should be de-allocated
US5940621A (en) * 1996-01-23 1999-08-17 Hewlett-Packard Company Language independent optimal size-based storage allocation
US5819299A (en) * 1996-06-06 1998-10-06 Electric Communities Process for distributed garbage collection
US5933840A (en) * 1997-05-19 1999-08-03 International Business Machines Corporation Garbage collection in log-structured information storage systems using age threshold selection of segments
US6286016B1 (en) * 1998-06-09 2001-09-04 Sun Microsystems, Inc. Incremental heap expansion in a real-time garbage collector
JP3607153B2 (ja) * 2000-02-28 2005-01-05 シャープ株式会社 ファイル管理方法及び装置
US6774100B2 (en) 2000-12-06 2004-08-10 Imaginative Research Associates, Inc. Anhydrous creams, lotions and gels
JP2002278838A (ja) * 2001-03-15 2002-09-27 Sony Corp メモリアクセス制御システム、デバイス管理装置、パーティション管理装置、メモリ搭載デバイス、およびメモリアクセス制御方法、並びにプログラム記憶媒体
JP2002278839A (ja) * 2001-03-15 2002-09-27 Sony Corp データアクセス管理システム、メモリ搭載デバイス、およびデータアクセス管理方法、並びにプログラム記憶媒体
US6877018B2 (en) * 2001-03-15 2005-04-05 Microsoft Corporation System and method for unloading namespace devices
US7664799B2 (en) * 2007-07-30 2010-02-16 Oracle International Corporation In-memory space management for database systems
US7719876B2 (en) 2008-07-31 2010-05-18 Unity Semiconductor Corporation Preservation circuit and methods to maintain values representing data in one or more layers of memory
CN112306415B (zh) * 2020-11-02 2023-04-11 成都佰维存储科技有限公司 Gc流控方法、装置、计算机可读存储介质及电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1548401A (en) * 1975-10-08 1979-07-11 Plessey Co Ltd Data processing memory space allocation and deallocation arrangements
US4638424A (en) * 1984-01-12 1987-01-20 International Business Machines Corporation Managing data storage devices connected to a digital computer
US4757438A (en) * 1984-07-12 1988-07-12 Texas Instruments Incorporated Computer system enabling automatic memory management operations
US4775932A (en) * 1984-07-31 1988-10-04 Texas Instruments Incorporated Computer memory system with parallel garbage collection independent from an associated user processor
GB8529890D0 (en) * 1985-12-04 1986-01-15 Watson P Garbage collection in computer system
US4912629A (en) * 1986-06-26 1990-03-27 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Real-time garbage collection for list processing using restructured cells for increased reference counter size
JPS6336348A (ja) * 1986-07-30 1988-02-17 Toshiba Corp バツフアメモリ管理方法

Also Published As

Publication number Publication date
JPS63233448A (ja) 1988-09-29
DE3784387D1 (de) 1993-04-08
EP0251461A3 (en) 1989-10-18
EP0251461B1 (de) 1993-03-03
EP0251461A2 (de) 1988-01-07
GB8613069D0 (en) 1986-07-02
US5025367A (en) 1991-06-18

Similar Documents

Publication Publication Date Title
DE3784387T2 (de) Vorrichtung und verfahren zur parallelen verwaltung von freien speicherbereichen.
DE3807997C2 (de)
DE3300263C2 (de)
DE69208789T2 (de) Sortierverfahren
DE2055784A1 (de) Datenverarbeitungssystem
DE3416939A1 (de) Verfahren zur steuerung von betriebseinrichtungen
DE3741953A1 (de) Multiprozessorsystem und verfahren zur arbeitslastverteilung bei einem solchen
DE1499182B2 (de) Datenspeichersystem
EP2882145A1 (de) Verfahren und filteranordnung zum speichern von informationen über einen seriellen datenbus eines kommunikationsnetzwerks eingehender nachrichten in einem teilnehmer des netzwerks
DE1774052B1 (de) Rechner
DE2218839A1 (de) Verfahren und einrichtung zur zuteilung von speicheradressen zu datenelementen
DE19538448B4 (de) Datenbankmanagementsystem sowie Datenübertragungsverfahren
DE2558417A1 (de) Datenverarbeitungssystem
EP0523276A1 (de) Verfahren und Schaltungsanordnung zum Einrichten von virtuellen Verbindungen über ein ATM-Verbindungsleitungsbündel
DE69626090T2 (de) System zur Regulierung von Informationsströmen für eine Paketvermittlungsstelle
DE2062164A1 (de) Verfahren zur Erzeugung eines mehr stufigen Index für gespeicherte Daten einheiten
DE3782546T2 (de) Datenpaketverkuerzungsverfahren und -vorrichtung.
DE3784189T2 (de) Vorrichtung und verfahren zur steuerung der loeschung eines speicherbereichs.
DE2419522A1 (de) Verfahren und anordnung zur unterteilung eines oder mehrerer nicht benutzter bereiche eines mit einem rechner verbundenen speichers
EP1357477B1 (de) An einen Bus angeschlossene Einrichtung
EP1241835B1 (de) Empfangseinrichtung für einen CAN-Bus
DE69923041T2 (de) Einrichtung für Datenübertragung, Verfahren und Rechnerprogrammprodukt zur Durchführung eines Datenkommunikationsprotokolls mit einer effizienten Bildung von Datagrammen
EP0035787B1 (de) Hybrid-Assoziativspeicher und dessen Anwendungen, insbesondere zum Sortieren von gespeicherten Daten
DE4000673A1 (de) Verfahren und anordnung zur uebertragung von daten in einem aus mehreren segmenten bestehenden bussystem
DE10218645A1 (de) An einen Bus angeschlossene Einrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee