DE69737709T2 - Verfahren und Vorrichtung für Informationsverarbeitung und Speicherzuordnungsanordnung - Google Patents

Verfahren und Vorrichtung für Informationsverarbeitung und Speicherzuordnungsanordnung Download PDF

Info

Publication number
DE69737709T2
DE69737709T2 DE69737709T DE69737709T DE69737709T2 DE 69737709 T2 DE69737709 T2 DE 69737709T2 DE 69737709 T DE69737709 T DE 69737709T DE 69737709 T DE69737709 T DE 69737709T DE 69737709 T2 DE69737709 T2 DE 69737709T2
Authority
DE
Germany
Prior art keywords
buckets
memory
bucket size
pages
bucket
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69737709T
Other languages
English (en)
Other versions
DE69737709D1 (de
Inventor
Richard Sunnyvale Goldstein
David Cupertino Zittin
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE69737709D1 publication Critical patent/DE69737709D1/de
Publication of DE69737709T2 publication Critical patent/DE69737709T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. GEBIET DER ERFINDUNG
  • Die Erfindung betrifft ein Verfahren und eine Vorrichtung zur Informationsverarbeitung, insbesondere ein Speicherzuordnungssystem.
  • 2. HINTERGRUND DES STANDS DER TECHNIK
  • Nach dem Stand der Technik werden Informationen, die sich auf die Speicherzuordnung beziehen, nicht auf eine Weise gespeichert, die es ermöglicht, dass sie durch Prozesse außerhalb des Zuordners überprüft werden. Die Möglichkeit, diese Informationen zu überprüfen, ist wünschenswert, da ein Verständnis der Gesamtkonfiguration des zugeordneten Speicherplatzes und des freien Speicherplatzes nützlich ist, um die Leistung eines Computersystems zu beurteilen und zu optimieren, insbesondere wenn Anwendungen betroffen sind, die für lange Zeiträume (z. B. länger als fünf Minuten) vorhanden sind. Desktop-Anwendungen sind häufig für Zeiträume vorhanden, die in Monaten gemessen werden. Um zu überprüfen, wie Speicher für bestimmten Code nach dem Stand der Technik zugeordnet wird, ist es notwendig, diesen Code zu modifizieren, bevor er ausgeführt wird. Somit ist der Code, der ausgeführt wird, nicht identisch mit dem Code, für den die Informationen, die sich auf die Speicherzuordnung beziehen, gesucht werden.
  • Techniken nach dem Stand der Technik
  • Computer werden verwendet, um Informationen zu verarbeiten. Computer führen Programme aus, welche die Schritte angeben, die verwendet werden, um die Informationen zu verarbeiten. Ein Computerbetriebssystem steuert die Ausführung der Programme. Einige Computerbetriebssysteme machen es möglich, dass mehrere Programme gleichzeitig ausgeführt werden. Bei diesen Betriebssystemen sind mehrere Prozesse eingerichtet, welche die Ausführung mehrerer Programme ermöglichen. Das Betriebssystem ordnet die Verarbeitungszeit eines Prozessors den Prozessen zu. Programminformationen und Daten, die von den Programmen verarbeitet werden, werden in Speichervorrichtungen des Computers gespeichert. Wenn die Ausführung eines Programms beginnt, wird dem entsprechenden Prozess Speicherplatz in den Speichervorrichtungen zugeordnet. Wenn einem Prozess keine angemessene Menge an Speicherplatz zugeordnet wird, gerät der Prozess, wenn er ausgeführt wird, unter Umständen in einen fatalen Zustand von unzureichendem Speicher. Wenn die Ausführung eines Programms endet, wird der Speicherplatz, der dem Prozess zugeordnet wurde, frei gegeben, damit der Speicherplatz erneut verwendet werden kann.
  • Es werden Techniken benötigt, um Speicherplatz einem Prozess zuzuordnen und um den Speicherplatz frei zu geben oder seine Zuordnung aufzuheben, nachdem der Prozess ihn nicht mehr benötigt. In der Vergangenheit wurden in der Programmiersprache C standardisierte C-Bibliotheksroutinen bereitgestellt, um es möglich zu machen, dass Speicherplatz zugeordnet und frei gegeben wird. Die Standard-C-Bibliotheksroutine zum Zuordnen von Speicherplatz wird als „malloc"-Funktion bezeichnet. Die Standard-C-Bibliotheksroutine zum Freigeben von Speicherplatz wird als „free"-Funktion bezeichnet.
  • Die „malloc"-Funktion wird mit einem Parameter ausgeführt, der die Größe des Speicherblocks, der zugeordnet werden soll, angibt. Die „malloc"-Funktion sucht einen Speicherplatz-Block mit angemessener Größe und gibt einen Zeiger zum Anfang des Speicherblocks zurück.
  • Die „free"-Funktion wird mit einem Parameter ausgeführt, der einen Zeiger angibt, der zu einem Speicherblock zeigt, der zuvor von der „malloc"-Funktion zugeordnet wurde. Die „free"-Funktion gibt den angegebenen Speicherblock frei, damit dieser erneut vom selben Prozess verwendet werden kann.
  • Die „malloc"-Funktion pflegt mehrere Listen freier Blöcke nach Größe und ordnet Speicherplatz aus der geeigneten Liste zu. Wenn die „malloc"-Funktion nicht in der Lage ist, einen nicht-zugeordneten Speicherblock mit ausreichender Größe zu finden, ruft sie eine „sbrk"-Funktion auf, um das Betriebssystem zu veranlassen, mehr Speicherplatz zur Verfügung zu stellen, aus dem Zuordnungen vorgenommen werden können.
  • Wenn gewünscht wird, die Größe eines Speicherblocks zu ändern, der bereits zugeordnet wurde, kann die „realloc"-Funktion aufgerufen werden. Die „realloc"-Funktion wird mit einem Parameter ausgeführt, der den Zeiger angibt, der zu einem Speicherblock zeigt, der bereits zugeordnet wurde, und einem anderen Parameter, der die neue Größe angibt, die für diesen Speicherblock gewünscht wird. Die „realloc"-Funktion ordnet einen Speicherblock mit ausreichender Größe zu und gibt einen Zeiger zu dem neuen Speicherblock zurück. Der Zeiger kann zu einem Speicherblock zeigen, der dieselbe Anfangsposition besitzt wie der Speicherblock, der zu dem Zeitpunkt vorhanden war, als die „realloc"-Funktion aufgerufen wurde, oder der Zeiger kann zu einem Speicherblock zeigen, der eine andere Anfangsposition besitzt, wenn unzureichender Speicherplatz in dem Speicherblock vorhanden war, der vorher zugeordnet wurde, und Speicherplatz frei geben, der an diesen Speicherblock angrenzt.
  • Während die Funktionen „malloc" und „free" geeignet sind, um Speicherblöcke zu beziehen und frei zu geben, bieten sie nicht die Möglichkeit, den aktuellen Status von freiem und zugeordnetem Speicherplatz zu überprüfen. Diese Möglichkeit ist wünschenswert, da ein Verständnis der Gesamtkonfiguration von zugeordnetem Speicherplatz und freiem Speicherplatz nützlich wäre für die Beurteilung und Optimierung der Leistung eines Computersystems, insbesondere bei langzeitigen Prozessen. Vor allem wäre es nützlich, wenn es möglich wäre, einen Prozess anzugeben und Informationen geliefert zu bekommen, welche die Blöcke des Speicherplatzes angeben, die dem Prozess zugeordnet sind, sowie ihre Positionen in dem GesamtSpeicherplatz des Computersystems.
  • In der Vergangenheit konnte ein Programm umgeschrieben werden, um Aufrufe für eine „mallinfo"-Funktion einzubeziehen. Die „mallinfo"-Funktion liefert Informationen, welche die Speicherplatzzuordnung beschreiben. Typische Informationen, die von der „mallinfo"-Funktion zur Verfügung gestellt werden, beinhalten den Gesamtspeicherplatz in der Arena, die Anzahl der normalen Blöcke, die Anzahl der kleinen Blöcke, die Anzahl der Holding-Blöcke, den Speicherplatz in Holding-Block-Headern, den Speicherplatz in verwendeten kleinen Blöcken, den Speicherplatz in freien kleinen Blöcken, den Speicherplatz in normalen verwendeten Blöcken, den Speicherplatz in freien normalen Blöcken, die Kosten zur Aktivierung der Keep-Option, die maximale Größe von kleinen Blöcken, die Anzahl von kleinen Blöcken in einem Holding-Block, den Rundungsfaktor für kleine Blöcke, den Speicherplatz (einschließlich Overhead), der in normalen Blöcken zugeordnet ist, die Anzahl der normalen Blöcke, die zugeordnet sind, und die Anzahl von Bytes, die zur Aufrechterhaltung der freien Baumstruktur verwendet werden. Während diese Informationen nützlich sind, um die Leistung zu analysieren, müssen die Aufrufe für die „mallinfo"-Funktion dem Programm, das analysiert wird, hinzugefügt werden. Somit ist die Verwendung der „mallinfo"-Funktion eine invasive Vorgehensweise, die nicht die Analyse eines Programms in der Form erlaubt, in der das Programm verwendet werden soll.
  • Die Einbeziehung der „mallinfo"-Funktion steigert die Komplexität des Codes, was die Entwicklungs- und Wartungskosten erhöht. Ferner können die Speicherplatz-Zuordnungsinformationen, die mit einem Prozess verbunden sind, der die „mallinfo"-Funktionalität aufweist, durch die Einbeziehung der „mallinfo"-Funktion verfälscht werden. Das heißt, die „mallinfo"-Funktionalität kann die Speicherzuordnungsinformationen verändern. Diese Veränderung kann zu Schwierigkeiten bei der Durchführung einer Beurteilung der Speicherzuordnung durch einen Anwendungsentwickler führen.
  • Um die „mallinfo"-Funktionalität in einen Prozess einzubeziehen, der Code ausführt, der diese Funktionalität nicht aufweist, ist es notwendig, den Prozess zu beenden und einen neuen Prozess einzuleiten, der Code ausführt, der Aufrufe für die „mallinfo"-Funktion enthält. Somit ist es mühselig, diese Funktionalität zu Code hinzuzufügen, der bereits ausgeführt wird.
  • Duke A H: „Storage allocation mechanism" IBM Technical Disclosure Bulletin, FEB. 1975, USA, Jahrgang 17, Nummer 19, Seiten 2606–2610, XP002084222, ISSN 0018–8689, beschreibt einen „Speicherzuordnungsmechanismus", der das Verkehrsaufkommen in beide Richtungen zwischen primärem Speicher und Hilfsspeicher in einem virtuellen Speicherdaten verarbeitenden System minimiert, indem er die Anzahl der Seiten des virtuellen Speichers, die tatsächlich verwendet werden, minimiert. Dies wird erreicht, indem teilweise gefüllte virtuelle Speicherseiten aufgefüllt werden, bevor zusätzliche virtuelle Speicherseiten verwendet werden.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Ein erster Aspekt der Erfindung stellt ein Verfahren zur Erhaltung von Speicherzuordnungsinformationen bereit, das die folgenden Schritte umfasst: Reservieren einer Speicherort-Arena, wobei das Verfahren gekennzeichnet ist durch:
    die Speicherort-Arena, die einen Deskriptorblock und eine Vielzahl von Speicherblöcken umfasst;
    Speichern der genannten Speicherzuordnungsinformationen, die mit der genannten Vielzahl von Speicherblöcken verbunden sind, in dem genannten Deskriptorblock, wobei die genannten Speicherzuordnungsinformationen umfassen:
    einen ersten Wert einer Anzahl von Seiten, die Buckets mit einer ersten Bucket-Größe, instanziiert in einem der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst;
    einen zweiten Wert einer Anzahl von Buckets, zugeordnet in einer der genannten Anzahl von Seiten, die Buckets mit der genannten ersten Bucket-Größe, instanziiert in dem einen der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst;
    und
    einen Zeiger zu einer verketteten Liste, die nicht-zugeordnete Buckets identifiziert in der genannten einen der genannten Anzahl von Seiten mit der genannten ersten Bucket-Größe, instanziiert in dem einen der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst.
  • Ein zweiter Aspekt der Erfindung stellt eine Vorrichtung zur Erhaltung von Speicherzuordnungsinformationen bereit, der umfasst:
    ein Computersystem, das einen Prozessor und Speicher umfasst, wobei ein Teil des genannten Speichers als Speicherort-Arena reserviert ist, gekennzeichnet durch:
    die genannte Speicherort-Arena, die einen Deskriptorblock und eine Vielzahl von Speicherblöcken umfasst, wobei der genannte Deskriptorblock umfasst:
    eine erste Speicherstelle, die einen Wert einer Anzahl von Seiten speichert, die Buckets mit einer ersten Bucket-Größe, instanziiert in einem der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst;
    eine zweite Speicherstelle, die einen zweiten Wert einer Anzahl von Buckets speichert, zugeordnet in einer der genannten Anzahl von Seiten, die Buckets mit der genannten ersten Bucket-Größe, instanziiert in dem einen der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst; und
    eine dritte Speicherstelle, die einen Zeiger zu einer verketteten Liste speichert, die nicht-zugeordnete Buckets in der genannten der genannten Anzahl von Seiten identifiziert, die Buckets mit der genannten ersten Bucket-Größe, instanziiert in dem einen der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst.
  • Die Erfindung stellt ein Verfahren und eine Vorrichtung zur nicht-invasiven Bereitstellung von Informationen, die sich auf die Speicherplatzzuordnung beziehen, bereit. Die Erfindung macht es möglich, dass die Speicherplatzzuordnung von Prozessen außerhalb des Speicherplatzzuordners überprüft werden kann, ohne dass es erforderlich ist, den Code für Prozesse, denen Speicherplatz zugeordnet wird, zu modifizieren.
  • Eine Ausführungsform der Erfindung stellt ein Verfahren und eine Vorrichtung zur Erhaltung von Speicherzuordnungsinformationen bereit, welche die Schritte des Reservierens einer Speicherort-Arena, die eine Datenstruktur zum Speichern der Speicherzuordnungsinformationen definiert, sowie des Speicherns der Speicherzuordnungsinformationen umfasst.
  • Die Speicherzuordnungsinformationen umfassen einen ersten Wert einer Anzahl von Seiten mit einer ersten Bucket-Größe, instanziiert in der Speicherort-Arena. Die Speicherzuordnungsinformationen umfassen außerdem einen zweiten Wert einer Anzahl von Buckets, zugeordnet in einer der Anzahl von Seiten mit der ersten Bucket-Größe, instanziiert in der Speicherort-Arena. Die Speicherzuordnungsinformationen umfassen ferner einen Zeiger zu einer verketteten Liste, die nicht-zugeordnete Buckets in einer der Anzahl von Seiten mit der ersten Bucket-Größe, instanziiert in der Speicherort-Arena, identifiziert.
  • Eine Ausführungsform der Erfindung stellt auch ein Verfahren und eine Vorrichtung bereit, um die Speicherzuordnungsinformationen zu modifizieren, wenn eine Änderung in der Speicherzuordnung stattfindet. Die Erfindung macht es möglich, dass die Speicherzuordnungsinformationen entsprechend modifiziert werden können, wenn Speicher zugeordnet wird und wenn Speicher frei gegeben wird.
  • Eine Ausführungsform der Erfindung stellt ein Verfahren und eine Vorrichtung bereit, um die Datenstruktur zu identifizieren, indem in der Datenstruktur ein Datenstrukturidentifizierer gespeichert wird. Der Datenstrukturidentifizierer ist vorzugsweise ein bekannter oder ohne weiteres identifizierter Wert, der in einer bekannten oder ohne weiteres identifizierten Speicherstelle innerhalb der Datenstruktur gespeichert wird. Die Speicherstelle, an welcher der Datenstrukturidentifizierer gespeichert wird, wird absichtlich externen Programmen bekannt gemacht, so dass die externen Programme wissen, wo sie nach dem Datenstrukturidentifizierer suchen müssen, und wissen, wonach sie an dieser Speicherstelle suchen müssen, um die Datenstruktur zu identifizieren.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Diagramm, das ein Beispiel einer Speicherort-Arena nach einer Ausführungsform der Erfindung auf einer Vorrichtung mit einer Vier-Kilobyte-Seitengröße zeigt.
  • 2 ist ein Diagramm, das ein Beispiel einer Speicherseite nach einer Ausführungsform der Erfindung zeigt.
  • 3 ist ein Blockdiagramm, das ein Allzweck-Computersystem zeigt.
  • 4 ist ein Ablaufdiagramm, das eine Ausführungsform der Erfindung zeigt, welche die Fragmentierung bei der Zuordnung von Speicherplatz zu einem Prozess minimiert.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Es werden ein Verfahren und eine Vorrichtung zur Zuordnung von Speicher in einem Computersystem und zur Bereitstellung von Informationen, die sich auf die Speicherzuordnung beziehen, beschrieben. In der folgenden Beschreibung werden zahlreiche spezifische Details wie Bucket-Größen, Seitengrößen, Deskriptorblockformate und Rechenumgebungen erläutert, um ein umfassenderes Verständnis der Erfindung zu liefern. Für einen Fachmann wird jedoch offensichtlich sein, dass die Erfindung ohne diese spezifischen Details praktiziert werden kann. In anderen Fällen werden wohlbekannte Merkmale nicht detailliert beschrieben, um die Erfindung nicht unnötigerweise undeutlich zu machen.
  • Nach dem Stand der Technik werden Informationen, die sich auf die Speicherzuordnung beziehen, nicht auf eine Weise gespeichert, die es ermöglicht, dass sie von Prozessen außerhalb des Zuordners überprüft werden können. Um zu überprüfen, wie Speicher für einen bestimmten Code zugeordnet wird, ist es erforderlich, diesen Code zu modifizieren, bevor er ausgeführt wird. Somit ist der Code, der ausgeführt wird, nicht identisch mit dem Code, für den die Informationen, die sich auf die Speicherzuordnung beziehen, gesucht werden.
  • Die Erfindung vermeidet die Probleme des Stands der Technik, indem sie Informationen liefert, die sich auf die Speicherzuordnung beziehen, die externe Prozesse einfach und nicht-invasiv beziehen können. Die Erfindung kann verwendet werden, um Speicher zu überprüfen, der für Code zugeordnet wurde, der in keinerlei Hinsicht verändert wurde. Somit dient die Erfindung dem nützlichen Zweck, die Speichernutzung in Prozessen zu analysieren, die über lange Zeiträume, z. B. sogar Wochen oder Monate, ausgeführt werden, bevor die Analyse der Speicherzuordnung durchgeführt werden soll.
  • Die Erfindung stellt ein Verfahren und eine Vorrichtung bereit, um nicht-invasiv Informationen zu liefern, die sich auf die Speicherplatzzuordnung beziehen. Die Erfindung vermeidet die Notwendigkeit, Programme zu modifizieren, um zu veranlassen, dass Informationen, die sich auf die Speicherplatzzuordnung beziehen, bereitgestellt werden. Somit macht es die Erfindung möglich, dass die Speicherplatzzuordnung für ein gegebenes Programm unter Verwendung des Programms in der Form, in der das Programm verwendet werden soll, analysiert werden kann. Die Erfindung vermeidet außerdem die Notwendigkeit, die Prozesse zu verändern, von denen ein Programm ausgeführt wird.
  • Eine Ausführungsform der Erfindung stellt Informationen bereit, die sich auf die Speicherplatzzuordnung beziehen, indem diese Informationen an einer Position gepflegt werden, die außerhalb des Prozesses, für den der Speicherplatz zugeordnet wurde, bekannt oder identifizierbar ist. Ein Speicherplatzzuordner pflegt die Informationen in einer Datenstruktur und aktualisiert die Datenstruktur mit jeder Zuordnung oder Aufhebung der Zuordnung von Speicherplatz. Somit stellt der Speicherplatzzuordner sicher, dass die Informationen in der Datenstruktur den aktuellen Status des Speicherplatzes darstellen.
  • In der bevorzugten Ausführungsform der Erfindung ist die Datenstruktur, welche die Speicherplatz-Zuordnungsinformationen enthält, die vom Speicherplatzzuordner gepflegt werden, auf einer Speicherseite vorhanden, die als Deskriptorblock bezeichnet wird. Der Speicherplatzzuordner besitzt die Kontrolle über einen Speicherbereich, der als Arena bezeichnet wird. Der Prozess verlangt, dass der Betriebssystem-Kernel den Speicherbereich, der von der Arena belegt wird, für die ausschließliche Verwendung des Speicherplatzzuordners reserviert und verhindert, dass andere Prozesse diesen Speicherbereich verwenden oder modifizieren.
  • Ein Bucket ist eine Speicherplatzeinheit, die vom Speicherzuordner zugeordnet werden kann. Buckets können eine Vielzahl von Typen sein, zum Beispiel kleine Buckets, mittlere Buckets, große Buckets und extra große Buckets. Die kleinen Buckets liefern acht Byte Informationen, die zugeordnet werden können. Die mittleren Buckets liefern 16 Byte Informationen, die zugeordnet werden können. Die großen Buckets liefern 24 Byte Informationen, die zugeordnet werden können. Die extra großen Buckets liefern 32 Byte Informationen, die zugeordnet werden können. Diese Bucket-Größen werden als Beispiele gegeben, und es wird verstanden, dass andere Bucket-Größen und Anzahlen von verschiedenen Bucket-Größen nach der Erfindung möglich sind. Der Deskriptorblock enthält einen Identifizierer, der erkennt, dass die Speicherplatz-Zuordnungsinformationen, die in diesem Deskriptorblock gespeichert sind, von einem bestimmten Speicherplatzzuordner gesteuert werden. Der Deskriptorblock enthält außerdem Informationen, die angeben, wie viele Buckets verwendet werden, wie viele Buckets frei sind und wie viel Speicherplatz gegenwärtig als angrenzender Block verfügbar ist.
  • Ein externes Dienstprogramm kann Speicherplatz-Zuordnungsinformationen ermitteln, indem es die Informationen, die im Deskriptorblock gespeichert sind, liest. Da der Betriebssystem-Kernel die Position der Speicherort-Arena kennt, kann das externe Dienstprogramm den Deskriptorblock leicht finden, indem es nach dem Identifizierer sucht, der im Deskriptorblock gespeichert ist, und den Deskriptorblock lesen, ohne den Betrieb des Speicherplatzzuordners oder die Prozesse, denen vom Speicherplatzzuordner Speicherplatz zugeordnet wurde, stören zu müssen. Somit überwindet die Erfindung die Nachteile des Stands der Technik.
  • 1 ist ein Diagramm, das ein Beispiel einer Speicherort-Arena nach einer Ausführungsform der Erfindung zeigt. Die Speicherort-Arena umfasst Speicherplatz, der vom Betriebssystem zur Verwendung durch einen Speicherzuordner reserviert ist. Das Betriebssystem erlaubt dem Speicherzuordner, die Speicherort-Arena zu verwenden, während sie anderen Prozessen verbietet, die Speicherort-Arena zu stören.
  • Die Speicherort-Arena umfasst den Deskriptorblock 101 sowie eine Anzahl von Speicherblöcken. Jeder Speicherblock umfasst eine Anzahl von Speicherseiten. So kann zum Beispiel eine Speicherseite 4096 Byte aufweisen. Jede Speicherseite umfasst eine Anzahl von Buckets. Ein Bucket umfasst eine Speicherplatzeinheit, die zugeordnet werden kann.
  • Die Speicherblöcke können sich voneinander in der Größe der Buckets, die sie enthalten, unterscheiden. Speicherblock 102 umfasst beispielsweise extra große Buckets, wobei jeder Bucket vorzugsweise eine Größe von 32 Byte besitzt. Speicherblock 103 umfasst große Buckets, wobei jeder Bucket vorzugsweise eine Größe von 24 Byte besitzt. Speicherblock 104 umfasst mittlere Buckets, wobei jeder Bucket vorzugsweise eine Größe von 16 Byte besitzt. Speicherblock 105 umfasst kleine Buckets, wobei jeder Bucket vorzugsweise eine Größe von 8 Byte besitzt. Der Speicherzuordner wählt die optimalen Bucket-Größen aus, die empirisch a priori ermittelt werden, die für jeden Prozess, dem er Speicherplatz zuordnet, zugeordnet werden.
  • Der Deskriptorblock 101 ist vorzugsweise auf einer einzigen Seite enthalten und umfasst Speicherzuordnungsinformationen. In der bevorzugten Ausführungsform der Erfindung ist der Deskriptorblock 101 auf einer Speicherseite vorhanden, die eine Größe besitzt, die der ursprünglichen Seitengröße der Vorrichtung, auf der sie ausgeführt wird, entspricht. Auf einer Vorrichtung mit einer ursprünglichen Seitengröße von 4096 Byte besitzt der Deskriptorblock 101 zum Beispiel vorzugsweise eine Größe von 4096 Byte. Die Speicherzuordnungsinformationen weisen Informationen auf über die Anzahl der verschiedenen Speicherblocktypen, die innerhalb der Speicherort-Arena definiert wurden, die Größen der Buckets innerhalb jedes Speicherblocks und die Anzahl der Speicherseiten, die innerhalb jedes Speicherblocks instanziiert wurden. Diese Informationen werden vorzugsweise an der Speicherstelle 107 gespeichert. Die Speicherstelle 107 kann sich irgendwo im Deskriptorblock 101 befinden.
  • Wenn eine Speicherseite instanziiert wird, wird sie vorzugsweise als Seite im virtuellen Speichersystem mit Backup-Speicherfähigkeit abgebildet, damit das System die Speicherseite in den Systemspeicher einlagern oder aus dem Systemspeicher auslagern kann. Wenn eine Speicherseite aus dem Systemspeicher ausgelagert wird, wird sie auf einem Massenspeichergerät gespeichert. Wenn eine Speicherseite in den Systemspeicher eingelagert wird, wird sie im Speicher mit wahlfreiem Zugriff des Systems gespeichert.
  • Die Speicherzuordnungsinformationen, die im Deskriptorblock 101 enthalten sind, weisen außerdem Informationen auf, die für jede Speicherseite in jedem Speicherblock angeben, wie viele Buckets vom Speicherzuordner zugeordnet wurden und wie viele Buckets frei bleiben, um vom Speicherzuordner zugeordnet zu werden. Die früheren Informationen werden als der zugeordnete Bucket-Count für jede Speicherseite bezeichnet und die späteren Informationen werden als der freie Bucket-Count für jede Speicherseite bezeichnet.
  • Die Speicherzuordnungsinformationen, die im Deskriptorblock 101 enthalten sind, weisen außerdem für jede Speicherseite in jedem Speicherblock einen Zeiger auf zum Kopf einer verketteten Liste, welche die freien Buckets in der Speicherseite identifiziert. Die freien Buckets sind die zuordenbaren Speichereinheiten in der Speicherseite, die nicht vom Speicherzuordner zugeordnet wurden. Die Verkettungsdaten werden in jedem zuordenbaren Bucket gespeichert.
  • Die Speicherstellen 108 und 109 zeigen ein Beispiel eines Paares aus Bucket-Count und verketteter Liste mit Zeiger für eine gegebene Speicherseite, z. B. die Speicherseite 112 in dem Speicherblock 102. Ein zugeordneter Bucket-Count und/oder ein freier Bucket-Count werden in der Speicherstelle 108 gespeichert. Ein Zeiger zu einer verketteten Liste von freien Buckets wird in der Speicherstelle 109 gespeichert.
  • Die Speicherstellen 110 und 111 zeigen ein Beispiel eines Paares aus Bucket-Count und verketteter Liste mit Zeiger für eine andere Speicherseite, z. B. die Speicherseite 113 in dem Speicherblock 102. Ein zugeordneter Bucket-Count und/oder ein freier Bucket werden in der Speicherstelle 110 gespeichert. Ein Zeiger zu einer verketteten Liste von freien Buckets wird in der Speicherstelle 111 gespeichert.
  • Solche Paare aus Bucket-Count und verketteter Liste mit Zeiger sind in dem Deskriptorblock 101 für jede Speicherseite in jedem Speicherblock in der Speicherort-Arena vorhanden. Beispielsweise sind andere Paare aus Bucket-Count und verketteter Liste mit Zeiger in dem Deskriptorblock 101 für die Speicherseiten 114 und 115 in dem Speicherblock 103, für die Speicherseiten 116 und 117 in dem Speicherblock 104 und für die Speicherseiten 118 und 119 in dem Speicherblock 105 vorhanden.
  • Der Deskriptorblock 101 enthält außerdem den Datenstrukturidentifizierer 106. Der Datenstrukturidentifizierer 106 weist einen bekannten oder ohne Weiteres identifizierten Wert oder ein bekanntes oder ohne Weiteres identifiziertes Muster auf, das an einer bekannten oder ohne Weiteres identifizierten Position in dem Deskriptorblock 101 gespeichert wird. Der Datenstrukturidentifizierer hilft in der Position der Speicherort-Arena, insbesondere des Deskriptorblocks. Der Datenstrukturidentifizierer ermöglicht es einem Prozess außerhalb des Speicherzuordners Speicherplatz zu suchen, indem er die angegebene Position auf jeder Speicherseite auf das Vorhandensein des angegebenen Werts oder Musters prüft, um einen Deskriptorblock zu finden.
  • TABELLE 1
    Figure 00140001
  • Figure 00150001
  • Figure 00160001
  • Tabelle 1 liefert eine Datenstrukturdefinition in der Programmiersprache C als Beispiel einer Ausführungsform zur Implementierung der Erfindung. Die spezifischen Werte, die in Tabelle 1 erscheinen, sollen als Beispiele dienen, und es wird verstanden, dass die Erfindung nicht auf diese Werte oder einen spezifischen Bereich von Werten beschränkt ist. Darüber hinaus ist die Erfindung nicht darauf beschränkt, unter Verwendung der Programmiersprache C implementiert zu werden, sondern sie kann unter Verwendung anderer Programmiersprachen oder -umgebungen implementiert werden.
  • 2 ist ein Diagramm, das ein Bespiel einer Speicherseite nach einer Ausführungsform der Erfindung zeigt. Die Speicherseite ist in Buckets aufgeteilt. Beispiele für solche Buckets sind die Buckets 222, 223 und 224. Wenn die Speichergröße und die Bucket-Größe so sind, dass die Speichergröße in eine ganzzahlige Anzahl von Buckets teilbar ist, wird der gesamte Speicherplatz in der Speicherseite in Buckets aufgeteilt. Wenn die Seite keine ganzzahlige Anzahl von Buckets liefert, kann auf der Seite eine kleine Menge nicht verwendbarer Extra-Speicherplatz vorhanden sein.
  • Auf einer beliebigen gegebenen Speicherseite können alle Buckets frei sein, alle Buckets können zugeordnet sein, oder einige der Buckets können frei und einige der Buckets können zugeordnet sein. Zum Beispiel sind in der Speicherseite, die in 2 dargestellt ist, die Buckets 222, 223 und 224 zugeordnet, und die Buckets 201211 sind frei. Wenn einige der Buckets oder alle Buckets auf einer Speicherseite frei sind, zeigt ein Zeiger auf dem Deskriptorblock zu einer auf Null endenden verketteten Liste, welche die freien Buckets in der Speicherseite identifiziert. In dem dargestellten Beispiel beginnt die verkettete Liste von freien Buckets bei Bucket 201. Bucket 201 speichert die Position des nächsten Bucket in der verketteten Liste. In diesem Fall speichert Bucket 201 den Zeiger 212 zu Bucket 202. Bucket 202 wiederum speichert die Position des nächsten Bucket in der verketteten Liste. In diesem Fall speichert Bucket 202 den Zeiger 213 zu Bucket 203. Gleichermaßen speichert Bucket 203 den Zeiger 214 zu Bucket 204.
  • Auf die gleiche Weise speichert Bucket 204 den Zeiger 215 zu Bucket 205. Bucket 205 speichert den Zeiger 216 zu Bucket 206. Bucket 206 speichert den Zeiger 217 zu Bucket 207. Bucket 207 speichert den Zeiger 218 zu Bucket 208. Bucket 208 speichert den Zeiger 219 zu Bucket 209. Bucket 209 speichert den Zeiger 220 zu Bucket 210. Bucket 210 speichert den Zeiger 221 zu Bucket 211. Bucket 211 speichert Informationen, die angeben, dass er das Ende der verketteten Liste ist und dass keine anderen Buckets folgen. Wenn ein Bucket nicht in der verketteten Liste für die Speicherseite, in welcher der Bucket vorhanden ist, vorhanden ist, wird verstanden, dass er zugeordnet wurde.
  • Wenn zusätzlicher Speicherplatz innerhalb einer Seite zugeordnet wird, wird die verkettete Liste aktualisiert, um die Änderungen in freien Buckets wiederzugeben. Buckets können zum Beispiel vom Anfang, vom Ende oder von der Mitte (irgendwo zwischen dem Anfang und dem Ende) der verketteten Liste zugeordnet werden. In der bevorzugten Ausführungsform werden Buckets vom Kopf der verketteten Liste zugeordnet.
  • Wenn Buckets vom Anfang der verketteten Liste zugeordnet werden, wird der Zeiger im Deskriptorblock 101 aktualisiert, um zu dem neuen Kopf der verketteten Liste zu zeigen. Wenn Buckets vom Ende der verketteten Liste zugeordnet werden, wird die verkettete Liste vor den zugeordneten Buckets abgeschnitten, indem ein Hinweis im letzten freien Bucket gespeichert wird, dass er das Ende der verketteten Liste ist und dass keine anderen Buckets folgen. Wenn Buckets von der Mitte der verketteten Liste zugeordnet werden, wird die verkettete Liste modifiziert, indem ein Zeiger im letzten Bucket vor den zugeordneten Buckets gespeichert wird, die zum nächsten Bucket zeigen, der den zugeordneten Buckets folgt.
  • Wenn Buckets frei gegeben werden, wird die verkettete Liste aktualisiert, um die Änderungen in freien Buckets wiederzugeben. Frei gegebene Buckets können zum Beispiel an den Anfang, an das Ende oder in der Mitte (irgendwo zwischen dem Anfang und dem Ende) der verketteten Liste angehängt werden. In der bevorzugten Ausführungsform werden frei gegebene Buckets dem Kopf der verketteten Liste hinzugefügt.
  • Wenn frei gegebene Buckets an den Anfang der verketteten Liste angehängt werden, wird der Zeiger in Deskriptorblock 101 aktualisiert, um zu dem neuen Kopf der verketteten Liste zu zeigen. Wenn Buckets an das Ende der verketteten Liste angehängt werden, wird die verkettete Liste modifiziert, indem Zeiger in dem Bucket, der vorher das Ende der verketteten Liste war, und in jedem zusätzlichen frei gegebenen Bucket, welcher der verketteten Liste hinzugefügt werden soll, gespeichert werden, wobei jeder Zeiger zum nächsten freie Bucket zeigt, der in die verkettete Liste einbezogen werden soll. Ein Hinweis wird im letzten freien Bucket gespeichert, welcher der verketteten Liste hinzugefügt werden soll, dass er das Ende der verketteten Liste ist und dass keine anderen Buckets folgen.
  • Wenn frei gegebene Buckets in der Mitte der verketteten Liste angehängt werden, wird die verkettete Liste modifiziert, indem ein Zeiger im letzten Bucket vor den zugeordneten Buckets gespeichert wird, der zum ersten frei gegebenen Bucket zeigt, welcher der verketteten Liste hinzugefügt werden soll. Jeder frei gegebene Bucket, welcher der verketteten Liste hinzugefügt werden soll, speichert einen Zeiger, der zum nächsten frei gegebenen Bucket, welcher der verketteten Liste hinzugefügt werden soll, zeigt. Der letzte frei gegebene Bucket, welcher der verketteten Liste hinzugefügt werden soll, speichert einen Zeiger, der zu dem zeigt, was der nächste freie Bucket in der Liste war, bevor die zusätzlichen frei gegebenen Buckets der verketteten Liste hinzugefügt wurden.
  • Wenn Speicherplatz auf einer Speicherseite zugeordnet oder frei gegeben wird, aktualisiert der Speicherzuordner die verkettete Liste, die freie Buckets wie oben beschrieben identifiziert. Der Speicherzuordner aktualisiert außerdem Zähler, die im Deskriptorblock gespeichert sind. Die Zähler speichern Informationen, die angeben, wie viele Buckets zugeordnet sind, wie viele Buckets frei sind und wie viel Speicherplatz gegenwärtig als angrenzendes Segment verfügbar ist.
  • Wenn die Zähler Informationen speichern, die angeben, wie viele Buckets zugeordnet sind, kann die Anzahl der freien Buckets berechnet werden, indem die Anzahl der zugeordneten Buckets von der Gesamtzahl der Buckets subtrahiert wird. Somit kann die Anzahl der freien Buckets ermittelt werden, ohne dass es erforderlich ist, die Anzahl der freien Buckets zu speichern.
  • Gleichermaßen, wenn die Zähler Informationen speichern, die angeben, wie viele Buckets frei sind, kann die Anzahl der zugeordneten Buckets berechnet werden, indem die Anzahl der freien Buckets von der Gesamtzahl der Buckets, die instanziiert sind, subtrahiert wird. Somit kann die Anzahl der zugeordneten Buckets ermittelt werden, ohne dass es erforderlich ist, die Anzahl der zugeordneten Buckets zu speichern.
  • Bei Änderungen der Speicherzuordnung zählt der Speicherzuordner die Anzahl der freien Buckets in der verketteten Liste für jede Speicherseite, die von der Änderung in der Speicherzuordnung betroffen war. Der Speicherzuordner pflegt vorzugsweise einen Zähler, der die Anzahl der freien Buckets für jede Speicherseite speichert, und erhöht oder verringert den Zähler, wenn eine Änderung in der Speicherzuordnung stattfindet. Der Speicherzuordner speichert die aktualisierten Informationen, die aus dieser Zählung erhalten wurden (z. B. der Wert, der vom Zähler gehalten wird), im Deskriptorblock.
  • Durch Speichern der aktualisierten Speicherzuordnungsinformationen im Deskriptorblock vermeidet diese Ausführungsform der vorliegenden Erfindung die Notwendigkeit, auf jede Speicherseite zuzugreifen und jeden freien oder zugeordneten Bucket auf jeder Speicherseite zu zählen, jedes Mal, wenn eine Speicherzuordnungsoperation ausgeführt wird. Stattdessen ermöglicht es diese Ausführungsform der vorliegenden Erfindung, dass die Anzahl der freien Buckets und die Anzahl der zugeordneten Buckets ohne weiteres aus den Informationen ermittelt werden können, die im Deskriptorblock gespeichert sind. Somit können Änderungen der Speicherzuordnung schnell und einfach erzielt werden, während auf eine minimale Anzahl von Speicherseiten zugegriffen wird.
  • 3 ist ein Blockdiagramm, das ein Allzweck-Computersystem zeigt. Die Erfindung kann auf einem solchen Allzweck-Computersystem implementiert werden. Eine Tastatur 310 und ein Mauseingabegerät 311 werden mit einem bidirektionalen Systembus 318 verbunden. Die Tastatur und das Mauseingabegerät sind zum Einführen von Benutzereingaben in das Computersystem und zum Kommunizieren dieser Benutzereingaben zu einer zentralen Verarbeitungseinheit (CPU) 313 bestimmt.
  • Das Computersystem weist außerdem einen Videospeicher 314, einen Hauptspeicher 315, einen Massenspeicher 312 sowie Eingabe-/Ausgabegeräte 319 auf, die alle zusammen mit der Tastatur 310, dem Mauseingabegerät 311 und der CPU 313 mit dem bidirektionalen Systembus 318 verbunden sind. Der Massenspeicher 312 kann sowohl fest eingebaute als auch entfernbare Medien wie magnetische, optische oder magnetisch-optische Speichersysteme oder beliebige andere erhältliche Massenspeichertechnologie aufweisen. Der Massenspeicher 312 kann lesbare und beschreibbare Mediensysteme und Nur-Lese-Systeme aufweisen. Der bidirektionale Systembus 318 kann zum Beispiel 32 Adressenleitungen für die Adressierung des Videospeichers 314 oder des Hauptspeichers 315 enthalten.
  • Der bidirektionale Systembus 318 weist außerdem zum Beispiel einen 32-Bit-Datenbus zur Übertragung von Daten zwischen und unter den Komponenten wie der CPU 313, dem Hauptspeicher 315, dem Videospeicher 314, dem Massenspeicher 312 und den Eingabe-/Ausgabegeräten 319 auf. Alternativ können anstelle von separaten Daten- und Adressenleitungen Mehrfachdaten/-adressenleitungen verwendet werden.
  • Die Eingabe-/Ausgabegeräte 319 können Vorrichtungen wie serielle Kommunikationsanschlüsse, parallele Kommunikationsanschlüsse, Modulator/Demodulatoren (Modems), Netzwerkschnittstellen, Drucker, Scanner und andere Vorrichtungen, die Daten vom Computersystem zu externen Geräten übertragen oder die Daten von externen Geräten zum Computersystem übertragen, aufweisen.
  • In der bevorzugten Ausführungsform dieser Erfindung ist die CPU 313 ein 32-Bit-Mikroprozessor, hergestellt von Motorola, z. B. der 680 × 0-Prozessor, oder ein Mikroprozessor, hergestellt von Intel, z. B. der 80 × 86- oder Pentium-Prozessor. Allerdings kann jeder andere geeignete Mikroprozessor oder Mikrocomputer verwendet werden.
  • Der Hauptspeicher 315 umfasst dynamischen Speicher mit wahlfreiem Zugriff (DRAM). Der Videospeicher 314 ist ein Videospeicher mit wahlfreiem Zugriff mit zwei Anschlüssen. Ein Anschluss des Videospeichers 314 ist mit dem Videoprozessor 316 verbunden. Der Videoprozessor 316 wird verwendet, um den Kathodenstrahlröhren (CRT)-Rastermonitor 317 anzutreiben. Der Videoprozessor 316 ist aus dem Stand der Technik wohlbekannt und kann unter Verwendung jedes geeigneten Mittels implementiert werden. Dieser Schaltkreis wandelt Pixeldaten, die in dem Videospeicher 314 gespeichert sind, in ein Rastersignal um, das zur Verwendung durch den Monitor 317 geeignet ist. Der Monitor 317 ist ein Monitortyp, der zum Anzeigen von grafischen Bildern geeignet ist.
  • Das Computersystem, das vorstehend beschrieben wird, dient lediglich zu Beispielzwecken. Die Erfindung kann in jedem Computersystemtyp oder jeder Programmier- oder Verarbeitungsumgebung implementiert werden.
  • Die Erfindung stellt nicht nur Informationen darüber bereit, wie viel der Speicherort-Arena zugeordnet ist und wie viel frei ist, sondern liefert für jede Speicherseite in der Speicherort-Arena Informationen darüber, wie viel der Speicherseite zugeordnet ist und wie viel frei ist. Da das Zugreifen auf Informationen, die auf verschiedenen Speicherseiten gespeichert sind, in der Regel bedeutend weniger effizient ist als das Zugreifen auf Informationen, die auf derselben Speicherseite gespeichert sind, stellt die Erfindung Informationen bereit, die verwendet werden können, um die Anzahl der Speicherseiten zu minimieren, über die Speicherplatz, der einem bestimmten Prozess zugeordnet ist, zugeordnet wird. Durch die Verringerung der Anzahl der Speicherseiten, auf denen Informationen gespeichert sind, kann das Seitenwechseln minimiert und die Effizienz maximiert werden.
  • Darüber hinaus führen Prozesse, die große Mengen von Speicherplatz zuordnen, dann aber viel davon frei geben, zu einer starken Speicherfragmentierung. Speicherfragmentierung tritt auf, wenn Speicher, der für die Zuordnung zu einem Prozess verfügbar ist, nicht in einem angrenzenden Block vorhanden ist, sondern weit verstreut ist über viele Seiten in der gesamten Speicherort-Arena. Indem es möglich ist, dass das Verhalten der Zuordnung und der Zuordnungsaufhebung eines Prozesses identifiziert wird, ermöglicht es die Erfindung dem Speicherzuordner, das Verfahren zu modifizieren, mit dem er Speicherplatz für diesen Prozess zuordnet und frei gibt, um die Fragmentierung zu minimieren und die Effizienz zu maximieren.
  • 4 ist ein Ablaufdiagramm, das eine Ausführungsform der Erfindung zeigt, welche die Fragmentierung minimiert, wenn Speicherplatz einem Prozess zugeordnet wird. Das Verfahren beginnt in Schritt 401 und setzt sich fort bis Schritt 402. In Schritt 402 findet das Verfahren die Speicherseite, welche die optimale Anzahl von freien Buckets mit der gewünschten Bucket-Größe besitzt. Diese Ermittlung erfolgt durch Zugreifen auf die Zählinformationen, die im Deskriptorblock für jede Speicherseite gespeichert sind. In Schritt 403 ordnet das Verfahren einen Bucket von dieser Speicherseite zu.
  • In Schritt 404 prüft das Verfahren, ob dem Prozess genügend Speicherplatz zugeordnet wurde. Wenn genügend Speicherplatz zugeordnet wurde, endet das Verfahren in Schritt 406. Wenn nicht genügend Speicherplatz zugeordnet wurde, fährt das Verfahren in Schritt 405 fort. In Schritt 405 prüft das Verfahren, ob alle Buckets auf der ausgewählten Speicherseite zugeordnet wurden. Falls nicht, kehrt das Verfahren zu Schritt 403 zurück und ordnet einen anderen Bucket von derselben Speicherseite zu.
  • Vorzugsweise hat Schritt 402 eine einzige Speicherseite identifiziert, die verwendet werden kann, um den Speicherbedarf zu erfüllen. Das Zuordnen von Speicher innerhalb einer Seitengrenze verringert das Potenzial für Paging (d. h. das Einlagern von Speicherseiten in den Speicher und das Auslagern von Speicherseiten aus dem Speicher). Allerdings kann es erforderlich sein, Speicher über Seitengrenzen hinweg zuzuordnen. Wenn alle Buckets auf der ausgewählten Speicherseite bereits zugeordnet wurden, kehrt das Verfahren zu Schritt 402 zurück, wo die Speicherseite, die eine optimale (d. h. die höchste) Anzahl freier Buckets besitzt, unter den verbleibenden Speicherseiten identifiziert wird und ausgewählt wird, um für die Speicherzuordnung verwendet zu werden.
  • Da das Verfahren beginnt, Speicherplatz von der Speicherseite zuzuordnen, welche die meisten freien Buckets besitzt, erhöht das Verfahren die Wahrscheinlichkeit, dass der benötigte Speicherplatz innerhalb einer einzigen Speicherseite oder zumindest innerhalb der geringstmöglichen Anzahl von Speicherseiten zugeordnet wird.
  • Somit wurden ein Verfahren und eine Vorrichtung zur Zuordnung von Speicher und zur Bereitstellung von Informationen, die sich auf die Speicherzuordnung beziehen, in Verbindung mit einer oder mehreren spezifischen Ausführungsformen beschrieben. Die Erfindung wird durch die Ansprüche und ihren vollen Umfang von Äquivalenten definiert.

Claims (10)

  1. Verfahren zur Erhaltung von Speicherzuordnungsinformationen, das die folgenden Schritte umfasst: Reservieren einer Speicherort-Arena, die einen Deskriptorblock (101) sowie eine Vielzahl von Speicherblöcken (102, 103, 104, 105) umfasst, wobei das Verfahren gekennzeichnet ist durch: das Speichern der genannten Speicherzuordnungsinformationen, die mit der genannten Vielzahl von Speicherblöcken verbunden sind, in dem genannten Deskriptorblock, wobei die genannten Speicherzuordnungsinformationen umfassen: einen ersten Wert einer Anzahl von Seiten, die Buckets mit einer ersten Bucket-Größe, instanziiert in einem der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst; einen zweiten Wert einer Anzahl von Buckets, zugeordnet in einer (112) der genannten Anzahl von Seiten, die Buckets mit der genannten ersten Bucket-Größe, instanziiert in dem einem der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht umfasst; und einen Zeiger zu einer verketteten Liste, die nicht-zugeordnete Buckets (201211) in der einen der genannten Anzahl von Seiten identifiziert, die Buckets mit der genannten ersten Bucket-Größe, instanziiert in dem einen der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst.
  2. Verfahren nach Anspruch 1, das ferner den folgenden Schritt umfasst: Modifizieren der genannten Speicherzuordnungsinformationen bei einer Änderung der Speicherzuordnung.
  3. Verfahren nach Anspruch 1 oder 2, wobei der Schritt des Speicherns der genannten Speicherzuordnungsinformationen ferner die folgenden Schritte umfasst: Speichern eines dritten Werts einer Anzahl von Buckets, zugeordnet in einer zweiten der genannten Anzahl von Seiten, die Buckets mit der genannten ersten Bucket-Größe, instanziiert in einem der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst; und Speichern eines zweiten Zeigers zu einer zweiten verketteten Liste, die nicht-zugeordnete Buckets in der zweiten der genannten Anzahl von Seiten identifiziert, die Buckets mit der genannten ersten Bucket-Größe, instanziiert in einem der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst.
  4. Verfahren nach Anspruch 3, wobei der Schritt des Speicherns der genannten Speicherzuordnungsinformationen ferner die folgenden Schritte umfasst: Speichern eines vierten Werts einer Anzahl von Seiten, die Buckets mit einer zweiten Bucket-Größe, instanziiert in einem zweiten der Vielzahl von Speicherblöcken, welcher der genannten zweiten Bucket-Größe entspricht, umfasst; Speichern eines fünften Werts einer Anzahl von Buckets, zugeordnet in einer der genannten Anzahl von Seiten, die Buckets mit einer zweiten Bucket-Größe, instanziiert im zweiten der Vielzahl von Speicherblöcken, welcher der genannten zweiten Bucket-Größe entspricht, umfasst; und Speichern eines dritten Zeigers zu einer dritten verketteten Liste, die nicht-zugeordnete Buckets in der einen der genannten Anzahl von Seiten identifiziert, die Buckets mit der genannten zweiten Bucket-Größe, instanziiert im zweiten der Vielzahl von Speicherblöcken, welcher der genannten zweiten Bucket-Größe entspricht, umfasst.
  5. Verfahren nach einem der vorstehenden Ansprüche, das ferner den folgenden Schritt umfasst: Identifizieren des genannten Deskriptorblocks durch Speichern eines Datenstruktur-Identifizierers im genannten Deskriptorblock.
  6. Herstellungsartikel umfassend: ein computergeeignetes Medium mit enthaltenem computerlesbarem Code, um zu veranlassen, dass Speicherzuordnungsinformationen erhalten werden, wobei der computerlesbare Programmcode in dem genannten Herstellungsartikel so konfiguriert ist, dass er den genannten Computer veranlasst, die Schritte eines der Verfahren nach den Ansprüchen 1–5 auszuführen.
  7. Vorrichtung zur Erhaltung von Speicherzuordnungsinformationen, die umfasst: ein Computersystem, das einen Prozessor und Speicher umfasst, wobei ein Teil des genannten Speichers als Speicherort-Arena reserviert ist, die einen Deskriptorblock (101) sowie eine Vielzahl von Speicherblöcken umfasst, gekennzeichnet durch den genannten Deskriptorblock, umfassend: eine erste Speicherstelle (107), die einen Wert einer Anzahl von Seiten speichert, die Buckets mit einer ersten Bucket-Größe, instanziiert in einem der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst; eine zweite Speicherstelle (108), die einen zweiten Wert einer Anzahl von Buckets speichert, zugeordnet in einer (112) der genannten Anzahl von Seiten, die Buckets mit der genannten ersten Bucket-Größe, instanziiert in dem einen der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst; und eine dritte Speicherstelle (109), die einen Zeiger zu einer verketteten Liste speichert, die nicht-zugeordnete Buckets in der der genannten Anzahl von Seiten identifiziert, die Buckets mit der genannten ersten Bucket-Größe, instanziiert in dem einen der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst.
  8. Vorrichtung nach Anspruch 7, wobei der Deskriptorblock ferner umfasst: eine vierte Speicherstelle (110), die einen dritten Wert einer Anzahl von Buckets speichert, zugeordnet in einer zweiten (113) der genannten Anzahl von Seiten, die Buckets mit der genannten ersten Bucket-Größe, instanziiert in dem einen der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst; und eine fünfte Speicherstelle (111), die einen zweiten Zeiger zu einer zweiten verketteten Liste speichert, die nicht-zugeordnete Buckets in der zweiten der genannten Anzahl von Seiten identifiziert, die Buckets mit der genannten ersten Bucket-Größe, instanziiert in dem einen der Vielzahl von Speicherblöcken, welcher der genannten ersten Bucket-Größe entspricht, umfasst.
  9. Vorrichtung nach Anspruch 8, wobei der Deskriptorblock ferner umfasst: eine sechste Speicherstelle, die einen vierten Wert einer Anzahl von Seiten speichert, die Buckets mit einer zweiten Bucket-Größe, instanziiert in einem zweiten der Vielzahl von Speicherblöcken, welcher der zweiten Bucket-Größe entspricht, umfasst; eine siebte Speicherstelle, die einen fünften Wert einer Anzahl von Buckets speichert, zugeordnet in einer der genannten Anzahl von Seiten, die Buckets mit einer zweiten Bucket-Größe, instanziiert im zweiten der Vielzahl von Speicherblöcken, welcher der zweiten Bucket-Größe entspricht, umfasst; und eine achte Speicherstelle, die einen dritten Zeiger zu einer dritten verketteten Liste speichert, die nicht-zugeordnete Buckets in der einen der genannten Anzahl von Seiten identifiziert, die Buckets mit der genannten zweiten Bucket-Größe, instanziiert im zweiten der Vielzahl von Speicherblöcken, welcher der zweiten Bucket-Größe entspricht, umfasst.
  10. Vorrichtung nach Anspruch 9, wobei der Deskriptorblock ferner umfasst: eine neunte Speicherstelle, die einen Datenstruktur-Identifizierer (106) speichert.
DE69737709T 1996-06-20 1997-06-09 Verfahren und Vorrichtung für Informationsverarbeitung und Speicherzuordnungsanordnung Expired - Lifetime DE69737709T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/667,839 US6247105B1 (en) 1996-06-20 1996-06-20 Externally identifiable descriptor for standard memory allocation interface
US667839 1996-06-20

Publications (2)

Publication Number Publication Date
DE69737709D1 DE69737709D1 (de) 2007-06-21
DE69737709T2 true DE69737709T2 (de) 2008-01-10

Family

ID=24679866

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69737709T Expired - Lifetime DE69737709T2 (de) 1996-06-20 1997-06-09 Verfahren und Vorrichtung für Informationsverarbeitung und Speicherzuordnungsanordnung

Country Status (4)

Country Link
US (2) US6247105B1 (de)
EP (1) EP0814405B1 (de)
JP (1) JPH1083339A (de)
DE (1) DE69737709T2 (de)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6490609B1 (en) * 1998-01-09 2002-12-03 Sun Microsystems, Inc. Method, apparatus and computer program product for invoking a thread-unaware routine that uses an operation-dependent temporary data structure
JP4486720B2 (ja) * 1999-05-18 2010-06-23 パナソニック株式会社 プログラム変換装置およびプログラム変換方法
US6600493B1 (en) * 1999-12-29 2003-07-29 Intel Corporation Allocating memory based on memory device organization
US7502876B1 (en) 2000-06-23 2009-03-10 Mips Technologies, Inc. Background memory manager that determines if data structures fits in memory with memory state transactions map
US7065096B2 (en) 2000-06-23 2006-06-20 Mips Technologies, Inc. Method for allocating memory space for limited packet head and/or tail growth
US7076630B2 (en) * 2000-02-08 2006-07-11 Mips Tech Inc Method and apparatus for allocating and de-allocating consecutive blocks of memory in background memo management
US7032226B1 (en) 2000-06-30 2006-04-18 Mips Technologies, Inc. Methods and apparatus for managing a buffer of events in the background
US7139901B2 (en) * 2000-02-08 2006-11-21 Mips Technologies, Inc. Extended instruction set for packet processing applications
US7058064B2 (en) * 2000-02-08 2006-06-06 Mips Technologies, Inc. Queueing system for processors in packet routing operations
US7649901B2 (en) * 2000-02-08 2010-01-19 Mips Technologies, Inc. Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing
US20010052053A1 (en) * 2000-02-08 2001-12-13 Mario Nemirovsky Stream processing unit for a multi-streaming processor
US7082552B2 (en) * 2000-02-08 2006-07-25 Mips Tech Inc Functional validation of a packet management unit
US7165257B2 (en) * 2000-02-08 2007-01-16 Mips Technologies, Inc. Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts
US7042887B2 (en) 2000-02-08 2006-05-09 Mips Technologies, Inc. Method and apparatus for non-speculative pre-fetch operation in data packet processing
US7155516B2 (en) * 2000-02-08 2006-12-26 Mips Technologies, Inc. Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory
US7058065B2 (en) * 2000-02-08 2006-06-06 Mips Tech Inc Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing
US7523290B2 (en) * 2000-02-29 2009-04-21 International Business Machines Corporation Very high speed page operations in indirect accessed memory systems
US6401181B1 (en) * 2000-02-29 2002-06-04 International Business Machines Corporation Dynamic allocation of physical memory space
US6757802B2 (en) * 2001-04-03 2004-06-29 P-Cube Ltd. Method for memory heap and buddy system management for service aware networks
US7093097B2 (en) * 2001-11-27 2006-08-15 International Business Machines Corporation Dynamic self-tuning memory management method and system
US7290110B2 (en) 2003-09-11 2007-10-30 International Business Machines Corporation System and method of squeezing memory slabs empty
US7225209B2 (en) * 2003-11-06 2007-05-29 International Business Machines Corporation Computer-implemented method for allocating new additional area for the dataset in storage based on the size of the new additional area wherein if the new area number does not exceed clipping threshold, the size of a new additional area being greater than the size of each previously allocated additional area of the dataset
US7114016B2 (en) * 2003-12-23 2006-09-26 Intel Corporation Page-aware descriptor management
US7624137B2 (en) * 2004-01-05 2009-11-24 International Business Machines Corporation Method and apparatus for scheduling and performing garbage collection in a real-time system with guaranteed space bounds
US7519639B2 (en) * 2004-01-05 2009-04-14 International Business Machines Corporation Method and apparatus for dynamic incremental defragmentation of memory
US7434210B1 (en) * 2004-03-02 2008-10-07 Sun Microsystems, Inc. Interposing library for page size dependency checking
US7350046B2 (en) * 2004-04-02 2008-03-25 Seagate Technology Llc Managed reliability storage system and method monitoring storage conditions
JP4460967B2 (ja) * 2004-07-23 2010-05-12 株式会社東芝 メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法
US7805578B2 (en) * 2005-04-29 2010-09-28 Mtekvision Co., Ltd. Data processor apparatus and memory interface
US7469329B2 (en) * 2006-03-30 2008-12-23 International Business Machines Corporation Methods for dynamically resizing memory pools
KR101376268B1 (ko) * 2006-10-13 2014-03-21 에스케이텔레콤 주식회사 단말기의 메모리 할당 장치 및 방법
US8478932B2 (en) * 2008-09-15 2013-07-02 Texas Instruments Incorporated Power efficient memory management for embedded systems
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US8515965B2 (en) * 2010-05-18 2013-08-20 Lsi Corporation Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
US8650538B2 (en) 2012-05-01 2014-02-11 Concurix Corporation Meta garbage collection for functional code
US8726255B2 (en) 2012-05-01 2014-05-13 Concurix Corporation Recompiling with generic to specific replacement
US9417935B2 (en) 2012-05-01 2016-08-16 Microsoft Technology Licensing, Llc Many-core process scheduling to maximize cache usage
US8595743B2 (en) 2012-05-01 2013-11-26 Concurix Corporation Network aware process scheduling
US9047196B2 (en) 2012-06-19 2015-06-02 Concurix Corporation Usage aware NUMA process scheduling
US8700838B2 (en) 2012-06-19 2014-04-15 Concurix Corporation Allocating heaps in NUMA systems
US8707326B2 (en) 2012-07-17 2014-04-22 Concurix Corporation Pattern matching process scheduler in message passing environment
US9575813B2 (en) 2012-07-17 2017-02-21 Microsoft Technology Licensing, Llc Pattern matching process scheduler with upstream optimization
US9043788B2 (en) 2012-08-10 2015-05-26 Concurix Corporation Experiment manager for manycore systems
US9195578B2 (en) 2012-08-24 2015-11-24 International Business Machines Corporation Systems, methods and computer program products memory space management for storage class memory
US8656134B2 (en) 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed on executing code
US8607018B2 (en) 2012-11-08 2013-12-10 Concurix Corporation Memory usage configuration based on observations
US8656135B2 (en) 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed prior to execution
US9665474B2 (en) 2013-03-15 2017-05-30 Microsoft Technology Licensing, Llc Relationships derived from trace data
US9880761B2 (en) 2015-12-28 2018-01-30 International Business Machines Corporation Restorable memory allocator
US10310736B1 (en) * 2016-12-22 2019-06-04 Veritas Technologies Llc Systems and methods for storing data
US11036694B2 (en) * 2017-03-15 2021-06-15 Vmware, Inc. Propagating affinity data to large file block clusters in a file system
CN107140661B (zh) * 2017-06-08 2019-03-29 云南欧罗汉姆肥业科技有限公司 一种闪蒸降温生产硝酸钾的方法
US11216315B2 (en) * 2018-02-21 2022-01-04 Rubrik, Inc. Distributed semaphore with a different keys to reduce contention for dynamic reservation of disk space

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1014671A (en) * 1973-04-23 1977-07-26 Robert E. Hutton Initializer for allocating free areas of a computer's memory
US4695949A (en) * 1984-07-19 1987-09-22 Texas Instruments Incorporated Method for efficient support for reference counting
US5101485B1 (en) * 1989-06-29 1996-12-10 Frank L Perazzoli Jr Virtual memory page table paging apparatus and method
JPH0774984B2 (ja) * 1991-06-10 1995-08-09 インターナショナル・ビジネス・マシーンズ・コーポレイション システム資源利用率測定方法とデータ処理システム
US5680582A (en) * 1991-12-20 1997-10-21 Microsoft Corporation Method for heap coalescing where blocks do not cross page of segment boundaries
US5613105A (en) * 1993-06-30 1997-03-18 Microsoft Corporation Efficient storage of objects in a file system

Also Published As

Publication number Publication date
EP0814405A3 (de) 1999-01-13
US20010039607A1 (en) 2001-11-08
JPH1083339A (ja) 1998-03-31
DE69737709D1 (de) 2007-06-21
US6247105B1 (en) 2001-06-12
EP0814405A2 (de) 1997-12-29
EP0814405B1 (de) 2007-05-09
US6542978B2 (en) 2003-04-01

Similar Documents

Publication Publication Date Title
DE69737709T2 (de) Verfahren und Vorrichtung für Informationsverarbeitung und Speicherzuordnungsanordnung
DE4218025C2 (de) Vorrichtung und Verfahren zur automatischen Zuordnung von Datenspeichereinrichtungen in einem Computersystem
DE69930855T2 (de) Verfahren und vorrichtung zur durchführung einer deterministischen speicherzuordnungsantwort in einem computer-system
DE60034170T2 (de) Protokoll zum Koordinieren der Verteilung von gemeinsamem Speicher
DE60016283T2 (de) Arbeitsbelastungsverwaltung in einer rechnerumgebung
EP1393184B1 (de) Vorrichtung und verfahren zum ermitteln einer physikalischen adresse aus einer virtuellen adresse unter verwendung einer hierarchischen abbildungsvorschrift mit komprimierten knoten
DE69722979T2 (de) Betriebsmittelverwaltungsverfahren und -einrichtung eines Multitasking-Datenverarbeitungssystems
DE69834087T2 (de) Verfahren und Gerät zur Vorverarbeitung und Verpackung von Klassendateien
DE102005022893B3 (de) Verfahren zum Zugreifen auf Speicherbereiche einer Speicherkarte durch eine anfordernde Anwendung und Speicherkarte
DE60015395T2 (de) Speicher, der zwischen verarbeitenden threads geteilt ist
DE3716229C2 (de) Mikroprozessorchip mit einem Stapelrahmen-Cache
DE69818103T2 (de) Anrufmechanismus für statisch und dynamisch verknüpfte funktionen in einer objektorientierten steuerung unter verwendung von heterogenen entwicklungsumgebungen
DE112008001126B4 (de) Verschleißausgleich
DE202010017665U1 (de) Datenverteilung bei einer Datenspeichervorrichtung mit Flash-Speicherchips
DE3940302C2 (de)
DE112007002201T5 (de) Quality-of-Service-Implementierung für Plattformressourcen
DE112018006769T5 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE10006417A1 (de) Computersystem mit Einzelverarbeitungsumgebung für die Ausführung von mehreren Anwendungsprogrammen
DE19600428C2 (de) Vorrichtung und Verfahren zum Reduzieren eines durch einen Prozeß verwendeten tatsächlichen Arbeitssatzes eines Prozesses in einem Computersystem mit virtuellem Speicher
DE10234138A1 (de) Verwalten einer Speicherkonkurrenz bei automatisierten Speichersystemen
DE102018107860A1 (de) System und Verfahren zum Zugriff auf Daten in einem Mehrkern-Verarbeitungssystem, um Zugriffe auf externe Speicher zu verringern
DE112019005043T5 (de) Streamzuweisung unter verwendung von stream-guthaben
DE102005048729B4 (de) Verfahren und Systeme zum Defragmentieren eines Teilnetzraums innerhalb einer adaptiven Infrastruktur
DE112014001815T5 (de) Eingebetteter Speicher mit Managementschema für Echtzeit-Applikationen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition