-
Die
Erfindung betrifft allgemein das technische Gebiet des Verwaltens
eines Dateisystems in einem tragbaren Datenträger, wobei der Datenträger ein
Betriebssystem aufweist, das nebenläufige – also parallele oder quasi-parallele – Prozesse
unterstützt. Ein
tragbarer Datenträger
im Sinne des vorliegenden Dokuments kann insbesondere eine Chipkarte (smart
card) in diversen Bauformen oder ein Chipmodul oder ein sonstiges
ressourcenbeschränktes
System sein.
-
Tragbare
Datenträger
werden mit immer mehr Speicherplatz und immer größerer Rechenleistung hergestellt.
In einem internen Forschungsprojekt der Giesecke & Devrient GmbH
wird gegenwärtig untersucht,
inwieweit ein multitaskingfähiges
Betriebssystem in einem modernen tragbaren Datenträger implementiert
werden kann. In diesem Zusammenhang ist insbesondere an die Implementierung eines
UNIX®-artigen
Betriebssystems, z.B. des unter der Marke Linux® bekannten
Betriebssystems, gedacht. Es ergeben sich jedoch erhebliche Probleme aus
der Tatsache, daß der
Ressourcenbedarf einer typischen Linux-Implementierung die Speicher-
und Rechenkapazität
heutiger tragbarer Datenträger
voll ausschöpft
oder sogar übersteigt.
Aus diesem Grund ist der Einsatz ressourcenschonender Verfahren
von entscheidender Wichtigkeit.
-
Ferner
werden bei tragbaren Datenträgern
in der Regel hohe Anforderungen an die Sicherheit und Zuverlässigkeit
der Hardware, des Betriebssystems und der ausgeführten Anwendungsprogramme gestellt.
So müssen
z.B. Zugriffskonflikte und Inkonsistenzen, die auftreten können, wenn
mehrere Prozesse einer multitaskingfähigen Chipkarte unabhängig voneinander
auf ein gemeinsam genutztes Dateisystem zugreifen, sicher vermieden
werden. Es muß dafür gesorgt
werden, daß Änderungen
im Dateisystem immer atomar, d.h. entweder ganz oder gar nicht,
erfolgen. Für
Schreibzugriffe auf eine vorhandene Struktur des Dateisystems ist
es in diesem Zusammenhang bekannt, die Struktur – eine Datei oder ein Verzeichnis – für die Dauer
des Schreibzugriffs gegen Zugriffe der übrigen Prozesse zu sperren.
-
Eine
besondere Situation ergibt sich jedoch, wenn eine Struktur im Dateisystem,
auf die andere Prozesse möglicherweise
zugreifen, neu angelegt oder gelöscht
wird. So könnte
z.B. bei einer GSM-Karte von einem Prozeß ein Telefonbuch angelegt
werden und von einem zweiten Prozeß überprüft werden, ob ein Telefonbuch
vorhanden ist. Wenn das Anlegen des Telefonbuchs fehlschlägt – z.B. wegen einer
plötzlichen
Unterbrechung der Energieversorgung des Datenträgers -, dann muß wegen
der Forderung nach einer atomaren Ausführung des Vorgangs die angelegte
Datei rückstandsfrei
entfernt werden. Wenn nun der zweite Prozeß zufällig während der kurzzeitigen Existenz
der Datei eine Dateiabfrage durchgeführt hat, könnte er zu dem fehlerhaften
Ergebnis kommen, daß ein
Telefonbuch vorliegt.
-
Es
ergibt sich damit das Problem, Fehlabläufe der gerade beschriebenen
Art bei der Ausführung nebenläufiger Prozesse
in einem tragbaren Datenträger
zuverlässig
zu vermeiden. Eine entsprechende Problematik stellt sich beim Löschen einer
Struktur im Dateisystem.
-
Das
US-Patent 6,220,510 offenbart eine Chipkarte, die mehrere Anwendungsprogramme auszuführen vermag.
Jedem Anwendungsprogramm sind je ein statischer und ein dynamischer
Speicherbereich zugeordnet, die gegenüber den anderen Anwendungsprogrammen
abgeschirmt sind. Aufgaben können über einen
Befehls/Antwort-Mechanismus von einem ersten Anwendungsprogramm
an ein zweites Anwendungsprogramm delegiert werden; hierbei werden
die Befehle und Antworten in einen öffentlichen Datenspeicherbereich
geschrieben.
-
Die
Erfindung hat die Aufgabe, einen Mechanismus zum Verwalten eines
Dateisystems in einem tragbaren Datenträger bereitzustellen, durch
den sich zumindest manche Fehlabläufe beim Erzeugen von Strukturen
im Dateisystem und/oder Löschen von
Strukturen aus dem Dateisystem mit geringem Ressourcenaufwand vermeiden
lassen. Insbesondere sollen Inkonsistenzen der oben genannten Art,
die durch Zugriffe nebenläufiger
Prozesse auf das Dateisystem auftreten können, verhindert werden.
-
Erfindungsgemäß wird diese
Aufgabe ganz oder zum Teil gelöst
durch ein Verfahren gemäß Anspruch
1, einen tragbaren Datenträger
gemäß Anspruch
14 und ein Computerprogrammprodukt gemäß Anspruch 15. Die abhängigen Ansprüche betreffen
bevorzugte Ausgestaltungen der Erfindung.
-
Die
Erfindung geht von der Grundidee aus, für zumindest manche Strukturen
im Dateisystem prozeßspezifische
Sichtbarkeitsinformationen zu verwalten, um zu bewirken, daß ein Vorgang,
bei dem ein Prozeß eine
Struktur im Dateisystem erzeugt oder aus dem Dateisystem löscht, für die anderen Prozesse
zumindest bis zum erfolgreichen Abschluß dieses Vorgangs verborgen
bleibt. Für
die anderen Prozesse wird daher z.B. eine neu angelegte Datei erst
dann sichtbar, wenn der vollständige
Vorgang des Anlegens der Datei – gegebenenfalls
einschließlich
des Speicherns von Daten in die Datei – erfolgreich abgeschlossen
worden ist, also wenn keine Möglichkeit
eines Abbruchs oder Fehlschlags dieses Vorgangs mehr besteht. Fehler
durch Zugriffskonflikte können
somit zuverlässig
vermieden werden.
-
Ein
besonderer Vorteil der Erfindung besteht darin, daß – bei geeigneter
Implementierung – für die Sichtbarkeitsinformationen
nur wenig Speicher benötigt
wird. Ferner sind keine aufwendigen Zusatzoperationen – z.B. das
Anlegen umfangreicher Sicherungskopien in einem Schattenspeicher
oder Rückführpuffer
(rollback buffer) – erforderlich.
-
In
bevorzugten Ausgestaltungen der Erfindung enthalten die Sichtbarkeitsinformationen
zumindest für
diejenigen Strukturen des Dateisystems, die gerade angelegt werden
oder bei denen der Löschvorgang
noch nicht abgeschlossen ist, einen Bezeichner des für den Erzeugungs-
oder Löschvorgang
zuständigen
Prozesses und eine Marke (flag), die angibt, ob es sich um einen
Erzeugungs- oder um einen Löschvorgang
handelt. In anderen Ausführungsformen
können
die Sichtbarkeitsinformationen aus einer Marke bestehen, die anzeigt,
ob bei einem Zugriffsversuch auf die Struktur, der die Sichtbarkeitsinformationen
zugeordnet sind, zunächst
eine Sichtbarkeitsüberprüfung erfolgen
soll oder nicht. Wenn eine Sichtbarkeitsüberprüfung durchzuführen ist, kann
in diesen Ausgestaltungen ein Anhang vorgesehen sein, der angibt,
für welchen
Prozeß die
jeweilige Struktur sichtbar bzw. verborgen ist.
-
In
manchen Ausgestaltungen ist vorgesehen, daß Strukturen, denen keine oder
keine gültigen Sichtbarkeitsinformationen
zugeordnet sind, für
alle Prozesse sichtbar sein sollen.
-
In
bevorzugten Ausführungsformen
der Erfindung werden beim Erzeugen einer neuen Struktur im Dateisystem
die Sichtbarkeitsinformationen für diese
Struktur so eingestellt, daß die
Struktur nur für den
erzeugenden Prozeß sichtbar
wird. Erst nach einem erfolgreichen Abschluß des Erzeugungsvorgangs – z.B. nach
Bestätigung
durch einen Commit-Befehl – werden
die Sichtbarkeitsinformationen so eingestellt, daß die Struktur
allgemein sichtbar wird. Je nach der Art und Bedeutung der Sichtbarkeitsinformationen
kann diese Einstellung z.B. dadurch erfolgen, daß die Sichtbarkeitsinformationen
gelöscht
werden oder ein in ihnen enthaltener Prozeßbezeichner auf einen ungültigen Wert
gesetzt wird. Bei einem Abbruch des Vorgangs wird die erzeugte Struktur,
die für
die anderen Prozesse nie sichtbar war, aus dem Dateisystem gelöscht.
-
Zum
Löschen
einer Struktur aus dem Dateisystem werden in bevorzugten Ausgestaltungen
zunächst
nur die Sichtbarkeitsinformationen so eingestellt, daß die Struktur
für den
die Löschung
anfordernden Prozeß verborgen
wird, jedoch für
alle anderen Prozesse sichtbar bleibt. Erst wenn feststeht, daß die Löschung unwiderruflich
durchgeführt
werden soll, wird die Struktur tatsächlich aus dem Dateisystem
gelöscht.
Bei einem Abbruch des Löschvorgangs – wenn also
die Struktur auch für
den die Löschung anfordernden
Prozeß wieder
sichtbar werden soll – werden
die Sichtbarkeitsinformationen entsprechend eingestellt. Dies kann
in manchen Ausgestaltungen dadurch erfolgen, daß die Sichtbarkeitsinformationen gelöscht oder
auf einen ungültigen
Wert gesetzt werden.
-
Der
das Erzeugen oder Löschen
der Struktur beinhaltende Vorgang ist in bevorzugten Ausgestaltungen
ein atomarer Vorgang, der entweder vollständig ausgeführt oder rückstandsfrei abgebrochen wird.
Der Abbruch kann z.B. durch einen auftretenden Fehler oder Spannungsausfall
oder durch einen Abort-Befehl ausgelöst werden. Der erfolgreiche
Abschluß erfordert
in manchen Ausführungsformen eine
Bestätigung
durch einen Commit-Befehl, während
in anderen Ausführungsformen
der Vorgang immer dann erfolgreich abgeschlossen wird, wenn kein Fehler
auftritt. Der Vorgang kann z.B. eine atomare Transaktion oder ein
atomarer Vorgang sein, bei dem zunächst eine Datei neu angelegt
wird und dann Daten in dieser Datei gespeichert werden.
-
Allgemein
ist die Erfindung im Zusammenhang mit allen Strukturen im Dateisystem
einsetzbar, die von nebenläufigen
Prozessen – dies
können
Prozesse des Betriebssystems und/oder eines Anwendungsprogramms
sein – angelegt
und/oder gelöscht werden
können.
Solche Strukturen können
z.B. Dateien oder Verzeichnisse sein. Es sind auch Ausgestaltungen
vorgesehen, in denen nur Dateien als Strukturen im Sinne der Erfindung
angesehen werden. Dies schließt
Ausgestaltungen ein, bei denen Verzeichnisse im Dateisystem als
besondere Dateiart ausgebildet sind.
-
Das
erfindungsgemäße Computerprogrammprodukt
kann ein körperliches
Medium mit gespeicherten Programmbefehlen sein, beispielsweise ein
Halbleiterspeicher oder eine Diskette oder eine CD-ROM. Das Computerprogrammprodukt
kann jedoch auch ein nicht-körperliches
Medium sein, beispielsweise ein über
ein Computernetzwerk übermitteltes
Signal. In bevorzugten Ausgestaltungen weisen der Datenträger und/oder
das Computerprogrammprodukt Merkmale auf, die den oben beschriebenen
und/oder den in den abhängigen
Verfahrensansprüchen
genannten Merkmalen entsprechen.
-
Weitere
Merkmale, Vorteile und Aufgaben der Erfindung gehen aus der folgenden
genauen Beschreibung eines Ausführungsbeispiels
und mehrerer Ausführungsalternativen
hervor. Es wird auf die schematischen Zeichnungen verwiesen, in
denen zeigen:
-
1 ein
Blockdiagramm mit Funktionseinheiten eines Datenträgers nach
einem Ausführungsbeispiel
der Erfindung,
-
2 eine
Darstellung des Zugriffs von Prozessen auf ein Dateisystem beim
Betrieb des Datenträgers
von 1,
-
3 eine
Ablaufdarstellung des Erzeugens einer Datei in dem Datenträger von 1,
und
-
4 eine
Ablaufdarstellung des Löschens einer
Datei in dem Datenträger
von 1.
-
Der
in 1 dargestellte Datenträger 10 weist auf einem
einzigen Halbleiterchip einen Prozessor 12, einen Speicher 14 und
eine Schnittstellenschaltung 16 zur kontaktlosen oder kontaktgebundenen
Kommunikation mit einem externen Terminal (in 1 nicht
gezeigt) auf. Der Speicher 14 ist in an sich bekannter
Weise in mehrere in unterschiedlichen Technologien ausgestaltete
Speicherfelder – im vorliegenden
Ausführungsbeispiel
RAM, ROM und EEPROM – unterteilt.
-
Im
Speicher 14 befindet sich Programmcode, der ein Betriebssystem 18 implementiert.
Das Betriebssystem 18 ist im vorliegenden Ausführungsbeispiel
eine auf den Einsatz im Datenträger 10 zugeschnittene
Variante des unter der Marke Linux bekannten Betriebssystems. Weiter
enthält
der Speicher 14 mindestens ein Anwendungsprogramm 20 sowie
ein Dateisystem 22, das Datei- und Verzeichnisstrukturen
in einer baumartigen Anordnung aufweist.
-
Wie
in 2 gezeigt, laufen beim Betrieb des Datenträgers 10 mehrere
Prozesse 24A, 24B, 24C, ... – im folgenden
zusammenfassend mit 24x bezeichnet – quasi-parallel ab. Die Prozesse 24x können Systemprozesse
des Betriebssystems 18 und/oder Benutzerprozesse des Anwendungsprogramms 20 sein.
Jeder der Prozesse 24x weist einen eindeutigen Prozeßbezeichner
PID (process identifier) auf; in 2 sind beispielhaft
die Prozeßbezeichner "1001", "1002" und "1003" gezeigt. Das Betriebssystem 18 steuert
und koordiniert den nebenläufigen
Ablauf der Prozesse 24x. Ferner vermögen die Prozesse 24x über das
Betriebssystem 18 auf das Dateisystem 22 zuzugreifen.
In 2 sind als Strukturen des Dateisystems 22 beispielhaft
zwei Verzeichnisse 26A, 26B und zwei Dateien 26C, 26D gezeigt;
diese und weitere im Dateisystem 22 enthaltene Strukturen
werden im folgenden zusammenfassend mit 26x bezeichnet.
-
Es
besteht nun allgemein das Problem, daß bei gleichzeitigen oder fast
gleichzeitigen Operationen, die die Prozesse 24x in dem
gemeinsam genutzten Dateisystem 22 ausführen, temporäre Inkonsistenzen
auftreten können.
Dies kann insbesondere dann der Fall sein, wenn ein Prozeß 24x mehrere
solche Operationen in einer atomaren Transaktion ausführt. Durch
die im folgenden beschriebenen Verfahren wird dieses Problem bei
den Operationen des Erzeugens und Löschens von Strukturen 26x im
Dateisystem 22 vermieden.
-
3 stellt
einen beispielhaften Ablauf dar, bei dem der Prozeß 24A – Prozeßbezeichner "1001" – in einer erfolgreichen Transaktion
eine neue Datei – hier
beispielhaft die Datei 26C – anlegt und Daten in diese
Datei schreibt. Die senkrechten Pfeile in 3 geben
den zeitlichen Ablauf des Vorgangs an; in der mit "Dateisystem" überschriebenen Spalte ist die
Abfolge unterschiedlicher Zustände
des Dateisystems 22 während
des Vorgangs veranschaulicht.
-
Der
Ablauf gemäß 3 beginnt
mit dem Starten einer neuen Transaktion durch einen Befehl 28,
den der Prozeß 24A dem
Betriebssystem 18 übermittelt.
Weiter gibt der Prozeß 24A einen
Befehl 30 zum Erzeugen einer neuen Datei an das Betriebssystem 18 aus.
Das Betriebssystem 18 legt daraufhin die neue Datei 26C im
Dateisystem 22 an. Hierbei werden der Datei 26C Sichtbarkeitsinformationen 32 zugeordnet,
die den Bezeichner PID des befehlsgebenden Prozesses – im vorliegenden
Fall den Bezeichner "1001" des Prozesses 24A – und eine
Marke M (flag) enthalten. Die Marke M gibt einen Sichtbarkeitsmodus
für die
Datei 26C an.
-
Der
hier beim Anlegen einer Datei verwendete Sichtbarkeitsmodus "1" besagt allgemein, daß der in
den Sichtbarkeitsinformationen 32 enthaltene Prozeßbezeichner
PID denjenigen Prozeß angibt,
für den
die Datei sichtbar sein soll. Für
alle anderen Prozesse soll die Datei verborgen sein. Ein Sichtbarkeitsmodus "0" würde
dagegen aussagen, daß der
in den Sichtbarkeitsinformationen 32 enthaltene Prozeßbezeichner
PID denjenigen – einzigen – Prozeß angibt,
für den
die Datei verborgen sein soll. Dieser Sichtbarkeitsmodus "0" wird im Zusammenhang mit dem noch zu
beschreibenden Löschen
einer Datei verwendet.
-
Im
Beispiel von 3 ist also die nach der Ausführung des
Befehls 30 erzeugte Datei 26C nur für den Prozeß 24A mit
dem Prozeßbezeichner "1001" sichtbar und für alle anderen
Prozesse 24B, 24C, ... verborgen. Wenn ein solcher
anderer Prozeß 24B, 24C,
... zum jetzigen Zeitpunkt eine Aufstellung der im Dateisystem 22 enthaltenen
Strukturen 26x anfordern würde, dann würde die Datei 26C nicht
darin enthalten sein. Ebenso würde
der andere Prozeß 24B, 24C,
... bei einem Versuch, auf die Datei 26C zuzugreifen, eine
Fehlermeldung wegen einer nicht existierenden Datei erhalten.
-
In
einem folgenden Befehl 34 schreibt der Prozeß 24A Daten
in die neu angelegte Datei 26C. Die Sichtbarkeitsinformationen 32 bleiben
dabei unverän dert.
Die Datei 26C ist daher nach wie vor nur für den Prozeß 24A sichtbar
und für
alle anderen Prozesse 24B, 24C, ... verborgen.
-
Wenn
der Prozeß 24A die
Transaktion mit einem Commit-Befehl 36 bestätigt, wird
die erfolgreiche Beendigung der Transaktion dadurch angezeigt, daß der in
den Sichtbarkeitsinformationen 32 enthaltene Prozeßbezeichner
PID auf einen ungültigen Wert – z.B. den
Wert "0" – gesetzt wird. Die Sichtbarkeitsinformationen 32 sind
somit insgesamt ungültig, was
besagt, daß keine
Einschränkungen
hinsichtlich der Sichtbarkeit der Datei 26C mehr bestehen.
Alle Prozesse 24x können
nun die Datei 26C sehen und uneingeschränkt auf sie zugreifen.
-
Wird
die Transaktion nicht bestätigt,
sondern – z.B.
in Reaktion auf einen Abort-Befehl oder aufgrund eines Fehlers – abgebrochen,
so wird die Datei 26C aus dem Dateisystem 22 gelöscht. Dies
kann unmittelbar in Reaktion auf den Abort-Befehl oder beim nächsten Hochfahren
des Datenträgers 10 oder zu
einem anderen geeigneten Zeitpunkt erfolgen. Bis auf den die Transaktion
ausführenden
Prozeß 24A hat
in diesem Fall kein anderer Prozeß 24B, 24C,
... zu irgendeinem Zeitpunkt Kenntnis von der temporär angelegten
Datei 26C erlangen können.
-
In
dem beispielhaften Ablauf von 3 sind vier
voneinander getrennte Befehle 28, 30, 34, 36 gezeigt.
Es versteht sich, daß diese
Befehle in Ausführungsalternativen
ganz oder teilweise miteinander kombiniert werden können. So
können
beispielsweise die Befehle 30 und 34 zu einem
einzigen Befehl zusammengefaßt
werden, der Daten in eine neu anzulegende Datei schreibt. In weiteren
Ausführungsalternativen
kann dieser Befehl – oder
der in 3 gezeigte Befehl 30 – implizit den Beginn einer
neuen Transaktion anzeigen, so daß der Befehl 28 entfallen kann.
Ferner kann in manchen Ausgestaltungen auf eine explizite Transaktionsbestätigung durch
einen Commit-Befehl verzichtet werden.
-
4 veranschaulicht
den Ablauf eines Vorgangs, bei dem eine existierende Datei im Dateisystem 22 – hier beispielhaft
die Datei 26D – gelöscht wird.
Der Ausgangszustand für
diesen Ablauf ist, daß die
Datei 26D im Dateisystem 22 enthalten und für alle Prozesse 24x sichtbar
ist. Dies kann z.B. durch fehlende oder ungültige Sichtbarkeitsinformationen 32 – im vorliegenden
Beispiel durch einen ungültigen Prozeßbezeichner
PID mit dem Wert "0" – angezeigt werden.
-
Mit
den Befehlen 38 und 40 fordert der Prozeß 24A vom
Betriebssystem 18 den Start einer neuen Transaktion und
das Löschen
der Datei 26D an. Das Betriebssystem 18 löscht die
Datei 26D zu diesem Zeitpunkt jedoch noch nicht aus dem
Dateisystem 22, sondern verbirgt sie nur vor dem die Löschung anfordernden
Prozeß 24A.
Hierzu werden in die Sichtbarkeitsinformationen 32 der
Wert "1001" als Prozeßbezeichner
PID des die Löschung
anfordernden Prozesses 24A und der Wert "0" als Sichtbarkeitsmodus M eingetragen;
die Bedeutung dieses Werts für
den Sichtbarkeitsmodus M wurde oben bereits erläutert. Die Datei 26D ist
damit für
alle anderen Prozesse 24B, 24C,... nach wie vor
sichtbar.
-
Das
Betriebssystem 18 veranlaßt erst in Reaktion auf den
Erhalt eines Commit-Befehls 42 zur Transaktionsbestätigung die
tatsächliche
Löschung der
Datei 26D aus dem Dateisystem 22. Erst zu diesem
Zeitpunkt können
die anderen Prozesse 24B, 24C, ... Kenntnis von
der – nun
erfolgreich abgeschlossenen – Transaktion
erlangen.
-
Wird
die Löschtransaktion
nicht erfolgreich abgeschlossen, sondern abgebrochen, so verbleibt die
Datei 26D im Dateisystem 22. Die Sichtbarkeitsinformationen 32 werden
dann wieder so eingestellt – z.B.
durch Setzen des Prozeßbezeichners
PID auf den ungültigen
Wert "0" – daß die Datei 26D für alle Prozesse 24x sichtbar
ist. Bei einem Transaktionsabbruch durch einen Abort-Befehl erfolgt dies
unmittelbar in Reaktion auf diesen Befehl; bei einem Transaktionsabbruch
durch einen Spannungsausfall werden die Sichtbarkeitsinformationen 32 beim
nächsten Neustart
des Datenträgers 10 entsprechend
zurückgesetzt.
Insgesamt war in diesem Fall die Datei 26D während des
gesamten Vorgangs für
alle anderen Prozesse 24B, 24C, ... – also alle
Prozesse außer dem
den Löschbefehl 40 abgebenden
Prozeß 24A – ununterbrochen
sichtbar.