DE10040241A1 - Speicheranordnung für einen Datenträger und Verfahren zur Speicherverwaltung - Google Patents

Speicheranordnung für einen Datenträger und Verfahren zur Speicherverwaltung

Info

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
Application number
DE10040241A
Other languages
English (en)
Inventor
Daniel Ciesinger
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Giesecke and Devrient GmbH
Original Assignee
Giesecke and Devrient GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Giesecke and Devrient GmbH filed Critical Giesecke and Devrient GmbH
Priority to DE10040241A priority Critical patent/DE10040241A1/de
Publication of DE10040241A1 publication Critical patent/DE10040241A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/177Smart card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-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)
  • Storage Device Security (AREA)
  • Developing Agents For Electrophotography (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:
  • - 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.
DE10040241A 1999-08-18 2000-08-17 Speicheranordnung für einen Datenträger und Verfahren zur Speicherverwaltung Ceased DE10040241A1 (de)

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)

* Cited by examiner, † Cited by third party
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
DE102006058512A1 (de) * 2006-12-12 2008-06-19 Giesecke & Devrient Gmbh Tragbarer Datenträger
DE102006058511A1 (de) * 2006-12-12 2008-06-19 Giesecke & Devrient Gmbh Empfangen von Nachrichten durch einen portablen Datenträger

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0706692B1 (de) * 1992-10-26 2003-04-16 Intellect Australia Pty. Ltd. Host-benutzer-transaktionssystem

Cited By (11)

* Cited by examiner, † Cited by third party
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
DE102006058512A1 (de) * 2006-12-12 2008-06-19 Giesecke & Devrient Gmbh Tragbarer Datenträger
DE102006058511A1 (de) * 2006-12-12 2008-06-19 Giesecke & Devrient Gmbh Empfangen von Nachrichten durch einen portablen 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
FR2799285A1 (fr) 2001-04-06
FR2799285B1 (fr) 2008-09-26

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
DE4215063C2 (de) Einrichtung und Verfahren zum Seitenwechsel bei einem nicht-flüchtigen Speicher
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)
DE10040241A1 (de) Speicheranordnung für einen Datenträger und Verfahren zur Speicherverwaltung
EP1314135A1 (de) Verfahren zur virtuellen vergrösserung des stacks eines tragbaren datenträgers
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
EP1625592B1 (de) Vorrichtung und verfahren zum behandeln eines zustands eines speichers
DE10321104B4 (de) Verfahren zur Ablage von veränderlichen Daten
EP1308842B1 (de) Verfahren und Vorrichtung zur Verwaltung eines Datenspeichers
DE69725398T2 (de) Rufeinheit-Zählvorrichtung
EP1588266A1 (de) Speicherdefragmentierung, insbesondere bei einem tragbaren datenträger
EP2177990B1 (de) Speicherverwaltung in einem portablen Datenträger
WO2007006457A1 (de) Verwaltung von applikationen in einem tragbaren datenträger
DE10335612B3 (de) Speichern von Daten in einem nicht-flüchtigen Speicher eines tragbaren Datenträgers

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