DE10040241A1 - Speicheranordnung für einen Datenträger und Verfahren zur Speicherverwaltung - Google Patents
Speicheranordnung für einen Datenträger und Verfahren zur SpeicherverwaltungInfo
- Publication number
- DE10040241A1 DE10040241A1 DE10040241A DE10040241A DE10040241A1 DE 10040241 A1 DE10040241 A1 DE 10040241A1 DE 10040241 A DE10040241 A DE 10040241A DE 10040241 A DE10040241 A DE 10040241A DE 10040241 A1 DE10040241 A1 DE 10040241A1
- Authority
- DE
- Germany
- Prior art keywords
- memory
- data
- program
- storage
- area
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/17—Embedded application
- G06F2212/177—Smart card
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System (AREA)
- Developing Agents For Electrophotography (AREA)
- Storage Device Security (AREA)
Abstract
Vorgeschlagen werden eine Speicheranordnung für einen tragbaren Datenträger sowie ein Verfahren zum Betrieb einer Speicheranordnung. Gemäß einer ersten Ausführungsform umfaßt die Speicheranordnung eine flüchtige erste (30) sowie eine nichtflüchtige zweite Speichereinrichtung (15), wobei die erste Speichereinrichtung (30) mindestens einen Speicherbereich (25) besitzt, dessen Lage und Größe durch in der zweiten Speichereinrichtung (15) abgespeicherte Bereichsangaben (20) bestimmt ist. Jeweils bei einem Ein- oder beim Abschaltvorgang werden die Bereichsangaben in der zweiten Speichereinrichtung (15) neu festgelegt. Gemäß einer zweiten Ausführungsform werden in einem ersten Speicherbereich (80) befindliche aktive Datenobjekte (45b, 45d) selektiv und zusammenhängend in einen freien zweiten Speicherbereich (90) umkopiert und alle verbleibenden inaktiven Datenobjekte (45a, 45c) inaktiviert. Gemäß einer dritten Ausführungsform befinden sich Daten zur Beschreibung des Zustandes einer Methode in einer nichtflüchtigen ersten Speichereinrichtung (100), die die Ausführung der Methode beschreibenden Operativdaten in einer zweiten Speichereinrichtung (200). Bei Aufruf einer zweiten Methode aus einer ersten heraus werden die den Zustand der Methode beschreibenden Daten vorübergehend in eine flüchtige, dritte Speichereinrichtung (300) kopiert.
Description
Die Erfindung betrifft eine Speicheranordnung sowie ein Verfahren zur
Speicherverwaltung insbesondere für tragbare Datenträger in Gestalt von
Chipkarten.
Während frühe Formen von Identifikationskarten keine maschinenlesbaren
Datenspeicher oder allenfalls einen Magnetstreifen zum Speichern und
Auslesen geringer Datenmengen aufwiesen, ist es heute möglich, in derarti
ge Karten eingesetzte integrierte Halbleiterschaltungen zu verwenden. Im
einfachsten Fall kann diese Halbleiterschaltung als eine mit einer Ein-
/Ausgabeeinrichtung versehene Speicherschaltung, beispielsweise einem
EEPROM, ausgeführt sein. Für komplexere Anwendungen hat es sich aber
als vorteilhaft erwiesen, einen vollständigen Mikrocontroller mit einem eine
Zentraleinheit, einen Speicher sowie Ein- Ausgabeeinheiten verbindenden
Bussystem in einer Karte zu integrieren.
Mit einem Mikrocontroller versehene Chipkarten, sogenannte "Smart
Cards", werden in einer Vielzahl von Formen bei einer zunehmenden Viel
falt von Anwendungsbereichen eingesetzt. Üblich sind beispielsweise Karten
gemäß der Norm ISO 7810, die aus einem aus Kunststoff gefertigten Karten
träger bestehen, in den eine integrierte Halbleiterschaltung sowie ein Kon
taktfeld zum Herstellen elektrischer Verbindungen mit einem entsprechen
den Lesegerät eingelassen sind. Daneben sind auch andere Formate im Ge
brauch, anstelle der galvanischen Kopplung an ein Lesegerät können insbe
sondere kontaktlose Signalübermittlungsverfahren treten. Eine Übersicht
über bekannte Chipkartentechnologien findet sich zum Beispiel in W. Rankl,
W. Effing: "Handbuch der Chipkarten", München: Carl Hanser Verlag, 2.
Auflage 1996.
Vorgeschlagen wurde weiter bereits, den Kartenkörper zu verkleinern oder
sogar ganz fortzulassen, indem etwa ein Einchip-Mikrocontroller in Arm
banduhren, Schmuckstücke, Kleidungsstücke oder andere Gebrauchsgegen
stände eingebaut wird. Der Begriff "Chipkarte" soll daher alle derzeitigen
und zukünftigen transportablen Gegenstände umfassen, in die ein Mikro
controller eingebettet ist, um es einem Besitzer oder Inhaber zu ermöglichen,
chipkartentypische Interaktionen mit entsprechenden dafür vorgesehenen
Interaktionsstationen vorzunehmen.
Wegen der im Verhältnis zu dem für umfangreiche Kartenprogramme be
nötigten Speicherbedarf begrenzten Speichergröße kommt der Gestaltung
und der Betrieb der Speicheranordnungen von Chipkarten eine besondere
Bedeutung zu. Übliche Chipkarten besitzen typischerweise einen als
EEPROM ausgeführten nichtflüchtigen Speicher für nichttransiente bzw.
persistente Datenobjekte sowie einen als RAM ausgeführten, flüchtigen Spei
cher für transiente Datenobjekte. Aufgrund topographischer Zwänge, Mi
krocontroller auf Chipkarten dürfen in der Regel eine Fläche von etwa
25 mm nicht überschreiten, ist der auf einer Chipkarte überhaupt einrichtbare
Speicherraum stark begrenzt. Derselbe Grund beschränkt zudem Größe und
damit die Leistungsfähigkeit der Zentraleinheit.
Um den vorhandenen Speicherraum bestmöglich zu nutzen, ist eine Frag
mentierung möglichst zu vermeiden. Zur Vermeidung der Fragmentierung
von Speichern in Datenverarbeitungsanordnungen ist die Verwendung so
genannter "Garbage Collection"-Verfahren bekannt, wie sie etwa in der
US 4,907,151 beschrieben sind. Die bekannten Garbage-Collection-Verfahren
beruhen dabei überwiegend auf dem Prinzip, den Arbeitsspeicher in vor
zugsweise zwei Bereiche zu teilen und für eine Programmausführung zu
nächst nur einen Bereich zu verwenden, bis in diesem keine ausreichend
großen zusammenhängenden Speicherbereiche mehr vorhanden sind. Ist der
benutzte Speicherbereich in diesem Sinne voll, werden durch eine Garbage-
Collection-Programmroutine alle aktiven Datenelemente im benutzten Spei
cherbereich identifiziert und in den zweiten, bis dahin nicht benutzten Spei
cherbereich umkopiert, wo sie zusammenhängend angeordnet werden.
Voraussetzung für die Ausführbarkeit dieser gängigen Verfahren ist, daß der
zur Verfügung stehende Arbeitsspeicher so groß ist, daß die Funktionalität
der Prozessoranordnung, deren Teil er ist, durch die Nichtnutzbarkeit je
weils eines Teiles des Arbeitspeichers nicht beeinträchtigt wird. Chipkarten
erfüllen diese Voraussetzung regelmäßig nicht. Ihr aus Raumnot sehr kleiner
Arbeitsspeicher muß praktisch immer vollständig den auf der Chipkarte
vorhandenen Anwendungen zu Verfügung stehen. Die gängigen Garbage-
Collection-Verfahren eignen sich daher für Chipkarten nicht.
Hinsichtlich der Organisation der ein Kartenprogramm definierenden Daten
auf einer Chipkarte geht eine gegenwärtige Entwicklung dahin, beim Aufruf
einer Methode, einer Prozedur oder dergleichen in der Speicheranordnung
des den Programmablauf ausführenden Mikrocontrollers nicht mehr un
strukturierte Datenagglomerationen, sondern strukturierte "Frames" anzu
legen. Das allgemeine Konzept von Stapelspeicher-Frames ("Stack Frames")
ist am Beispiel der "Java Virtual Machine" unter anderem aus Jon Meyer,
Troy Downing: "Java Virtual Machine", Sebastopol, CA, USA: O'Reilly &
Associates, Inc., 1997, Seiten 58 und 59, sowie Tim Lindholm, Frank Yellin:
"The Java Virtual Machine Specification", Reading, MA, USA: Addison-
Wesley, 1997, Seiten 66 bis 68, bekannt. Durch derartige Techniken werden
zwar in vielerlei Hinsicht vorteilhafte Chipkarten ermöglicht. Allerdings
wird auch die Verwaltung der in der Speicheranordnung angelegten Daten
strukturen komplizierter und ressourcenaufwendiger, insbesondere setzt die
bestimmungsgemäße Nutzung solcher Karten einen jederzeit nutzbaren Ar
beitsspeicher voraus.
Aufgabe der Erfindung ist es daher, für ein- und abschaltbare tragbare Da
tenträger, insbesondere in Gestalt von Chipkarten, Maßnahmen anzugeben,
die die Nutzbarkeit des Arbeitsspeicher verbessern. Hierzu soll eine im
Hinblick auf eine Defragmentierung verbesserte Speicheranordnung sowie
ein Verfahren zur Defragmentierung mindestens eines Speicherbereiches
einer solchen Speicheranordnung angegeben werden. Desweiteren soll die
Möglichkeit geschaffen werden, eine Kompaktierung des Arbeitsspeichers
vorzunehmen um möglichst große zusammenhängende Speicherbereiche
zurückgewinnen. Weiterhin sollen eine Speicheranordnung sowie ein Ver
fahren zum Betrieb einer Speicheranordnung angegeben werden, die bei der
Ausführung eine Kartenprogrammes den Aufruf einer zweiten Methode aus
einer ablaufenden ersten Methode heraus vereinfachen.
Diese Aufgabe wird gelöst durch eine Speicheranordnung gemäß Anspruch
1 sowie ein Verfahren zur Defragmentierung gemäß Anspruch 5. Die Aufga
be wird weiterhin gelöst durch die in Anspruch 7 angegebene Speicheran
ordnung sowie das in Anspruch 10 angegebene Verfahren. Die Aufgabe
wird weiterhin gelöst durch die in Anspruch 13 angegebene Speicheranord
nung sowie das in Anspruch 18 angegebene Verfahren zum Betrieb einer
Speicheranordnung.
Vorteilhafte Weiterbildungen und zweckmäßige Ausgestaltungen der erfin
dungsgemäßen Anordnungen bzw. Verfahren sind den abhängigen Ansprü
chen zu entnehmen.
Die Erfindung wird im folgenden anhand von Ausführungsbeispielen ex
emplarisch näher erläutert. Es zeigen:
Fig. 1 eine vereinfachte Architektur einer Chipkarte,
Fig. 2A die Speicherbelegung einer aus einem EEPROM-Speicher und
einem RAM-Speichers gebildeten Speicheranordnung in einem
ersten Betriebszustand,
Fig. 2B die Speicherbelegung in einem zweiten Betriebszustand,
Fig. 3A die Speicherbelegung eines Speichers einer zweiten Ausfüh
rungsform einer Speicheranordnung,
Fig. 3B die Speicherbelegung eines Speichers einer weiteren Ausfüh
rungsform einer Chipkarte,
Fig. 4A eine weitere Ausführungsform einer Speicheranordnung mit
einem Prozessorregister und zwei Stapelspeichern in einem er
sten Betriebszustand,
Fig. 4B die Speicherbelegung des zweiten Stapelspeichers bei Aufruf
einer zweiten Methode durch eine ersten,
Fig. 4C die Speicherbelegung der Speicheranordnung nach Fig. 3A bei
Aufruf einer zweiten Methode durch eine erste.
Fig. 1 zeigt schematisch und in vereinfachter Form die Architektur eines
tragbaren Datenträgers 1, für den im folgenden die Ausführungsform einer
Chipkarte angenommen wird.
Zentrales Element der Chipkarte ist ein Chipkartencontroller mit einer zen
tralen Prozessoreinheit 2, welche mit einem ROM-Speicher 3, einem RAM-
Speicher 15, einem EEPROM-Speicher 30 sowie einer Ein
gangs/Ausgangsschnittstelle 4 verbunden ist. Der ROM-Speicher 3 enthält
das Betriebssystem für die zentrale Prozessoreinheit und wird während der
Herstellung der Chipkarte 1 eingebrannt. Der Inhalt des ROM-Speichers 3 ist
während der Lebensdauer der Chipkarte unveränderbar. Das Betriebssystem
kann insbesondere Programmroutinen zur Verwaltung der aus dem RAM-
Speicher 15 und dem EEPROM-Speicher 30 bestehenden Speicherstruktur
enthalten. Der RAM-Speicher 15 ist der Arbeitsspeicher der zentralen Pro
zessoreinheit 3. Er ist flüchtig, d. h. alle darin abgelegten Daten gehen verlo
ren, wenn die Versorgungsspannung der Chipkarte abgeschaltet wird. Der
EEPROM-Speicher 30 ist ein nichtflüchtiger Speicherbereich, in dem Daten
oder auch Programmcode unter Kontrolle des Betriebssystems geschrieben
und gelesen werden können.
Die Ein/Ausgangsschnittstelle 4 dient zur Kommunikation der Chipkarte 1
mit einer externen Einrichtung sowie zur Spannungsversorgung der Chip
karte. Sie kann kontaktbehaftet, d. h. in Gestalt von Kontaktflächen, oder
kontaktlos, d. h. in Gestalt z. B. einer Antenne, ausgeführt sein.
Die Chipkarte ist zur Ausführung von in einer objektorientierten Program
miersprache abgefaßten Kartenprogrammen ausgebildet und gestattet das
nachträgliche Laden solcher Kartenprogramme auf die Chipkarte. Karten
programme der genannten Art benutzen im Kontext der Programmausfüh
rung Datenobjekte, welche sie zu diesem Zweck erzeugen. Die Kartenpro
gramme selbst liegen dabei im nichtflüchtigen Speicher 15 der Chipkarte, die
von ihnen erzeugten Datenobjekte im flüchtigen Speicher 30.
Die Lage der Datenobjekte im flüchtigen Speicher sowie ihre Größe werden
in einem definierten Bereich 10 des nichtflüchtigen EEPROM-Speichers 15
festgehalten. In dem Speicherbereich 10 befinden sich hierfür verschiedene
Zeigervariable 20a, 20b, 20c, 20d, deren Inhalt jeweils auf den Anfang zuge
ordneter Speicherbereiche 25a, 25b, 25c, 25d im flüchtigen RAM-Speicher 30
weist. Die Speicherbereiche 25a, 25b, 25c, 25d des RAM-Speichers 30 dienen
zur Aufnahme der Datenrepräsentationen transienter Datenobjekte für ein
auf dem Chipkartencontroller ablaufendes Kartenprogramm. Einmal einge
richtete Zeigervariablen und die dadurch bewirkte Aufteilung des RAM-
Speichers 30 werden nach Initialisierung eines Kartenprogrammes grund
sätzlich beibehalten. Bei Wegfall der Versorgungsspannung gehen daher nur
die Inhalte der Datenobjekte im RAM-Speicher 30 verloren, während die
Objekte selbst durch die Zeigervariablen im nichtflüchtigen Speicher 15 er
halten bleiben.
Durch Änderungen im Ablauf eines Kartenprogrammes, Änderung der
Struktur eines Kartenprogrammes oder durch Änderung der Zahl der auf
der Chipkarte vorhandenen Kartenprogramme kann sich die für Ausführ
barkeit der Programme erforderliche Bereichsaufteilung im RAM-Speicher
30 jedoch ändern. Verändert sich beispielsweise die Größe des Speicherberei
ches 25a, kann das Auswirkungen auf die darauffolgenden Speicherbereiche
25b, 25c, 25d haben. Insbesondere können Speicherbereiche entstehen, auf
die kein Kartenprogramm mehr zugreift. Benötigt ein Kartenprogramm et
wa nach einer Versionserneuerung zum Beispiel mehr Speicherbereich im
RAM-Speicher 30, kann dieser nur in dem noch nicht benutzten Teil des
RAM-Speichers 30 neu zugewiesen werden. Der bisher zugeordnete Spei
cherbereich wird überflüssig und bildet fortan einen Lückenspeicherbereich.
Bei einer Verkleinerung des benötigten Speicherbereiches, etwa des Berei
ches 25a, bestehen die Alternativen, die Speicherbereichsgröße unverändert
zu lassen, dadurch aber Speicherplatz zu verschwenden, oder die Verkleine
rung entsprechend vorzunehmen, dadurch aber wiederum das Entstehen
eine Lücke in der Speicherbelegung zwischen den Speicherbereichen 25a und
25b zuzulassen. Ein auf solche Weise entstandener Lückenspeicherbereich
kann häufig nicht mehr sinnvoll genutzt werden kann.
Lückenspeicherbereiche werden üblicherweise beseitigt, indem während des
Normalbetriebes der betroffenen Datenverarbeitungseinrichtung regelmäßig
eine Defragmentierung durchgeführt wird. Die bekannten Techniken zur
Defragmentierung von Speichern, in denen sich Datenobjekte von objektori
entiert programmierten Kartenprogrammen befinden, setzen allerdings stets
das Vorhandensein von ausreichendem Verfügungsspeicherraum voraus.
Entsprechender Speicherraum läßt sich aber aus Platzgründen auf solchen
Chipkarten nicht bereitstellen. Die bekannten Defragmentierungstechniken
lassen sich dadurch auf Chipkarten nicht einsetzen.
Erfindungsgemäß wird deshalb eine Defragmentierung des RAM-Speichers
30 unmittelbar nach dem Ein- oder vor dem Abschalten des Chipkartencon
trollers durchgeführt, mithin nach der Beendigung der Ausführung von Kar
tenprogrammen im Rahmen des Normalbetriebes bzw. vor dessen Beginn.
Bei einer zu diesem Zeitpunkt durchgeführten Defragmentierung kann eine
Berücksichtigung der Inhalte der in den Speicherbereichen 25a, 25b, 25c, 25d
gespeicherten, transiente Objekte darstellenden Daten entfallen, da der In
halt des flüchtigen RAM-Speichers 30 ohnehin gelöscht wird. Die Werte der
Zeigervariablen 20a, 20b, 20c, 20d im Bereich 10 im nichtflüchtigen Speicher
15 können daher ohne jedwede Rücksicht auf den flüchtigen Speicher 30 neu
eingestellt werden. Der Einschaltvorgang kann etwa durch Verbinden mit
einer Betriebsstromquelle oder durch Wiederherstellen der Stromversorgung
bewirkt sein, der Abschaltvorgang beispielsweise durch Unterbrechen der
Stromversorgung oder durch Trennen von einer Betriebsstromquelle.
Zweckmäßig erfolgt eine Neufestlegung der Zeigervariablen bei jeder Inbe
triebnahme der Chipkarte. Eine die Neufestlegung durchführende Pro
grammroutine läßt sich, da sie nur vor oder nach Ausführung eines norma
len Kartenprogrammen arbeitet, als vergleichsweise kleines Programm dar
stellen und ist zweckmäßig Teil des Betriebssystems der Chipkarte.
Die Defragmentierung erfolgt, indem die im Speicherbereich 10 abgelegten
Zeigervariablen 25a, 25b, 25c, 25d so bestimmt werden, daß ihre Inhalte im
RAM-Speicher unmittelbar aneinandergrenzende Speicherbereiche anzeigen,
der RAM-Speicher 30 damit so genutzt wird, daß ein größtmöglicher zu
sammenhängender Freibereich im RAM-Speicher 30 entsteht. Fig. 2B veran
schaulicht eine danach entstehende Belegung des nichtflüchtigen Speichers
15 einer Chipkarte. Die Inhalte der Zeigervariablen 20a, 20b, 20c, 20d weisen
jeweils auf den Anfang zugeordneter Speicherbereiche 25a, 25b, 25c bzw. 25d
im flüchtigen RAM-Speicher 30, wobei die Größe der einzelnen Speicherbe
reiche 25a, 25b, 25c bzw. 25d jeweils genau der von dem Kartenprogramm
benötigten Größe entspricht und die Speicherbereiche 25a, 25b, 25c bzw. 25d
zusammen einen zusammenhängenden Speicherbereich ohne Lücken reprä
sentieren.
Fig. 3A zeigt den Speicher 40 einer zur Ausführung von nachladbaren, in
einer objektorientierten Programmiersprache abgefaßten Kartenprogram
men ausgebildeten Chipkarte. Kartenprogramme der genannten Art benöti
gen bei ihrer Ausführung für die Speicherung von im Kontext des Pro
grammablaufes benutzten Datenobjekten in der Regel einen im Vergleich
zum RAM der Chipkarte großen, frei belegbaren Verfügungsspeicherraum.
Bei dem Speicher 40 handelt es sich deshalb vorzugsweise um den nicht
flüchtigen Speicher der Chipkarte, d. h. üblicherweise um den EEPROM. Die
Größe des verfügbaren Speicherraumes wird abgesehen von den Speicher
mitteln selbst auch durch die Leistungsfähigkeit des Chipkartencontrollers
bestimmt. Diese wird durch die beengten Platzverhältnisse ebenfalls be
grenzt. In der Regel können Chipkartencontroller deshalb überhaupt nur
einen begrenzten Speicherraum adressieren.
Für die Erfindung wird nun ausgenutzt, daß der von einem Chipkartencon
troller adressierbare Speicherraum häufig kleiner ist als der physikalisch be
reitstellbare. Erfindungsgemäß wird der Speicher 40 deshalb in Form von
zwei Speicherbänken 80, 90 ausgeführt, von denen jede zweckmäßig die vom
Chipkartencontroller maximal adressierbare Zahl von Speicherplätzen um
faßt. Die Ausführung eines Kartenprogrammes erfolgt jeweils unter Nut
zung genau einer Speicherbank. Es sei angenommen, daß zunächst nur die
Speicherbank 80 zur Speicherung der Daten verschiedener Datenobjekte 45a,
45b, 45c, 45d im Kontext eines auf dem Chipkartencontroller ablaufenden
Kartenprogrammes in Benutzung ist. Aufgrund von Änderungen in der
Struktur, der Zusammensetzung oder der Zahl der von der Chipkarte aus
führbaren Kartenprogramme können im Laufe der Nutzung zwischen den
Datenbereichen der Datenobjekte 45a, 45b, 45c, 45d Speicherbereiche 50a,
50b, 50c mit nicht mehr benutzten Datenobjekten entstehen. Insbesondere
kommt es vor, daß einzelne, auch "tot" bezeichnete Datenobjekte 45a, 45c im
Kontext des Kartenprogrammes zu keinem zukünftigen Zeitpunkt mehr
Verwendung finden werden. Erkennen lassen sich solche toten Datenobjekte
45a, 45c beispielsweise daran, daß das Kartenprogramm über keine Zeiger
auf diese Datenobjekte 45a, 45c verfügt.
Um unbenutzten und/oder zerstückelten Speicherplatz in der gerade be
nutzten Speicherbank 80 erneut für eine Verwendung im Kontext des Kar
tenprogrammes nutzbar zu machen, wird auf den Eintritt vordefinierter Er
eignisse hin oder zu bestimmten Zeitpunkten eine Übertragung der in der
Speicherbank 80 abgelegten Daten in die jeweils andere, zuletzt nicht benutz
te Speicherbank 90 vorgenommen. Hierzu wird eine Kompaktierungsroutine
in Gang gesetzt, welche grundsätzlich einem üblichen Garbage-Collection-
Verfahren entspricht. Während der Dauer des Speicherbankwechsels, d. h.
während der Ausführung der Kompaktierungsroutine werden keine ande
ren Kartenprogramme ausgeführt. Die Grundreferenzen bzw. die Grundzei
ger auf die angelegten Datenobjekte 45a, 45b, 45c, 45d befinden sich daher
außerhalb des fragmentierbaren Arbeitsspeichers 80.
Die Übertragung erfolgt, indem durch selektive Kopiervorgänge 55a, 55b
ausschließlich die noch aktiven, auch "lebend" genannten Datenobjekte in
die zuletzt nicht benutzte Speicherbank 90 umkopiert werden, so daß darin
ein zusammenhängender benutzer Teilbereich 60a mit allen lebenden Da
tenobjekten sowie ein zusammenhängender freier Teilbereich 60b entstehen.
Alle toten Datenobjekte verbleiben in der Speicherbank 80. Sind alle leben
den Datenobjekte umkopiert, tauschen die Speicherbänke ihre Rollen, d. h.
nachfolgend wird die Speicherbank 90 für die Ausführung von Kartenpro
grammen genutzt, die Speicherbank 80 mit den darin verbliebenen, toten
Datenobjekten zur vollständigen Neubelegung freigegeben. Eine geeignete
Technik zur Auswahl der zu kopierenden lebenden Datenobjekte ist unter
der Bezeichnung "Copy-Live" -Verfahren bekannt und beispielsweise in Jür
gen Heymann: "Mathematical Modelling and Hardware Support of Garbage
Collection", TUM-INFO-06-90-122-350/1 TUM-19022, München: Mathemati
sches Institut und Institut für Informatik der Technischen Universität Mün
chen, 1990, S. 30 bis 35, beschrieben. Durch ein solchermaßen durchgeführtes
Umkopieren beim Wechseln der benutzten Speicherbank wird ein kombi
nierter "Garbage Collection-" Defragmentierungsvorgang realisiert.
Fig. 3B zeigt eine Variante des kombinierten Freigabe- und Defragmentie
rungsvorganges aus Fig. 3A, deren Verwendung vor allem dann zweckmä
ßig ist, wenn der Speicher 40 mit den Speicherbänken 80 und 90 in einer
Technik realisiert ist, bei der Schreibzugriffe besonders viel Zeit beanspru
chen, d. h. wenn es sich bei dem Speicher 40 zum Beispiel um einen EEPROM
handelt. Um die Zeit für die Durchführung der Defragmentierung und da
mit die Zeit für den Speicherbankwechsel trotzdem möglichst klein zu hal
ten, ist für den Umkopiervorgang ein RAM-Cache 95 vorgesehen. Darin
wird mittels selektiver Kopierschritte 65a, 65b zunächst die defragmentierte
Aneinanderreihung der lebenden Datenobjekte 45b, 45c erzeugt. Für jedes
kopierte lebende Datenobjekt erfolgt dabei in dem RAM-Cache 95 eine Auf
lösung und Anpassung der Refenzen auf die anderen im RAM-Cache 95 be
findlichen Datenobjekte. Nachfolgend wird der Inhalt des RAM-Caches 95
durch einen einzigen zusammenhängenden Kopiervorgang 70 in die Spei
cherbank 80 umkopiert. Übersteigt der Speicherumfang der lebenden Da
tenobjekte die Größe des RAM-Caches 95, erfolgt das Umkopieren in Ab
hängigkeit von dessen Größe in mehreren Teilschritten. Nach jedem Teil
schritt werden dann in der zuvor benutzten Speicherbank die noch vorhan
denen Referenzen auf kopierte Datenobjekte durch Hinweisreferenzen auf
die Adresse in der neuen Speicherbank ersetzt.
Eine weitere Ausführungsform zur Realisierung einer effektiven Speicher
verwaltung ist in Fig. 4 veranschaulicht. Die in Fig. 4A gezeigte Struktur der
Ausführungsform umfaßt die Register eines realen oder virtuellen Prozessor
100 sowie einen vorzugsweise im RAM eingerichteten Stapelspeicher, wel
cher in einen Operandenstapelspeicher 200 sowie einen Verwaltungssta
pelspeicher 300 aufgeteilt ist.
Der reale/virtuelle Prozessor 100 verfügt über eine Vielzahl von Registern.
Ein erstes Register 105 enthält dabei eine, im folgenden Instruktionspointer
(IP) genannte, Zeigervariable 105, welche auf einen von dem Chipkartencon
troller aktuell abzuarbeitenden Programmbefehl zeigt. Ein weiteres Register
110 enthält eine, im folgenden Stackpointer (SP) genannte, zweite Zeigerva
riable, welche auf den Operandenstapelspeicher 200 gerichtet ist und darin
auf den Operativdatenbereich derjenigen von dem Chipkartencontroller aus
führbaren Methode anzeigt, die durch den aktuell abzuarbeitenden Pro
grammbefehl aufgerufen ist. Unter Methode wird dabei ein Datencode ver
standen, durch dessen Abarbeitung eine Funktion, z. B. eine Grundrechenart
oder ein definierter Prozeß ausgeführt wird. Instruktionspointer 105 und
Stackpointer 110 zusammen bilden den Minimalinhalt eines Registersatzes
120 zur Beschreibung des Zustandes einer Methode. Der Block 120 kann, wie
in Fig. 4A angedeutet, weitere Angaben umfassen, die dann entsprechend in
weiteren Registern abgelegt sind. Ein weiteres Register 115 im Prozessor 100
enthält eine, im folgenden Returnpointer genannte, dritte Zeigervariable,
welche auf den Verwaltungsstapelspeicher 300 gerichtet ist und dort den
Beginn des Datenblocks anzeigt, der nach Abarbeitung des aktuell bearbeite
ten Befehles, d. h. nach Ausführung der jeweils aktuell abzuarbeitenden Me
thode in das Prozessorregister 100 zu übernehmen ist.
Der Operandenstapelspeicher 200 enthält die zur Ausführung einer Methode
erforderlichen Informationen. In einem ersten Speicherabschnitt 205 befin
den sich dabei die einer Methode zugeordneten Parameter, in einem zweiten
Abschnitt 210 die von einer Methode benutzten und erzeugten lokalen Va
riablen, in einem weiteren Abschnitt, dem Operativdatenbereich 215, die die
Methode realisierenden Daten einschließlich der bei der Ausführung der
Methode anfallenden Zwischenergebnisse. Der Operativdatenbereich 215
kann einen gesonderten Teilbereich 220 aufweisen, in dem, zunächst als
Zwischenergebnis der ausgeführten Methode, Daten angelegt werden, wel
che zur Übernahme durch eine aufzurufende weitere Methode bestimmt
sind. Bei Aufruf der weiteren Methode bilden sie deren Parameter, der Teil
bereich 220 wird mithin zum Parameterabschnitt der aufgerufenen Methode.
In Wiederholung des vorbeschriebenen Anordnungsprinzips können sich im
Operandenstapelspeicher 200 die Informationen zu weiteren Methoden be
finden.
Der Verwaltungsstapelspeicher 300 dient zur vorübergehenden Aufnahme
von Abbildern jeweils bestimmter Register des Prozessor 100, speziell eines
den Zustand einer Methode beschreibenden Registersatzes 120 mit den Regi
stern 105 und 110. Zu Beginn der Abarbeitung eines Programms durch den
zugeordneten Chipkartencontroller ist der Verwaltungsstapelspeicher 300 ist
in der Regel, wie in Fig. 4A angedeutet, nicht belegt.
Fig. 4B veranschaulicht die Funktion des Verwaltungsstapelspeichers 300. Er
kommt zum Einsatz, wenn der Instruktionspointer 105 im Zuge einer Pro
grammabarbeitung auf einen Befehl zeigt, welcher aus einer aktuell abgear
beiteten ersten Methode heraus eine weitere, zweite Methode aufruft. Vor
Beginn der Bearbeitung der neu aufgerufenen, zweiten Methode werden die
für die Weiterführung der Programmabarbeitung nach Ausführung der auf
gerufenen Methode benötigten Register des Prozessors 100 gesichert. Dazu
wird, wie durch den Pfeil 340 angedeutet, der den Zustand der aktuellen,
aufrufenden Methode beschreibende Registersatz 120 aus dem Prozessor 100
in den Stapelspeicher 300 kopiert und dort als Registersatz 320 abgelegt. Mit
dem Kopiervorgang wird zugleich eine Anpassung des Instruktionspointers
105 sowie des Stackpointers 110 vorgenommen, welche den Programmfort
schritt sowie die Belegung des Stapelspeichers 200 nach Abarbeitung der
Methode berücksichtigt. In seinem Abbild 305 wird der Instruktionspointer
dabei durch Korrektur um einen Wert k (Meth. 1) so eingestellt, daß er auf
den Programmteil zeigt, welcher dem Aufruf der zweiten Methode folgt.
Das Abbild 310 des Stackpointers wird so eingerichtet, daß es entweder auf
die Position 225 eines Parameters im Operandenstapelspeicher zeigt, an der
sich ein von der aufgerufenen Methode gebildeter Rückgabewert R befindet,
oder auf das jüngste Element des Operativdatenbereiches 215 der aufrufen
den ersten Methode.
Ist der Zustand der aufrufenden ersten Methode im Verwaltungsstapelspei
cher 300 gesichert, erfolgt, wie in Fig. 4C veranschaulicht, das Setzen der
Register des Prozessors 100 zur Ausführung der aufgerufenen zweiten Me
thode. Der Stackpointer 110 wird dazu auf den Beginn des Operativdatenbe
reiches 245 der aufgerufenen zweiten Methode gestellt. Das Abbild 310 des
Stackpointers im Verwaltungsstapelspeicher 300 zeigt gemäß der beim Ko
pieren vorgenommenen Voreinstellung auf einen Parameter 225 der zweiten
Methode. Die Parameter 225, 230, 235 der aufgerufenen, zweiten Methode
werden von der aufrufenden, ersten Methode angelegt und sind zunächst
Bestandteil des Operativdatenbereiches 215 der aufrufenden, ersten Metho
de. Nach Beginn der Abarbeitung der aufgerufenen, zweiten Methode wer
den die Parameter 225, 230, 235 jedoch zu lokalen Variablen der zweiten Me
thode. Der Parameterabschnitt bildet auf diese Weise eine Überlappungsbe
reich zwischen aufrufender, erster und aufgerufener, zweiter Methode.
Im Zuge der Abarbeitung der aufgerufenen, zweiten Methode fallen wie
derum Zwischenergebnisse an, welche sich zunächst grundsätzlich im Ope
rativdatenbereich 245 der aufgerufenen, zweiten Methode befinden. Liefert
die zweite Methode einen Rückgabewert R, befindet sich dieser ebenfalls
zunächst im Operativdatenbereich 245 der zweiten Methode. Spätestens bei
Abschluß der Abarbeitung der zweiten Methode wird der Rückgabewert R
dann an die oberste Position 225 in dem Parameterabschnitt 220 zwischen
aufrufender erster und aufgerufener, zweiter Methode übertragen. Auf die
Top-Position 225 des Parameterabschnittes 220 zeigt auch das Abbild 310 des
Stackpointers im Verwaltungsstapelspeicher 300.
Ist die Abarbeitung einer aufgerufenen Methode abgeschlossen, wird der im
Verwaltungsstapelspeicher 300 angelegte, in angepaßter Form den Zustand
der aufrufenden Methode angebende Registersatz 320, wie durch den Pfeil
350 angedeutet, aus dem Verwaltungsstapelspeicher 300 in den Prozessor
100 zurückgeladen. Entsprechend der danach gegebenen Stellung des Stack
pointers 105 wird nachfolgend die Programmabarbeitung entweder mit dem
von der aufgerufenen Methode übergebenen Rückgabewert R oder mit dem
jüngsten Element des Operativdatenbereichs der aufrufenden Methode fort
gesetzt.
Es ist möglich, daß eine aufgerufene, zweite Methode ihrerseits wiederum
eine weitere, dritte Methode aufruft, diese wiederum eine vierte u. s. w. Der
Chipkartencontroller führt in diesem Fall jeweils dieselben Schritte aus wie
bei erstmaligem Aufruf einer zweiten Methode aus einer bearbeiteten ersten
Methode heraus. Er kopiert zunächst den den aktuellen Zustand der aufru
fenden Methode wiedergebenden Registersatz aus dem Prozessor 100 unter
Vornahme einer Anpassung des Instruktionspointers und des Stackpointers
in den Verwaltungsstapelspeicher 300 und generiert dort einen Abbildblock
330, welcher unter dem Abbildblock 320 der zuletzt aufgerufenen Methode
angeordnet wird. Sodann wird der Stackpointer im Prozessor 100 auf den
Operativdatenbereich der neu aufgerufenen Methode gesetzt und die Abar
beitung der Methode eingeleitet. Die Abarbeitung wird abgeschlossen durch
eine ggf. erfolgende Rückübertragung eines Rückgabewertes R an eine vor
bestimmte Position im Parameterabschnitt der aufrufenden Methode und
durch Rückladen des den Zustand der aufrufenden Methode angebenden,
angepaßten Registersatzes 330 aus dem Verwaltungsstapelspeicher in den
Prozessor 100.
Das anhand der Fig. 4 beschriebene Prinzip läßt sich analog für weitere Me
thodenaufrufe aus aktuell bearbeiteten Methoden heraus fortsetzen.
Das anhand von Fig. 4 beschriebene Speicherverwaltungskonzept hat den
Vorteil, daß der für die Ausführung eines Programmes benötigte Arbeits
speicherraum auf physikalisch getrennte Speicher 200, 200, 300 verteilbar ist.
Die technische Gestaltung der Speicher 100, 200, 300 läßt sich dabei an die
tatsächlichen Anforderungen anpassen. In Anwendungen mit physikalisch
stark beschränktem Speicherraum, d. h. besonders bei tragbaren Datenträ
gern in Form von Chipkarten, läßt sich dadurch die Effizienz der Pro
grammabarbeitung verbessern, indem der stark beschränkte schnelle Ar
beitsspeicher nur mit tatsächlich einen schnellen Speicher erfordernden Ope
rationen belastet wird.
Claims (23)
1. Speicheranordnung für einen ein- und abschaltbaren tragbaren Datenträ
ger, welcher zur Ausführung von transiente Datenobjekte erzeugenden Da
tenträgerprogrammen ausgebildet ist und das Nachladen solcher Datenträ
gerprogramme gestattet, mit
- - einer ersten Speichereinrichtung (30) zur flüchtigen Datenspeiche rung,
- - einer zweiten Speichereinrichtung (15) zur nichtflüchtigen Daten speicherung,
- - wobei die erste Speichereinrichtung (30) mindestens einen Speicher bereich (10) aufweist, in dem sich Informationen (20a, 20b, 20c, 20d) befinden, welche Lage und Größe von in der zweiten Speichereinrich tung (15) für die Ausführung wenigstens eines Kartenprogrammes eingerichteten Speicherbereichen (25a, 25b, 25c, 25d) angeben, und
- - wobei eine der Speichereinrichtung (15) zugeordnete Programmrouti ne die in dem Speicherbereich (10) befindlichen Informationen (20a, 20b, 20c, 20d) im Anschluß an einem Abschaltvorgang, welcher eine Löschung der Dateninhalte der ersten Speichereinrichtung (30) zur Folge hat, so neu festlegt, daß die von ihnen bezeichneten Speicherbe reiche (25a, 25b, 25c, 25d) in der ersten Speichereinrichtung (30) einen zusammenhängenden Speicherbereich belegen.
2. Speicheranordnung nach Anspruch 1, dadurch gekennzeichnet, daß die
Neufestlegung der Informationen (20a, 20b, 20c, 20d) jeweils unmittelbar
nach dem Wiedereinschalten eines abgeschalteten Datenträgers erfolgt.
3. Speicheranordnung nach Anspruch 1, dadurch gekennzeichnet, daß die
die Neufestlegung der Informationen (20a, 20b, 20c, 20d) durchführende
Programmroutine Teil des Betriebssystems des Datenträgers ist.
4. Tragbarer, ein- und abschaltbarer Datenträger, gekennzeichnet durch eine
Speicheranordnung nach einem der Ansprüch 1 bis 3.
5. Verfahren zur Verwaltung der Speicheranordnung eines ein- und ab
schaltbaren, tragbaren Datenträgers, der zur Ausführung von Datenträger
programmen ausgebildet ist, welche in einem vorzugsweise flüchtigen Spei
cher transiente Datenobjekte anlegen, deren Lage und Größe durch in einem
nichtflüchtigen Speicher abgelegte Informationen festgehalten wird,
darin bestehend, daß
- - unmittelbar nach den Einschalten und/oder unmittelbar vor dem Aussschalten des Datenträgers die in der zweiten Speichereinrichtung festgehaltenen Informationen (20a, 20b, 20c, 20d) neu bestimmt wer den, wobei die Neubestimmung so erfolgt, daß die durch die Infor mationen (20a, 20b, 20c, 20d) bezeichneten Speicherbereiche (25a, 25b, 25c, 25d) der ersten Speichereinrichtung (30) einen zusammenhän genden Speicherbereich belegen.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß der Einschalt
schritt durch Verbinden mit einer Betriebsstromquelle bewirkt wird.
7. Speicheranordnung für einen ein- und abschaltbaren tragbaren Datenträ
ger, welcher zur Ausführung von transiente Datenobjekte anlegenden Da
tenträgerprogrammen ausgebildet ist und das Nachladen solcher Datenträ
gerprogramme gestattet, mit:
- - einer ersten Speichereinrichtung mit einem ersten Speicherbereich (80), sowie mit einer zweiten Speichereinrichtung mit einem zweiten Speicherbereich (90), welcher jeweils zur Aufnahme von mindestens einem, in Abhängigkeit vom Ablauf eines Datenträgerprogrammes einen aktiven oder einen passiven Zustand annehmenden Datenobjek tes (45a, 45b, 45c, 45d) vorgesehen ist, wobei die Ausführung eines Datenträgerprogrammes zunächst jeweils unter Nutzung einer der Speichereinrichtungen (80, 90) erfolgt,
- - Mitteln zum Wechseln der für die Ausführung eines Datenträgerpro grammes genutzten Speichereinrichtung auf die jeweils andere Spei chereinrichtung auf ein vordefiniertes Ereignis hin,
- - wobei der Wechsel der Speichereinrichtung eine der Speicheranord nung zugeordnete Kompaktierungsroutine in Gang setzt, welche ge mäß einem üblichen Garbage-Collection-Verfahren aus dem ersten Speicherbereich (80) selektiv alle aktiven Datenobjekte (45b, 45c) er mittelt und diese zusammenhängend in den Speicherbereich (90) der zweiten Speichereinrichtung umkopiert.
8. Speicheranordnung nach Anspruch 7, dadurch gekennzeichnet, daß die
erste (80) und zweite Speichereinrichtung (90) als erste und zweite Speicher
bank in einer gemeinsamen Speichervorrichtung ausgebildet sind.
9. Speicheranordnung nach Anspruch 7, dadurch gekennzeichnet, daß sie
eine Zwischenspeichereinrichtung (95) aufweist, in welche die Kompaktie
rungsroutine die aktiven Datenobjekte (45b, 45c) ablegt.
10. Verfahren zur Verwaltung der Speicheranordnung eines tragbaren Da
tenträgers, die wenigsten einen ersten (80) sowie einen zweiten Speicherbe
reich (90) aufweist, welche jeweils zur Aufnahme von mindestens einem in
Abhängigkeit vom Ablauf eines Datenträgerprogrammes einen aktiven oder
einen passiven Zustand annehmenden Datenobjektes (45a, 45b, 45c, 45d)
vorgesehen sind,
mit folgenden Schritten:
mit folgenden Schritten:
- - Ausführen eines Datenträgerprogrammes unter Nutzung eines der Speicherbereiche (80, 90),
- - auf ein definiertes Ereignis hin Wechseln des benutzten Speicherbe reiches mit nachfolgender Ausführung eines Datenträgerprogram mes unter Verwendung des zuvor nicht benutzten Speicherberei ches,
- - wobei der Speicherbereichswechsel erfolgt, indem alle aktiven Da tenobjekte (45b, 45d) gemäß einem üblichen Garbage-Collection- Verfahren aus dem ersten (80) in den zweiten Speicherbereich (90) umkopiert,
- - alle Datenobjekte (45a, 45b, 45c, 45d) des ersten Speicherbereiches (80) inaktiviert und
- - alle Datenobjekte des zweiten Speicherbereiches (90) aktiviert wer den.
11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß die kopier
ten Datenobjekte (45b, 45d) im zweiten Speicherbereich (90) in einem zu
sammenhängenden Teilbereich (60a) angeordnet werden.
12. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß die Datenob
jekte (45b, 45d) zunächst in einen hinsichtlich der Zugriffszeiten schnellen
Zwischenspeicher (95) kopiert werden und dort die Neuzuordnung gemäß
dem eingesetzten Garbage-Collection-Verfahren erfolgt.
13. Speicheranordnung für einen Datenträger mit
- - einem Prozessor (100) zugehörigen Registern, die zumindest eine Zei gervariable (105) zur Bezeichnung einer Programminstruktion eines abzuarbeitenden Programmes sowie eine Zeigervariable (110) zur Be zeichnung des Operativdatenbereiches (215) einer im Rahmen des Programmes aufrufbaren Methode beinhalten,
- - einen ersten Stapelspeicher (200) zur Speicherung der Methodendaten wenigstens einer im Zuge der Abarbeitung eines Programmes aufruf baren Methode, wobei die Methodendaten einen Operativdatenbe reich (215) mit die Ausführbarkeit der Methode bewirkenden Daten und einen Parameterabschnitt (205) zur Aufnahme von bei der Aus führung der Methode benötigten Parametern aufweisen; sowie
- - einen zweiten Stapelspeicher (300) zur vorübergehenden Aufnahme von den Zustand der aufrufenden Methode beschreibenden Registern aus dem Prozessor (100), wenn von einer im Rahmen der Pro grammabarbeitung aktuell abgearbeiteten Methode eine weitere Me thode aufgerufen wurde.
14. Speicheranordnung nach Anspruch 13, dadurch gekennzeichnet, daß
die Methodendaten weiterhin einen Abschnitt (205, 220) aufweisen, in dem
sich von der Methode benutzte lokale Variablen befinden.
15. Speicheranordnung nach Anspruch 13, dadurch gekennzeichnet, daß die
den Zustand einer aufrufenden Methode beschreibenden Daten zumindest
eine Zeigervariable (305) zur Bezeichnung einer Programminstruktion des
abzuarbeitenden Programmes sowie eine Zeigervariable (310) zur Bezeich
nung einer Position im Operativdatenbereich (215) der aufrufenden Methode
umfassen.
16. Speicheranordnung nach Anspruch 13, dadurch gekennzeichnet, daß der
erste und der zweite Stapelspeicherbereich (200, 300) in separaten Speicher
strukturen ausgebildet sind.
17. Tragbarer Datentäger, gekennzeichnet durch eine Speicheranordnung
gemäß einem der Ansprüche 13 bis 16.
18. Verfahren zum Aufrufen einer Methode aus einer im Zuge der Abarbei
tung eines Programmes bearbeiteten anderen Methode heraus in einer pro
zessorgesteuerten Speicheranordnung mit einem Prozessor zugeordneten
Registern, die zumindest eine Zeigervaraible zur Bezeichnung einer Pro
gramminstruktion sowie eine Zeigervariable zur Bezeichnung des Operativ
datenbereiches einer Methode beinhalten, sowie einem Stapelspeicher zur
Speicherung von Methodendaten, mit folgenden Schritten:
- - Anordnen der Methodendaten der aufrufenden und der aufgerufenen Methode in einem ersten Teil (200) des Stapelspeichers, wobei die Me thodendaten jeweils in einen Operativdatenbereich (215) mit die Aus führbarkeit der Methode bewirkenden Daten sowie einen Parameter abschnitt (205) zur Aufnahme von bei der Ausführung benötigten Pa rametern gegliedert werden;
- - Einrichten eines zweiten Teiles (300) des Stapelspeichers zur vorüber gehenden Aufnahme von den Zustand einer aufrufenden Methode beschreibenden Daten aus dem Register im Prozessor (100),
- - Übertragen der den Zustand einer aufrufenden Methode beschrei benden Register aus dem Prozessor (100) in den zweiten Teil des Sta pelspeichers (300), wenn eine zweite Methode aus einer ablaufenden ersten Methode heraus aufgerufen wurde,
- - Ausführen der aufgerufenen Methode,
- - Rückübertragen der in den zweiten Teil des Stapelspeichers (300) übertragenen Register in den Prozessor (100) nach Abschluß der Aus führung der aufgerufenen Methode.
29. Verfahren nach Anspruch 18, dadurch gekennzeichnet, daß die den Zu
stand der aufrufenden Methode beschreibenden Daten beim Übertragen in
den zweiten Teil des Stapelspeichers (300) an die Abarbeitungssituation nach
Ausführung der aufgerufenen Methode angepaßt werden.
20. Verfahren nach Anspruch 18, dadurch gekennzeichnet, daß die im Pa
rameterabschnitt (220) befindlichen Parameter von der aufrufenden Methode
angelegt werden.
21. Verfahren nach Anspruch 19, dadurch gekennzeichnet, daß, falls die
aufgerufene Methode einen Rückgabewert (R) liefert, dieser auf einer vorbe
stimmten Position (225) im Parameterabschnitt (205) der aufrufenen Metho
de abgelegt wird.
22. Verfahren nach Anspruch 21, dadurch gekennzeichnet, daß die den Zu
stand der aufrufenden Methode beschreibenden Daten zumindest eine Zei
gervariable (310) beinhalten, welche auf die vorbestimmte, den Rückgabe
wert enthaltende Position im Parameterabschnitt (205) zeigt.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10040241A DE10040241A1 (de) | 1999-08-18 | 2000-08-17 | Speicheranordnung für einen Datenträger und Verfahren zur Speicherverwaltung |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19939209 | 1999-08-18 | ||
DE10040241A DE10040241A1 (de) | 1999-08-18 | 2000-08-17 | Speicheranordnung für einen Datenträger und Verfahren zur Speicherverwaltung |
Publications (1)
Publication Number | Publication Date |
---|---|
DE10040241A1 true DE10040241A1 (de) | 2001-03-22 |
Family
ID=7918827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10040241A Ceased DE10040241A1 (de) | 1999-08-18 | 2000-08-17 | Speicheranordnung für einen Datenträger und Verfahren zur Speicherverwaltung |
Country Status (2)
Country | Link |
---|---|
DE (1) | DE10040241A1 (de) |
FR (1) | FR2799285B1 (de) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1324161A1 (de) * | 2001-12-27 | 2003-07-02 | Asulab S.A. | Verfahren und Vorrichtung zur Speicherverwaltung in einer elektronischen Uhr |
EP1324164A1 (de) * | 2001-12-27 | 2003-07-02 | Asulab S.A. | Verfahren und Vorrichtung zur Speicherverwaltung in einer elektronischen Uhr |
WO2004066153A1 (de) * | 2003-01-20 | 2004-08-05 | Giesecke & Devrient Gmbh | Speicherdefragmentierung, insbesondere bei einem tragbaren datenträger |
WO2005036395A1 (en) * | 2003-10-04 | 2005-04-21 | Symbian Software Limited | Memory management with defragmentation in a computing device |
US7042804B2 (en) | 2001-12-27 | 2006-05-09 | Asulab S.A. | Device and method for managing memory in an electronic watch |
WO2007141684A1 (en) | 2006-06-08 | 2007-12-13 | Nxp B.V. | Device for remote defragmentation of an embedded device |
DE102006058511A1 (de) * | 2006-12-12 | 2008-06-19 | Giesecke & Devrient Gmbh | Empfangen von Nachrichten durch einen portablen Datenträger |
DE102006058512A1 (de) * | 2006-12-12 | 2008-06-19 | Giesecke & Devrient Gmbh | Tragbarer Datenträger |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2147824A1 (en) * | 1992-10-26 | 1994-05-11 | Johannes Marinus George Bertina | Host and user transaction system |
-
2000
- 2000-08-17 FR FR0010685A patent/FR2799285B1/fr not_active Expired - Fee Related
- 2000-08-17 DE DE10040241A patent/DE10040241A1/de not_active Ceased
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1324161A1 (de) * | 2001-12-27 | 2003-07-02 | Asulab S.A. | Verfahren und Vorrichtung zur Speicherverwaltung in einer elektronischen Uhr |
EP1324164A1 (de) * | 2001-12-27 | 2003-07-02 | Asulab S.A. | Verfahren und Vorrichtung zur Speicherverwaltung in einer elektronischen Uhr |
US7042804B2 (en) | 2001-12-27 | 2006-05-09 | Asulab S.A. | Device and method for managing memory in an electronic watch |
WO2004066153A1 (de) * | 2003-01-20 | 2004-08-05 | Giesecke & Devrient Gmbh | Speicherdefragmentierung, insbesondere bei einem tragbaren datenträger |
WO2005036395A1 (en) * | 2003-10-04 | 2005-04-21 | Symbian Software Limited | Memory management with defragmentation in a computing device |
WO2007141684A1 (en) | 2006-06-08 | 2007-12-13 | Nxp B.V. | Device for remote defragmentation of an embedded device |
US9229649B2 (en) | 2006-06-08 | 2016-01-05 | Nxp B.V. | Device for remote defragmentation of an embedded device |
DE102006058511A1 (de) * | 2006-12-12 | 2008-06-19 | Giesecke & Devrient Gmbh | Empfangen von Nachrichten durch einen portablen Datenträger |
DE102006058512A1 (de) * | 2006-12-12 | 2008-06-19 | Giesecke & Devrient Gmbh | Tragbarer Datenträger |
DE102006058511B4 (de) | 2006-12-12 | 2021-07-08 | Giesecke+Devrient Mobile Security Gmbh | Verfahren zum Empfangen von Nachrichten durch einen portablen Datenträger und portabler Datenträger |
DE102006058512B4 (de) | 2006-12-12 | 2021-07-22 | Giesecke+Devrient Mobile Security Gmbh | Verfahren zum Empfangen einer Nachricht in einem tragbaren Datenträger und tragbarer Datenträger |
Also Published As
Publication number | Publication date |
---|---|
FR2799285B1 (fr) | 2008-09-26 |
FR2799285A1 (fr) | 2001-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4214184C2 (de) | Computersystem mit einem nicht-flüchtigen Speicher und Verfahren zu dessen Aktualisierung | |
DE19740525C1 (de) | Verfahren zur Abspeicherung und Wiedergewinnung von Daten in einem Steuersystem, insbesondere in einem Kraftfahrzeug | |
DE60130593T2 (de) | Flash-Speicherarchitektur mit gleichzeitig programmierbaren mehrfachen hostfähigen Flash-Speicherbanken | |
DE60030876T2 (de) | Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität | |
DE112008000180T5 (de) | Verfahren und System für die Umsetzung eines Fast-Wakeup eines Flashspeichersystems | |
DE19810802A1 (de) | Störungsfreies Aktualisieren von Daten | |
DE102009034651A1 (de) | Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten | |
DE102005019842A1 (de) | System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher | |
DE112019001821T5 (de) | Verfahren und vorrichtung zur wiedergabe eines aktivierungsrahmens für unterbrechungsfreie speicherbereinigung (pause-less garbage collection) | |
EP1314135B1 (de) | Verfahren zur virtuellen vergrösserung des stacks eines tragbaren datenträgers | |
DE10040241A1 (de) | Speicheranordnung für einen Datenträger und Verfahren zur Speicherverwaltung | |
DE60318993T2 (de) | Eingebettete Speicherbereinigung | |
DE4238099A1 (de) | ||
DE60019364T2 (de) | Speicherdefragmentierung in Chipkarten | |
DE10140780A1 (de) | Programmodul-Managementsystem und Verfahren davon und Speichermedium von Managementprogrammen des Systems | |
EP1709534B1 (de) | Ausführung eines programms durch eine virtuelle maschine | |
EP1197854B1 (de) | Verfahren zum Starten einer Datenverarbeitungsanlage sowie zugehörige Komponenten | |
DE10321104B4 (de) | Verfahren zur Ablage von veränderlichen Daten | |
DE19819205A1 (de) | Datenhaltungssystem für persistente Daten | |
EP1308842B1 (de) | Verfahren und Vorrichtung zur Verwaltung eines Datenspeichers | |
WO2004105042A1 (de) | Vorrichtung und verfahren zum behandeln eines zustands eines speichers | |
DE69725398T2 (de) | Rufeinheit-Zählvorrichtung | |
DE102004006308B4 (de) | Verfahren zum Verändern von Programmcode eines tragbaren Datenträgers mittels Patchdaten | |
EP1588266A1 (de) | Speicherdefragmentierung, insbesondere bei einem tragbaren datenträger | |
DE10152458A1 (de) | Programmausführung bei einer Chipkarte |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
R016 | Response to examination communication | ||
R002 | Refusal decision in examination/registration proceedings | ||
R003 | Refusal decision now final |
Effective date: 20120424 |