-
Die
vorliegende Erfindung betrifft ein Verfahren zur dynamischen Speicherverwaltung
eines Heap-Speicherbereichs eines portablen Datenträgers sowie
einen portablen Datenträger mit einer derartigen Speicherverwaltung.
-
Portable
Datenträger, z. B. Chipkarten, Mobilfunkkarten oder dergleichen,
besitzen bauartbedingte lediglich geringe volatile Speicherressourcen, z.
B. in einen volatilen RAM-Arbeitsspeicher, die von einer Speicherverwaltung
des Datenträgers den jeweiligen nebenläufig ausgeführten
Prozessen zugeteilt werden. Hierbei wird der während der
Laufzeit von einem Prozess angeforderte Freispeicher in einem Heap-Speicherbereich
des volatilen Speichers möglichst zusammenhängend
bereitgestellt und der von einem Prozess nicht mehr benötigte
Speicher wird freigegeben, um anschließend anderen Prozessen
wieder als Freispeicher zu Verfügung zu stehen. Insofern
konkurrieren die nebenläufigen Prozesse um den begrenzten
Freispeicher des Heap-Speicherbereichs.
-
Das
kontinuierliche Zuteilen und Freigeben von Freispeicher durch die
Speicherverwaltung ist einerseits mit einer fortschreitenden Fragmentierung des
Heap-Speicherbereichs verbunden, der jedoch mit einer Defragmentierung
bzw. Kompaktierung begegnet werden kann. Andererseits müssen
diejenigen Speicherobjekte im Heap-Speicherbereich gefunden und
freigegeben werden, die von den betreffenden Prozessen nicht mehr
benötigt werden.
-
Beide
Aufgaben werden üblicherweise von einer automatischen Speicherbereinigung
(„Garbage Collection”) des Heap-Speicherbereichs übernommen,
die regelmäßig oder bedarfsweise von der Speicherverwaltung
des Datenträgers durchgeführt wird. Da der Umfang
der Speicherbereinigung jedoch unter anderem von der Größe
und dem Fragmentierungsgrad des Heap-Speicherbereichs abhängt,
ist in der Regel weder der Zeitpunkt noch die Zeitdauer der Speicherbereinigung
vorhersagbar. Die Speicherbereinigung kann auch die Prozessausführung
unterbrechen, z. B. wenn ein Prozess Freispeicher anfordert, der
erst durch eine Speicherbereinigung geschaffen werden muss. Eine
derartige unvorhersehbare Unterbrechung der Prozessausführung ist
insbesondere bei Prozessen mit laufzeitkritischen Prozessoperationen
unerwünscht, wie z. B. bei der Kommunikation eines portablen
Datenträgers mit einem Lesegerät oder dergleichen.
Derartige Situationen treten jedoch bei den begrenzten Heap-Speicherbereichen
portabler Datenträger vielfach auf, so dass hier häufige
Speicherbereinigungen notwendig sind.
-
In
diesem Zusammenhang offenbart die
US 2001/0023478 A1 eine
unterbrechbare Speicherbereinigung, die nach der Unterbrechung fortgesetzt und
abgeschlossen werden kann, indem auf Statusinformationen der unterbrochenen
Speicherbereinigung zurückgegriffen wird. Die
WO 2005/045683 offenbart ebenfalls
eine unterbrechbare Speicherbereinigung, die jedoch abschnittsweise
ausgeführt werden kann, z. B. innerhalb des für
die Beantwortung eines externen Kommandos zur Verfügung
stehenden Antwortzeitintervalls. Dadurch werden Kommunikationsfehler
aufgrund von Antwortverzögerungen vermieden. Eine derartige
Unterbrechung und Fortsetzung einer automatischen Speicherbereinigung
erfordert jedoch spezielle Verwaltungsstrukturen und -prozesse,
die die beschränkten Ressourcen eines portablen Datenträgers
zusätzlich belasten.
-
Schließlich
offenbart die
DE 100
40 974 A1 eine virtuelle Vergrößerung
eines volatilen Stapelspeicherbereichs eines portablen Datenträgers
durch Auslagern von Stapelspeicherobjekten in einen nicht-volatilen
Speicher. Das Problem der Verzögerung laufzeitkritischer
Prozessoperationen durch eine Speicherbereinigung im Heap-Speicherbereich wird
dadurch nicht gelöst.
-
Es
ist demnach die Aufgabe der vorliegenden Erfindung, ein Verfahren
zur dynamischen Verwaltung eines Heap-Speicherbereichs vorzuschlagen,
das die genannten Nachteile der automatischen Speicherbereinigung
vermeidet.
-
Diese
Aufgabe wird erfindungsgemäß durch ein Verfahren
und einen portablen Datenträger mit den Merkmalen der unabhängigen
Ansprüche gelöst. Die davon abhängigen
Ansprüche beschreiben vorteilhafte Ausgestaltungen und
Weiterbildungen der Erfindung.
-
Die
vorliegende Erfindung basiert auf dem Grundgedanken, die automatische
Speicherbereinigung auf dem Datenträger während
der Laufzeit einer laufzeitkritischen Prozessoperation temporär auszusetzen
bzw. derart zu deaktivieren, dass die Speicherbereinigung während
der Laufzeit der betreffenden Prozessoperation nicht gestartet wird.
Sofern die betreffende Prozessoperation während der Deaktivierung
der Speicherbereinigung Freispeicher in einer Größe
anfordert, die aus dem Heap-Speicherbereich zunächst nicht
zu befriedigen ist, wird der angeforderte Freispeicher innerhalb
eines derart kurzen Zeitintervalls anderweitig (d. h. nicht durch
eine Speicherbereinigung) bereitgestellt, dass das Laufzeitverhalten
der laufzeitkritischen Prozessoperation nicht beeinträchtigt
wird. Insbesondere wird der Freispeicher der laufzeitkritischen
Prozessoperation innerhalb eines kürzeren Zeitintervalls
zugeteilt, als es durch die Speicherbereinigung möglich wäre.
-
Diese
kurzfristige Bereitstellung von Freispeicher für laufzeitkritische
Prozessoperationen in einem laufzeitoptimierten Modus alternativ
zu der herkömmlichen automatischen Speicherbereinigung ist
insbesondere so ausgestaltet, dass der angeforderte Freispeicher
innerhalb eines hinreichend genau vorhersagbaren Zeitintervalls
bereitgestellt wird, so dass bereits bei Absetzen einer Freispeicheranfrage
durch die laufzeitkritische Prozessoperation sichergestellt ist,
dass die Zuteilung so rechtzeitig erfolgen kann, dass das Laufzeitverhalten
der Prozessoperation nicht beeinträchtigt wird.
-
Im
Gegensatz zu der automatischen Speicherbereinigung, die zu weitgehend
unvorhersagbaren Unterbrechungen einer Prozessoperation führen
kann, da die Zeitdauer der Unterbrechung von nicht ohne weiteres
beeinflussbaren Parametern abhängt, wie z. B. der Größe
des zu bereinigenden Heap-Speicherbereichs, des Fragmentierungsgrads oder
den nicht mehr benötigten Speicherobjekten, liegt das Zeitintervall
zur Bereitstellung von Freispeicher im Rahmen des laufzeitoptimierten
Modus unterhalb einer kritischen Schwelle, ab der eine Beeinträchtigung
des Laufzeitverhaltens einer zeitkritischen Prozessoperation zu
erwarten ist. Ein besonderer Verwaltungsaufwand für die
Speicherverwaltung oder ein Betriebssystem des Datenträgers
ist damit nicht verbunden.
-
Ein
erfindungsgemäßes Verfahren in einem portablen
Datenträger mit einem dynamisch verwalteten Heap-Speicherbereich
in einem volatilen Speicher, bei dem eine Speicherverwaltung zum
Bereitstellen von Freispeicher eine automatische Speicherbereinigung
des Heap-Speicherbereichs durchführen kann, besteht insofern
aus den folgenden Schritten:
- – Deaktivieren
der automatischen Speicherbereinigung des Heap-Speicherbereichs
durch die Speicherverwaltung während der Ausfüh rung
einer laufzeitkritischen Prozessoperation durch einen Prozessor
des Datenträgers und Aktivieren eines laufzeitoptimierten
Modus;
- – Bereitstellen von Freispeicher für die laufzeitkritische
Prozessoperation ohne die laufzeitkritische Ausführung
der Prozessoperation zu beeinträchtigen, sofern eine Freispeicheranforderung
der Prozessoperation im Rahmen des laufzeitoptimierten Modus ergeht;
und
- – Deaktivieren des laufzeitoptimierten Modus und Aktivieren
der automatischen Speicherbereinigung nach Beendigung der laufzeitkritischen
Prozessoperation.
-
Entsprechend
umfasst ein erfindungsgemäßer Datenträger
einen Prozessor, einen volatilen Speicher mit einem darin eingerichteten
Heap-Speicherbereich, ein Betriebssystem mit einer Speicherverwaltung
sowie zumindest eine auf dem Prozessor als Prozess ausführbare
Applikation, wobei die Speicherverwaltung eine automatische Speicherbereinigung
des Heap-Speicherbereichs regelmäßig oder bedarfsweise
durchführen kann, um ausreichenden Freispeicher zur Zuteilung
an Prozessoperationen zu schaffen. Im Zusammenhang mit der Ausführung
laufzeitkritischer Prozessoperation ist die Speicherverwaltung eingerichtet,
die automatische Speicherbereinigung für die Dauer der
Ausführung der laufzeitkritischer Prozessoperation zu deaktivieren
und in einen laufzeitoptimierten Modus umzuschalten, und bei Empfang
einer Freispeicheranforderung in dem laufzeitoptimierten Modus den
angeforderten Freispeicher innerhalb eines die laufzeitkritische
Ausführung der Prozessoperation nicht beeinträchtigenden
Zeitintervalls bereitstellt.
-
Der
in dem laufzeitoptimierten Modus angeforderte Freispeicher wird
unter Einbeziehung eines Speicherbereichs außerhalb des
Heap-Speicherbereichs bereitgestellt, z. B. unter Einbeziehung eines von
dem Heap-Speicherbereich verschiedenen Speicherbereichs des volatilen
Speichers oder eines Speicher bereich eines von dem volatilen Speicher verschiedenen
Speichers des Datenträgers. Die Bereitstellung von Freispeicher
in dem laufzeitoptimierten Modus erfolgt durch einfache Schreib-/Leseoperationen
in diesem von dem Heap-Speicherbereich verschiedenen Speicherbereich.
Derartige Schreib-/Leseoperationen sind weitgehend unabhängig
von der Größe des betreffenden von dem Heap-Speicherbereich
verschiedenen Speicherbereichs bzw. von seinem Fragmentierungsgrad
und können innerhalb eines nahezu konstanten und vorhersagbaren
Zeitintervalls durchgeführt werden, das im Wesentlichen
von der Schreib-/Lesegeschwindigkeit des betreffenden Speicherbereichs
abhängt.
-
Gemäß einer
ersten Ausführungsform kann in dem laufzeitoptimierten
Modus angeforderter Freispeicher von der Speicherverwaltung einerseits
in einem von dem Heap-Speicherbereich verschiedenen Speicherbereich
des volatilen Speichers und andererseits in einem Speicherbereich
eines von dem volatilen Speicher verschiedenen Speichers des Datenträgers
bereitgestellt werden. So kann der angeforderte Freispeicher beispielsweise
in einem Stapelspeicherbereich des volatilen Speichers oder in einem
persistenten Heap-Speicherbereich dem persistenten Speicher des
Datenträgers bereitgestellt werden. Dadurch wird ein virtueller
Heap-Speicherbereich eingerichtet, der den regulären (volatilen)
Heap-Speicherbereich sowie den von dem Heap-Speicherbereich verschiedenen
Speicherbereich in dem volatilen Speicher oder in dem von dem volatilen
Speicher verschiedenen Speicher des Datenträgers umfasst.
-
Ebenso
kann gemäß einer zweiten Ausführungsform
der in dem laufzeitoptimierten Modus angeforderte Freispeicher in
dem Heap-Speicherbereich bereitgestellt werden, indem ein oder mehrere in
dem Heap-Speicherbereich abgelegte Speicherobjekte in einen von
dem Heap-Speicherbereich verschie denen Speicherbereich des volatilen
Speichers oder eines von dem volatilen Speicher verschiedenen Speichers
des Datenträgers ausgelagert werden und der dadurch in
dem Heap-Speicherbereich entstehende Freispeicher zugeteilt wird.
Vorzugsweise wird der angeforderte Freispeicher in dem Heap-Speicherbereich
durch Auslagern eines Speicherobjekts in den Stapelspeicherbereich
des volatilen Speichers oder durch Auslagern in einen persistenten
Heap-Speicherbereich des persistenten Speichers des Datenträgers
bereitgestellt. Faktisch wird auch bei dieser Ausführungsform
ein virtueller Heap-Speicherbereich eingerichtet, der aus dem bestehenden
Heap-Speicherbereich und demjenigen von dem Heap-Speicherbereich
verschiedenen Speicherbereich besteht, in den das Speicherobjekt bzw.
die Speicherobjekte ausgelagert wurden.
-
Gemäß einer
besonders bevorzugten Ausführungsform werden die Varianten
der Freispeicherbereitstellung gemäß der ersten
und zweiten Ausführungsform von der Speicherverwaltung
nacheinander durchgeführt, beispielsweise derart, dass
ein im laufzeitoptimierten Modus angeforderter Freispeicher erst
dann durch Auslagern eines oder mehrerer Speicherobjekte aus dem
Heap-Speicherbereich (gemäß der zweiten Ausführungsform)
bereitgestellt wird, wenn der angeforderte Freispeicher nicht aus
dem von dem Heap-Speicherbereich verschiedenen Speicherbereich des
volatilen Speichers oder des von dem volatilen Speicher verschiedenen
Speichers des Datenträgers zusammenhängend (gemäß der ersten
Ausführungsform) zugeteilt werden kann. Die Speicherverwaltung
prüft also bei einer Freispeicheranfrage einer laufzeitkritischen
Prozessoperation zunächst, ob z. B. in dem Stapelspeicherbereich
des volatilen Speichers oder in einem persistenten Heap-Speicherbereich
des persistenten Speichers des Datenträgers ein ausreichend
großer zusammenhängender Freispeicher vorliegt.
Falls dies der Fall ist, wird der Freispeicher der anfordernden
Prozessoperation zugeteilt. Andern falls werden ein oder mehrere in
dem Heap-Speicherbereich vorliegende Speicherobjekte derart in den
Stapelspeicherbereich oder den persistenten Heap-Speicherbereich
ausgelagert, dass in dem volatilen Heap-Speicherbereich ein ausreichend
großer zusammenhängender Freispeicher entsteht,
der der anfordernden Prozessoperation zugeteilt werden kann.
-
Die
Auswahl des auszulagernden Speicherobjekts durch die Speicherverwaltung
kann basierend auf vorgegebenen Heuristiken erfolgen. Vorzugsweise
wird von der Speicherverwaltung ein einzelnes Speicherobjekt ausgewählt,
dessen Größe – eventuell zusammen mit
etwaigen angrenzenden Freispeicherbereichen – zumindest
der Größe des angeforderten Freispeichers entspricht.
Vorzugsweise wird ein Speicherobjekt ausgewählt, dessen
Größe ein Vielfaches einer Speicherseitengröße
bzw. Kachelgröße des von dem Heap-Speicherbereich verschiedenen
Speicherbereichs umfasst, da auf diese Weise eine möglichst
effiziente und schnelle Auslagerung gewährleistet wird.
-
Der
im Falle einer Zuteilung des angefordertem Freispeichers aus dem
Heap-Speicherbereich dort noch verbleibende Freispeicher wird von
der Speicherverwaltung geeignet markiert oder anderweitig für
eine nachfolgende Bereitstellung von Freispeicher in dem laufzeitoptimierten
Modus bei einer weiteren Freispeicheranforderung durch eine laufzeitkritische
Prozessoperation registriert.
-
Sofern
die Speicherverwaltung zur Bereitstellung von in dem laufzeitoptimierten
Modus angefordertem Freispeicher einen virtuellen Heap-Speicher
einrichtet, der den bestehenden Heap-Speicherbereich im volatilen
Speicher um Anteile eines anderen Speicherbereichs des volatilen
Speichers, z. B. des Stapelspeicherbereichs, oder um einen persistenten
Heap-Speicherbereich erweitert, wird in diesem erweiterten Heap-Speicher
vorzugsweise eine Heap-Speicherstruktur derart eingerichtet, dass
ein zu einem Prozess gehöriges ausgelagertes Speicherobjekt
zur Ausführung des Prozesses durch den Prozessor ohne weiteres
in derselben Weise verfügbar ist, wie ein entsprechendes
im volatilen Heap-Speicherbereich vorliegendes Speicherobjekt. Es wird
also eine transparente, logische Heap-Speicherstruktur in dem gesamten
virtuellen Heap-Speicher eingerichtet.
-
Vorzugsweise
erkennt die Speicherverwaltung bzw. eine mit der Speicherverwaltung
im Zusammenhang stehende Steuereinrichtung des Datenträgers,
wenn eine laufzeitkritische Prozessoperation gestartet wird, um
dann unmittelbar die automatische Speicherbereinigung zu deaktivieren
und in den laufzeitoptimierten Modus umzuschalten. Ebenso wird vorzugsweise
automatisch erkannt, wenn die betreffende laufzeitkritische Prozessoperation
beendet wird. Die Speicherverwaltung bzw. die entsprechende Steuereinrichtung
erkennt dann automatisch das Vorliegen von vorgegebenen Laufzeitbedingungen
einer laufzeitkritischen Prozessoperation, z. B. die Kommunikation über
eine kontaktlose Schnittstelle, die Abarbeitung laufzeitkritischer
Kommandos oder dergleichen. Ebenso ist es möglich, dass
die Speicherverwaltung eine zeitkritische Prozessoperation nicht
eigenständig erkennt, sondern extern veranlasst wird, die
automatische Speicherbereinigung zu deaktivieren und in den laufzeitoptimierte
Modus umzuschalten. Beispielsweise kann dies von anderen nebenläufig
ausgeführten Applikationsprozessen oder Betriebssystemroutinen über
eine geeignete Programmierschnittstelle der Speicherverwaltung veranlasst
werden.
-
Weitere
Merkmale und Vorteile der Erfindung ergeben sich aus der folgenden
Beschreibung von erfindungsgemäßen Ausführungsbeispielen
sowie weiteren Ausführungsalternativen im Zusammenhang
mit den beiliegenden Zeichnungen, die zeigen:
-
1 eine
bevorzugte Ausführungsform eines erfindungsgemäßen
Datenträgers; und
-
2 eine
erfindungsgemäße Speicheranordnung in einem virtuellen
Heap-Speicherbereich; und
-
3 ein
schematisches Ablaufdiagramm eines bevorzugten erfindungsgemäßen
Verfahrens auf einem Datenträger gemäß 1.
-
Mit
Bezug auf 1 umfasst ein portabler Datenträger 10,
der hier als Chipkarte ausgebildet ist, eine Datenkommunikationsschnittstelle 20,
einen Prozessor 30 (CPU) und verschiedene Speicher 40, 50 und 50.
Der Datenträger 10 kann auch in anderer Gestalt
ausgebildet sein, z. B. als USB-Token, sichere Multimediakarte,
Mobilfunkkarte oder dergleichen.
-
Die
Datenkommunikationsschnittstelle 20 ist als Kontaktfeld
gemäß ISO 7816 ausgebildet und dient
zur Kommunikation mit einer externen Datenverarbeitungsvorrichtung
(nicht dargestellt), z. B. einem Kartenterminal, sowie zur Energieversorgung des
Datenträgers 10. Alternativ kann der Datenträger 10 über
eine eigene Energieversorgung (nicht dargestellt) verfügen,
z. B. über eine Batterie. Auch andere kontaktbehaftete
Schnittstellen können vorgesehen sein. Alternativ oder
zusätzlich kann auch eine Kontaktlos-Datenkommunikationsschnittstelle
(nicht dargestellt), zur kontaktlosen Datenkommunikation vorgesehen
sein, z. B. eine Antenne.
-
In
dem persistenten, nicht-wiederbeschreibbaren ROM-Speicher 40 liegt
ein Multitasking- bzw. Multithreading-fähiges Betriebssystem 42,
das den Datenträger 10 steuert, vorzugsweise basierend
auf Java bzw. Java-Card oder repräsentiert oder ergänzt durch
eine virtuelle Maschine. Das Betriebssystem 42 umfasst
eine Speicherverwaltung 44 zum Verwalten der Speicherressourcen
des Datenträgers 10, insbesondere zum Verwalten
von zur Laufzeit von den auf dem Prozessor 30 nebenläufig
ausgeführten Prozessen in dem volatilen RAM-Speicher 50 angelegten
Speicherobjekten. Der RAM-Speicher 50 dient dem Datenträger 10 als
volatiler Arbeitsspeicher.
-
Das
Betriebssystem 42 oder Teile davon, wie z. B. die Speicherverwaltung 44,
kann alternativ auch in dem wiederbeschreibbaren Flash-Speicher 60 vorliegen,
der alternativ auch als EEPROM-Speicher oder dergleichen ausgebildet
sein kann. In dem Flash-Speicher 60 ist eine Applikation 64 gespeichert,
welche von dem Prozessor 30 als Applikationsprozess ausgeführt
werden kann, der mehrere nebenläufig ausgeführte „Threads” (so
genannte leichtgewichtige Prozesse) umfassen kann, die wiederum bestimmte
Prozessoperationen abarbeiten. Allgemein dient der Flash-Speicher 60 dem
Datenträger 10 zum persistenten Speichern von
Daten, wie sie beispielsweise beim Ausführen von Applikationsprozessen
anfallen.
-
Beim
Erzeugen und Ausführen von Applikationsprozessen durch
den Prozessor 30 teilt die Speicherverwaltung 44 den
einzelnen Prozessen/Threads Speicherressourcen des volatilen RAM-Speichers 50 zu.
Für Speicherobjekte, die durch einen Prozess/Thread während
dessen Laufzeit dynamisch erzeugt werden, verwaltet die Speicherverwaltung 44 einen
Heap-Speicherbereich 51 (V-Heap) im volatilen Speicher 50.
Dieser volatile Heap-Speicherbereich 51 ist auch in 2 angedeutet. Die
dort schraffiert dargestellten Flächen repräsentieren
die durch Speicherobjekte von ausgeführten Prozessen belegten
Speicherabschnitte des volatilen Heap-Speicherbereichs 51.
-
In
dem Stapelspeicherbereich 52 (Stack) verwaltet die Speicherverwaltung 44 Stapelspeicher („Stacks”)
für die nebenläufig ausgeführten Prozesse.
Die Größen der Heap- und Stapelspeicherbereiche 51, 52 sind
nicht durch statische Vorgaben beschränkt, d. h. beide
Speicherbereiche werden in Reaktion auf Freispeicheranforderungen
der ausgeführten Prozesse von der Speicherverwaltung 44 dynamisch
verwaltet. Hierbei kann es, wie in 2 angedeutet,
vorkommen, dass ein Prozess einen Freispeicher A in einer Größe
anfragt, die in dem volatilen Heap-Speicherbereich 51 zwar
nicht zusammenhängend vorliegt, jedoch als Summe mehrerer
kleinerer Freispeicherbereiche vorhanden ist. Sofern der Prozess
bzw. die den Freispeicher anfordernde Prozessoperation nicht laufzeitkritisch
ist, kann der angeforderte Freispeicher A durch eine herkömmliche Speicherbereinigung
des volatilen Heap-Speicherbereichs 51 bereitgestellt werden,
indem eine Kompaktierung durch „Zusammenschieben” eine
ausreichend großen zusammenhängenden Freispeicher schafft.
Da hierbei der gesamte volatilen Heap-Speicherbereich 51 bereinigt
bzw. kompaktiert wird, ist die Speicherbereinigung ein verhältnismäßiges
zeitintensives Verfahren, das eine Bearbeitungszeit von einigen
100 ms besitzen kann.
-
Jedoch
kann es vorkommen, dass bei der Ausführung der Applikation 64 als
Applikationsprozess bestimmte Operationen dieses Prozesses bzw. seiner
Threads besonders laufzeitkritisch sind und zur erfolgreichen Abarbeitung
nicht durch die automatische Speicherbereinigung unterbrochen werden dürfen.
Derartige laufzeitkritische Prozessoperationen betreffen insbesondere
Kommunikationsvorgänge mit externen Geräten, z.
B. die kontaktlose oder kontaktbehaftete Datenkommunikation über
geeignete Datenkommunikationsprotokolle, oder auch Zugriffe auf
statische Web-Daten.
-
Deshalb
führt die Speicherverwaltung 44 bei einer Freispeicheranfrage
einer laufzeitkritischen Prozessoperationen gerade keine automatische Speicherbereinigung
durch, sondern deaktiviert diese und schaltet stattdessen in einen
alternativen, laufzeitoptimierten Modus um, in dem die Freispeicheranfrage
der zeitkritischen Prozessoperation schneller als durch die Speicherbereinigung
des volatilen Heap-Speicherbereichs 51 und ohne Beeinträchtigung
des Laufzeitverhaltens des laufzeitkritischen Prozesses befriedigt
werden kann.
-
In
dem laufzeitoptimierten Modus stehen der Speicherverwaltung zumindest
zwei alternative Speicherbereitstellungsverfahren zur Verfügung,
mit denen einer anfordernden Prozessoperation kurzfristig der gewünschte
Freispeicher bereitgestellt werden kann. Bei einem ersten Speicherbereitstellungsverfahren
wird ein angeforderter und im Heap-Speicherbereich 51 nicht
vorhandener zusammenhängender Freispeicher in dem volatilen
Stapelspeicherbereich 52 oder in einem persistenten Heap-Speicherbereich 61 (P-Heap)
im Flash-Speicher 60 angelegt und bereitgestellt. Beispielsweise
kann im Stapelspeicherbereich 52 zwischen zwei Stapelspeicherrahmen
ein Freispeicher bereitgestellt werden.
-
Gemäß dem
zweiten Speicherbereitstellungsverfahren wird der angeforderte Freispeicher
im Heap-Speicherbereich 51 geschaffen, indem ein dort befindliches
Speicherobjekt C in den volatilen Stapelspeicherbereich 52 oder
in einen persistenten Heap-Speicherbereich 61 ausgelagert
wird. Diesen Prozess illustriert 2. Der angeforderte
Freispeicher A liegt in dem Heap-Speicherbereich 51 nicht
in zusammenhängender Weise vor. Deshalb wird ein Speicherobjekt
C aus dem volatilen Heap-Speicherbereich 51 in einen ausreichend
großen Freispeicherbereich B in dem Stapelspeicherbereich 52 oder
in dem persistenten Heap-Speicherbereich 61 ausgelagert,
so dass der dadurch in dem Heap-Speicherbereich 51 entstehende
Freispeicher D ausreichend groß zur Befriedigung der Freispeicheranforderung
A des laufzeitkritischen Prozesses ist.
-
Bei
der Auslagerung eines Speicherobjekts C in einen ausreichend großen
Freispeicher B des Stapelspeicherbereichs 52 oder des persistenten
Heap-Speicherbereichs 61 wird ein Speicherobjekt C geeigneter
Größe ausgewählt, so dass zumindest die Speicheranforderung
A der laufzeitkritischen Prozessoperation erfüllt werden
kann. Insbesondere werden Speicherobjekte C ausgewählt
und ausgelagert, die wesentlich größer als der
angeforderte Freispeicher A sind und möglicherweise ein
vielfaches einer Speicherseite bzw. Speicherkachel des Auslagerungsspeicherbereichs
im Stapelspeicher 52 oder im persistenten Speicher 60 umfassen,
z. B. 128 Bytes bei einem persistenten EEPROM-Speicher 60.
Dadurch wird im Heap-Speicherbereich 51 ein möglichst
großer Freispeicher D bei gleichbleibender Programmierzeit
des persistenten Speichers 60 geschaffen. Ein eventuelle überschüssiger
Freispeicher D – A nach Zuteilung des Freispeichers A in
dem Freispeicherbereich D wird von der Speicherverwaltung 44 markiert
oder registriert und bei einer weiteren Freispeicheranforderung
einer zeitkritischen Prozessoperation zugeteilt.
-
Bei
jedem der beiden Speicherbereitstellungsverfahren entsteht ein virtueller
Heap-Speicher 53, bestehend aus dem volatilen Heap-Speicherbereich 51 zuzüglich
eines Anteils im Stapelspeicherbereich 52 oder des persistenten
Heap-Speicherbereichs 61, der entweder zur direkten Zuteilung
an eines anfragende laufzeitkritische Speicheroperation oder zur
Auslagerung eines Speicherobjekts C aus dem Heap-Speicherbereich 51 genutzt
wird. In dem gesamten virtuellen Heap-Speicher 53 wird
einheitlich eine transparente logische Heap-Speicherstruktur eingerichtet,
so dass in den Stapelspeicherbereich 52 oder in den persistenten
Heap-Speicherbereich 61 ausgelagerte Speicherobjekte ohne
weiteres bei Ausführung des entsprechenden Prozesses zugreifbar
sind, so dass ausgelagerte Speicherobjekte weiterhin jederzeit für
den Prozessor 30 verfügbar sind, wenn auch mit
erhöhter Schreib-/Lesezeit.
-
Während
eine automatische Speicherbereinigung des gesamten Heap-Speicherbereichs 51 einige
hundert Millisekunden benötigen kann, liegt der Zeitbedarf
für das Auslagern eines Speicherobjekts in den persistenten
Heap-Speicherbereich 61 signifikant darunter. Die Programmierzeiten
eines persistenten EEPROM-Speichers betragen ca. 2 bis 4 Millisekunden
für das Schreiben von bis zu 128 Bytes bzw. bei einem Flash-Speicher
ca. 8 Millisekunden für das Schreiben von bis zu 256 Bytes.
Derartige Verzögerungszeiten beeinträchtigen jedoch
in aller Regel nicht die Ausführung einer laufzeitkritischen Prozessoperation,
so dass diese trotz Zuteilung neuen Freispeichers die erforderlichen
Laufzeiten einhalten kann.
-
Die
beiden beschriebenen Speicherbereitstellungsverfahren basieren auf
der Schaffung von neuem Freispeicher durch Einbeziehung eines Speicherbereichs
außerhalb des Heap-Speicherbereichs in einem laufzeitoptimierten
Modus unter Umgehung der üblichen automatischen Speicherbereinigung.
Ergänzend kann der Speicherverwaltung im Bedarfsfalle auch
noch ein drittes Speicherbereitstellungsverfahren zur Verfügung
stehen, bei dem anstelle der üblichen vollständigen
Speicherbereinigung eine vereinfachte, teilweise Speicherbereinigung
durchgeführt wird. Hierbei werden beispielsweise gemäß dem
bekannten Mark-and-Sweep-Verfahren diejenigen Speicherobjekte in
dem volatilen Heap-Speicherbereich 51 detektiert, die von
den entsprechenden Prozessen nicht mehr benötigt werden. Der
von diesen Speicherobjekten belegte Speicher kann dann als Freispeicher
freigegeben werden und durch eine zusätzliche (partielle)
Kompaktierung kann weiterer zusammenhängender Freispeicher
geschaffen werden. Diese vereinfachte, partielle Speicherbereinigung
wird so lange durchgeführt, bis der angeforderte Freispeicher
zur Verfügung steht und wird dann abgebrochen.
-
Insbesondere
kann die Speicherverwaltung 44 eine Kombination des ersten
und zweiten Speicherbereitstellungsverfahrens durchführen,
indem zunächst versucht wird, einen ausreichend großen
Freispeicher in dem Stapelspeicherbereich 52 oder in dem
persistenten Heap-Speicherbereich 61 bereitzustellen, und,
falls dieser nicht möglich ist, erst dann ein Speicherobjekt
C in einen passenden Freispeicher B des Stapelspeicherbereichs 52 oder
des persistenten Heap-Speicherbereichs 61 ausgelagert wird.
Ein derartiges Vorgehen ist in 3 skizziert.
-
Die
in 3 skizzierte Speicherverwaltung 44 umfasst
mehrere Verwaltungsmodule, nämlich eine Objektverwaltung 44a,
eine V-Heap-Verwaltung 44b, eine Stack-Verwaltung 44c und
eine P-Heap-Verwaltung 44d.
-
In
Schritt S1 erkennt die Speicherverwaltung 44, dass eine
laufzeitkritische Prozessoperation (procop) gestartet wird, deaktiviert
die automatische Speicherbereinigung und aktiviert den laufzeitoptimierten
Modus. Die Speicherverwaltung 44 erkennt hierbei beispielsweise
automatisch bestimmte Echtzeitanforderungen bzw. Merkmale einer
Echtzeitverarbeitung durch eine Prozessoperation, beispielsweise
Kommunikationssequenzen über eine kontaktlose Schnittstelle
oder dergleichen. Alternativ kann die Speicherverwaltung 44 in
Schritt S1 auch von einer Betriebssystemroutine oder einem weiteren
Applikationsprozess über eine Programmierschnittstelle
veranlasst werden, die herkömmliche Speicherbereinigung
zu deaktivieren und den laufzeitoptimierten Modus zu aktivieren.
-
In
Schritt S2 fordert die laufzeitkritische Prozessoperation Freispeicher
für ein neues Speicherobjekt bei der Objektverwaltung 44a an
(new object x byte). In Schritt S3 fordert die Objektverwaltung 44a den
Freispeicher bei der V-Heap-Verwaltung 44b an (allocate
x byte), die aufgrund nicht ausreichend vorliegendem Freispeicher
in dem Heap-Speicherbereich 51 eine Fehlermeldung zurückgibt
(error). In Schritt 54 fordert die Objektverwaltung 44a den
Freispeicher bei der Stack-Verwaltung 44c an (allocate
x byte), die ebenfalls erneut eine Fehlermeldung zurückliefert
(error), da auch im Stapelspeicherbereich 52 kein ausreichend
großer Freispeicher vorhanden ist. Eine Zuteilung eines
Freispeichers aus dem Stapelspeicherbereich 52 gemäß dem
oben beschriebenen ersten Speicherbereitstellungsverfahren ist demnach
nicht möglich. In Schritt S5 sucht die Objektverwaltung 44a in
dem volatilen Heap-Speicherbereich 51 ein geeignetes Speicherobjekt
C mit ausreichender Größe (search object size
y < x) und fordert
in Schritt S6 Freispeicher in der Größe y des
gefundenen Speicherobjekts im persistenten Heap-Speicherbereich 61 an
(allocate y byte). Die P-Heap-Verwaltung 44d erkennt einen
ausreichend großen Freispeicher in dem persistenten Heap-Speicherbereich 61, woraufhin
in Schritt S7 das auszulagernde Speicherobjekt von der Objektverwaltung 44a an
die V-Heap-Verwaltung 44b übergeben wird (transfer
object), die das Speicherobjekt in den gefundenen Freispeicher im
persistenten Heap-Speicherbereich 61 in Schritt S8 kopiert
(copy object). In Schritt S9 wird der dadurch im volatilen Heap-Speicherbereich 51 geschaffene
Freispeicher von der Heap-Verwaltung 44b als solcher markiert
(mark) und in Schritt S10 an die Objektverwaltung 44a gemeldet.
In Schritt S11 fordert die Objektverwaltung 44a den Freispeicher
A erneut bei der V-Heap-Verwaltung 44b an (allocate x byte),
die den Freispeicher nunmehr zuteilen kann, so dass die laufzeitkritische
Prozessoperation in Schritt S12 fortgesetzt werden kann.
-
Anwendung
kann die erfindungsgemäße Behandlung von Freispeicheranfragen
von laufzeitkritischen Prozessoperationen durch die Speicherverwaltung 44 in
dem laufzeitoptimierten Modus insbesondere bei der Beschleunigung
bestimmter Prozessoperationen bei der API-Implementierung sowie
bei zumeist in nativem Programmcode ausgeführtem Systemdiensten
finden. Die beschriebenen Verfahren sind jedoch grundsätzlich
geeignet, beliebige Applikationen bzw. deren Applikationsprozesse
zu beschleunigen, wobei es auch möglich ist, den beschleunigenden,
laufzeitoptimierten Modus selektiv ein und aus zu schalten, beispielsweise über
eine öffentlich zugängliche Programmierschnittstelle
der Speicherverwaltung 44, die von beliebigen Applikationen
genutzt werden kann.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste
der vom Anmelder aufgeführten Dokumente wurde automatisiert
erzeugt und ist ausschließlich zur besseren Information
des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen
Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt
keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- - US 2001/0023478
A1 [0005]
- - WO 2005/045683 [0005]
- - DE 10040974 A1 [0006]
-
Zitierte Nicht-Patentliteratur
-