DE102004036323A1 - Erweiterte Speicherverwaltungsarchitektur für große Datenumfänge - Google Patents

Erweiterte Speicherverwaltungsarchitektur für große Datenumfänge Download PDF

Info

Publication number
DE102004036323A1
DE102004036323A1 DE102004036323A DE102004036323A DE102004036323A1 DE 102004036323 A1 DE102004036323 A1 DE 102004036323A1 DE 102004036323 A DE102004036323 A DE 102004036323A DE 102004036323 A DE102004036323 A DE 102004036323A DE 102004036323 A1 DE102004036323 A1 DE 102004036323A1
Authority
DE
Germany
Prior art keywords
memory
data
physical memory
applications
data buffer
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.)
Ceased
Application number
DE102004036323A
Other languages
English (en)
Inventor
Gianluca Paladini
Thomas Moeller
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.)
Siemens Medical Solutions USA Inc
Original Assignee
Siemens Corporate Research 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 Siemens Corporate Research Inc filed Critical Siemens Corporate Research Inc
Publication of DE102004036323A1 publication Critical patent/DE102004036323A1/de
Ceased 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

Abstract

Ein Speicherverwaltungssystem, beinhaltend eine Auslagerungseinheit 203 zum Auslagern der Paging-Dateien, eine prioritätsverbundene Liste 206, die mit der Auslagerungseinheit gekoppelt ist, wobei Knoten der prioritätsverbundenen Liste mit den Paging-Dateien der Auslagerungseinheiten verbunden sind, und einen virtuellen Speicherbereich 201, beinhaltend eine Vielzahl von Datenpuffern, wobei jeder Datenpuffer zu einem einzelnen Knoten der prioritätsverbundenen Liste gekoppelt ist.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung:
  • Die vorliegende Erfindung bezieht sich auf Datenverarbeitung und insbesondere auf ein virtuelles Speicherverwaltungssystem und -verfahren zur Bearbeitung großer Datenvolumina.
  • Anwendungen zur Visualisierung dreidimensionaler Volumendaten verwenden speicherintensive Verfahren, wie zum Beispiel Ray-Casting, Splatting und Shear-Warp. Die durch diese Verfahren visualisierten Volumendaten können von medizinischen tomographischen Scannern, wie zum Beispiel Magnetresonanz (MR), Computertomographie (CT), Positronen-Emissions-Tomographie (PET) oder jedem anderen System, das zur Erzeugung einer Reihe von Schichten in einer gitterartigen Anordnung geeignet ist, erhalten werden. Viele Volumenvisualisierungsverfahren, die eingeführt wurden, verwenden einen programmierten Computer und beruhen auf dem virtuellen Speicher- und virtuellen Pagingsystem des Computers zum Speichern und Aufrufen der Schichtdaten. Derzeit erhältliche Personal-Computer verwenden typischerweise Operationssysteme wie zum Beispiel Windows NT, Windows XP, Unix oder Linux. Derartige Operationssysteme gebrauchen Verfahren der virtuellen Speicheradressierung und des virtuellen Pagings. Die Leistung der virtuellen Speicheradressierung und des virtuellen Pagings in einem programmierten Computer reduziert sich beträchtlich, wenn der Speicher einer sehr großen Anzahl an Schichten eines großen dreidimensionalen Volumens zugeordnet ist und der zugeordnete Gesamtspeicher größer als der verfügbare Arbeitsspeicher (RAM) des programmierten Computers, ebenso bekannt als physikalischer Speicher, ist. Solch ein Abfall in der Leistung von virtueller Speicheradressierung und virtuellem Pagings verursacht außerdem einen umfangreichen Leistungsabfall der Volumenvisualisierungsverfahren.
  • Speicherbegrenzungen sind durch neueste technologische Fortschritte auf dem Gebiet der tomographischen Abbildung erschwert worden, welche die Raumauflösung und Geschwindigkeit der Datenerfassung verbessert haben, was in der Erzeugung von sehr großen Datensätzen, die aus Hunderten und sogar Tausenden von Schichten bestehen, resultiert. Es ist zum Beispiel möglich, eine Sequenz von 1024 Schichten durch Verwendung des Siemens SOMATOM VolumeZoomTM-CT-Scanner schnell zu erzeugen, wobei jede Schicht ein Raster von 512 × 512 Bildelementen enthält, was in einem dreidimensionalen Volumen von 512 × 512 × 1024 Volumenelementen (über 268 Millionen Datenwerte) resultiert. In der Öl- und Benzinindustrie werden seismische Datenmessungen ebenfalls in sehr großen dreidimensionalen Volumina mit nicht weniger als 2048 × 2048 × 2048 Rasterelementen (über 8,5 Milliarden Datenwerte) gespeichert. Diese Datentypen können größer sein als der in modernen Computern zur Verfügung stehende Arbeitsspeicher (RAM). Einige dreidimensionale Arrays können so groß sein, dass ihre Größe das Speicheradressierungsvermögen von 32-Bit-Prozessoren (CPU), welche in vielen Personal-Computern und Graphik-Workstations vorkommen und welche typischerweise auf ein Maximum vom 4,2 Milliarden Datenelementen begrenzt sind, übersteigt.
  • Eine Einschränkung von konventionellen virtuellen Paging-Verfahren nach dem Stand der Technik ist, dass sie für universelle Zwecke konstruiert wurden und ihre Leistung nicht für die Bearbeitung einer großen Anzahl von Schichten eines dreidimensionalen Volumens effizient optimiert ist. Wenn der Ar beitsspeicher eines Computers mit zu vielen Schichten-Puffer überlastet wird, steigt die Wahrscheinlichkeit, dass das virtuelle Paging-System seitenweise in Disk-Abschnitte der Schichtspeicherpuffer auslagern wird, die kurz danach durch das Volumenvisualisierungsverfahren benötigt werden können, und einen fortlaufenden seitenweise Ein-/Auslagerungseffekt verursachen kann, der die Verarbeitungsleistung des Computers erheblich reduziert. Dieses Problem ist allgemein bekannt als „Disk Thrashing".
  • Der Windows XP Virtual Memory Manager zum Beispiel beginnt das Paging des Speichers zur Disk erst, wenn der gesamte physikalische Speicher aufgebraucht ist (zum Beispiel, wenn kein weiterer Speicher verfügbar ist). Unter solchen Geringen-Speicher-Bedingungen werden alle Anwendungen höchst unempfindlich, weil das Betriebssystem mit dem Paging von Speichersegmenten von und zur Disk beschäftigt ist. Da jedes seitenweise ausgelagerte Segment nur 64 Kilobyte groß ist, dauert es eine Weile, bis sich der Computer von den Geringen-Speicher-Bedingungen erholt hat.
  • Ferner hat der Windows XP Virtual Memory Manager keine Kenntnisse darüber, welche Abbildungsdatenpuffer gerade aktuell verwendet werden und welche nicht, und folglich versucht er sie alle im Speicher zu behalten, bis der gesamte physikalische Speicher gesättigt ist. Während die Abbildungsdaten seitenweise zur Disk umgelagert werden, hat er keine Kenntnisse darüber, ob diese Daten schon bald wieder benötigt werden, was folglich sehr ineffizient sein kann.
  • Eine andere Einschränkung ist die virtuelle Speicheradressierungsfähigkeit der 32-Bit-CPUs, welche etwa 4,2 Milliarden Byte Elemente adressieren. In einigen virtuellen Speicherad ressierungssystemen ist eine der 32 Adress-Bits für den Kernelspeicher des Betriebssystems reserviert und folglich reduziert sich der verbleibende Adressbereich, der für die virtuelle Speicherbelegung bereitsteht, auf die Hälfte, das ist ungefähr 2,1 Milliarden Byte Elemente. Demnach kann die Größe des virtuellen Speichers überschritten werden: Ein dreidimensionales Volumen von seismischen Daten mit 2048 Schichtenpuffer mit jeweils 2048 × 2048 Rasterelementen zum Beispiel würde über 8,5 Milliarden Byte Elemente von Speicher benötigen, was die virtuellen Speicheradressierungsressourcen eines 32-Bit-CPU übersteigt. Falls mehrere große Volumina verteilt werden müssen, wird die begrenzte Anzahl an virtuellen Speicheradressen für Schichtpuffer ebenso problematisch werden.
  • Wie oben gezeigt, ist es für Computer aufgrund des begrenzten Umfangs an physikalischem Speicher, begrenztem virtuellen Adressbereich und Unwirksamkeiten im virtuellen Speichermanagement und Auslagerungsdatei des Betriebssystems schwierig, Anwendungen, die große Datenvolumina verarbeiten, zu versorgen.
  • Folglich besteht ein Bedarf an einem effizienten Speicherverwaltungsverfahren zur Bearbeitung großer Datenvolumina.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Gemäß eines Ausführungsbeispiels der vorliegenden Erfindung beinhaltet ein Verfahren des Verwaltens eines Speichersystems für große Datenvolumina ein zentrales Speicherverwaltungssystem, das eine Schnittstelle zwischen einer Vielzahl von Anwendungen und dem physikalischen Speicher eines programmierten Computers bereitstellt.
  • Das Verfahren beinhaltet weiter das Pflegen einer allgemeinen Prioritätsliste der Speicherpuffer, zugeordnet durch eine Vielzahl von Anwendungen als eine verknüpfte Liste, wobei die Liste danach sortiert ist, wann jeder Puffer zuletzt durch eine Anwendung angesteuert wurde. Die Prioritätsliste bildet Daten von dem Ablageeinheitt zu den Puffern eines virtuellen Speichers ab, wobei die Puffer des virtuellen Speichers seitenweise in den physikalischen Speicher, wie sie durch die Vielzahl von Anwendungen angefordert werden, eingelagert werden.
  • Das Verfahren beinhaltet das Bestimmen einer unteren physikalischen Speichergrenze und das Überwachen des Umfangs an verwendbarem physikalischen Speicher und nach der Feststellung, dass der verwendbare physikalische Speicher unterhalb der untere physikalische Speichergrenze gefallen ist, das seitenweise Auslagern der zuletzt Zeit am wenigstens verwendeten Schichtpuffer aus dem physikalischen Speicher durch die Speicherverwaltungsschnittstelle, was den verwendbaren physikalischen Speicher auf über eine festgelegte obere physikalische Speichergrenze erhöht.
  • Das Verfahren beinhaltet weiter das Bestimmen eines ungenutzten Datenpuffers in einem virtuellen Adressraum des Speichersystems gekoppelt mit dem physikalischen Speicher, das Kennzeichnen des ungenutzten Datenpuffers und das Wiederherstellen eines virtuellen Adressraums durch Unmapping der ungenutzten Datenpuffer von dem virtuellen Adressraum nach dem Erkennen, dass ein programmierter Computer mehr virtuellem Speicher zuordnet als ein Computerprozessor adressieren kann.
  • Das Verfahren beinhaltet weiter das Teilen von Datenpuffer, die im physikalischen Speicher abgelegt sind, durch die Spei cherverwaltungsschnittstelle unter einer Vielzahl von Anwendungen, wobei die Datenpuffer gemeinsame Daten (shared data) enthalten, und das Bestimmen der Prioritätsliste von Puffern, die durch die Vielzahl von Anwendungen angesteuert werden, wobei die Prioritätsliste die Datenpuffer zu einer Ablageeinheit abbildet.
  • Das Verfahren beinhaltet das eindeutige Identifizieren eines vorgegebenen Datenpuffers gemäß der enthaltenen gemeinsamen Daten (shared data), wobei eine Erzeugungsanwendung, die den vorgegebenen Datenpuffer erzeugt, eine Kennung zuordnet, und das Bestimmen, ob die Kennung vorher zu einem Gemeinsamen-Daten-Puffer zugeordnet gewesen ist und nach dem Bestimmen, dass die Kennung bereits in dem physikalischen Speicher existiert, das Zuganggeben der Erzeugungsanwendung zu dem Gemeinsamen-Daten-Puffer.
  • Das Verfahren beinhaltet das Adressieren eines Objekts, das auf einen Datenpuffer in einem zentralen Speicherverwaltungssystem direkt anhand einer Speicheradresse innerhalb einer Anwendung, die das zentrale Speicherverwaltungssystem benutzt, zeigt, und das Validieren der Speicheradresse durch Verwendung eines Schlüssels, wobei der Schlüssel eine eindeutige Information enthält und sowohl einem Sender als auch einem Empfänger des Objekts bekannt ist. Das Verfahren beinhaltet das Bereitstellen eines eindeutigen Handle, das Kombinieren der Speicheradresse und des Handle in einem Fast-Retrieval-Handle, das Teilen des Fast-Retrieval-Handle unter zwei oder mehr Anwendungen und das Bestimmen, ob ein durch das Schnelle Fast-Retrieval-Handle identifizierte Objekt nach dem Ansteuern des Objekts gültig ist.
  • Das Pflegen der allgemeinen Prioritätsliste beinhaltet weiter das Hinzufügen eines Objekts zur allgemeinen Prioritätsliste entsprechend einem Datenpuffer nach dem Erzeugen des Datenpuffers und das Entfernen des Objekts von der allgemeinen Prioritätsliste nach dem Bestimmen des Datenpufferzeigers entsprechend dem Objekt, das gelöscht wurde, wobei das Vorgängerobjekt des Objekts und Nachfolgerobjekt in der allgemeinen Prioritätsliste vorrangig verbunden sind, um das Objekt zu entfernen. Das Pflegen der Liste beinhaltet weiter das Verschieben des Objekts an ein Ende der Liste nach dem Bestimmen, dass das Objekt Anwendung findet, wobei das Objekt am Ende der allgemeinen Prioritätsliste weniger wahrscheinlich ist, ausgelagert zu werden als ein Objekt am Anfang der allgemeinen Prioritätsliste. Verfahren beinhaltet das Benachrichtigen der Vielzahl von Anwendungen über einer Pufferadressänderung durch Speicherunmapping oder Mappingoperationen.
  • Gemäß eines Ausführungsbeispiels der vorliegenden Erfindung beinhaltet ein Speicherverwaltungssystem eine oder mehrere Ablageeinheiten zum Ablegen der Paging-Dateien, eine prioritätsverbundene Liste (priority linked-list) gekoppelt an die Ablageeinheiten, wobei Knoten der prioritätsverbundenen Liste mit den Paging-Dateien der Ablageeinheiten verknüpft sind, und ein virtueller Speicherraum, der eine Vielzahl von Datenpuffer beinhaltet, wobei jeder Datenpuffer mit einem einzigen Knoten der prioritätsverbundenen Liste gekoppelt ist.
  • Gemäß eines Ausführungsbeispiels der vorliegenden Erfindung ist ein Speicherverwaltungssystem entweder mit einer Vielzahl von Anwendungen direkt verbunden oder an einen zentralen Abbildverarbeitungsserver gekoppelt, welcher wiederum eine Schnittstelle zwischen mindestens einer Anwendung und dem Speicherverwaltungssystem bereitstellt.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachstehend mit Bezug auf die beiliegenden Zeichnungen im Detail beschrieben:
  • 1 ist eine schematische Darstellung, die typische Anwendungsfälle zeigt, die die Speicherverwendung einer abbildverarbeitenden Anwendung betreffen;
  • 2 ist eine schematische Darstellung, die eine Beziehung zwischen physikalischem, virtuellem und Festplattenspeicher sowie deren Verwaltung durch eine prioritätsverbundene Liste mit einem Speicherverwaltungssystem gemäß eines Ausführungsbeispiels der vorliegenden Erfindung veranschaulicht;
  • 3 ist eine schematische Darstellung eines Systems gemäß eines Ausführungsbeispiels der vorliegenden Erfindung;
  • 4 ist eine schematische Darstellung eines Systems, das gemäß eines Ausführungsbeispiels der vorliegenden Erfindung eine Speicherverwaltung ausführt;
  • 5 ist eine Darstellung einer Anwendungsserverarchitektur gemäß eines Ausführungsbeispiels der vorliegenden Erfindung;
  • 6 ist eine schematische Darstellung eines Speicherverwaltungssystems für eine Vielzahl von Anwendungen gemäß eines Ausführungsbeispiels der vorliegenden Erfindung;
  • 7 ist eine schematische Darstellung eines Speicherverwaltungssystems für eine Vielzahl von Anwendungen gemäß eines Ausführungsbeispiels der vorliegenden Erfindung; und
  • 8 ist eine schematische Darstellung eines Fast-Retrieval-Handle, das Objektadresse und System-Speichermapping-Handle, welches im Ausführungsbeispiel von einem Zentralbetrieb-Speicherverwaltungssystem gemäß eines Ausführungsbeispiels der vorliegenden Erfindung genutzt wird, kombiniert.
  • DETAILIERTE BESCHREIBUNG VON BEVORZUGTEN AUSFÜHRUNGSBEISPIELEN
  • Gemäß eines Ausführungsbeispiels der vorliegenden Erfindung wird der Computerspeicher effizient verwaltet, wobei der Speicher einem Datenvolumen zugeordnet ist. Ein Verfahren des Speicherverwaltens ist als Beispiel hinsichtlich einer Abbildungsanwendung für die Ablage und Visualisierung von zweidimensionalen Schichten und dreidimensionalen Volumina, die solche Schichten enthalten, offenbart. Bezugnehmend auf 2 sind eine Reihe von Speicherpuffer 201 jeder zweidimensionalen Schicht zugeordnet. Die in jedem Speicherpuffer enthaltenen Daten können beispielsweise von medizinischen tomographischen Scannern erhalten werden, wie z. B. Magnetresonanz (MR), Computertomographie (CT), Positronen-Emissions-Tomographie (PET) oder jeder anderen Vorrichtung, die eine Reihe von Schichten in einem gitterartigen Array erzeugen kann. Jeder Speicherpuffer oder Schichtpuffer hat seine eigenen virtuellen Paging-Dateien, z. B. 202, welche von oder in eine Auslagerungseinheit 203 seitenweise ein- bzw. ausgelagert werden können. Die Auslagerungseinheit kann beispielsweise eine magnetische Festplatteneinheit sein. Ein Speicherverwalter 204 kann mehrere virtuelle Paging-Dateien in mehreren Auslagerungseinheiten, z. B. 205, erzeugen und ansteuern, was die Auslagerungskapazität eines programmierten Computers, der den Speicherverwalter 204 ausführt, maximiert.
  • Gemäß eines Ausführungsbeispiels der vorliegenden Erfindung wird die effektive Leistung eines existierenden virtuellen Speicher-Paging-Systems und magnetischen Festplattenvorrichtung des programmierten Computers verbessert, indem eine allgemeine verbundene Liste 206 eingesetzt wird, die die zuletzt am meisten und die zuletzt am wenigsten verwendeten zweidimensionalen Schichtpuffer 201 beobachtet. Wenn der programmierte Computer die Daten eines Schichtpuffers ansteuert, stellt der Speicherverwalter 204 fest, ob ein nutzbarer Umfang an Arbeitsspeicher (RAM) 207 des programmierten Computers unter eine festgelegte untere Grenze gefallen ist. Wenn ja, wird eine Reihe von zuletzt am wenigsten verwendeten Speicherpuffern seitenweise in die Auslagerungseinheit, z. B. eine Festplatteneinheit, ausgelagert, bis ein festgelegter Umfang an verwendbarem RAM wiederhergestellt ist. Folglich ist der Computerspeicher davor geschützt überlastet zu werden und ermöglicht die effiziente Visualisierung von dreidimensionalen Volumina, die eine sehr große Anzahl von Schichten beinhalten.
  • Anwendungen, die große Datenumfänge verarbeiten, können mehr Ressourcen von dem programmierten Computer anfordern, als es für den effizienten Betrieb zweckmäßig ist. Abbildverarbeitende Anwendungen bestehen z. B., um einem Nutzer zu ermöglichen, jede gewünschte Anzahl an Raster- und Bitplane-Objekten von verschiedenen Größen zu erzeugen. Eine große Anzahl von diesen Objekten kann schnell den gesamten zur Verfügung stehenden physikalischen Speicher (z. B. RAM-Speicher) verbrauchen, was einen virtuellen Speicherverwalter, wie z. B. den Windows XP Virtual Memory Manager, erzwingt, um gleichmäßig Speichersegmente zur Disk auszulagern, was die Systemleistung bedeutend herabsetzt. Gemäß eines Ausführungsbeispiels der vorliegenden Erfindung verhindert das Anwenden einer Speicherverwaltungsarchitektur für die Zuordnung von Speicherpuffern Niedrige-Speicher-Bedingungen und erhält ein wünschenswertes Niveau von Leistung und Interaktivität. Die Speicherverwaltungsarchitektur kann mit jedem Objekttyp ausgeführt werden. Objekttypen können Gruppierung, Abhängigkeiten/Beziehungen, Benachrichtigungen oder andere Funktionalitäten auf hoher Ebene aufweisen.
  • Es versteht sich, dass die vorliegende Erfindung in verschiedener Arten von Hardware, Software, Firmware, Prozessoren für Spezialzwecke oder einer Kombination hiervon implementiert werden kann. In einem Ausführungsbeispiel kann die vorliegende Erfindung in Software als ein Anwendungsprogramm, das greifbar auf einer Programmauslagerungseinheit verkörpert ist, implementiert sein. Das Anwendungsprogramm kann auf ein Gerät, das aus einer passenden Architektur besteht, hochgeladen und ausgeführt werden.
  • Bezugnehmend auf 3 gemäß eines Ausführungsbeispiels der vorliegenden Erfindung kann ein Computersystem 301 zur Ausführung der vorliegenden Erfindung unter anderem eine zentrale Verarbeitungseinheit (CPU) 302, einen Speicher 303 und eine Eingabe/Ausgabe-(I/O)Schnittstelle 304 enthalten. Das Computersystem 301 ist üblicherweise durch die I/O-Schnittstelle 304 an ein Display 305 und verschiedenen Eingabeeinheiten 306, wie z. B. Maus und Tastatur, gekoppelt. Die Unterstützungsschaltungen können Schaltungen, wie z. B. Cache, Spannungsversorgungen, Taktschaltungen und einen Kommunikationsbus, umfassen. Der Speicher 103 kann Arbeitsspeicher (RAM), nur Lese-Speicher (ROM), Plattenlaufwerk, Bandlaufwerk etc. oder eine Kombination hiervon umfassen. Die vorliegende Erfindung kann als eine Routine 307, die im Speicher 303 gespeichert ist und durch die CPU 302 ausgeführt wird, um das Signal von der Signalquelle 308 zu verarbeiten, ausgeführt werden. Dadurch ist das Computersystem 301 ein Mehrzweck-Computersystem, das ein Computersystem mit spezifischem Zweck wird, wenn die Routine 307 der vorliegenden Erfindung abgearbeitet wird.
  • Die Computerplattform 301 beinhaltet auch ein Betriebssystem und einen Mikrobefehlscode. Die hierin beschriebenen verschiedenen Prozesse und Funktionen können entweder ein Teil des Mikrobefehlscodes oder ein Teil des Anwendungsprogramms (oder einer Kombination hiervon) sein, welcher durch das Betriebssystem abgearbeitet wird. Darüber hinaus können verschiedene andere Peripherieeinheiten an die Computerplattform angeschlossen werden, wie z. B. eine zusätzliche Datenspeichereinheit und eine Druckeinheit.
  • Es ist weiter selbstverständlich, dass, da einige der in den beiliegenden Figuren beschriebenen einzelnen Systemkomponente und Verfahrensschritte in Software implementiert werden können, die eigentliche Verbindung zwischen den Systemkomponenten (oder den Prozessschritten) abhängig von der Art, in der die vorliegende Erfindung programmiert ist, abweichen kann. Durch die hierin gegebene Lehre der vorliegenden Erfindung wird jemand mit durchschnittlicher Kenntnis im zugehörigen Fachgebiet in der Lage sein, diese und ähnliche Ausführungen oder Gestaltungen der vorliegenden Erfindung zu betrachten.
  • Bezugnehmend auf 4 kann ein Speicherverwaltungssystem 401 mehrere Anwendungen (402, 404, 405) gleichzeitig unterstützen. Das heißt, das Speicherverwaltungssystem 401 betreut mehrere Instanzen einer Speicherbibliothek. Die Anwendungen können sich direkt mit dem Speicherverwaltungssystem 401 und/oder durch ein anderes Layer, wie z. B. einen Bibliothekserver 403, anschließen lassen.
  • Ein Verfahren des Verwaltens eines Speichersystems beinhaltet das Teilen von Datenpuffern, die in einem physikalischen Speicher mitten unter einer Vielzahl von Anwendungen gespeichert sind, wobei die Datenpuffer gemeinsame Daten (shared data) enthalten. Der Speicherverwalter hat Kenntnis von allen Gemeinsamen-Daten-Puffern, die in dem physikalischen Speicher abgelegt sind. Das Verfahren beinhaltet das Identifizieren eines vorgegebenen Datenpuffers gemäß der enthaltenen gemeinsamen Daten, wobei eine Erzeugungsanwendung, die den vorgegebenen Datenpuffern nachfolgen, eine Kennung erstellt. Die Kennung ist auf die Daten des Datenpuffers beschränkt; folglich wird dies selbe Kennung generiert werden, wenn zwei Anwendungen versuchen, einen Datenpuffer für die selben Daten zu erzeugen. Das Verfahren beinhaltet das Feststellen, ob die Kennung vorher zu einem Gemeinsamen-Daten-Puffer zugeordnet worden war und danach das Feststellen, dass die Kennung bereits in dem physikalischen Speicher existiert, was der Erzeugungsanwendung Zugang zu den Gemeinsamen-Daten-Puffer gibt.
  • Gemäß eines Ausführungsbeispiels der vorliegenden Erfindung wird ein Speicherabbild-Objekttyp und ein Speicherverwalter-Objekttyp bereitgestellt.
  • Das Speicherabbildobjekt ordnet Speicher durch Verwenden eines speicherabgebildeten Puffers zu. Speicherabgebildete Puffer können wie jeder andere Speicherpuffer verwendet werden, z. B. mit Malloc- oder New-Funktionen der Programmiersprache „C" zugeordnet werden, aber speicherabgebildete Puffer bieten außerdem andere Vorteile.
  • Anstatt durch die vorgegebene Auslagerungsdatei des Betriebssystems unterstützt zu werden, wird jeder speicherabgebildete Puffer durch eine temporäre Paging-Datei unterstützt, welche programmatisch spezifiziert werden kann. Das macht es möglich, mehr Speicher zuzuordnen, als in eine typische Auslagerungsdatei des Betriebssystems passen könnte. Die Speicherabbildobjekte ermöglicht den temporären Dateien auch, auf verschiedenen Disks erzeugt zu werden, wobei der gesamte zugeordnete Speicher so hoch wie die Summe des gesamten, auf mehreren Disks verfügbaren freien Speicherplatz, z. B. mehrere Gigabytes, sein kann.
  • Ein speicherabgebildeter Puffer kann zwischen verschiedenen Prozessen und/oder Anwendungen geteilt werden. Das ist wichtig für den Transfer von Daten zwischen Prozessen in einer Client-Server-Architektur, vgl. hierzu 5, ohne zusätzliche Kopien der Daten erstellen zu müssen.
  • Im Gegensatz zu anderen Speicherpuffern (z. B. die mit Malloc oder New zugeordnet sind) können speicherabgebildete Puffer gemäß eines Ausführungsbeispiels der vorliegenden Erfindung programmatisch aus dem physikalischen Speicher ausgelagert werden.
  • Bezugnehmend nochmals auf das Abbildanwendungsbeispiel, wenn Raster- oder Bitplane-Objekte erzeugt werden, werden intern die Abbilddaten in einer Instanz des Speicherabbildobjekttyps abgelegt, welcher einen speicherabgebildeten Abbildpuffer zuordnet. Eine Reihe von Konfigurationsparametern (z. B. durch ein Betriebssystem bereitgestellt) ermöglichen die Festlegung von Parametern, wie z. B. wieviele Disks zum Speicherabbilden verwendet werden sollten, wieviel Platz kann auf jeder Disk verwendet werden und der Pfadname, wo die temporären Paging-Dateien erzeugt werden sollten.
  • Eine Instanz des Speicherverwalterobjekts ist verantwortlich für die Überwachung des verfügbaren freien physikalischen Speichers und für das Auslagern der zuletzt am wenigsten genutzten speicherabgebildeten Puffer zur Disk, wenn allmählich die Niedrigen-Speicher-Bedingungen erreicht werden. Daher kann die Speicherverwaltereinheit beobachten, welche Abbildpuffer aktuell gerade verwendet werden und welche Abbildpuffer zuletzt gerade nicht verwendet wurden. Durch Nutzen der Kenntnisse über die aktiven und/oder inaktiven Puffer, kann die Speicherverwaltereinheit auswählen, welche Puffern zur Disk ausgelagert werden sollten, was eine größere Paging-Effizienz bietet als durch die Verwendung des Windows NT virtuellen Speicherverwalters z. B. erreicht werden kann.
  • Die Speicherverwaltereinheit kann einen vollständig speicherabgebildeten Abbildpuffer auf einmal zur Disk auslagern, was zusätzlich freien physikalischen Speicher liefert.
  • Die Speicherverwaltereinheit kann das auslagern fortsetzen, bis eine gewünschte Speichergröße, z. B. mehrere Megabytes, zur Disk ausgelagert worden sind. Folglich kann die Zeitspanne zwischen Niedrigen-Speicher-Bedingungen vergrößert werden.
  • Die Speicherverwaltereinheit kann speicherabgebildete Puffer von dem physikalischen Speicher auslagern, bevor der gesamte Speicher gesättigt ist, wodurch ausreichend Speicher erhalten bleibt, so dass die Anwendungen eine wünschenswerte Antwortzeit haben.
  • Eine Reihe von Konfigurationsparametern ermöglicht die Festlegung eines Mindestumfangs an freiem physikalischen Speicher, bevor die Puffer ausgelagert werden, und eines Umfangs an physikalischem Speicher, der nach dem Auslagern der Puffer wiederhergestellt ist.
  • Bezugnehmend auf 5 beinhaltet die Speicherverwaltereinheit 501 eine verbundene Liste 502 von allen Speicherabbildeinheiten 503 und 504, die durch die Abbildverarbeitungsanwendung(en) des Clients erzeugt wurden. Die verbundene Liste 502 ist in einer sortierten Anordnung geführt, so dass die zuletzt am wenigsten genutzten Puffer immer zu Beginn der Liste gefunden werden können (z. B. Elemente, die zuerst geleert werden sollten), während die zuletzt am meisten verwendeten Puffer am Ende der Liste gefunden werden (z. B. Elemente, die zuletzt geleert werden sollten).
  • Verfahren zum Bewahren verbundener Listen in sortierter Anordnung sind hoch effizient und brauchen wenig Oberhead. Die verbundene Liste braucht nicht durch eine Sortierfunktion umgestaltet werden, die einzigen eingebundenen Funktionen sind das Hinzufügen oder Umsetzen der Elemente an das Ende der Liste. Die verkettete Liste bleibt durch die Einführung der folgenden Prozeduren sortiert erhalten:
    • – Wann immer ein Abbildpuffer erzeugt wird, fügt sich eine neu zugeordnete Speicherabbildeinheit selbst an das Ende der Liste hinzu, bis sie wahrscheinlich bald verwendt wird.
    • – Wann immer ein Abbildpufferzeiger gelöscht ist, entfernt sich seine zugehörige Speicherabbildeinheit selbst von der Liste und verbindet seine Vorgängerverknüpfung mit seiner Nachfolgerverknüpfung. Folglich braucht die Liste nicht durchlaufen zu werden, wenn ein Element gelöscht wird.
    • – Wann immer ein Abbildpuffer dran ist genutzt zu werden, versetzt sich seine zugehörige Speicherabbildeinheit an das Ende der Liste, so dass es weniger wahrscheinlich ist, dass sie ausgelagert wird. Dann wird der gesamte freie physikalische Speicher überprüft und falls er unter einen bestimmten Schwellenwert fällt, wird das erste Element in der Liste zur Disk ausgelagert und außerdem an das Ende der verbundenen Liste versetzt.
  • Diese Prozeduren sind ausreichend, um zu gewährleisten, dass die aktiv genutzten Abbildpuffer ebenso wie die Puffer, welche gerade ausgelagert worden sind, am Ende der Liste sind. Die verbleibenden Elemente zu Beginn der Liste sind immer die zuletzt am wenigsten verwendeten Puffer. Es sollte selbstverständlich sein, dass andere Verfahren zum Bewahren einer verbundenen Liste in Erwägung gezogen werden und dass jemand mit durchschnittlicher Kenntnis auf dem Fachgebiet verstehen würde, dass diese anderen Verfahren ausgeführt werden können. Beispielsweise eine am häufigsten verwendete verbundene Liste.
  • Die Speicherabbildeinheit ermöglicht der Anwendung einen Puffer, während er angesteuert wird, zu verschließen. Diese Information ist in einem Flag abgelegt, entsprechend dem Puffer, der zu dem Speicherverwalterobjekt zugänglich ist. Folglich weiß der Speicherverwalter, welche Puffer gegenwärtig durch die Abbildverarbeitungsanwendung gemäß den Flags verwendet werden. Durch Verwendung eines Flags, das kennzeichnet, ob ein Puffer verwendet wird, kann das Speicherverwalterobjekt gegenwärtig ungenutzte speicherabgebildete Puffer unmappen, um die Fläche in dem virtuellen Adressraum der Anwendung zu reduzieren. Diese Optimierung benötigt Platz, wenn ein neuer Puffer angefordert wird, der nicht in den verfügbaren virtuellen Adressraum der Abbildverarbeitungsanwendung passt, ist für die Anwendung selbst erkennbar und ermöglicht das Adressieren von mehr Daten als ursprünglich durch die Prozessorarchitektur unterstützt werden, z. B. zwei Gigabytes.
  • Wenn die Speicherverwaltungseinheit einen Puffer aus dem virtuellen Adressbereich der Anwendung unmappt und es später zurück abbildet, wenn der Puffer erneut angesteuert wird, kann die Adresse innerhalb des virtuellen Adressbereichs von der anfänglich zugeordneten Adresse, als der Puffer erzeugt wurde, verschieden sein. Aus diesem Grund muss eine Anwendung programmiert werden, um eine nicht speicherzugeordnete Pufferadressen nach der Lebenszeit eines zugehörigen Objekts zu erhalten, da sie ungültig werden können. Jedoch kann gemäß eines Ausführungsbeispiels der vorliegenden Erfindung, jede Anwendung, die speicherzugeordnete Puffer durch eine Speicherabbildeinheit verwendet, benachrichtigt werden, wann immer sich eine Pufferadresse durch die Mapping-Funktionen geändert hat, so dass die Anwendung aktuelle Datenadressen erhalten kann.
  • Das zuvor beschriebene Speicherverwaltungsausführungsbeispiel ist auch anwendbar auf parallel laufende Abbildverarbeitungsanwendungen, wie t in den 6 und 7 gezeig. Parallel laufende Anwendungen verwenden eine zentrale Instanz des Speicherverwaltungsobjekts 401, die eine verbundene Liste von allen speicherabgebildeten Puffern für alle Anwendungen verwaltet. Die Entscheidung darüber, welche Puffer auszulagern sind, um den verfügbaren physikalischen Speicher zu optimieren, erfolgt basierend auf dieser allgemeinen Liste. Sobald die ältesten Puffer ausgewählt worden sind, aus dem physikalischen Speicher ausgelagert zu werden, werden alle Anwendungen benachrichtigt, die einen Bezug zu diesen Puffern besitzen. So mit muss der Auslagerungsbefehl von allen Anwendungen, die diesen Puffer teilen, erteilt werden.
  • Ein Austauschen der Adressreferenzen von den Speicherabbildobjektinstanzen zwischen der zentralisierten Speicherverwaltung und den Anwendungen ist erforderlich, um einen direkten Zugang zu ermöglichen, ohne zusätzlich Traversale oder Verschlüsse aufzulisten. Jedoch überträgt das Ansteuern dieser Adressen direkt das Risiko von Zugriffsverletzungen im Fall, wo eine Objektinstanz zwischenzeitlich zerstört ist. Ein Ausführungsbeispiel der Speicherverwaltung für parallel Abbildverarbeitungsanwendungen kann die Speicherabbildobjektadresse 801 mit einem System-Speicher-Mapping-Handle 802 kombinieren, um die Vollständigkeit der Speicheradresse 801, wie in 8 gezeigt, zu bestätigen. Sobald das Abfrage-Handle 803 von der Anwendung empfangen wurde, ist der Adresszeiger 801 nur gültig, wenn das anhängende System-Speicher-Mapping-Handle 802 auch an einer vorgegebenen Adresse gefunden werden kann.
  • Solange das Adressieren entfernter Einheiten indirekt über Bezeichner zusätzlichen Oberhead beim Verwalten der Liste von Kennungen und insbesondere beim Durchlaufen, wenn jedes Mal ein Objekt adressiert werden muss, hervorruft, kann der zusätzliche Oberhead reduziert oder entfernt werden, indem ein Objekt direkt mit seiner Speicheradresse über den Anwendungen adressiert wird, und die Speicheradresse durch Verwendung eines Schlüssels validiert wird. Der Schlüssel bietet zusätzliche Information, die von Objekt zu Objekt variieren kann und ist sowohl dem Sender als auch dem Empfänger bekannt. An einer entfernten Seite muss der Objektschlüssel innerhalb der entfernten Objektspeicheradresse abgelegt sein, z. B. als eine Klassenenmitgliedsvariable oder Feld in objektorientierten Programmiersprachen. Wenn ein Objekt gelöscht ist, ist dieser Schlüssel aufgehoben mit einem voreingestellten Wert, z. B. durch Verwenden des Klassenvernichters in objektorientierten Programmiersprachen. Beim Vereinigen der Speicheradresse 801 des Objekts mit dem Schlüssel 802 in eine einzelne Einheit oder Retrieval-Handle 803 ermöglicht das direkte Adressieren von entfernten Objekten über logische oder physikalische Grenzen in einer sicheren Art und Weise. Vor dem Ansteuern der Speicheradresse, die in dem Retrieval-Handle 803 abgelegt ist, stellt die entfernte Seite fest, ob der Schlüssel 802 von dem Retrieval-Handle 803 auch an der vorgegebenen Speicheradresse 801 gefunden werden kann. Das ist nur bei Objekten der Fall, deren Lebenszeit noch nicht abgelaufen ist.
  • Der Schlüssel 802 kann jeder ausreichend eindeutige alphanumerische Wert sein, z. B. laufende Nummern, zufällig generierte Nummern oder Ressourcen-Handle von Systemressourcen, die mit einem Objekt verbunden sind.
  • Mit den beschriebenen Ausführungsbeispielen für ein virtuelles Speichersystem und Verfahren zum Behandeln großer Datenvolumina ist es bekannt, dass Modifikationen und Variationen vom Fachmann angesichts der obigen Leeren getätigt werden können. Es versteht sich daher, dass Veränderungen in den offenbarten besonderen Ausführungsbeispielen der Erfindung getätigt werden können, welche innerhalb des Umfangs und des Geistes der Erfindung sind, wie durch die angefügten Ansprüche definiert. Dadurch ist die Erfindung mit den Details und der Besonderheit, wie es die Patentgesetze erfordern, beschrieben, was durch die Patentanmeldung beansprucht und geschützt gewünscht wird, ist dargelegt in den angefügten Ansprüchen.

Claims (24)

  1. Ein Verfahren des Verwaltens eines Speichersystems für große Datenvolumina beinhaltend ein zentrales Speicherverwaltungssystem, mit einer Schnittstelle zwischen einer Vielzahl von Anwendungen und dem physikalischen Speicher eines programmierten Computers bereitstellt.
  2. Das Verfahren nach Anspruch 1, beinhaltend weiter das Pflegen einer allgemeinen Prioritätsliste der Speicherpuffer, zugeordnet durch eine Vielzahl von Anwendungen als eine verknüpfte Liste, wobei die Liste gemäß einer Reihenfolge sortiert ist, in der die Datenpuffer durch die Vielzahl von Anwendungen angesteuert werden.
  3. Das Verfahren nach Anspruch 2, wobei die Prioritätsliste Daten von dem Ablageeinheitt zu den Puffern eines virtuellen Speichers abbildet, wobei die Datenpuffer des virtuellen Speichers seitenweise in den physikalischen Speicher, wie sie durch die Vielzahl von Anwendungen angefordert werden, eingelagert werden.
  4. Das Verfahren nach Anspruch 1, beinhaltend weiter: Bestimmen einer unteren physikalischen Speichergrenze; und das Überwachen des Umfangs an verwendbarem physikalischen Speicher und nach der Feststellung, dass der verwendbare physikalische Speicher unterhalb der untere physikalische Speichergrenze gefallen ist, das seitenweise Auslagern der zuletzt Zeit am wenigstens verwendeten Schichtpuffer aus dem physikalischen Speicher durch die Speicherverwaltungsschnittstelle, was den verwendbaren physikalischen Speicher auf über eine festgelegte obere physikalische Speichergrenze erhöht.
  5. Das Verfahren nach Anspruch 1, beinhaltend weiter: das Bestimmen eines ungenutzten Datenpuffers in einem virtuellen Adressraum des Speichersystems gekoppelt mit dem physikalischen Speicher; das Kennzeichnen des ungenutzten Datenpuffers; und das Wiederherstellen eines virtuellen Adressraums durch Unmapping der ungenutzten Datenpuffer von dem virtuellen Adressraum nach dem Erkennen, dass ein programmierter Computer mehr virtuellem Speicher zuordnet als ein Computerprozessor adressieren kann.
  6. Das Verfahren nach Anspruch 1, beinhaltend weiter: das Teilen von Datenpuffer, die im physikalischen Speicher abgelegt sind, durch die Speicherverwaltungsschnittstelle unter einer Vielzahl von Anwendungen, wobei die Datenpuffer gemeinsame Daten (shared data) enthalten; und das Bestimmen der Prioritätsliste von Puffern, die durch die Vielzahl von Anwendungen angesteuert werden, wobei die Prioritätsliste die Datenpuffer zu einer Ablageeinheit abbildet.
  7. Das Verfahren nach Anspruch 1, beinhaltend weiter: das eindeutige Identifizieren eines vorgegebenen Datenpuffers gemäß der enthaltenen gemeinsamen Daten (shared data), wobei eine Erzeugungsanwendung, die den vorgegebenen Datenpuffer erzeugt, eine Kennung zuordnet; und das Bestimmen, ob die Kennung vorher zu einem Gemeinsamen-Daten-Puffer zugeordnet gewesen ist und nach dem Bestimmen, dass die Kennung bereits in dem physikalischen Speicher existiert, das Zuganggeben der Erzeugungsanwendung zu dem Gemeinsamen-Daten-Puffer.
  8. Das Verfahren nach Anspruch 1, beinhaltend weiter: das Adressieren eines Objekts, das auf einen Datenpuffer in einem zentralen Speicherverwaltungssystem direkt anhand einer Speicheradresse innerhalb einer Anwendung, die das zentrale Speicherverwaltungssystem benutzt, zeigt; und; das Validieren der Speicheradresse durch Verwendung eines Schlüssels, wobei der Schlüssel eine eindeutige Information enthält und sowohl einem Sender als auch einem Empfänger des Objekts bekannt ist.
  9. Das Verfahren nach Anspruch 8, beinhaltend weiter: das Bereitstellen eines eindeutigen Handle; das Kombinieren der Speicheradresse und des Handle in einem Fast-Retrieval-Handle; das Teilen des Fast-Retrieval-Handle unter zwei oder mehr Anwendungen; und das Bestimmen, ob ein durch das Schnelle Fast-Retrieval-Handle identifizierte Objekt nach dem Ansteuern des Objekts gültig ist.
  10. Das Verfahren nach Anspruch 2, wobei das Pflegen der allgemeinen Prioritätsliste weiter beinhaltet: das Hinzufügen eines Objekts zur allgemeinen Prioritätsliste entsprechend einem Datenpuffer nach dem Erzeugen des Datenpuffers; das Entfernen des Objekts von der allgemeinen Prioritätsliste nach dem Bestimmen des Datenpufferzeigers entsprechend dem Objekt, das gelöscht wurde, wobei das Vorgängerobjekt des Objekts und Nachfolgerobjekt in der allge meinen Prioritätsliste vorrangig verbunden sind, um das Objekt zu entfernen; und das Verschieben des Objekts an ein Ende der Liste nach dem Bestimmen, dass das Objekt Anwendung findet, wobei das Objekt am Ende der allgemeinen Prioritätsliste weniger wahrscheinlich ist, ausgelagert zu werden als ein Objekt am Anfang der allgemeinen Prioritätsliste.
  11. Das Verfahren nach Anspruch 5, weiter beinhaltend das Benachrichtigen der Vielzahl von Anwendungen über einer Pufferadressänderung durch Speicherunmapping oder Mappingoperationen.
  12. Ein Speicherverwaltungssystem, beinhaltend: eine Ablageeinheiten zum Ablegen der Paging-Dateien; eine prioritätsverbundene Liste (priority linked-list) gekoppelt an die Ablageeinheiten, wobei Knoten der prioritätsverbundenen Liste mit den Paging-Dateien der Ablageeinheiten verknüpft sind; und ein virtueller Speicherraum, der eine Vielzahl von Datenpuffer beinhaltet, wobei jeder Datenpuffer mit einem einzigen Knoten der prioritätsverbundenen Liste gekoppelt ist.
  13. Das System nach Anspruch 12, beinhaltend zwei oder mehr Speichereinheiten.
  14. Das System nach Anspruch 12, wobei ein Speicherverwaltungssystem entweder mit einer Vielzahl von Anwendungen direkt verbunden oder an einen zentralen Abbildverarbeitungsserver gekoppelt, welcher eine Schnittstelle zwischen mindestens einer Anwendung und dem Speicherverwaltungssystem bereitstellt.
  15. Eine Programmablageeinheit lesbar durch eine Maschine, verkörpernd greifbar ein Programm von Befehlen, die durch die Maschine ausführbar sind, um Verfahrensschritte des Verwaltens eines Speichersystems für große Datenvolumina abzuarbeiten, wobei die Verfahrensschritte beinhaltend: das Bereitstellen eines zentrales Speicherverwaltungssystem, mit einer Schnittstelle zwischen einer Vielzahl von Anwendungen und dem physikalischen Speicher eines programmierten Computers.
  16. Das Verfahren nach Anspruch 15, beinhaltend weiter das Pflegen einer allgemeinen Prioritätsliste der Speicherpuffer, zugeordnet durch eine Vielzahl von Anwendungen als eine verknüpfte Liste, wobei die Liste gemäß einer Reihenfolge sortiert ist, in der die Datenpuffer durch die Vielzahl von Anwendungen angesteuert werden.
  17. Das Verfahren nach Anspruch 16, wobei die Prioritätsliste Daten von dem Ablageeinheitt zu den Puffern eines virtuellen Speichers abbildet, wobei die Datenpuffer des virtuellen Speichers seitenweise in den physikalischen Speicher, wie sie durch die Vielzahl von Anwendungen angefordert werden, eingelagert werden.
  18. Das Verfahren nach Anspruch 15, beinhaltend weiter: Bestimmen einer unteren physikalischen Speichergrenze; und das Überwachen des Umfangs an verwendbarem physikalischen Speicher und nach der Feststellung, dass der verwendbare physikalische Speicher unterhalb der untere physikalische Speichergrenze gefallen ist, das seitenweise Auslagern der zuletzt Zeit am wenigstens verwendeten Schichtpuffer aus dem physikalischen Speicher durch die Speicherverwaltungsschnittstelle, was den verwendbaren physikalischen Speicher auf über eine festgelegte obere physikalische Speichergrenze erhöht.
  19. Das Verfahren nach Anspruch 15, beinhaltend weiter: das Bestimmen eines ungenutzten Datenpuffers in einem virtuellen Adressraum des Speichersystems gekoppelt mit dem physikalischen Speicher; das Kennzeichnen des ungenutzten Datenpuffers; und das Wiederherstellen eines virtuellen Adressraums durch Unmapping der ungenutzten Datenpuffer von dem virtuellen Adressraum nach dem Erkennen, dass ein programmierter Computer mehr virtuellem Speicher zuordnet als ein Computerprozessor adressieren kann.
  20. Das Verfahren nach Anspruch 15, beinhaltend weiter: das Teilen von Datenpuffer, die im physikalischen Speicher abgelegt sind, durch die Speicherverwaltungsschnittstelle unter einer Vielzahl von Anwendungen, wobei die Datenpuffer gemeinsame Daten (shared data) enthalten; und das Bestimmen der Prioritätsliste von Puffern, die durch die Vielzahl von Anwendungen angesteuert werden, wobei die Prioritätsliste die Datenpuffer zu einer Ablageeinheit abbildet.
  21. Das Verfahren nach Anspruch 15, beinhaltend weiter: das eindeutige Identifizieren eines vorgegebenen Datenpuffers gemäß der enthaltenen gemeinsamen Daten (shared data), wobei eine Erzeugungsanwendung, die den vorgegebenen Datenpuffer erzeugt, eine Kennung zuordnet; und das Bestimmen, ob die Kennung vorher zu einem Gemeinsamen-Daten-Puffer zugeordnet gewesen ist und nach dem Bestimmen, dass die Kennung bereits in dem physikalischen Speicher existiert, das Zuganggeben der Erzeugungsanwendung zu dem Gemeinsamen-Daten-Puffer.
  22. Das Verfahren nach Anspruch 15, beinhaltend weiter: das Adressieren eines Objekts, das auf einen Datenpuffer in einem zentralen Speicherverwaltungssystem direkt anhand einer Speicheradresse innerhalb einer Anwendung, die das zentrale Speicherverwaltungssystem benutzt, zeigt; und; das Validieren der Speicheradresse durch Verwendung eines Schlüssels, wobei der Schlüssel eine eindeutige Information enthält und sowohl einem Sender als auch einem Empfänger des Objekts bekannt ist.
  23. Das Verfahren nach Anspruch 16, beinhaltend weiter: das Bereitstellen eines eindeutigen Handle; das Kombinieren der Speicheradresse und des Handle in einem Fast-Retrieval-Handle; das Teilen des Fast-Retrieval-Handle unter zwei oder mehr Anwendungen; und das Bestimmen, ob ein durch das Schnelle Fast-Retrieval-Handle identifizierte Objekt nach dem Ansteuern des Objekts gültig ist.
  24. Das Verfahren auch Anspruch 19, weiter beinhaltend das Benachrichtigen der Vielzahl von Anwendungen über einer Pufferadressänderung durch Speicherunmapping oder Mappingoperationen.
DE102004036323A 2003-08-07 2004-07-27 Erweiterte Speicherverwaltungsarchitektur für große Datenumfänge Ceased DE102004036323A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/636,434 US7032088B2 (en) 2003-08-07 2003-08-07 Advanced memory management architecture for large data volumes
US10/636,434 2003-08-07

Publications (1)

Publication Number Publication Date
DE102004036323A1 true DE102004036323A1 (de) 2005-04-07

Family

ID=34116429

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004036323A Ceased DE102004036323A1 (de) 2003-08-07 2004-07-27 Erweiterte Speicherverwaltungsarchitektur für große Datenumfänge

Country Status (3)

Country Link
US (2) US7032088B2 (de)
CN (1) CN100507876C (de)
DE (1) DE102004036323A1 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7617249B2 (en) * 2003-09-06 2009-11-10 Oracle International Corporation Method and system of handling document operation requests on documents having large collections with constrained memory
US20050207407A1 (en) * 2004-03-16 2005-09-22 Baumberger Daniel P Method, apparatus and system for improved packet demultiplexing on a host virtual machine
US20050228971A1 (en) * 2004-04-08 2005-10-13 Samra Nicholas G Buffer virtualization
US20050246502A1 (en) * 2004-04-28 2005-11-03 Texas Instruments Incorporated Dynamic memory mapping
US7523284B1 (en) * 2004-08-10 2009-04-21 American Megatrends, Inc. Method and apparatus for providing memory management within a system management mode
US20060050155A1 (en) * 2004-09-02 2006-03-09 Ing Stephen S Video camera sharing
US20060114254A1 (en) * 2004-11-26 2006-06-01 Tim Day Volume rendering apparatus and method
US7395385B2 (en) * 2005-02-12 2008-07-01 Broadcom Corporation Memory management for a mobile multimedia processor
CN100432957C (zh) * 2005-02-12 2008-11-12 美国博通公司 一种管理存储器的方法
US7707362B2 (en) * 2005-06-30 2010-04-27 Seagate Technology Llc Context-free data transactions between dual operating systems embedded within a data storage subsystem
US7911474B2 (en) 2006-04-03 2011-03-22 Siemens Medical Solutions Usa, Inc. Memory management system and method for GPU-based volume rendering
JP2008003976A (ja) * 2006-06-26 2008-01-10 Sony Corp メモリアクセス制御装置および方法、並びに、通信装置
US20080229053A1 (en) * 2007-03-13 2008-09-18 Edoardo Campini Expanding memory support for a processor using virtualization
TWI368224B (en) * 2007-03-19 2012-07-11 A Data Technology Co Ltd Wear-leveling management and file distribution management of hybrid density memory
US8526326B1 (en) * 2008-08-27 2013-09-03 Juniper Networks, Inc. Lock-less access of pre-allocated memory buffers used by a network device
KR101515621B1 (ko) * 2008-09-26 2015-04-29 삼성전자주식회사 반도체 디스크 장치 및 그것의 랜덤 데이터 처리 방법
US7979607B2 (en) * 2009-02-27 2011-07-12 Honeywell International Inc. Cascadable high-performance instant-fall-through synchronous first-in-first-out (FIFO) buffer
US8832674B2 (en) * 2011-02-24 2014-09-09 Software Ag Usa, Inc. Off-heap direct-memory data stores, methods of creating and/or managing off-heap direct-memory data stores, and/or systems including off-heap direct-memory data store
US9558040B2 (en) 2011-06-20 2017-01-31 Microsoft Technology Licensing, Llc Memory manager with enhanced application metadata
US9229875B2 (en) * 2012-10-17 2016-01-05 Electronics And Telecommunications Research Institute Method and system for extending virtual address space of process performed in operating system
US20140143298A1 (en) * 2012-11-21 2014-05-22 General Electric Company Zero footprint dicom image viewer
CN104881441B (zh) * 2015-05-12 2018-11-06 福建天晴数码有限公司 基于局域网的文件接收及存储方法、查看方法及系统
CN107122309A (zh) * 2016-02-25 2017-09-01 瑞昱半导体股份有限公司 电子装置及其控制方法
US10379745B2 (en) * 2016-04-22 2019-08-13 Samsung Electronics Co., Ltd. Simultaneous kernel mode and user mode access to a device using the NVMe interface
WO2017209876A1 (en) 2016-05-31 2017-12-07 Brocade Communications Systems, Inc. Buffer manager
JP6700337B2 (ja) * 2018-05-30 2020-05-27 日本電信電話株式会社 保護装置及び保護方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3569938A (en) * 1967-12-20 1971-03-09 Ibm Storage manager
US4821185A (en) * 1986-05-19 1989-04-11 American Telephone And Telegraph Company I/O interface system using plural buffers sized smaller than non-overlapping contiguous computer memory portions dedicated to each buffer
EP0389151A3 (de) 1989-03-22 1992-06-03 International Business Machines Corporation System und Verfahren für die Verwaltung eines verteilten Cache-Speichers
US6247042B1 (en) * 1997-09-24 2001-06-12 Microsoft Corporation Method and system for restoring the state of physical memory as the focus changes among application programs in a computer
WO2000011607A1 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
US7370217B2 (en) * 2001-11-16 2008-05-06 Intel Corporation Regulating file system device access
CN1183453C (zh) 2001-12-21 2005-01-05 上海贝尔有限公司 一种内存管理系统及其分配方法

Also Published As

Publication number Publication date
US7032088B2 (en) 2006-04-18
US20050033934A1 (en) 2005-02-10
CN1581106A (zh) 2005-02-16
CN100507876C (zh) 2009-07-01
US7802066B2 (en) 2010-09-21
US20060123215A1 (en) 2006-06-08

Similar Documents

Publication Publication Date Title
DE102004036323A1 (de) Erweiterte Speicherverwaltungsarchitektur für große Datenumfänge
DE69838367T2 (de) Paralleles Dateiensystem und Verfahren zur unabhängigen Aufzeichnung von Metadaten
DE60313783T2 (de) Bewegen von daten zwischen speichereinheiten
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE69432878T2 (de) Informationsverarbeitungssystem mit Flash-Speicher und Cache-Speicher
DE60316783T2 (de) Erkennung von Speichermangel und Feinabschaltung
DE60117818T2 (de) Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE69728176T2 (de) Verfahren und gerät das verteilte steuerung von gemeinsamen betriebsmitteln erlaubt
DE69722979T2 (de) Betriebsmittelverwaltungsverfahren und -einrichtung eines Multitasking-Datenverarbeitungssystems
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE112013006298T5 (de) Verfahren und Einrichtung für einen komprimierten und verdichteten virtuellen Speicher
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE4221073A1 (de) Datenspeichersystem und -verfahren mit geraeteunabhaengigen dateiverzeichnissen
DE102007016179A1 (de) Speicherverwaltungssystem und Verfahren für ein GPU basiertes Volumenwiedergeben
DE102007052853A1 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102013114256A1 (de) Systeme und Verfahren zur Beibehaltung der Informationskohärenz
DE102012220267A1 (de) Rechenarbeitsverteilungs - Referenzzähler
DE112018006769T5 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen
DE102022108673A1 (de) Ressourcenzuweisung für synthetische backups
DE102013200030B4 (de) Hash-basiertes verwalten von speicher-ids
DE102017118341A1 (de) Neuaufteilen von Daten in einem verteilten Computersystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: SIEMENS MEDICAL SOLUTIONS USA, INC., MALVERN, PA.,

8131 Rejection