GEBIET DER ERFINDUNG
Diese Erfindung betrifft den Schutz von Daten. Insbesondere betrifft
die Erfindung einen Datenschutz-Controller zur Verhinderung, dass Daten, die auf
einem Datenspeichermedium gespeichert sind, korrumpiert, geändert oder gelöscht
werden.
BESCHREIBUNG DES STANDES DER TECHNIK
Beinahe alle Computer und Rechengeräte verwenden elektronische
Speichervorrichtungen zum Speichern von Betriebssystemsoftware, Anwendungssoftware
und Daten, die im Allgemeinen in diesem Patent in ihrer Gesamtheit als Daten bezeichnet
werden. Eine verbreitete Problematik bei solchen Geräten ist das unbefugte
Ändern der aufgezeichneten Daten. In einigen Fällen werden solche Änderungen
absichtlich vorgenommen, wie im Fall eines Benutzers, der die Konfiguration eines
Softwareprogramms ändert oder neue Daten im Speicher speichert. Oftmals führen
diese "gut gemeinten" Änderungen zu unerwünschten Ergebnissen, die eine
Wiederherstellung oder erneute Änderung der Konfiguration des Computers erfordern.
In anderen Fällen, wie beim Löschen oder Ändern von gespeicherten
Daten durch ein Virus oder eine unbefugte Person, können Änderungen böswillig
gemeint sein. Im Allgemeinen haben solche "nicht gut gemeinten" Änderungen
unerwünschte Folgen, die zerstörerisch und umfangreich sein können.
Benutzer von Computern und insbesondere Unternehmen können durch
unbefügtes Ändern ihres Rechensystems erhebliche Produktivitäts-,
Einkommens- und Gewinnverluste erleiden. In einer Business-Umgebung, wo viele Personen
mit Rechensystemen ausgestattet sind, ist es oft wünschenswert, dass alle Computer
dieselbe Konfiguration haben. Einheitlich konfigurierte Systeme ermöglichen
eine einheitliche Nutzung. Es ist nicht wünschenswert, dass jeder Benutzer,
der mit solch einem Computer ausgestattet ist, dessen Konfiguration ändert,
um sich den Vorlieben eines anderes Benutzers anzupassen, was (i) zu einer Inkompatibilität
zwischen den Betriebscomputern führen kann und dass die anderen Computer (ii)
einen Benutzer verhindern, den geänderten Computer in einer einheitlichen Weise
zu benutzen, und (iii) das Ergebnis ist schließlich eine gänzliche oder
teilweise Funktionsunfähigkeit der geänderten Computer ist, was die Arbeitsproduktivität
reduziert und ein kostspieliges Eingreifen des Computer-Supportteams des Unternehmens
erfordert.
In anderen Fällen kann es wünschenswert sein, dass Benutzer
Änderungen an Daten auf einem Speichermedium vornehmen dürfen, allerdings
indem sie einen "Schnappschuss" des Mediums von einem Punkt, wo es richtig konfiguriert
war, bereitstellen. In diesem Fall kann ein Benutzer die Konfiguration des Computers
durch Hinzufügen, Löschen oder Verändern von Software oder durch
Bearbeiten von Daten auf dem Speichermedium ändern. Wenn der Computer durch
die Benutzeränderung funktionsunfähig wird, lässt sich der Zustand
der Daten zum Zeitpunkt des Schnappschusses wiederherstellen.
Es sind mehrere Vorrichtungen erhältlich, welche versuchen, unbefugtes
Ändern von Software und Daten, die auf Festplattenlaufwerken von Computern
gespeichert sind, zu verhindern. Einige dieser Vorrichtungen versuchen das zuvor
erwähnte Problem mit einer Kombination von Hardware und Software zu lösen.
Andere Vorrichtungen versuchen es mit einer reinen Software-Lösung.
Systeme, welche sich nur auf einen Softwareschutz verlassen, unterbrechen
typischerweise jeden Versuch zum Schreiben von Daten auf oder Lesen von Daten aus
einem Festplattenlaufwerk. Die Daten werden auf einen besonderen Speicherbereich
geschrieben, ohne das die ursprünglichen Daten auf dem Festplattenlaufwerk
geändert werden. Bei einer anschließenden Aufforderung zum Lesen der geschriebenen
Daten werden sie eher aus dem besonderen Speicherbereich als aus dem Festplattenlaufwerk
gelesen. Die neuen Daten dürfen nur innerhalb derselben den Computer verwendenden
Sitzung zugänglich sein und werden beim Neustart des Computers oder auf Anforderung
gelöscht oder verworfen. Diese Lösung hat einen wesentlichen Nachteil.
Bösartige Softwareprogramme wie Viren können die Existenz der Schutzsoftware
erfassen und sie entweder umgehen oder abschalten. Darüber hinaus sind Systeme,
die nur einen Softwareschutz haben, nicht imstande, den besonderen Speicherbereich
vor dem Rechensystem zu verbergen und lassen zu, dass bösartige Software auf
ihn zugreift (unter Umständen anhand von E/A-Anforderungen für Low-Level-Daten).
Die bösartige Software kann dann mit Änderungen an den auf dem Festplattenlaufwerk
gespeicherten Daten fortfahren und wird möglicherweise die zuvor dargelegten
Probleme verursachen. Außerdem ist eine Softwarelösung im Allgemeinen
betriebssystem- und/oder prozessorabhängig.
Systeme, welche eine kombinierte Hardware- und Softwarelösung
bereitstellen, umfassen typischerweise eine Karte, welche in einen
PCI oder sonstigen Erweiterungsschacht auf einem Computer passt, und ein Softwarepaket.
Das Softwarepaket wird zur Kartenkonfiguration benutzt, aber auch zum Abfangen von
Aufforderungen zum Lesen und Schreiben und ihre Übergaben an den Prozessor.
Auch diese Systeme verbergen vor dem Rechensystem keinen besonderen Speicherbereich
auf dem Festplattenlaufwerk, das vom Schutzsystem benutzt wird, und leiden folglich
unter dem gleichen Problem, für die Erfassung durch bösartige Software
anfällig und ebenfalls umgehbar zu sein.
Bekannt ist aus der EP-0 965 903 ein automatisierter Geldautomat,
der einen Prozessor auf einem Motherboard mit BIOS auf dem Festwertspeicher umfasst,
wodurch der Betrieb auf einer Festplatte über eine Schnittstelle möglich
ist. Die Platte hat mindestens eine normale Partition und umfasst eine verborgene
Sicherheitspartition, die bei normaler Systemsteuerung nicht zugänglich ist.
Die entsprechenden Daten können aus Sicherheitsgründen verschlüsselt
werden.
Bekannt ist aus der WO-99/67713 ein VDS-System (VDS = Virtual Disk
Storage) zur Bereitstellung mehrerer virtueller Datenspeichervorrichtungen, die
in einem Rechensystem mit Zentraleinheit benutzt werden können. Das VDS-System
umfasst ein Speichersystem zum Speichern von Informationen und einen VDS-Controller,
welcher mit dem Speichersystem und der Zentraleinheit kommuniziert. Der VDS-Controller
partitioniert das Speichersystem in mehrere virtuelle Datenvorrichtungen und schränkt
dann die Kommunikation des Rechensystems mit bestimmten dieser virtuellen Datenspeichervorrichtungen
ein. Der VDS-Controller sondert somit wahlweise mindestens eine der virtuellen Datenspeichervorrichtungen
von der Kommunikation mit dem Rechensystem ab, um zu verhindern, dass Informationen,
die in mindestens einer virtuellen Speichervorrichtung gespeichert sind, korrumpiert
werden.
Bekannt ist aus der US 5,754,821
ein Verfahren und System zur Bereitstellung eines Zugriffs auf eine geschützte
Partition einer Speichervorrichtung mit Direktzugriff in einem Datenverarbeitungssystem,
das eine Speichervorrichtung mit Direktzugriff umfasst, einen Adapter, der die E/A
der Speichervorrichtung steuert und außerdem einen Schutzmechanismus aufweist,
welcher den Zugriff auf eine Speicherpartition auf einer Speichervorrichtung einschränkt,
einen Treiber für das Adaptergerät zur Steuerung des Adapters und einen
Treiber für das Systemblockgerät zur Übertragung von E/A-Befehlen
zur Systempartition vom Betriebssystem zum Treiber des Adaptergerätes. Das
Verfahren umfasst die Schritte zum Erhalten einer Aufforderung zum Lesen oder Schreiben
auf einer geschützten Speicherpartition, Generieren eines Befehlsdatenblocks,
der die Speichervorrichtung zum Lesen oder Scheiben anweist, und Generieren eines
Durchlaufbefehls, der den Befehlsdatenblock enthält, welcher den Adapter zum
Senden des Befehlsdatenblocks ohne verstärkten Schutz der Speicherpartition
anweist. Das Verfahren fährt fort, indem es den Durchlaufbefehl zum Adapter
sendet, welcher dann den Befehlsdatenblock der Speichervorrichtung übergibt,
um ohne verstärkten Speicherpartitionsschutz ausgeführt zu werden.
Dementsprechend besteht ein Bedarf für ein Datenschutzsystem,
welches weder betriebssystem- noch prozessorabhängig ist und das durch bösartige
Software oder einen bösartigen Benutzer umgangen oder abgeschaltet werden kann.
KURZDARSTELLUNG DER ERFINDUNG
Gemäß der Erfindung wird ein Verfahren zum Schutz von Daten,
die auf einem Speichermedium für Daten gespeichert sind, bereitgestellt, so
wie es in den beigefügten Ansprüchen dargestellt ist.
Ausführungsformen der vorliegenden Erfindung verwenden einen
Datenschutz-Controller, der zwischen einen Prozessor (beispielsweise ein Mikroprozessor
oder Mikrocontroller) eines Rechensystems und einer Speichervorrichtung für
Daten (beispielsweise ein Festplattenlaufwerk, Diskettenlaufwerk, Speicherstift)
geschaltet ist. Der Controller wird zum Erstellen und Verwalten eines Bereichs für
geschützte Daten und eines Bereichs für virtuelle Daten auf der Datenspeichervorrichtung
verwendet. Nach dem Erstellen des Bereiches für geschützte Daten und der
Bereiche für virtuelle Daten verbirgt der Controller den Bereich für virtuelle
Daten vor dem Prozessor. Der Controller präsentiert dem Prozessor die Datenspeichervorrichtung
so, als ob sie die gleiche Kapazität wie der einzige Bereich für geschützte
Daten hätte.
Zunächst speichert ein Administrator oder eine andere befugte
Person Daten (die Betriebssystem-Software, Anwendungssoftware und Daten umfassen
können) im Bereich für geschützte Daten anhand eines Konfigurations-
und Installationsverfahrens. Eine Speichertabelle für geschützte Daten
wird verwaltet, um den Platz innerhalb des Bereiches für geschützte Daten
aufzuzeichnen, wo jedes besondere Stück geschützter Daten gespeichert
wird.
Anschließend wird der Controller in einem Schutzmodus betrieben,
in welchem die geschützten Daten, die im Bereich für geschützte Daten
gespeichert sind, gelesen, aber nicht überschrieben werden können. Die
Daten, welche aus dem Bereich für geschützte Daten gelesen sowie die Daten,
die im Bereich für geschützte Daten gespeichert werden sollen, sind im
Bereich für virtuelle Daten gespeichert. Während derselben das Rechnersystem
verwendenden Sitzung ist die Benutzung der virtuellen Daten den geschützte
Daten vorzuziehen, damit die virtuellen Daten nachgeprüft und geändert
werden können. In einer Ausführungsform wird jedoch zu Beginn jeder neuen
Sitzung die Speichertabelle für geschützte Daten vom Controller in eine
interne Speichertabelle für Daten gelesen, und der Bereich für virtuelle
Daten wird ignoriert und behandelt als ob er leer wäre. Alle im Bereich für
virtuelle Daten während der vorhergehenden Sitzung gespeicherten Daten werden
verworfen. Der Controller beseitigt damit die Auswirkung unerwünschter Veränderungen
an den geschützten Daten durch unbefugte Benutzer und bösartige Software
wie Viren.
In einer anderen Ausführungsform werden Veränderungen im
Bereich für virtuelle Daten nicht zu Beginn jeder Sitzung verworfen. Außerdem
wird eine Speichertabelle für virtuelle Daten verwaltet und durch den Controller
beim Start jeder Sitzung eingelesen. Der Controller kann allerdings angewiesen werden,
die virtuellen Daten durch Löschen ihrer internen Speichertabelle für
Daten zu verwerfen, um dann nur die Speichertabelle für geschützte Daten
einzulesen.
In einer noch anderen Ausführungsform können Veränderungen,
die im Bereich für virtuelle Daten gespeichert sind, permanent übernommen
werden, indem der Controller angewiesen wird, sie in einem Bereich für geschützte
Daten zu kopieren.
Der Controller kann auch die Verwaltung eines Bereichs für ungeschützte
Daten ermöglichen, damit ein Benutzer ungeschützte Daten speichern kann,
welche beim Verwerfen der virtuellen Daten nicht verworfen werden. In dieser Ausführungsform
werden die Bereiche für geschützte und ungeschützte Daten dem Controller
als separate Speichervorrichtungen für Daten präsentiert, selbst wenn
sie in Wirklichkeit in getrennten logischen Partitionen auf einer einzigen physikalischen
Speichervorrichtung für Daten lokalisiert sind.
Der Controller ist mit Redundanz- und Fehlerkorrekturverfahren wie
RAID kompatibel, welche der von diesem Verfahren bereitgestellten Sicherheit eine
Datenschutzkomponente hinzufügen.
Die Erfindung ist nach Anspruch 1 definiert.
KURZE BESCHREIBUNG DER ZEICHNUNGEN
Eine bevorzugte Ausführungsform dieser Erfindung ist nachstehend
anhand der Zeichnungen näher erläutert, wobei:
1 ein Blockdiagramm eines ersten Rechensystems darstellt,
das eine erste Ausführungsform eines Datenschutz-Controllers gemäß
dieser Erfindung zeigt.
2 ein Konfigurationsverfahren gemäß dieser
Erfindung vorstellt.
2A ein Formatierverfahren gemäß dieser Erfindung
darstellt.
3 ein Installationsverfahren gemäß dieser
Erfindung darstellt.
4A und 4B den Controller-Betrieb
von 1 in einem Schutzmodus darstellt, und
5 ein Blockdiagramm eines zweiten Rechensystems zeigt,
das eine zweite Ausführungsform dieser Erfindung umfasst.
NÄHERE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
Zunächst wird Bezug auf 1 genommen,
die ein Rechensystem 22 darstellt, das eine erste Ausführungsform
eines Datenschutz-Controllers 20 gemäß dieser Erfindung enthält.
Das Rechensystem 22 umfasst einen Prozessor 24 und eine Speichermedium
26 für Daten.
Das Rechensystem 22 kann jede Art von Vorrichtung sein, die
Software und/oder das Speichern von Daten in einer Speichervorrichtung erfordert.
Das Rechensystem 22 kann beispielsweise ein typischer Personalcomputer
sein. In diesem Fall ist der Prozessor 24 ein Mikroprozessor, der den Computer
betreibt, und das Speichermedium 26 für Daten kann ein Festplattenlaufwerk
oder sonstige Speichervorrichtung sein. Bei einem anderen Beispiel kann das Rechensystem
22 eine Spielkonsole sein. In diesem Fall ist der Prozessor 24
ein Mikroprozessor oder Mikrocontroller, der die Konsole betreibt und das Speichermedium
26 für Daten kann eine Vorrichtung für Halbleiterspeicher wie
zum Beispiel ein "Speicherstift" usw. sein.
Der Prozessor 24 ist an eine Prozessorschnittstelle
28 des Controllers 20 über einen Prozessordatenbus
30 gekoppelt. Der Prozessor 24 führt beim Controller
20 Anforderungen zum Lesen von Daten und Anforderungen zum Schreiben von
Daten mit Hilfe des Prozessordatenbusses 30 durch. Eine Schnittstelle
32 der Vorrichtung für Daten des Controllers 20 ist an eine
Controller-Schnittstelle 34 des Speichermediums 26 für Daten
über einen Datenbus 36 der Speichervorrichtung gekoppelt. Der Controller
20 liest Daten aus der und schreibt Daten in das Speichermedium
26 für Daten ein mit Hilfe des Datenbusses 36 auf der Basis
der vom Prozessor 24 erhaltenen Aufforderungen zum Lesen und Schreiben.
Die Prozessor-Schnittstelle 28 ist vorzugsweise identisch
mit der Controller-Schnittstelle 34. Auf diese Weise kann der Controller
20 in die Kopplung zwischen Prozessor 24 und Speichermedium
26 für Daten geschaltet werden.
Das Speichermedium 26 für Daten enthält einen Speicherbereich
38 für Daten, welcher in eine Anzahl von Datenblöcken
39 aufgeteilt ist, wobei jeder Block fähig ist, eine begrenzte Datenmenge
zu speichern. Bestimmungsgemäß können die Blöcke 39
geschützte Datenblöcke 44, virtuelle Datenblöcke
46 und ungeschützte Datenblöcke 47 sein. Der Speicherbereich
38 für Daten ist in drei Bereiche für Daten aufgeteilt: ein Bereich
40 für geschützte Daten mit geschützten Datenblöcken
44, ein Bereich 42 für virtuelle Daten mit virtuellen Datenblöcken
46 und ein Bereich 43 für ungeschützte Daten mit ungeschützten
Datenblöcken 47. Die Anzahl geschützter Datenblöcke
44 im Bereich 40 für geschützte Daten ist vorzugsweise
gleich der Anzahl virtueller Datenblöcke 46 in den Daten
42 des Bereichs für virtuelle Daten, damit jeder virtuelle Datenblock
mit einem Block 44 für geschützte Daten übereinstimmt.
Der Bereich 40 für geschützte Daten enthält
eine Speichertabelle 50 für geschützte Daten. Die Speichertabelle
50 für geschützte Daten enthält eine Aufzeichnung für
jeden geschützten Block, der verwendet wird, um aufzuzeichnen, ob jeder besondere
geschützte Block 44 im Einsatz ist und, falls zutreffend, die im geschützten
Block gespeicherten spezifischen Daten und die Beziehung des Blocks zu anderen geschützten
Blöcken, die zugehörige Daten enthalten (wenn sich beispielsweise eine
Datendatei über mehrere Blöcke erstreckt, können die Blöcke
in einer Liste zur Verknüpfung von Dateien vereint werden), aufzuzeichnen.
Die in einem Bereich 40 für geschützte Daten gespeicherten Daten
werden als "geschützte Daten" bezeichnet.
Der Bereich 42 für virtuelle Daten enthält eine
Speichertabelle 51 für virtuelle Daten, welcher in einer ähnlichen
Weise wie die Tabelle 50 zum Speichern geschützter Daten benutzt wird.
Daneben enthält der Bereich 42 für virtuelle Daten eine Virtuelle-Block-Anwendungstabelle
52 zur Angabe, welche virtuellen Blöcke 46 gültige virtuelle
Daten enthalten. Die Virtuelle-Block-Anwendungstabelle 52 wird typischerweise
ein Bit enthalten, das jedem virtuellen Block 46 entspricht. Ist ein Sonderbit
auf "1" gesetzt, enthält der entsprechende virtuelle Block 46 gültige
virtuelle Daten. Ist das Bit auf "0" gesetzt, enthält der entsprechende virtuelle
Block 46 keine gültigen "virtuellen Daten". Die in einem Bereich
42 für virtuelle Daten gespeicherten Daten werden als "virtuelle Daten"
bezeichnet.
Der Bereich 43 für ungeschützte Daten enthält
ebenfalls eine Tabelle 53 zum Speichern ungeschützter Daten, die auch
auf ähnliche Weise wie die Tabelle 50 zum Speichern geschützter
Daten benutzt wird. Die im Bereich 43 für ungeschützte Daten
gespeicherten Daten werden als "ungeschützte Daten" bezeichnet.
Der Controller 20 enthält eine Tabelle 48 zur
Verwendung eines geschützten Bereiches, welcher zur Bereithaltung einer Kopie
der Speichertabelle 50 für geschützte Daten benutzt wird, wenn
der Controller 20 im Einsatz ist. Der Controller 20 enthält
außerdem eine Anwendungstabelle 49 eines virtuellen Bereichs, welcher
sowohl Kopien von der Speichertabelle 51 für virtuelle Daten als auch
von der Virtuelle-Block-Anwendungstabelle 52 bereitstellen soll, wenn der
Controller 20 im Einsatz ist. In der bevorzugten Ausführungsform dieser
Erfindung speichert der Controller 20 nicht den Platz der Daten, die im
Bereich für ungeschützte Daten gespeichert sind, obgleich diese Möglichkeit
im erfindungsgemäßen Rahmen besteht.
Der Controller 20 enthält außerdem einen lokalen
Speicherbereich 54, welcher zum Puffern von Daten, während sie im
Bereich 40 für geschützte Daten oder im Bereich 42 für
virtuelle Daten ausgelesen oder eingeschrieben werden, benutzt wird. Die Speicherkapazität
des lokalen Speicherbereichs 54 ist vorzugsweise mindestens
gleich der eines Blocks 39. Mehr bevorzugt ist der lokale Speicherbereich
54 groß genug, den Inhalt mehrerer Blöcke 39 bereitzustellen,
so dass größere Datendateien als ein Block 39 auf wirksamere
Weise übertragbar sind.
Das nachstehend erläuterte Ausführungsbeispiel betrifft
ein Rechensystem 22. Das Beispiel umfasst ein typisches Rechensystem (nicht
dargestellt), das sich für den Einsatz ein einem Büroumfeld eignet. Das
beispielhafte Rechensystem verwendet das Betriebssystem Microsoft Windows. Der Prozessor
24 des Rechensystems ist der zur Ausführung von Software und Abläufen
der Steuerperipheriegeräte benutzte Mikroprozessor. Das Speichermedium
26 für Daten des Rechensystems ist ein einfaches Festplattenlaufwerk
vom IDE-Typ. Das IDE-Typ-Festplattenlaufwerk wird über einen IDE-Controller
betrieben, der zwischen den Prozessor und das Festplattenlaufwerk selber geschaltet
ist.
Im beispielhaften Rechensystem ist der Datenschutz-Controller
20 zwischen den IDE-Controller und das Festplattenlaufwerk geschaltet.
Der Datenschutz-Controller 20 ist für den IDE-Controller transparent.
Aus der Perspektive des IDE-Controllers scheint er direkt mit dem IDE-Festplattenlaufwerk
zu kommunizieren. So wie nachstehend näher erläutert, verbirgt der Controller
20 in Wirklichkeit mindestens einen Teil des IDE-Festplattenlaufwerks vor
dem IDE-Controller und kann eigentlich so tun, als ob er zwei separate physikalische
Festplattenlaufwerke wäre.
Obgleich das erste beispielhafte System nur ein einzelnes Festplattenlaufwerk
umfasst, ist es wichtig, zur Kenntnis zu nehmen, dass ein Rechensystem zwei oder
mehr IDE-Festplattenlaufwerke umfassen kann, die üblicherweise von einem einzelnen
IDE-Controller betrieben werden. Umfasst ein Rechensystem mehr als ein IDE-Festplattenlaufwerk,
wird jedem Festplattenlaufwerk eine "Laufwerksnummer" zugewiesen, die üblicherweise
mit 0 beginnt. (In Systemen mit einem IDE-Festplattenlaufwerk entspricht das einzelne
Festplattenlaufwerk üblicherweise dem Laufwerk 0). Jedes Festplattenlaufwerk
kann dann separat durch den Prozessor des Computers (und sonstige Komponenten) mit
Hilfe jeder Laufwerksnummer adressiert werden. Bestimmte IDE-Festplatten-Controller
lassen sich mit den zwei Festplattenlaufwerken anhand eines einfachen Flachbandkabels
verbinden. Das Flachbandkabel umfasst mehrere Steuerleitungen, die anhand der Laufwerksnummer
das spezifische Festplattenlaufwerk, auf welches bei jedem Vorgang zum Lesen und
Schreiben von Daten zugegriffen wird, identifizieren.
In einem IDE-Festplattenlaufwerk befindet sich der Speicherbereich
38 für Daten physikalisch auf einer oder mehr Plattenflächen,
die physikalisch in Spuren und Sektoren aufgeteilt sind. Der Speicherbereich
38 für Daten ist in logische Blöcke 39 aufgeteilt, die
mit den physikalischen Sektoren übereinstimmen können oder nicht. Beim
Einsatz mit einem Windows-Betriebssystem kann ein IDE-Festplattenlaufwerk in mehrere
logische Partitionen aufgeteilt werden, die üblicherweise durch verschiedene
"Laufwerkskennbuchstaben" bezeichnet werden, wobei jede Partition im Rechensystem
(auf jedem Festplattenlaufwerk) einen einzigen Laufwerkskennbuchstaben haben muss,
der vom Prozessor benutzt werden kann. Ein Festplattenlaufwerk, das nicht auf diese
Weise aufgeteilt ist, kann als mit einer einzigen Partition, die den gesamten Datenspeicherbereich
des Festplattenlaufwerks umgreift, angesehen werden, wobei diese einzelne Partition
einen einzigen Laufwerkskennbuchstaben haben muss.
In diesem Beispiel umfasst das Rechensystem nur ein einziges IDE-Festplattenlaufwerk,
das in drei eindeutige logische Partitionen aufgeteilt ist. Die erste Partition
ist der Bereich 40 für geschützte Daten, die zweite Partition
ist der Bereich 42 für virtuelle Daten und die dritte Partition ist
der Bereich 43 für ungeschützte Daten. Die Blöcke
39, welche die erste Partition beinhalten, sind die geschützten Blöcke
44. Die Blöcke 39, welche die zweite Partition beinhalten,
sind die virtuellen Blöcke 46. Die Blöcke 39, welche
die dritte Partition beinhalten, sind die ungeschützten Blöcke
47. Die drei Partitionen können physikalisch im Datenspeicherbereich
des Festplattenlaufwerks lokalisiert sein und sogar physikalisch miteinander verschachtelt
sein. Wie bereits erwähnt, muss die Anzahl der geschützten Blöcke
44 du die Anzahl der ungeschützten Blöcke 46 vorzugsweise
identisch sein, und es soll vorzugsweise eine Eins-zu-Eins-Beziehung zwischen den
geschützten Blöcken 44 und den ungeschützten Blöcken
46 bestehen.
Ein IDE-Festplattenlaufwerk verwaltet eine Dateizuweisungstabelle
für jede Partition auf dem Festplattenlaufwerk. Die Dateizuweisungstabelle
umfasst einen Eintrag für jeden Block 39 in der Partition, der angibt,
ob der Block benutzt oder unbenutzt ist. Wird der Block benutzt, gibt die Dateizuweisungstabelle
ferner an, welche Datendatei den Block benutzt und wie der Block mit einem oder
mehreren anderen Blöcken 39, die ebenfalls von derselben Datei benutzt
werden, verknüpft ist. Im vorliegenden Beispiel ist die Dateizuweisungstabelle
für die erste Partition die Speichertabelle 50 für geschützten
Daten, die Dateizuweisungstabelle für die zweite Partition die Speichertabelle
51 für virtuelle Daten und die Dateizuweisungstabelle für die
dritte Partition die Speichertabelle 53 für ungeschützte
Daten.
Nachstehend wird der Betrieb des Controllers 20 erläutert.
Im Einsatz enthält der Bereich 40 geschützte Daten,
die nicht geändert oder gelöscht werden dürfen, und der Platz jedes
Stücks geschützter Daten wird in der Speichertabelle 50 für
geschützte Daten gespeichert. Typischerweise werden diese geschützten
Daten von einem Systemadministrator installiert, um von einem Benutzer, dem ein
Rechensystem 22 bereitgestellt wird, benutzt zu werden. Die nachstehend
erläuterten Verfahren 100 und 200 veranschaulichen ein Schema
zum Installieren der geschützten Daten im Bereich 40 für geschützte
Daten.
Bei jeder Sitzung, in welcher das Rechensystem 22 benutzt
wird, hält der Controller 20 den Bereich 42 für virtuelle
Daten zunächst für leer. Die gesamte Virtuelle-Block-Anwendungstabelle
52 wird auf "0" gesetzt, um anzudeuten, dass jeder virtuelle Block
46 virtuelle Daten enthält, die nicht gültig sind.
Da geschützte Daten von jedem geschützten Block
44 im Bereich 40 für geschützte Daten gelesen werden,
sind dieselben Daten gleichzeitig im entsprechenden virtuellen Block 46
im Bereich 42 für virtuelle Daten gespeichert, und die Virtuelle-Block-Anwendungstabelle
52 wird aktualisiert, um anzudeuten, dass der virtuelle Block
46 gültige Daten enthält.
Wenn ein Prozessor 24 eine Schreibaufforderung herstellt,
um geschützte Daten hinzuzufügen, zu ändern oder zu löschen,
wird die Veränderung nicht im geschützten Block 44 im Bereich
40 für geschützte Daten gespeichert, sondern nur als virtuelle
Daten in den entsprechenden virtuellen Blöcken 46 im Bereich
42 für virtuelle Daten. Die Virtuelle-Block-Anwendungstabelle
52 wird aktualisiert, um anzudeuten, dass der virtuelle Block gültige
Daten enthält.
Wenn somit der Prozessor 24 eine Leseaufforderung für
eine geschützte Datendatei herstellt (d.h. ein Textverarbeitungsdokument),
liest der Controller 20 die Datei aus einem oder mehreren geschützten
Blöcken 44 im Bereich 40 für geschützte Daten und
stellt sie dem Prozessor 24 bereit. Gleichzeitig kopiert der Controller
20 die angeforderte Datendatei in einen entsprechenden Satz virtueller
Blöcke 46 im Bereich 42 für virtuelle Daten und aktualisiert
die Virtuelle-Block-Anwendungstabelle 52, um anzudeuten, dass diese Blöcke
gültig Daten enthalten.
Nachdem die Datei abgeändert wurde (d.h. mit dem Textverarbeitungsprogramm)
kann sie dem Controller 20 übermittelt, um in der Speichermedium
26 für Daten gespeichert zu werden. Der Controller 20 speichert
die geänderte Datendatei als virtuelle Daten nur im Bereich 42 für
virtuelle Daten.
Da beim Start jeder Sitzung, während welcher das Rechensystem
22 verwendet wird, der Bereich 42 für virtuelle Daten als
leer gilt, geht die geänderte Datendatei beim Start einer neuen Sitzung (zum
Beispiel durch Aus- und Einschalten des Rechensystems 22 verloren). Die
ursprüngliche Datendatei, welche weiterhin im Bereich 40 für
geschützte Daten gespeichert ist, wird als aktuelle Version der Datendatei
behandelt.
Wenn eine Aufforderung zum Lesen von Daten oder Schreiben von Daten
erhalten wird, die den Bereich 43 für ungeschützte Daten betrifft,
übergibt der Controller 20 die Aufforderung einfach dem Speichermedium
26 für Daten. Im Fall von Aufforderungen zum Lesen erhält der
Controller 20 die angeforderten Lesedaten vom Speichermedium
26 für Daten und gibt sie an den Prozessor 24 weiter. Der
Controller 20 puffert also einfach die Aufforderungen zum Lesen von Daten
und Schreiben von Daten sowie die Daten selber, wenn der Prozessor 24 eine
Aufforderung in Bezug auf einen Bereich 43 für ungeschützte Daten
herstellt. Dies setzt voraus, dass das Speichermedium 26 für Daten
eine intelligente Vorrichtung ist, die auf unabhängige Weise Aufforderungen
zum Lesen von Daten und Schreiben von Daten befriedigen kann. Das IDE-Festplattenlaufwerk
des beispielhaften Rechensystems ist in der Lage, solche Aufgaben zu übernehmen.
Allerdings, wenn der Controller 20 mit einer Speichervorrichtung für
Daten benutzt wird, die den Controller 26 benötigt, um ihre Lese-
und Schreibabläufe direkt zu steuern, kann der Controller 20 gemäß
jedem beliebigen Protokoll zum Speichern von Daten konfiguriert werden. Die Funktion
des Controllers 20 beim Beantworten der Aufforderungen zum Lesen von Daten
und Schreiben von Daten wird nachstehend in Bezug auf das Verfahren 300
erläutert.
Zunächst wird Bezug auf 2 genommen,
die ein Verfahren 100 zum Konfigurieren des Speichermediums 26
für Daten zeigt, damit Daten im Speicherbereich 38 für Daten
gespeichert werden können. Das verfahren 100wird unter der Kontrolle
eines Systemadministrators ausgeführt, der das von einem Benutzer einzusetzende
Rechensystem 22 konfiguriert.
Das Verfahren 100 beginnt in Schritt 102, in welchem
der Controller 20 durch den Administrator in einen Konfigurationsmodus
gesetzt wird. Typischerweise wird der Administrator den Controller 20 in
den Konfigurationsmodus durch Ausführung der Konfigurationssoftware, die mit
dem Controller 20 zu diesem Zweck bereitgestellt wird, setzen. Der Rest
des Verfahrens 100 soll vorzugsweise ablaufen. Die Konfigurationssoftware
wird vorzugsweise mit einem Passwortmechanismus bereitgestellt, um das Setzen des
Controllers 20 in den Konfigurationsmodus zu vermeiden, sofern kein ordnungsgemäßes
Passwort bereitgestellt wird. Außerdem darf der Controller 20 vorzugsweise
nur in den Konfigurationsmodus gesetzt werden, nachdem die Konfigurationssoftware
nach Einschalten des Rechensystems 22 ausgeführt ist.
Das Verfahren 100 wechselt dann zum Schritt 104.
Jedes Speichermedium 26 für Daten wird eine maximale Größe
aufweisen, welche typischerweise als die höchste Anzahl von 8-Bit-Byte-Daten,
die in seinem Speicherbereich 38 für Daten gespeichert werden können,
ausgedrückt wird. In diesem Schritt ist der Speicherbereich 38 für
Daten des Speichermediums 26 für Daten in den Bereich 40
für geschützte Daten, in den Bereich 42 für virtuelle Daten
und in den Bereich 43 für ungeschützte Daten aufgeteilt.
Der Controller 20 zeigt eine Dialogbox an, die den Administrator
fragt, wie groß der Bereich 43 für ungeschützte Daten sein
soll. In Erwiderung auf die ausgewählte Größe, bestimmt der Controller
20 einen entsprechenden Anteil des Speicherbereichs 38 für
Daten als Bereich 43 für ungeschützte Daten.
Der Rest des Speicherbereichs 38 für Daten wird in den
Bereich 40 für geschützte Daten und in den Bereich
42 für virtuelle Daten aufgeteilt.
Da der Bereich 40 für geschützte Daten und der
Bereich 42 für virtuelle Daten vorzugsweise dieselbe Größe
mit einer Eins-zu-Eins-Übereinstimmung zwischen geschützten Blöcken
44 und virtuellen Blöcken 46 aufweisen, wird der Controller
20 vorzugsweise den Rest des Speicherbereichs 38 für Daten
nach der Erstellung des Bereiches 43 für ungeschützte Daten aufteilen,
so dass so weit wie möglich die Anzahl geschützter Blöcke
44 und virtueller Blöcke 46 (nach Ausführung des Verfahrens
110 (2A)) identisch ist.
In diesem beispielhaften Rechensystem führt Schritt
104 zum Speicherbereich 38 für Daten, der in die drei nachstehend
beschriebenen Partitionen aufgeteilt ist.
Das Verfahren 100 wechselt dann zum Schritt 106,
in welchem der Controller 20 dem Prozessor 24 andeutet, dass das
Rechensystem 22 zwei Speichervorrichtungen für Daten enthält,
die als "Speichervorrichtungen für virtuelle Daten" bezeichnet werden können.
Der Prozessor 24 wird nicht über das "virtuelle" Wesen der Speichervorrichtungen
für virtuelle Daten informiert. Der Controller 20 deutet dem Prozessor
24 an, dass die erste Speichervorrichtung für virtuelle Daten im Rechensystem
22 eine gleichwertige Kapazität wie die des Bereiches 40
für geschützte Daten hat (welche vorzugsweise gleichwertig mit oder mindestens
kleiner als der Bereich 42 für virtuelle Daten ist) und dass die zweite
Speichervorrichtung für virtuelle Daten im Rechensystem 22 eine gleichwertige
Kapazität wie die des Bereiches 43 für ungeschützte Daten
hat. Der Controller 20 meldet dem Prozessor 24 nicht die Existenz
des Bereiches 42 für virtuelle Daten oder irgendwelche Einzelheiten
dazu. Je nach dem im Rechensystem 22 verwendeten E/A-Protokoll für
Daten, kann der Controller 20 zum Melden spezifischer Merkmale jeder der
zwei Speichervorrichtungen für Daten, die er dem Prozessor 24 meldet,
angefordert werden. Zum Beispiel kann der Controller 20 angefordert werden,
eine Anzahl von Spuren, Sektoren und die Sektorgröße zu melden, die der
für jede der zwei Speichervorrichtungen für Daten beanspruchten Größe
entspricht. Der Controller 20 ist zur Ermittlung von Werten für diese
Merkmale konfiguriert, welche den Größen der Speichervorrichtungen für
virtuelle Daten entsprechen (d.h. den Größen des Bereiches 40
für geschützte Daten und des Bereich 43 für ungeschützte
Daten), und zu Ihrer Meldung an den Prozessor 24. Die Werte werden unter
Ausschluss des Bereiches 42 für virtuelle Daten gemeldet. Es kann
sein, dass in anderen Vorrichtungen solche Informationen nicht erforderlich sind
und dass hier die einzige benötigte Meldung die der nutzbaren Größe
der Bereiche für geschützte und ungeschützte Daten ist.
Der Controller 20 kann als Maskierung in Bezug auf zwei separate
Speichervorrichtungen für virtuelle Daten gelten, wobei jede einer logischen
Partition auf dem Speichermedium 26 für Daten entspricht. Je nach
dem im Rechensystem 22 verwendeten E/A-Protokoll für Daten kann der
Prozessor 24 die Speichervorrichtungen für virtuelle Daten, die verschiedene
Referenzen verwenden, nachträglich identifizieren. Zum Beispiel haben bei dem
beispielhaften Computer die zwei Speichervorrichtungen für virtuelle Daten
verschiedene Laufwerkskennbuchstaben und Laufwerksnummern. Der Controller
20 wird Aufforderungen zum Lesen von Daten und Schreiben von Daten für
die verschiedenen Laufwerkskennbuchstaben erhalten und sie für den Einsatz
auf der geeigneten Partition des IDE-Festplattenlaufwerks umarbeiten.
Das der Bereich 42 für die virtuellen Daten vor dem
Prozessor 24 verborgen bleibt, ist der effektiv nutzbare Speicherdatenbereich
auf dem Speichermedium 26 für Daten durch die Größe des
Bereiches 42 für virtuelle Daten reduziert. Wenn das Speichermedium
26 für Daten beispielsweise einen Speicherbereich 38 mit
einer Kapazität von 10 Megabyte (Mb) aufweist und der Bereich 40 für
geschützte Daten für eine Datenkapazität von 4 Mb gewählt wird,
dann haben sowohl der Bereich 40 für geschützte Daten als auch
der Bereich 42 für virtuelle Daten jeweils eine Datenkapazität
von 4 Mb und der restliche Bereich von 2 Mb wird als Bereich 43 für
ungeschützte Daten zugewiesen. Der Bereich 42 für virtuelle Daten
wird vor dem Prozessor 24 verborgen. Der Bereich 40 für geschützte
Daten erscheint dem Prozessor 24 wie ein 4-Mb-Speicherbereich für
Daten und der Bereich 43 für ungeschützte Daten erscheint dem
Prozessor 24 wie ein 2-Mb-Speicherbereich für Daten.
Damit ist das Verfahren 100 beendet.
Nach Beendigung des Verfahrens 100 wird der Prozessor
24 so funktionieren, als ob das Rechensystem 22 zwei separate
physikalische Speichervorrichtungen für Daten enthält. Im Fall des beispielhaften
Rechensystems mit einem einzigen IDE-Festplattenlaufwerk, das in drei Partitionen
aufgeteilt ist, wird der Prozessor die erste Partition als ein erstes physikalisches
Laufwerk mit einem einzelnen Laufwerkskennbuchstaben und einer Laufwerksnummer (d.h.
Laufwerkskennbuchstabe C: und Laufwerksnummer 0) und die dritte Partition als ein
zweites physikalisches Laufwerk mit einem einzelnen Laufwerkskennbuchstaben und
einer Laufwerksnummer (d.h. Laufwerkskennbuchstabe D: und Laufwerksnummer 1) sehen.
Der Prozessor 24 ist nicht in der Lage auf den Bereich 42 für
virtuelle Daten zuzugreifen, da der Prozessor 24 in Unkenntnis über
die Existenz des Bereiches 42 für virtuelle Daten ist.
Das Verfahren 100 kann wiederholt werden, um die Größe
des Bereiches 43 für ungeschützte Daten und die Größen
des Bereiches 40 für geschützte Daten und des Bereich
42 für virtuelle Daten zu variieren. Wenn das Verfahren
100 erstmals auf einem Speichermedium 26 für Daten, das bereits
Daten enthält, durchgeführt wird, kann das Verfahren 100 konfiguriert
werden, um diese Daten in einen Bereich 40 für geschützte Daten
oder einen Bereich 43 für ungeschützte Daten zu bewegen, soweit
die Daten für diese Datenbereiche geeignet sind, oder in andere Speichervorrichtungen
für Daten. Wenn das Verfahren 100 anschließend auf einem Festplattenlaufwerk
ausgeführt wird und die Größe des Bereiches 40 für
geschützte Daten oder des Bereiches 43 für ungeschützte
Daten so reduziert ist, dass die im Datenbereich existierenden Daten nicht mehr
geeignet sind, dann gehen bestimmte dieser Daten verloren oder können alternativ
auf einen anderen Platz übertragen werden.
Die nächste Bezugnahme ist 2A, die
ein Verfahren 110 zur Formatierung des Bereiches 40 für geschützte
Daten und des Bereiches 43 für ungeschützte Daten darstellt,
damit Daten im Bereich 40 für geschützte Daten und im Bereich
43 für ungeschützte Daten gespeichert werden können. Das
Verfahren 110 wird unter der Kontrolle eines Systemadministrators durchgeführt,
der das Rechensystem 22 für den Einsatz durch einen Benutzer konfiguriert.
Das Verfahren 110 beginnt in Schritt 112, in welchem
der Controller 20 durch den Administrator in einen Formatiermodus gesetzt
wird. Typischerweise wird der Administrator den Controller 20 in den Formiermodus
setzen, indem er die mit dem Controller 20 zu diesem Zweck bereitgestellte
Formatiersoftware ausführt.
Das Verfahren 110 wechselt dann zum Schritt 114.
In Schritt 114 wird der Bereich 40 für geschützte Daten
und der Bereich 43 für ungeschützte Daten formatiert. In vielen
Fällen benötigen die Speicherbereiche 40 und 43 für
Daten eine spezifische Formatierung je nach Typ und Art des Rechensystems
22, an welches sie gekoppelt sind. Durch diese Formatierung wird die Speichertabelle
50 für geschützte Daten und geschützte Blöcke
44 und auch die Speichertabelle 53 für ungeschützte
Daten und Blöcke 47 erstellt.
In dem beispielhaften Rechensystem umfasst das Windows-Betriebssystem
Dienstprogramme zur Ausführung dieses Formates. Die Windows-Dienstprogramme
"Fdisk" und "Format" werden zur Erstellung der Speichertabelle 50 für
geschützte Daten und geschützte Datenblöcke 44 und auch
zur Erstellung der Speichertabelle 53 für ungeschützte Daten
und Datenblöcke 47 verwendet.
Das Verfahren 110 ist damit beendet.
Die nächste Bezugnahme ist 3, welche
ein Verfahren 200 zur Installation von Daten im Bereich 40 für
geschützte Daten des Speichermediums 26 für Daten darstellt.
Auch das Verfahren 200 wird typischerweise unter der Kontrolle des Systemadministrators
durchgeführt.
Das Verfahren 200 beginnt in Schritt 202, in welchem
der Controller 20 in einen Installationsmodus durch den Administrator gesetzt
wird. Dies geschieht typischerweise, indem die mit dem Controller 20 zu
diesem Zweck bereitgestellte Installationssoftware ausgeführt wird. Die Installationssoftware
umfasst vorzugsweise einen Passwortschutzmechanismus, der vom Administrator die
Eingabe eines Passworts anfordert, bevor der Controller 20 den Installationsmodus
eingibt. Vorzugsweise kann der Controller 20 nur in den Installationsmodus
gesetzt werden, wenn das Rechensystem 22 eingeschaltet ist.
Das Verfahren 200 wechselt dann zum nächsten Schritt
204, in welchen der Administrator Daten in einen Bereich 40 für
geschützte Daten laden kann. Der Administrator kann zum Beispiel ein Betriebssystem,
das zur Steuerung des Prozessors 24 und sonstiger Teile des Rechensystems
22 benutzt wird (nicht dargestellt), Anwendungssoftware wie Textverarbeitungsprogramme,
Spiel- oder Kommunikationssoftware und Datendateien laden. Die in den Bereich
40 für geschützte Daten geladenen spezifischen Daten hängen
von der Art und beabsichtigten Verwendung des Rechensystems 22 ab. Während
des Installationsmodus kann der Administrator ferner die im Bereich 40
für geschützte Daten gespeicherten Daten löschen und bearbeiten.
Solange der Administrator Daten im Bereich 40 für geschützte
Daten hinzufügt, löscht und ändert, wird die Speichertabelle
50 für geschützte Daten über das Speichermedium
26 für Daten auf dem neuesten Stand gehalten, damit diese Speichertabelle
50 für Daten eine Aufzeichnung des Platzes aller Daten, die im Bereich
40 für geschützte Daten gespeichert sind, enthält.
Beim Schritt 204 speichert der Administrator nicht jede Information
in den Bereich 42 für virtuelle Daten.
In dem beispielhaften Rechensystem kann zu Schritt 204 die
Installation eines Betriebssystems wie Microsoft WindowsTM gehören
und Anwendungssoftware wie Microsoft WordTM auf dem IDE-Festplattenlaufwerk.
Weitere Software und Daten können auch im Bereich 40 für geschützte
Daten installiert werden. Der Prozessor wird die Partition für geschützte
Daten als Laufwerkskennbuchstabe C: sehen und bezeichnen; das IDE-Festplattenlaufwerk
wird beispielsweise die Dateizuweisungstabelle für die Partition geschützter
Daten verwalten, um den Platz aller installierten Softwareprogramme und Daten, welche
die vom Administrator zugewiesenen Dateinamen verwenden, anzugeben.
Das Verfahren 200 ist beendet, wenn der Administrator die
Installation von geschützten Daten im Bereich 40 für geschützte
Daten abgeschlossen hat. Sobald das Verfahren 200 beendet ist, werden die
im Bereich 40 für geschützte Daten gespeicherten Daten als geschützte
Daten bezeichnet.
Sobald die geschützten Daten im Bereich 40 für
geschützte Daten installiert sind, ist das Rechensystem 22 für
den normalen Betrieb einsatzbereit. Typischerweise wird das Rechensystem
22 in diesem Stadium einem Benutzer zur regelmäßigen Nutzung
bereitgestellt. Das Verfahren 200 kann vom Administrator wiederholt werden,
um den Inhalt des Bereiches 40 für geschützte Daten zu ändern.
Bei solchen nachträglichen Wiederholungen des Verfahrens 200 wird
die Speichertabelle 50 für geschützte Daten durch das Speichermedium
26 für Daten (oder durch den Controller 20 je nach vom Speichermedium
26 für Daten verwendeten Protokoll) auf dem neuesten Stand gehalten.
Der Administrator speichert keine Information, die auf permanente Weise im Speicherbereich
42 für virtuelle Daten zu schützen ist.
Die nächste Bezugnahme betrifft 4A
und 4B, die ein Verfahren 300 zeigen, mittels
welchem der Controller 20 während seines normalen Betriebsablaufes
einwirkt. Beim Verfahren 300 wird eine Anforderung vom Prozessor
24 für zuvor im Speichermedium 26 für Daten gespeicherte
Daten als "Aufforderung zum Lesen" bezeichnet, und die angeforderten Daten werden
als "zu lesende Daten" bezeichnet. Eine Aufforderung vom Prozessor 24,
Daten im Speichermedium 26 für Daten zu speichern, wird als "Aufforderung
zum Schreiben", und die zu schreibenden Daten als "zu schreibende Daten" bezeichnet.
Das Verfahren 300 beginnt in Schritt 302, in welchem
der Controller in einen Schutzmodus gesetzt wird. Der Controller 20 ist
konfiguriert, um automatisch in den Schutzmodus zu wechseln, wenn eine das Rechensystem
22 verwendende Sitzung startet, sofern der Controller 20 nicht
speziell in den Konfigurationsmodus (Verfahren 100) oder Installationsmodus
(Verfahren 200) gesetzt wird. Eine das Rechensystem 22 verwendende
Sitzung wird typischerweise durch Einschalten des Rechensystems 22 oder
durch seine Rückstellung gestartet.
Das Verfahren 300 wechselt dann zum Schritt 303,
in welchem der Controller 20 den Bereich 42 für virtuelle
Daten initialisiert. Der Controller 20 setzt den Wert jedes Bits in der
Virtuelle-Block-Anwendungstabelle 52 auf "0", um anzudeuten, dass alle
virtuellen Blöcke 46 keine gültigen Daten enthalten. Der Controller
20
löscht außerdem den Inhalt der Speichertabelle für
virtuelle Daten, damit sie andeutet, dass alle virtuellen Blöcke
46 unbenutzt sind. Die Auswirkung von Schritt 303 besteht darin,
dass alle virtuellen Daten die im Bereich 42 für virtuelle Daten bei
einer vorhergehenden Sitzung, die das Rechensystem 22 verwendet hat, gespeichert
wurden, effektiv verworfen werden. Der Controller 20 löscht den Inhalt
jedes virtuellen Blocks 46 nicht wirklich, denn das würde einen erheblichen
Zeitaufwand erfordern und das Anlaufverfahren des Rechensystems 22 wesentlich
verlängern. Solch ein Löschvorgang ist jedoch nicht erforderlich. Alle
Daten, die in einem virtuellen Block 46 gespeichert waren, werden vom Controller
20 ignoriert, da die Virtuelle-Block-Anwendungstabelle 52 jeden
Block als "nicht gültig" gekennzeichnet zeigt und die Speichertabelle
51 für virtuelle Daten als "unbenutzt".
Bestimmte Rechensysteme ermöglichen einem Prozessor
24 E/A-Aufforderungen für Low-Level-Daten, indem ein Speichermedium
26 für Daten speziell angewiesen wird auf einen spezifischen Teil
seines Speicherbereichs 38 für Daten zuzugreifen. Ein Prozessor kann
beispielsweise ein IDE-Festplattenlaufwerk anweisen, den Inhalt eines spezifischen
Blocks 39 auf der Basis einer physikalischen Spur und einer Sektornummer
bereitzustellen. Beim Einsatz mit einem IDE-Festplattenlaufwerk wird der Controller
20 Spur- und Sektorbegrenzungen gemeldet haben, die der Größe
der Partition 40 für geschützte Daten und der Partition
43 für ungeschützte Daten zum Prozessor in Schritt
106 entsprechen.
Wenn der Prozessor 24 versucht, Daten aus dem Speicherbereich
42 für virtuelle Daten, die solche E/A-Aufforderungen für Low-Level-Daten
verwenden, erhält der Controller 20 die Aufforderungen, da er zwischen
dem Prozessor 24 und der Speichervorrichtung geschaltet ist. Ist eine Aufforderung
für einen Datenblock bestimmt, der entweder nicht gültig oder unbenutzt
ist, wird der Controller 20 lediglich verweigern, die Aufforderung zu erfüllen.
Selbst ein bösartiger Benutzer des Rechensystems 22, der über
die Anwendung des Controllers 20 und die Existenz des Bereiches
42 für virtuelle Daten auf dem Speichermedium 26 unterrichtet
ist, kann dann nicht mehr Daten benutzen, die im Bereich 42 für virtuelle
Daten gespeichert sind, außer wenn diese Daten im Bereich 42 für
virtuelle Daten während der das Rechensystem 22 verwendenden laufenden
Sitzung gespeichert wurden.
Das Verfahren 300 wechselt nun zum Schritt 304.
In diesem Schritt liest der Controller 20 die Speichertabelle
50 für geschützte Daten aus dem Speichermedium 26 für
Daten in seine Anwendungstabelle 48 für seinen internen geschützten
Bereich ein. Der Controller 20 initialisiert seine Anwendungstabelle
49 für seinen internen virtuellen Bereich, damit sie – wie
die Speichertabelle 51 für virtuelle Daten und die Virtuelle-Block-Anwendungstabelle
52 – andeutet, dass jeder virtuelle Block 46 "nicht gültig"
und "unbenutzt" ist.
Die Anwendungstabelle 48 für geschützte Bereiche
wird verwendet, damit die Informationen in der Speichertabelle 50 für
geschützte Daten während des Verfahrens 300 schneller zugriffbar
sind. Die Anwendungstabelle 49 für virtuelle Bereiche wird verwendet,
damit die Informationen in der Speichertabelle 51 und die Virtuelle-Block-Anwendungstabelle
52 während des Verfahrens 300 schneller zugriffbar sind.
Da die Informationen sowohl in der Anwendungstabelle 48 für geschützte
Bereiche und in der Anwendungstabelle 49 für virtuelle Bereiche direkt
aus den Basistabellen (50, 51 und 52) erhalten werden
können, welche physikalisch im Speichermedium 26 für Daten gespeichert
sind, ist ihre Anwendung optional.
Das Verfahren 300 wechselt dann zum Schritt 306,
in welchem eine Aufforderung zum Lesen oder eine Aufforderung zum Schreiben vom
Prozessor 26 erhalten wird.
Das Verfahren 300 wechselt dann zum nächsten Entscheidungsschritt
308. Wenn die im Schritt 306 erhaltene Aufforderung eine Aufforderung
zum Schreiben ist, wechselt das Verfahren 300 zum Schritt 310.
Andernfalls wechselt das Verfahren 300 zum Entscheidungsschritt
340.
In Entscheidungsschritt 310 wird die Aufforderung zum Lesen
nachgeprüft. Wenn die Aufforderung zum Lesen für ungeschützte Daten
bestimmt ist, die im Bereich 43 für ungeschützte Daten gespeichert
sind, wechselt das Verfahren 300 zum Schritt 330. Andernfalls
wechselt das Verfahren 300 zum Entscheidungsschritt 312.
In Entscheidungsschritt 312 prüft der Controller
20 die Anwendungstabelle 49 für virtuelle Daten nach, um
zu bestimmen, ob die vom Prozessor 24 angeforderten zu lesenden Daten im
Bereich 42 für virtuelle Daten gespeichert sind. Gegebenenfalls wechselt
das Verfahren 300 zum Schritt 320. Andernfalls wechselt das Verfahren
300 zum Schritt 314.
In Schritt 314 prüft der Controller 20 die
Anwendungstabelle 48 für geschützte Daten nach, um zu bestimmen,
in welchem geschützten Block oder welchen geschützten Blöcken
44 die zu lesenden Daten gespeichert sind und liest sie in den lokalen
Speicherbereich 54 ein. Die in diesem Schritt gelesenen Daten sind geschützte
Daten, die ursprünglich im Datenbereich 40 durch den Administrator
in Schritt 204 gespeichert wurden.
Das Verfahren 300 wechselt nun zum nächsten Schritt
316, in welchem die geschützten Daten, die vom Bereich 40
für geschützte Daten in Schritt 314 ausgelesen wurden, an den
Prozessor 26 übermittelt werden.
Das Verfahren 300 wechselt nun zum nächsten Schritt
318, in welchem die geschützten Daten, die aus dem Bereich
40 für geschützte Daten in Schritt 314 gelesen wurden,
im Bereich 42 für virtuelle Daten gespeichert werden. Der Controller
20 bestimmt, welcher virtuelle Block oder welche virtuellen Blöcke
46 dem geschützten Block oder den geschützten Blöcken
44 entsprechen, aus welchem (welchen) die zu lesenden Daten in Schritt
314 gelesen wurden und speichert eine Kopie der zu lesenden Daten in diesem
virtuellen Block oder virtuellen Blöcken 46. Das Speichermedium
26 für Daten wird die Speichertabelle 51 für virtuelle
Daten aktualisieren, um anzudeuten, dass der entsprechende virtuelle Block oder
die entsprechenden virtuellen Blöcke 46 benutzt werden und um ihren
Inhalt anzugeben. Der Controller 20 aktualisiert ferner die Virtuelle-Block-Anwendungstabelle
52, um anzudeuten, dass der entsprechende virtuelle Block oder die entsprechenden
virtuellen Blöcke nun gültige virtuelle Daten enthalten.
Der Controller 20 aktualisiert seine Anwendungstabelle
49 für virtuelle Daten in einer Weise, dass die Aktualisierungen in
der Speichertabelle für virtuelle Daten 51 und in der Virtuelle-Block-Anwendungstabelle
52 reproduziert werden.
Das Verfahren 300 kehrt nun zum Schritt 306 zurück,
um auf die nächste Aufforderung vom Prozessor 24 zu warten.
In Schritt 320 verarbeitet der Controller 20 die
angeforderten zu lesenden Daten, die zuvor im Bereich 42 für virtuelle
Daten gespeichert wurden. Die zu lesenden Daten, die virtuelle Daten sind, können
im Bereich (i) für virtuelle Daten in Schritt 318 gespeichert worden
sein, wobei die vom Bereich 40 für geschützte Daten zu lesenden
Daten in den Bereich 42 für virtuelle Daten oder (ii) Schritt
342 (nachstehend erläutert) kopiert werden, wobei die zu schreibenden
Daten in den Bereich für virtuelle Daten als Antwort auf einen Aufforderung
zum Schreiben vom Prozessor 24 geschrieben werden.
Der Controller 20 bestimmt, in welchem virtuellen Block oder
welchen virtuellen Blöcken 46 die angeforderten virtuellen Daten gespeichert
sind. Der Controller 20 liest die Daten aus diesen Blöcken und übermittelt
sie zum Prozessor 24.
Das Verfahren 300 kehrt nun zum Schritt 306 zurück,
um auf die nächste Aufforderung vom Prozessor 24 zu warten.
In Schritt 330 verarbeitet der Controller 20 Aufforderungen
zum Lesen für ungeschützte Daten, die im Bereich 43 für
ungeschützte Daten gespeichert sind. Der Controller 20 gibt die Aufforderung
zum Schreiben vom Prozessor 24 einfach an das Speichermedium
26 für Daten weiter.
Das Verfahren 300 wechselt nun zum Schritt 332,
in welchem der Controller 20 die angeforderten ungeschützten Daten
aus dem Speichermedium 26 für Daten liest, welches die ungeschützten
Daten aus dem Bereich 43 für ungeschützte Daten erhalten hat.
Der Controller 20 übermittelt die ungeschützten Daten zum Prozessor
20.
Das Verfahren 300 kehrt nun zum Schritt 306 zurück,
um auf die nächste Aufforderung vom Prozessor 24 zu warten.
Im Entscheidungsschritt 340 beginnt der Controller
20 die Abarbeitung einer Aufforderung zum Schreiben vom Prozessor
24. Bezieht sich die Aufforderung zum Lesen auf ungeschützte Daten,
die im Bereich 43 für ungeschützte Daten gespeichert werden sollen,
wechselt das Verfahren 300 zum Schritt 350. Andernfalls werden
die zu schreibenden Daten im Bereich 42 für virtuelle Daten gespeichert,
und das Verfahren 300 wechselt zum Schritt 342.
In Schritt 342 bestimmt der Controller 20, in welchem
virtuellen Block oder welchen virtuellen Blöcken 46
die zu schreibenden Daten geschrieben werden sollen. Entsprechen
die zu schreibenden Daten bereits Daten, die aus geschützten Blöcken
44 im Bereich 40 für geschützte Daten gelesenen wurden,
können die zu schreibenden Daten in die virtuellen Blöcke 46,
welche diesen geschützten Blöcken 44 entsprechen, geschrieben
werden. Handelt es sich bei den zu schreibenden Daten um vom Benutzer des Rechensystems
22 erstellte neue Daten, wird der Controller 20 einen virtuellen
Block oder virtuelle Blöcke 46 auswählen, die in der Speichertabelle
51 für virtuelle Daten und in der Anwendungstabelle 49 für
virtuellen Daten als "unbenutzt" bezeichnet sind. Der Controller 20 speichert
die zu schreibenden Daten im ausgewählten virtuellen Block oder den ausgewählten
virtuellen Blöcken 46. Das Speichermedium 26 für Daten
wird die Speichertabelle 51 für virtuelle Daten aktualisieren, um
anzudeuten, dass der entsprechende virtuelle Block oder die entsprechenden virtuellen
Blöcke 46 nun benutzt werden und um ihren Inhalt anzugeben. Der Controller
20 aktualisiert ferner die Virtuelle-Block-Anwendungstabelle
52, um anzudeuten, dass der entsprechende virtuelle Block oder die entsprechenden
virtuellen Blöcke nun gültige virtuelle Daten enthalten.
Der Controller 20 aktualisiert seine Anwendungstabelle
49 für virtuelle Daten in einer Weise, dass die Aktualisierungen in
der Speichertabelle 51 für virtuelle Daten und in der Virtuelle-Block-Anwendungstabelle
52 reproduziert werden.
Wenn ein besonderer virtueller Block 46, der zuvor zum Speichern
virtueller Daten benutzt wurde, nicht mehr zum Speichern von Daten erforderlich
ist (beispielsweise im Fall einer gekürzten oder gelöschten Datendatei),
ändert das Speichermedium 26 für Daten die Speichertabelle
51 für virtuelle Daten, um anzudeuten, dass der Block unbenutzt ist.
Die Virtuelle-Block-Anwendungstabelle 52 wird jedoch weiterhin andeuten,
dass der Block gültige Daten enthält. Auf diese Weise kann ein virtueller
Block, der zuvor virtuelle Daten enthalten hatte (oder der vielleicht nie virtuelle
Daten enthalten hat) als leer behandelt werden, wodurch der anschließend zu
benutzende Block in die Lage versetzt wird, weitere Daten zu speichern. Die allgemeine
Bedeutung der Angabe benutzt/unbenutzt in der Speichertabelle 51 für
virtuelle Daten und die Angabe gültig/nicht gültig in der Virtuelle-Block-Anwendungstabelle
52 für jeden virtuellen Block 46 wird anhand folgenden Tabelle
dargestellt:
Sobald ein besonderer virtueller Block in der Virtuelle-Block-Anwendungstabelle
52 als gültig identifiziert wurde, bleibt er gültig, bis eine
neue das Rechensystem 22 verwendende Sitzung gestartet wird, zu deren Zeitpunkt
alle in Schritt 303 als ungültig identifizierten virtuellen Blöcke
identifiziert sind.
Im beispielhaften Rechensystem kann das IDE-Festplattenlaufwerk des
beispielhaften Rechensystems seine Datenzuweisungstabelle sowohl für den Bereich
40 für geschützte Daten als auch für den Bereich
42 für virtuelle Daten genau während der Aufforderungen zum Schreiben
virtueller Daten verwaltet werden. Die Speichertabelle 48 für Daten
des Controllers 28 ist unabhängig von der Speichertabelle
51 für virtuelle Daten, da die Speichertabelle 51 für
virtuelle Daten nicht in die Speichertabelle für Daten in Schritt
304 eingelesen wird.
Das Verfahren 300 kehrt nun zum Schritt 306 zurück,
um auf die nächste Aufforderung vom Prozessor 24 zu warten.
In Schritt 350 arbeitet der Controller 20 die Aufforderungen
ab, die den Bereich 43 für ungeschützte Daten betreffen. Der
Controller 20 gibt diese Aufforderungen einfach an das Speichermedium
26 für Daten weiter. Wenn das Speichermedium 26 für
Daten eine Bestätigung bereitstellt, dass die Aufforderung zum Schreiben erfolgreich
beendet ist oder eine Fehlerangabe, dass sie nicht beendet werden konnte, gibt der
Controller die Bestätigung oder die Fehleranzeige an den Prozessor
24 weiter.
Das Verfahren 300 kehrt nun zum Schritt 306 zurück,
um auf die nächste Aufforderung vom Prozessor 24 zu warten.
Wenn der Controller 20 im Schutzmodus (Verfahren
400) ist, schreibt er nicht alle Daten in den Bereich 40 für
geschützte Daten. Demzufolge weist der Bereich 40 für geschützte
Daten immer noch denselben Inhalt auf, den er nach beendetem Verfahren
200 (oder zuletzt durchgeführtem Verfahren, um den Inhalt des Bereiches
40 für geschützte Daten zu ändern) hatte. Während einer
das Rechensystem 22 verwendenden Einzelsitzung werden an geschützten
Daten vorgenommene Veränderungen, Hinzufügungen und Löschvorgänge
nur im Bereich 42 für virtuelle Daten als virtuellen Daten in Schritt
342 gespeichert. Was den Prozessor 24 betrifft, hat es den Anschein,
dass er regelmäßige Aufforderungen zum Lesen und Schreiben von Daten an
das Speichermedium 26 für Daten richtet und dass diese Aufforderungen
routinemäßig als zufriedenstellend erscheinen. Wenn jedoch eine neue das
Rechensystem 22 verwendende Sitzung gestartet wird, gehen alle diese Veränderungen
wegen des Schrittes 303 verloren.
Das erste Mal, wenn irgendwelche geschützten Daten im Bereich
40 für geschützte Daten von einem Controller 20 gelesen
werden, um eine Aufforderung zum Lesen von Daten zu erfüllen, werden die geschützten
Daten in den Bereich 42 für virtuelle Daten als virtuelle Daten (in
Schritt 318) kopiert. Daraus ergibt sich, dass zukünftige Aufforderungen
zum Lesen derselben Daten vom Controller 20 schneller erfüllt werden
können, da die Daten nun im Bereich 42 für virtuelle Daten sind
und der Controller 20 folglich die Möglichkeit hat, von Schritt
312 auf Schritt 320 zu wechseln. Durch dieses Kopieren wird außerdem
ein Bereich 42 für virtuelle Daten aufgebaut, der damit eine zunehmend
vollständige Kopie des Bereiches 40 für geschützte Daten
enthält sowie beliebige Änderungen oder Hinzufügungen an den geschützten
Daten (so wie nachstehend in Verbindung mit Schritt 342 erläutert).
Während einer das Rechensystem 22 verwendenden sehr langen Sitzung
kann eine zunehmende Anzahl von Aufforderungen zum Lesen durch Lesen von virtuellen
Daten aus dem Bereich 42 für virtuelle Daten anstatt durch Lesen von
geschützten Daten aus dem Bereich 40 für geschützte Daten
erfüllt werden.
Der Schritt 318 ist optional. Alternativ könnten alle
Aufforderungen zum Lesen von geschützten Daten erfüllt werden, indem die
geschützten Daten direkt aus dem Bereich 40 für geschützte
Daten gelesen werden. Bei dieser Ausführungsform würde das Speichern von
virtuellen Daten im Bereich 42 für virtuelle Daten nur Hinzufügungen
zu, Änderungen an und das Löschen von geschützten Daten umfassen.
Die vorliegende Erfindung wurde in einer Ausführungsform dargestellt,
die sich für ein Rechensystem 22 eignet, welches durch einen Administrator
eingerichtet wird (mit Hilfe der Verfahren 100 und 200), um über
alle Daten (einschließlich ein Betriebssystem und jegliche Softwareanwendung)
zu verfügen, die ein Benutzer benötigt, um die als geschützte Daten
im Bereich 40 für geschützte Daten vorgespeicherten Rechenaufgaben
auszuführen. Ein Beispiel für ein derartiges Rechensystem ist ein in einem
Büroumfeld benutzter Computer, wo der Benutzer/die Benutzerin hauptsächlich
seine/ihre Arbeit mit Festapplikationen bewältigt.
Der Benutzer kann permanente Änderungen an der Software und den
Daten, die im Bereich 40 für geschützte Daten
gespeichert sind, vornehmen. Der Benutzer kann temporäre Änderungen (die
nur im Bereich 42 für virtuelle Daten gespeichert werden) an den geschützten
Daten vornehmen oder ungeschützte Daten im Bereich 43 für ungeschützte
Daten permanent speichern, wo sie von einer Sitzung zur nächsten Sitzung zurückbehalten
werden. Nimmt der Benutzer irgendwelche Veränderungen an den geschützten
Daten im Computer vor, können die Veränderung durch einfache Rückstellung
des Controllers 20 entfernt werden, indem eine den Computer verwendenden
neue Sitzung durch Ein- und Ausschalten des Computers oder durch Rückstellung
des Computers gestartet wird. In ähnlicher Weise wird jeder Versuch die geschützten
Daten zu ändern, sei es durch ein Virus oder jede sonstige bösartige Aktion,
unwirksam gemacht, da der Bereich für geschützte Daten nie im Schutzmodus
geändert wird. In einem typischen Büroumfeld kann der Einsatz des Controllers
20 die Anzahl und Komplexität der Helpdesk-Anrufe durch die Computer-Benutzer
wesentlich reduziert werden.
Im Kontext des beispielhaften Rechensystems und aus der Perspektive
des Prozessors 24 baut das Verfahren 100 zwei Speichervorrichtungen
für virtuelle Daten auf (d.h. im Kontext des beispielhaften Rechensystems ein
Laufwerk C: und ein Laufwerk D:). Beim Verfahren 200 wird das Laufwerk
C: mit Informationen geladen, die anschließend geschützt werden. Beim
Verfahren 300 kann das Laufwerk C: geändert werden, aber die Änderungen
gehen nach der laufenden Sitzung verloren, und die Änderung von Laufwerk D:
kann als permanent übernommen werden. Die Existenz und die Anwendung des Bereiches
42 für virtuelle Daten zum Schutz des Bereiches 40 für
geschützte Daten ist vollkommen verborgen.
Der Controller 20 stellt den im Bereich 40 für
geschützte Daten gespeicherten geschützten Daten einen starken Schutz
bereit. Der Controller 20 implementiert eine Hardwarelösung, welche
keine Ausführung irgendwelcher Software durch den Prozessor 24 im
Schutzmodus benötigt. Dementsprechend kann ein Virus oder sonstiges bösartige
Programm nicht die Existenz des Controllers 20 durch einfache Untersuchung,
ob Aufrufe des BIOS für Aufforderungen zum Lesen und Aufforderungen zum Schreiben
unterbrochen werden, erkennen. Des weiteren stellt der Controller 20 eine
vollständig transparente Schicht zwischen dem Speichermedium 26 für
Daten und dem Prozessor 24 bereit mit der Ausnahme, dass ein Anteil des
Speicherbereichs für Daten von gleicher Größe wie der Bereich
42 für virtuelle Daten vor dem Prozessor 24 verborgen ist.
Da der Controller 20 für den Prozessor 24 transparent,
ist kann er ohne Rücksicht auf das installierte Betriebssystem auf dem Rechensystem
22 benutzt werden. Weiterhin kann derselbe Controller 20 mit jedem
beliebigen Prozessor oder jeder sonstigen Hardware, die das gleiche Protokoll und
die Controller-Schnittfläche 34 anwendet, benutzt werden. Dies ist
von zunehmendem Vorteil im Modem-Computerumfeld, wo manche Standardspeicher und
Datenspeicherprotokolle und Schnittstellen in einem reichen Angebot an Vorrichtungen
genutzt werden. Spiele und Handgeräte, internetfähige Funktelefone und
zahlreiche andere Vorrichtungen können diese gleichen Datenspeichervorrichtungen
und Protokolle gemeinsam nutzen.
Da der Controller 20 auf wirksame Weise die Schreib- und
Leseabläufe auf dem Speichermedium 26 für Daten steuert, ist
der Controller 20 konfiguriert, um mit der Speichervorrichtung für
Daten anhand des geeigneten E/A-Protokolls für Daten zu kommunizieren und jede
erforderliche Steueranweisung bereitzustellen oder gemäß diesem Protokoll
zu melden. Es kann sein, dass der Controller 20 in dem beispielhaften Rechensystem
einige oder alle Merkmale eines typischen IDE-Festplattenlaufwerk-Controllers benötigt,
um das IDE-Festplattenlaufwerk zu betreiben. Dementsprechend wurde der Controller
20, als zwischen solch einen typischen Controller des IDE-Festplattenlaufwerks
und das IDE-Festplattenlaufwerk geschaltet, dargestellt. In der Tat kann der Controller
20 in einer integrierten Form bereitgestellt werden, die mit einem typischen
IDE-Festplattenlaufwerk in einer Einzeleinheit kombinierbar ist. Die Einzeleinheit
wird mit dem Prozessor 24 kommunizieren, als ob sie zwei separate physikalische
Festplattenlaufwerkeinheiten steuert, aber in Wirklichkeit formt sie die Aufforderungen
zum Lesen und Daten und zum Schreiben von Daten um und arbeitet sie innerhalb der
drei Partitionen auf dem einzelnen Festplattenlaufwerk, das innerhalb des Rechensystem
22 installiert ist, ab.
Das Duplizieren von Daten auf Datenspeichervorrichtungen ist eine
verhältnismäßig kostspielige Lösung, um Daten zu schützen.
Modem-Day-Festplattenlaufwerke und sonstige Datenspeichervorrichtungen haben beachtliche
Datenspeicherkapazitäten und sind im Vergleich zu herkömmlichen Vorrichtungen
kostengünstig. Der Kauf einer 40-Mb- oder größeren Datenspeichervorrichtung
kann eine praktische Lösung und die Zuweisung eines Anteils des Speicherbereiches
als Bereich für virtuelle Daten sinnvoll sein, um einen Bereich für geschützte
Daten gleicher Größe zu schützen.
Die vorliegende Erfindung eignet sich für zahlreiche Varianten
und Änderungen. Einige Möglichkeiten werden nachstehend dargestellt.
Unter Bezugnahme auf 5 soll ein Rechensystem
422 veranschaulicht werden, das eine zweite Ausführungsform
420 dieser Erfindung umfasst. In 5 sind die
Bauelemente, die identisch oder vergleichbar mit jenen von 1
sind, anhand der auf 400 erhöhten Hinweiszahlen von 1
identifiziert.
Das Rechensystem 422 umfasst zwei Speichervorrichtungen
426 und 460 für Daten. Das Speichermedium 426 für
Daten hat einen Speicherbereich 438 für Daten, das einen Bereich
440 für geschützte Daten, eine Speichertabelle 450 für
geschützte Daten, einen Bereich 443 für ungeschützte Daten
und eine Speichertabelle 453 für ungeschützte Daten umfasst,
wobei alle auf die gleiche Weise wie die entsprechenden Bauteile des Speichermediums
26 für Daten funktionieren.
Die Speichervorrichtung 460 für Daten umfasst die Controller-Schnittstelle
462 und einen Speicherbereich 464 für Daten. Die Speichervorrichtung
460 für Daten ist an den Controller 462 gekoppelt, der den
Datenbus 436 der Speichervorrichtung benutzt. Der Bereich 442
für virtuelle Daten und die zugehörige Speichertabelle für virtuelle
Daten befinden sich im Speicherbereich 464 für Daten. Der Bereich
442 für virtuelle Daten und die Speichertabelle 451 für
virtuelle Daten funktionieren auf die gleiche Weise wie den entsprechenden Bauteile
des Speichermediums 426 für Daten.
Der Controller 420 ist konfiguriert, um die beiden Speichervorrichtungen
426 und 460 zu betreiben. Der Controller 420 verwaltet
den Inhalt des Bereiches 442 für virtuelle Daten auf die gleiche weise
wie für das zuvor dargestellte Rechensystem 22. Da der gesamte Speicherbereich
464 für Daten der Speichervorrichtung 460 für Daten
als Bereich 442 für virtuelle Daten benutzt wird, verbirgt der Controller
420 reell Existenz der Speichervorrichtung für Daten vor dem Prozessor
424. Der Controller 420 meldet weiterhin, dass er zwei physikalische
Speichervorrichtungen enthält. Die erste Vorrichtung entspricht dem Bereich
440 für geschützte Daten und die zweite Vorrichtung entspricht
dem Bereich 443 für ungeschützte Daten, wobei beide auf einem
Speichermedium 426 für Daten lokalisiert sind.
Das Rechensystem 422 hat den Vorteil, dass kein Speicherbereich
438 vom Controller 420 für den Bereich 442 für
virtuelle Daten benutzt wird, weshalb der Prozessor 424 auf den gesamten
Speicherbereich 438 für Daten zugreifen kann. Diese Ausführungsform
könnte vorzugsweise eingesetzt werden, wenn die vorliegende Erfindung einem
bestehenden Rechengerät zugefügt wird, wobei es wünschenswert ist,
dass der für den Prozessor 424 verfügbare allgemeine Speicherbereich
für Daten nicht reduziert wird.
Da ein Teil des Speicherbereichs 438 für Daten für
den Bereich 443 für ungeschützte Daten benutzt wird, braucht
der Speicherbereich 464 für Daten nur so groß wie der Speicherbereich
440 für Daten zu sein. Dementsprechend kann die Speichervorrichtung
460 für Daten eine niedriger Kapazität als das Speichermedium
426 für Daten haben. Wenn, alternativ, die Speichervorrichtung
460 für Daten die gleiche Kapazität wie das Speichermedium
426 für Daten hat, kann der überschüssige Speicherbereich
für Daten in der Speichervorrichtung 460 für Daten als zweiter
Bereich für ungeschützte Daten benutzt werden, welchen der Controller
420 nicht vor dem Prozessor 420 verbirgt. Solch ein zweiter Speicherbereich
für Daten wird dem Prozessor 424 als eine dritte Speichervorrichtung
für Daten mit einem einzelnen Laufwerkskennbuchstaben und einer Laufwerksnummer
präsentiert (beispielsweise Laufwerkskennbuchstabe E: und Laufwerksnummer 2).
Es wird nun wieder Bezug auf 1 genommen.
Das Rechensystem 22 und der Controller 20 sind konfiguriert, um
jede Veränderung, die ein Benutzer an geschützten Daten im Schutzmodus
vornimmt, zu beheben, indem alle diese Veränderungen im Bereich 42
für virtuelle Daten aufgezeichnet werden und dann den Bereich 42 für
virtuelle Daten am Anfang jeder das Rechensystem 22 verwendenden Sitzung
ignorieren, indem die Speichertabelle 51 für virtuelle Daten und die
Virtuelle-Block-Anwendungstabelle 52 initialisiert werden. In einer anderen
Ausführungsform dieser Erfindung könnte es in manchen Systemumgebungen
vorzugsweise möglich sein, derartige Änderungen zwischen Sitzungen zu
speichern, obwohl Veränderungen auch weiterhin auf Wunsch verworfen werden
können. Dies kann geschehen, indem die Speichertabelle 51 für
virtuelle Daten und die Virtuelle-Block-Anwendungstabelle 52 einfach in
die Anwendungstabelle 49 für virtuelle Daten des Controllers
20 in Schritt 304 eingelesen wird zum Zeitpunkt, wenn das Lesen
der Anwendungstabelle 50 für geschützte Daten abläuft. In
diesem Fall wird ein Dienstprogramm "Bereich für virtuelle Daten verwerfen"
zusammen mit dem Controller 20 bereitgestellt, damit der Administrator
den Controller 20 zurückstellen kann, um seine Speichertabelle für
Daten zu löschen und dann nur die Speichertabelle 50 für geschützte
Daten aus dem Speichermedium 26 für Daten einzulesen. Dienstprogramm
"Bereich für virtuelle Daten verwerfen" soll vorzugsweise auf einem separaten
Plattenspeicher ab dem Speichermedium 26 für Daten (und jeder sonstigen
für den Prozessor 26 im Schutzmodus zugriffbaren Datenspeichervorrichtung)
verwaltet werden und nur mit einem Passwort aktiviert werden können, um zu
gewährleisten, dass das Dienstprogramm nicht von einem Virus oder anderen bösartigen
Programm oder einen bösartigen Benutzer benutzt werden kann, um die vom Benutzer
im Bereich 42für virtuelle Date aufgezeichneten Daten zu zerstören.
Das Dienstprogramm "Bereich für virtuelle Daten verwerfen" soll vorzugsweise
nur am Anfang einer das Rechensystem verwendenden Sitzung eingesetzt werden. Diese
Ausführungsform kann insbesondere in einer Schuldienstumgebung hilfreich sein,
wo ein Schüler einen Computer für einen wissenschaftlichen Fachbegriff
benutzen und der Computer danach wieder zur Verwendung durch einen anderen Schüler
zurückgestellt werden kann.
Es kann wünschenswert sein, die Möglichkeit zu bieten, dass
im Bereich 42 für virtuelle Daten gespeicherte Veränderungen
durch Speichern im Bereich 40 für geschützte Daten permanent
übernommen werden. In diesem Fall muss ein Dienstprogramm "Virtuelle Daten
in Bereich für geschützte Daten kopieren" bereitgestellt werden. Dieses
Dienstprogramm ist konfiguriert, um den Administrator in die Lage zu versetzen,
alle virtuellen Daten, die im Bereich 42 für virtuelle Daten gespeichert
sind, in den entsprechenden Bereich 40 für geschützte Daten zu
kopieren und gleichzeitig die Speichertabelle 50 für geschützte
Daten, und die Anwendungstabelle 48 für geschützte Bereiche zu
aktualisieren. Das verwendete Dienstprogramm sollte einen Passwortschutz umfassen,
damit es nicht ohne Autorisierung gestartet werden kann. Gegebenenfalls kann es
einen physikalischen Schlüssel benötigen, der in den Controller
20 gesteckt wird, um zu gewährleisten, dass ein nicht berechtigter
Benutzer keine unerwünschten Veränderungen permanent ablegt.
Eine Kombination von (i), die es ermöglicht, dass Daten im Bereich
für virtuelle Daten zurückbehalten werden können, (ii) ein Dienstprogramm
"Bereich für virtuelle Daten verwerfen" und ein (iii) Dienstprogramm "Virtuelle
Daten in Bereich für geschützte Daten kopieren" können in einer Umgebung,
wo die Konfiguration eines Rechensystems verändert wird, dienlich sein. Wenn
eine Änderung dazu führt, dass das Rechensystem unbeständig arbeitet
oder wenn sie anderweitig nicht mehr erwünscht ist, kann sie verworfen werden,
indem der Inhalt des Bereiches 42 für virtuelle Daten verworfen wird.
Ist die Veränderung wünschenswert, kann sie in den Bereich 40
für geschützte Daten kopiert und damit als permanent übernommen werden.
Das Rechensystem 22 schließt einen Bereich
43 für ungeschützte Daten ein. Dieser Bereich ist angebracht
und kann erforderlich sein, wenn das Rechengerät unabhängig von jedem
anderen Rechengerät benutzt wird. Wenn das Rechensystem 22 in einer
Netzwerkumgebung benutzt wird, kann es wünschenswert sein, dass alle Benutzer
solcher Rechengeräte alle Daten, die sie erstellen, auf einen gemeinsam genutzten
Speicherbereich auf einem Netzwerk-Server speichern. In diesem Fall kann es wünschenswerte
sein den Bereich 43 für ungeschützte Daten vom Speichermedium
26 für Daten zu entfernen und einfach einen Anteil des Datenspeicherbereichs
des Netzwerk-Servers als Bereich 43 für ungeschützte Daten für
das Rechensystem 22 zu bestimmen.
Ein Ausführungsbeispiel mit einem IDE-Festplattenlaufwerk wurde
bereits erläutert. Die vorliegende Erfindung ist ebenso für den Einsatz
mit anderen Speichervorrichtungen wie ISA, ATA, EIDE, SCSI und sonstigen Festplattenlaufwerke
geeignet. Darüber hinaus ist die Erfindung kompatibel mit und eignet sich für
den Einsatz mit jeder beliebigen anderen Datenspeichervorrichtung, einschließlich
Halbleiterspeichervorrichtungen, einschließlich magnetische Speichervorrichtungen,
Vokabelkarten, PC-Karten, usw.
Die vorliegende Erfindung kann mit anderen Ausfallsicherheits- und
Schutztools wie die RAID-Technologie (RAID = Redundant Array of Independent Disks
= Redundanter Verbund unabhängiger Festplatten) kombiniert werden. In einem
RAID-System kann ein Controller wie der Controller 20 oder 420
zwischen den RAID-Controller und einem oder mehreren redundanten Festplattenlaufwerken
eingefügt werden. Der Controller und die zugehörigen Laufwerke lassen
sich dann, wie zuvor erläutert, konfigurieren. Diese Konfiguration ermöglicht,
dass eine Redundanzsteuerung (die von der RAID-Konfiguration bereitgestellt wird)
durch die Datenschutztechnologie dieser Erfindung ergänzt wird. Hervorzuheben
ist insbesondere, dass die RAID-Technologie selber nicht dafür sorgt, dass
Daten auf einer Platte geschützt sind. Sie sorgt nur für Redundanz und
kann Fehlerkorrekturen übernehmen. Ist ein Virus auf einem durch RAID geschützten
Plattenlaufwerk gespeichert, wird es ganz einfach auf allen redundanten Laufwerken
gespeichert. Die RAID-Technologie stellt keinen Mechanismus zum Entfernen von Viren
bereit.
Das Wesen der Erfindung wurde an mehreren beispielhaften Ausführungsformen
erläutert. Zahlreiche andere Varianten können sich für den Anwendungsbereich
dieser Erfindung eignen. Den Anwendungsmöglichkeiten sind nur durch die nachfolgenden
Ansprüche Grenzen gesetzt.