-
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.