-
Technisches
Gebiet
-
Die
vorliegende Erfindung bezieht sich auf das Gebiet von Gerätetreibern
und insbesondere aus ein Betriebssystem, das Protected-Mode-Gerätetreiber
bereitstellt.
-
Hintergrund
der Erfindung
-
Ein
typisches. Computersystem enthält
einen Computer der mit mehreren Peripheriegeräten verbunden ist. Auf die
Peripheriegeräte
kann mit einem Betriebssystem zugegriffen werden, das auf dem Computer ausgeführt wird,
oder mit Applikationsprogrammen, die auf dem Computer über eine
geeignete Schnittstelle ausgeführt
werden. Ein derartiger Zugriff auf die Geräte wird mit Softwareprogrammen
gesteuert, die als Gerätetreiber
bekannt sind. Viele Gerätetreiber,
wie etwa jene, die durch das Microsoft MS-DOS-Betriebssystem bereitgestellt
werden, sind Real-Mode-Gerätetreiber,
die in einer Prozessorbetriebsart arbeiten, die als Real-Mode bekannt
ist. Real-Mode ist die einzige Betriebsart, die durch den Intel-8086-Mikroprozessor
bereitgestellt wird, auf dem das Microsoft MS-DOS-Betriebssystem ursprünglich ausgeführt werden
sollte.
-
Neuere
Mikroprozessoren, wie etwa der Intel 80826, 80386 und 80486, die
von der Intel Corporation in Cupertino, Kalifornien vertrieben werden,
sind aufwärtskompatibel
mit dem 8086 und somit darauf ausgelegt, Real-Mode zu unterstützen, wobei
sie jedoch auch in einer erweiterten Betriebsart arbeiten können, die als "Protected-Mode" bekannt ist. Protected-Mode
hat gegenüber
Real-Mode Vorteile. Beispielsweise bietet der Protected Mode einen
größeren virtuellen
Adressraum gegenüber
Real-Mode. Protected-Mode bietet zudem die Hardwareunterstützung für Multitasking
und Datensicherheit, was Real-Mode nicht tut. (Der Schutzmecha nismus,
der die Datensicherheit im 80386 und 80486 bereitstellt, ist auf
den Seiten 101–133
von "Microsoft's 80386/80486 Programming
Guide" beschreiben,
veröffentlicht
von Microsoft press, 1991.)
-
EP 0 288 606 A2 beschreibt
ein Computersystem, das eine Zentralverarbeitungseinheit (CPU) und
einen Speicher enthält,
wobei die CPU eine erste und eine zweite zueinander inkompatible
Betriebsart zum Adressieren des Speichers hat, weiterhin enthaltend
eine Einrichtung zum Erstellen einer ersten und einer zweiten Tabelle
im Speicher, die funktional äquivalente
Verweise auf vorbestimmte Bereiche im Speicher und Geräte haben,
die am System angebracht sind, eine Einrichtung (
3)
zum Zugreifen auf die erste Tabelle in der ersten CPU-Betriebsart
und eine Einrichtung (
4) zum Zugreifen auf die zweite
Tabelle in der zweiten CPU-Betriebsart. Darüber hinaus beschreibt
EP 0 288 606 A2 ein
Verfahren zum Betrieben eines Computersystems, das einen Speicher
und eine CPU hat, die in einer von zwei zueinander inkompatiblen
Speicheradressier-Betriebsarten arbeiten können, enthaltend folgende Schritte:
Zuweisen von Platz im Speicher für
einen ersten und einen zweiten gemeinsamen Datenbereich jeweils
entsprechend der ersten und der zweiten Betriebsart; Laden des ersten
Befehlsdatenbereiches mit einer Tabelle, die erste Verweise auf
vorbestimmte Bereiche des Speichers und auf Geräte enthält, die am System angebracht
sind, wobei die ersten Positionen eine erste Betriebsartadresse
enthalten; und Laden des zweiten Befehlsdatenbereiches mit einer
Tabelle, die Verweise enthält,
die zu jenen der ersten Tabelle funktional äquivalent sind, jedoch Adressen
der zweiten Betriebsart enthalten, wobei sich die CPU nacheinander
auf die erste Tabelle für
die Adressierung der ersten Betriebsart und die zweite Tabelle für die Adressierung
der zweiten Betriebsart bezieht.
-
Das
Ziel der vorliegenden Erfindung besteht darin, ein Verfahren und
ein Computersystem anzugeben, die einen einfachen und zuverlässigen Zugriff
auf Geräte
durch Real-Mode-Gerätetreiber
und Protected-Mode-Gerätetreiber
ermöglichen.
-
Das
Ziel wird durch den Gegenstand der Ansprüche 1, 9 und 16 erreicht.
-
Bevorzugte
Ausführungsformen
sind Gegenstand der abhängigen
Ansprüche.
-
Ein
erster Aspekt der vorliegenden Erfindung gibt Protected-Mode-Gerätetreiber
an, die mit Real-Mode-Gerätetreibern
kompatibel sind, die auf dasselbe Gerät zugreifen. Die Protected-Mode-Gerätetreiber
sind mit den Real-Mode-Gerätetreibern
in dem Sinne kompatibel, dass sie dieselben Bezugwerte verwenden,
um auf dieselben Geräte
zuzugreifen. Bei einer bevorzugten Ausführungsform gibt die Erfindung
ein Betriebssystem an, das in der Lage ist, im Protected-Mode zu arbeiten,
und über
die Protected-Mode-Gerätetreiber
verfügt.
Während
des Betriebs des Betriebssystem im Protected-Mode, greifen die Gerätetreiber
auf die Geräte zu,
wenn dies vom Betriebssystem oder einem Applikationsprogramm verlangt
wird. Real-Mode-Gerätetreiber sind
ebenfalls vorgesehen, die auf die Geräte im Real-Mode zugreifen,
wenn dies von einem Betriebssystem oder einem Applikationsprogramm
verlangt wird, das den Real-Mode-Betrieb erfordert. Die Protected-Mode-Gerätetreiber
weisen den Geräten
dieselben Bezugswerte zu, wie sie die Real-Mode-Gerätetreiber
denselben Geräten
zuweisen. Die Erfindung stellt eine Kompatibilität hinsichtlich dieser Bezugswerte
sicher, indem sie zahlreiche Aspekte der Erfindung vorsieht, die
im folgenden beschrieben sind.
-
Ein
zweiter Aspekt der Erfindung gibt eine konsistente Zuweisung der
Laufwerkseinheitsnummern an, mit denen auf dieselben physikalischen
Platten durch die Real-Mode- und die Protected-Mode-Plattentreiber zugegriffen
wird. Die Real-Mode-Plattentreiber,
die auf physikalische Platten zugreifen, weisen womöglich nicht
dieselben Laufwerkseinheitsnummern jenen physikalischen Platten
zu, wie die Protected-Mode-Plattentreiber, die auf dieselben physikalischen
Platten zugreifen. Das Problem besteht darin, dass die Real-Mode-Plattentreiber
andere Laufwerksnummern haben können
als die Laufwerksnummern, die den entsprechenden Protected-Mode-Plattentreibern
für BIOS-INT-13h-Interrupts
zugeordnet sind. Beim ersten Aspekt der Erfindung sieht die bevorzugte
Ausführungsform
eine konsistente Zuweisung der Laufwerkseinheitsnummern vor, mit
denen auf dieselben physikalischen Platten über INT-13h-Interrupts sowohl
durch die Real-Mode-
als auch die Protected-Mode-Treiber für physikalische Platten zugegriffen
wird. Infolgedessen wird der Zugriff auf dieselben physikalischen
Platten sowohl durch die Real-Mode-Plattentreiber als auch die Protected-Mode-Plattentreiber
in kompatibler Art ermöglicht.
-
Ein
dritter Aspekt der Erfindung gibt eine konsistente Zuweisung logischer
Datenträgereinheitsnummern
an, mit denen auf dieselben logischen Datenträger durch die Real-Mode- und
die Protected-Mode-Datenträgertreiber
zugegriffen wird. Die Real-Mode-Datenträgertreiber, die den Zugriff
auf logische Datenträger auf
Platten steuern, weisen möglicherweise
nicht dieselben Datenträgereinheitsnummern
jenen logischen Datenträgern
zu, wie die Protected-Mode-Datenträgertreiber, die den Zugriff
auf dieselben logischen Datenträger steuern.
Insbesondere können
die Real-Mode-Datenträgertreiber
andere Datenträgernummern
haben, als die Datenträgernummern,
die entsprechenden Protected-Mode-Datenträgertreibern für BIOS-INT-25h-Interrupts zugeordnet
sind. Beim zweiten Aspekt der Erfindung sieht die bevorzugte Ausführungsform
eine konsistente Zuordnung der Datenträgereinheitsnummern vor, mit
denen auf dieselben logischen Datenträger über INT-25h-Interrupts sowohl
durch die Real-Mode- als auch die Protected-Mode-Treiber für logische Datenträger zugegriffen
wird. Somit wird der Zugriff auf dieselben logischen Datenträger sowohl
durch die Real-Made-Datenträgertreiber
als auch die Protected-Mode-Datenträgertreiber ermöglicht.
-
Ein
vierter Aspekt der vorliegenden Erfindung gibt eine konsistente
Zuordnung von Adapternummern an, mit denen dieselben Adapter durch
Real-Mode- und Protected-Mode-Adaptertreiber gesteuert werden, um auf
die Peripheriegeräte
zuzugreifen, die mit diesen Adaptern verbunden sind. Die Real-Mode-Adaptertreiber, die
auf Peripheriegeräte über Adapter
zugreifen, weisen möglicherweise
nicht dieselben Adapternummern diesen Adaptern zu, wie sie das Protected-Mode-Betriebssystem Protected-Mode-Adaptertreibern
zuweist, um auf dieselben Peripheriegeräte zuzugreifen. Beim dritten
Aspekt der Erfindung sieht die bevorzugte Ausführungsform eine konsistente
Zuweisung der Adapternummern vor, mit denen dieselben Adapter sowohl
durch die Real-Mode- als auch die Protected-Mode-Adaptertreiber gesteuert werden,
um auf dieselben Peripheriegeräte
zuzugreifen. Der dritte Aspekt der Erfindung sieht zudem eine Abbildung
von Anfragen, um auf die Peripheriegeräte über Real-Mode-Adaptertreiber
zuzugreifen, auf Anfragen vor, um auf die Peripheriegeräte über Protected-Mode-Adaptertreiber
zuzugreifen, die dieselben Adapter steuern. Anfragen von Applikationsprogrammen,
um auf die Peripheriegeräte
zuzugreifen, können
zu den Real-Mode- Adaptertreibern
selbst während
des Betriebs des Protected-Mode-Betriebssystems
gleitet werden, solange sie nicht anderweitig geleitet werden. Die
bevorzugte Ausführungsform
sieht eine Abbildung der Applikationsprogramm-Anfragen, um auf die Peripheriegeräte über Real-Mode-Adaptertreiber
zuzugreifen, auf Anfragen vor, um auf die Peripheriegeräte über Protected-Mode-Adaptertreiber
zuzugreifen, die dieselben Adapter steuern.
-
Die
bevorzugte Ausführungsform
gibt zudem einen Protected-Mode-Betrieb für Funktionen an, die von Real-Mode-Funktionsgeräten bereitgestellt
werden, wenn die Real-Mode-Gerätetreiber
ausgeführt
werden. Somit gibt ein vierter Aspekt der Erfindung die Erfassung
und die Anpassung des Protected-Mode von Real-Mode-Funktionstreibern
an, die zusätzlich
zu den Real-Mode-Gerätetreibern
bereitgestellt wurden. Die Real-Mode-Funktionstreiber können hinzugefügt worden
sein, um die Real-Mode-Gerätetreiber
zu vervollständigen,
indem zusätzliche
Funktionen bereitgestellt werden. Diese Funktionen können oder
können
nicht von beliebigen Protected-Mode-Funktionstreibern im Protected-Mode-Betriebssystem
bereitgestellt werden. Solange diese Real-Mode-Funktionstreiber
nicht vom Betriebssystem angepasst werden, wenn im Protected-Mode
gearbeitet wird, sind die Protected-Mode-Gerätetreiber zu den Real-Mode-Gerätetreibern
nicht kompatibel. Beim vierten Aspekt der Erfindung sieht die bevorzugte
Ausführungsform
eine Erfassung und Anpassung des Protected-Mode der Real-Mode-Funktionstreiber
vor, die zusätzlich
zu den Real-Mode-Gerätetreibern
im Real-Mode-Betriebssystem
bereitgestellt werden. Infolge der oben genannten vier Aspekte der
Erfindung, gibt die bevorzugte Ausführungsform Protected-Mode-Gerätetreiber
an, die zu Real-Mode-Gerätetreibern
kompatibel sind und dennoch die Vorteile des Protected-Mode-Betriebs
haben.
-
Kurze Beschreibung
der Zeichnungen
-
1 ist
ein Blockschaltbild eines typischen Computersystems, bei dem ein
Computer mit Plattenlaufwerken und anderen Peripheriegeräten verbunden
ist.
-
2 ist
eine Darstellung der Funktionsbeziehung zwischen den Real-Mode- und Protected-Mode-Gerätetreibern
und den Funktionstreibern sowie den Geräten, die von diesen gesteuert
werden.
-
3 ist
eine Darstellung der Funktionsbeziehung zwischen den Real-Mode-Laufwerkstreibern
und den Protected-Mode-Laufwerkstreibern der bevorzugten Ausführungsform
der vorliegenden Erfindung.
-
4 ist
ein Flussdiagramm des Vorgangs zur Erzeugung einer Laufwerkstabelle
in der bevorzugten Ausführungsform.
-
5 ist
eine Darstellung des Vorgangs zur Erzeugung einer Laufwerkstabelle
in den Inhalten eines Abschnittes eines Master-Boot-Records einer
Platte in der bevorzugten Ausführungsform.
-
6 ist
eine Darstellung der Laufwerkstabelle, die bei der bevorzugten Ausführungsform
erzeugt wird.
-
7 ist
ein Flussdiagramm des Vorgangs der Zuweisung einer Laufwerkseinheitsnummer
bei der bevorzugten Ausführungsform.
-
8 ist
eine Darstellung der Funktionsbeziehung zwischen den Real-Mode-Datenträgertreibern
und den Protected-Mode-Datenträgertreibern
der bevorzugten Ausführungsform.
-
9 ist
ein Flussdiagramm des Vorgangs der Erstellung einer Datenträgertabelle
bei der bevorzugten Ausführungsform.
-
10 ist
eine Darstellung eines Partitions-Boot-Record und eines Datenträger-Boot-Record
eines Datenträgers
auf einer Platte bei der bevorzugten Ausführungsform.
-
11 ist
eine Darstellung der Datenträgertabelle,
die bei der bevorzugten Ausführungsform
erzeugt wird.
-
12 ist
ein Flussdiagramm des Vorgangs der Zuweisung einer Datenträgereinheitsnummer
bei der bevorzugten Ausführungsform.
-
13 ist
eine Darstellung der Real-Mode-Adaptertreiber und der Protected-Mode-Adaptertreiber
der bevorzugten Ausführungsform.
-
14 ist
ein Flussdiagramm des Vorgangs zur Erzeugung einer Real-Mode-Datenstruktur
bei der bevorzugten Ausführungsform.
-
15 ist
eine Darstellung der Real-Mode-Datenstruktur, die bei der bevorzugten
Ausführungsform erzeugt
wird, und eines Einheitsspezifikationselementes, das jeder Real-Mode-Datenstruktur
zugeordnet ist.
-
16 ist
eine Darstellung von Peripheriedaten in jedem Einheitsspezifikationselement,
das bei der bevorzugten Ausführungsform
erzeugt wird.
-
17 ist
ein Flussdiagramm des Vorgangs zur Erzeugung von Datensteuerblöcken bei
der bevorzugten Ausführungsform.
-
18 ist
eine Darstellung des Datensteuerblocks, der bei der bevorzugten
Ausführungsform
erzeugt wird.
-
19 ist
ein Flussdiagramm des Vorgangs zur Zuweisung von Adapternummern
bei der bevorzugten Ausführungsform.
-
20 ist
ein Flussdiagramm des Vorgangs zur Anpassung von Real-Mode-Funktionstreibern
bei der bevorzugten Ausführungsform.
-
21 ist
ein Flussdiagramm des Vorgangs zum Erfassen eines Real-Mode-Funktionstreibers
bei der bevorzugten Ausführungsform.
-
22 ist
eine Darstellung eines Datenparameterblocks, der Inhalte eines Abschnittes
desselben und der Real-Mode-Gerätetreiber
oder der Funktionstreiber die darin festgelegt sind.
-
23 ist
eine Darstellung eines originalen Treiberaufbaus der bevorzugten
Ausführungsform.
-
24 ist
eine Darstellung einer Liste sicherer Treiber der bevorzugten Ausführungsform.
-
25 ist
ein Flussdiagramm des Vorgangs zur Angleichung eines Real-Mode-Funktionstreibers
in der bevorzugten Ausführungsform.
-
Detaillierte
Beschreibung der Erfindung
-
Die
bevorzugte Ausführungsform
der vorliegenden Erfindung ersetzt Protected-Mode-Gerätetreiber für Real-Mode-Gerätetreiber,
wann immer dies möglich
ist. Die Protected-Mode-Gerätetreiber
werden so eingesetzt, dass sie mit den Real-Mode-Gerätetreibern kompatibel sind.
Insbesondere greifen die Protected-Mode-Gerätetreiber
auf Geräte
zu, denen Bezugswerte zugeordnet, die dieselben Geräte in derselben
Art identifizieren, wie die Real-Mode-Gerätetreiber. Die bevorzugte Ausführungsform
stellt, soweit dies möglich
ist, weiterhin einen Protected-Mode-Betrieb von Funktionen bereit, die von
den Real-Mode-Funktionsgeräten
bereitgestellt werden, wenn die Real-Mode-Gerätetreiber ausgeführt werden.
-
Die
oben genannten Merkmale sind durch vier separate Aspekte der Erfindung
angegeben, die unten beschrieben sind. Ein erster Aspekt der Erfindung
gibt eine konsistente Zuweisung von Geräteeinheitsnummern an, mit denen
auf dieselben physikalischen Platten durch Real-Mode- und Protected-Mode-Gerätetreiber zugegriffen
wird. Ein zweiter Aspekt der Erfindung gibt die konsistente Zuweisung
logischer Datenträgereinheitsnummern
an, mit denen auf dieselben logischen Datenträger durch die Real-Mode- und
die Protected-Mode-Datenträgertreiber
zugegriffen wird. Ein dritter Aspekt der Erfindung gibt die konsistente
Zuweisung von Adapternummern an, mit denen dieselben Adapter durch
die Real-Mode- und die Protected-Mode-Adaptertreiber gesteuert werden,
um auf die Peripheriegeräte
zuzugreifen, die mit diesen Adaptern verbunden sind. Der dritte Aspekt
der Erfindung gibt zudem eine Zuordnung von Anfragen, um auf die
Peripherievorrichtungen über
Real-Mode-Adaptertreiber zuzugreifen, zu Anfragen an, um auf die
Peripheriegeräte über Protected-Mode-Adaptertreiber
zuzugreifen, die dieselben Adapter steuern. Ein vierter Aspekt der
Erfindung gibt die Erfassung und die Anpassung des Protected-Mode
von Real-Mode-Funktionstreibern an, die zusätzlich zu den Real-Mode-Gerätetreibern
vorgesehen sind.
-
Ein
Computersystem, das sich zur Ausführung der bevorzugten Ausführungsform
eignet, ist in 1 dargestellt. 1 ist
ein Blockschaltbild eines Computersystems mit einem Computer 100,
der mit Plattenlaufwerken 110 und Peripheriegeräten 120 verbunden
ist. Der Computer 100 verfügt über einen internen Speicher 102,
der ein Betriebssystem 210 speichert. Der Speicher 102 speichert
zudem Real-Mode- und Protected-Mode-Gerätetreiber. Diese Treiber können Teil
des Betriebssystems 210 oder vom Betriebssystem getrennt
sein. Die Gerätetreiber
laufen auf einer Zentralverarbeitungseinheit (CPU) 104,
um den Zugriff auf die Geräte 110 und 120 zu
steuern, wie es vom Betriebssystem 210 oder von einem Applikationsprogramm
verlangt wird. Die Gerätetreiber
beinhalten Plattentreiber und Datenträgertreiber, die die Plattenlaufwerke 110 über einen I/O-Controller 106 steuern.
Die Gerätetreiber
für die
Platten gestatten einen Zugriff auf die physikalischen Platten und
auf logische Datenträger
auf Platten, die sich in den Plattenlaufwerken 110 befinden.
Die Gerätetreiber enthalten
zudem Adaptertreiber, die die Adapter 108 steuern, durch
die auf die Peripheriegeräte 120 zugegriffen
wird.
-
Der
Speicher 102 speichert zudem Real-Mode- und Protected-Mode-Funktionstreiber,
die von der CPU 104 ausgeführt werden, um funktionale
Erweiterungen zu den Gerätetreibern,
wie etwa Verschlüsselung und
Datenkompression, hinzuzufügen.
-
Die
Funktionsbeziehung zwischen den Geräten, den Gerätetreibern
und den Funktionstreibern bei der bevorzugten Ausführungsform
ist in 2 dargestellt. Das Betriebssystem 210 enthält Real-Mode-
(RM-) Gerätetreiber 202 für die Peripheriegeräte 120.
Das Betriebssystem 210 enthält zudem Protected-Mode- (PM-) Gerätetreiber 212,
die dieselben Geräte
steuern, wie die Real-Mode-Gerätetreiber 202.
Bei der bevorzugten Ausführungsform
enthält
das Betriebssystem weiterhin Real-Mode-Funktionstreiber 204,
die die Real-Mode-Gerätetreiber 202 ergänzen, und
Protected-Mode-Funktionstreiber 214, die die Protected-Mode-Gerätetreiber 212 ergänzen. Die
Funktionstreiber 204 können
Teil der Gerätetreiber 202 sein.
Bei der bevorzugten Ausführungsform
besteht das Betriebssystem aus einer ausgeschmückten Version des Microsoft
WINDOWS 3.1 Betriebsystems, das von der Microsoft Corporation aus
Redmond, Washington vertrieben wird, ausgeführt auf einer Plattform des
Microsoft MS-DOS 5.0 Betriebssystems, das ebenfalls von der Microsoft
Corporation vertrieben wird. Der Microsoft MS-DOS-Betriebssystemteil
des Betriebssystems 210 wird während der Boot-Zeit des Computers
geladen. Der Microsoft WINDOWS-Betriebssystemabschnitt des Betriebssystems 210 wird
anschließend
geladen. Obwohl der MS-DOS-Betriebssystemabschnitt
des Betriebssystems 210 in der Lage ist, nur im Real-Mode zu arbeiten,
ist der Microsoft WINDOWS-Betriebssystemabschnitt des Betriebssystems 210 in
der Lage, entweder im Real-Mode oder im Protected-Mode zu arbeiten.
-
Beim
ersten Aspekt der Erfindung sorgt die bevorzugte Ausführungsform
für eine Übereinstimmung bei
der Zuordnung der Laufwerkseinheitsnummer für Festplatten durch die Real-Mode-Gerätetreiber 202 und die
Protected-Mode-Gerätetreiber 212.
Wird auf einen physikalischen Sektor einer Platte entweder durch
die Real-Mode-Gerätetreiber 202 oder
die Protected-Mode-Gerätetreiber 212 zugegriffen,
muss den Real-Mode-Gerätetreibern 202 und
den Protected-Mode-Gerätetreibern 212 die
Laufwerkseinheitsnummer bekannt sein, um auf den Sektor der Platte
zuzugreifen. Das Betriebssystem 210 enthält als Teil
des MS-DOS-Betriebssystems ein Basic-Input/Output-Systemsoftwaremodul
(BIOS). Das BIOS enthält
einen Satz vordefinierter Funktionen, die von Betriebssystemen oder
Applikationen aufgerufen werden können, um Aufgaben auszuführen. Die
Funktionen werden durch Software-Interrupts aufgerufen. Einer dieser
Interrupts ist der INT-13h-Interrupt ("h" steht
für hexadezimal).
Normalerweise verwendet ein Datenträgertreiber den INT-13h-Interrupt,
um die Ausführung
unterschiedlicher Operationen auf einer Platte anzufragen, die durch
eine Laufwerkseinheitsnummer identifiziert ist. Die Laufwerkseinheitsnummer
wird zum Zeitpunkt des Interrupts in ein Prozessorregister geladen.
-
Damit
die Protected-Mode-Plattentreiber 310 (1)
den Zugriff auf physikalische Platten 320 in einer Art
steuern können,
die mit den Real-Mode-Plattentreibern 300 kompatibel ist,
müssen
die Protected-Mode-Plattentreiber 310 dieselben Laufwerks-INT-13h-Einheitsnummern
zuweisen, wie sie die Real-Mode-Plattentreiber 300 des
physikalischen Platten 320 zuweisen. Das heißt, es muss
beispielsweise die Laufwerkseinheitsnummer 0, die einer ersten Festplatte
für einen
Real-Mode-Plattentreiber 300 zugewiesen ist, ebenfalls durch
den Protected-Mode-Plattentreiber 310 für die Festplatte zugewiesen
werden, wie es in 3 gezeigt ist. Wenn die INT-13h-Laufwerkseinheitsnummer
0 bei einer Anfrage für
einen Zugriff auf eine physikalische Platte über den Real-Mode-Plattentreiber 300 oder
den Protected-Mode-Plattentreiber 310 festgelegt ist, wird auf
dieselbe Platte 320 durch einen der Plattentreiber zugegriffen,
der die Laufwerkseinheitsnummer 0 dem Plattentreiber 110 zugeordnet
hat, den er steuert. Ebenso muss die ähnliche Parität der INT-13h-Einheitsnummernzuweisungen
für den
Rest der Festplatten 320 existieren. Dies wird nicht dadurch
sichergestellt, dass lediglich die INT-13h-Laufwerkseinheitsnummern
den Protected-Mode-Festplattentreibern 310 in der Reihenfolge
zugeordnet werden, in der die Protected-Mode-Festplattentreiber 310 geladen
werden, da die Protected-Mode-Festplattentreiber 310 nicht
notwendigerweise in der selben Reihenfolge geladen werden, wie die Real-Mode-Festplattentreiber 300.
-
Um
konsistente Laufwerkseinheitsnummern sicherzustellen, wie es oben
erwähnt
wurde, erzeugt die bevorzugte Ausführungsform zunächst eine
Laufwerks tabelle 600, die im folgenden detaillierter unter
Bezugnahme auf 6 erläutert wird. Die Laufwerkstabelle 600 weist
die Laufwerkseinheitsnummer, die vom Real-Mode-Festplattentreiber 300 verwendet
wird, einzigartigen Informationen zu, die auf der physikalischen Festplatte
gespeichert sind, auf die durch diesen Real-Mode-Festplattentreiber 300 zugegriffen
wird. Anschließend
weisen die Protected-Mode-Festplattentreiber 310 die
Laufwerkseinheitsnummern derselben physikalischen Festplatte 320 unter
Verwendung der Treibertabelle zu. Jeder Protected-Mode-Plattentreiber
liest einen gewählten
Abschnitt der physikalischen Platte, um die einzigartigen Informationen
zu erhalten, und extrahiert anschließend aus der Treibertabelle
die Laufwrerkseinheitsnummer, die den einzigartigen Informationen
zugeordnet ist, die von der physikalischen Festplatte gelesen werden.
Anschließend
wird die extrahierte Laufwerkseinheitsnummer der physikalischen
Festplatte durch den Protected-Mode-Festplattentreiber zugeordnet.
-
4 ist
ein Flussdiagramm des Vorgangs, der die oben beschriebene Laufwerkstabelle
erstellt, der im folgenden mit Laufwerkstabellen-Erstellungsvorgang
bezeichnet wird. Der Laufwerkstabellen-Erstellungsvorgang kann als
Software implementiert sein, die im Speicher 102 gespeichert
ist und von der CPU 104 ausgeführt wird, wenn das Betriebssystem 210 geladen
wird. In Schritt 405 initialisiert der Laufwerkstabellen-Erstellungsvorgang
einen Festplattenzähler
n auf 0, wobei sämtliche
Prüfsummenkennzeichen
(bzw. -flags)(die unten detaillierter beschrieben werden) in der
Laufwerkstabelle ebenfalls auf 0 initialisiert werden. In Schritt 410 initiiert
der Laufwerkstabellen-Erstellungsvorgang einen INT-13h-Interrupt für die CPU 104,
um eine erste physikalische Festplatte 320 zu lesen. Der
Laufwerkstabellen-Erstellungsvorgang stellt den Festplattenlaufwerks-Zählerwert n als die Laufwerkseinheitsnummer
(zu Beginn 0), ein Wert der festlegt, dass eine Lesefunktion ausgeführt werden
soll, und die Sektornummer des Sektors bereit, in dem der Master-Boot-Record
auf der Platte gespeichert ist. In Schritt 415 ermittelt
der Laufwerkstabellen-Erstellungsvorgang, ob der Master-Boot-Record, der
in Schritt 410 gelesen wurde, ein Standardformat hat, das
vom MS-DOS-Betriebssystem 200 verwendet wird. Ist dies
der Fall, wird ein Ort auf der Festplatte vorgesehen, an dem eine
einzigartige Signatur (die im folgenden erläutert wird) gespeichert werden
kann. Der Laufwerkstabellen-Erstellungsvorgang ermittelt, dass der
Master-Boot-Record ein Standardformat hat, wenn das Byte DAh des
Master-Boot-Records einen Wert null enthält. Ermittelt der Laufwerkstabellen-Erstellungsvorgang
in Schritt 415, dass der Master-Boot-Record, der in Schritt 410 gelesen
wurde, ein Standardformat hat, schreitet die Steuerung zu Schritt 420 fort.
-
In
Schritt 420 ermittelt der Laufwerkstabellen-Erstellungsvorgang,
ob die Signatur, die an einem speziellen Ort der Master-Boot-Records
gespeichert ist einen Wert ungleich null hat. 5 zeigt
den Master-Boot-Record (MBR) bei Sektor 0 der physikalischen Festplatte,
der in Schritt 410 gelesen wurde, und die darin befindliche
Signatur. Die Signatur befindet sich bei aufeinander folgenden Bytes
DCh und DDh des Sektors 0. Wenn der Laufwerkstabellen-Erstellungsvorgang
in Schritt 420 ermittelt, dass die Signatur im Master-Boot-Record
einen Wert ungleich null hat, schreitet der Vorgang zu Schritt 425 fort.
In Schritt 425 wird die Signatur, die bei den Bytes DCh
und DDh gespeichert ist, in einen Eintrag in einer Laufwerkstabelle
geschrieben. 6 zeigt die Tabelle, in die
die Signatur bei Schritt 425 geschrieben wird. In 6 enthält die Laufwerkstabelle 600 einen
Laufwerkstabelleneintrag 610 für jedes Plattenlaufwerk 110.
Der Laufwerkstabelleneintrag 610 enthält ein Laufwerkseinheitsnummernfeld 612,
ein Signaturfeld 614, in das die Signatur bei Schritt 425 geschrieben
wurde, und ein Prüfsummenkennzeichen 616.
Die Steuerung schreitet anschließend zu Schritt 430 fort.
Bei Schritt 430 wird die Laufwerkseinheitsnummer n in das
Laufwerkseinheitsnummernfeld 612 desselben Laufwerkstabelleneintrags 610 geschrieben,
bei dem die Signatur in das Signaturfeld 614 geschrieben wurde.
-
Wenn
der Laufwerkstabellen-Erstellungsvorgang in Schritt 420 ermittelt,
das die Signatur in den Bytes DCh und DDh des Master-Boot-Record
0 ist, zweigt die Steuerung zu Schritt 435 ab. In Schritt 435 ermittelt der
Laufwerkstabellen-Erstellungsvorgang,
ob die Festplatte, die dem Plattenlaufwerk 110 entspricht,
schreibgeschützt
ist. Ist dies der Fall, kann keine neue Signatur auf die Festplatte
geschrieben werden. Ermittelt der Laufwerkstabellen-Erstellungsvorgang
in Schritt 435, dass die Festplatte nicht schreibgeschützt ist,
schreitet die Steuerung zu Schritt 440 fort. In Schritt 440 erzeugt
der Laufwerkstabellen-Erstellungsvorgang eine neue einzigartige
Signatur und schreibt die neue Signatur in Bytes DCh und DDh des
Master-Boot-Records.
-
Wenn
der Laufwerkstabellen-Erstellungsvorgang in Schritt 435 ermittelt,
dass die Festplatte schreibgeschützt
ist, oder wenn der Laufwerkstabellen-Erstellungsvorgang in Schritt 415 ermittelt,
dass der Master-Boot-Record kein Standardformat hat, zweigt die
Steuerung zu Schritt 445 ab. In Schritt 445 berechnet
der Laufwerkstabellen-Erstellungsvorgang eine Prüfsumme der Inhalte des ersten
Sektors der Festplatte, die in Schritt 410 gelesen wurde.
Die Steuerung schreitet daraufhin zu Schritt 450 fort,
bei dem der Laufwerkstabellen-Erstellungsvorgang
die berechnete Prüfsumme
in das Signaturfeld 614 (6) des Laufwerkstabelleneintrages 610 schreibt,
der für
das Plattenlaufwerk 110 vorgesehen ist. In Schritt 455 (4)
wird ein Prüfsummenkennzeichen,
das im Prüfsummenkennzeichenfeld 616 des
Laufwerkstabelleneintrages 610 für die Festplatte 110 gespeichert
ist (und auf 0 initialisiert ist) auf 1 gestellt. Die Steuerung
schreitet daraufhin zu Schritt 430 fort, bei dem, wie es
oben erläutert
wurde, die Laufwerkseinheitsnummer n in die Laufwerkstabelle 610 geschrieben
wird, die für
das Plattenlaufwerk 110 vorgesehen ist. Anschließend wird
in Schritt 465 der Festplattenlaufwerkszähler n erhöht. Die
Steuerung schreitet daraufhin zu Schritt 470 fort, bei
dem ermittelt wird, ob sämtliche
Festplattenlaufwerke 110 verarbeitet wurden. Wenn nicht,
kehrt der Laufwerkstabellen-Erstellungsvorgang zu Schritt 410 zurück. Wenn
ja, endet der Laufwerkstabellen-Erstellungsvorgang.
-
Die
Laufwerkstabelle 600, die vom Laufwerkstabellen-Erstellungsvorgang
aus 4 erzeugt wurde, wird anschließend verwendet, um die korrekte
Laufwerkseinheitsnummer zu ermitteln, die von jedem der Protected-Mode-Gerätetreiber 310 verwendet
werden soll. 7 ist ein Flussdiagramm, der
Vorgangs, durch den die Protected-Mode-Plattentreiber 310 die
Laufwerkseinheitsnummern den physikalischen Festplatten zuweisen,
der im folgenden als Laufwerkseinheitsnummern-Zuweisungsvorgang
bezeichnet wird. Der Laufwerkseinheitsnummern-Zuweisungsvorgang kann als Software
implementiert sein, die im Speicher 102 gespeichert ist
und von der CPU 104 ausgeführt wird, wenn das Betriebssystem 210 geladen
wird, während
jeder Protected-Mode-Plattentreiber 310 geladen wird, und
nachdem der Laufwerkstabellen-Erstellungsvorgang ausgeführt wurde.
-
In
Schritt 700 des Laufwerkseinheitsnummern-Zuweisungsvorgangs
wird ein Protected-Mode-Plattentreiber 310 geladen. Anschließend schreitet
die Steuerung zu Schritt 705 fort. Daraufhin ermittelt
der Vorgang, ob der Master-Boot-Record ein Standardformat hat oder
nicht (Schritt 701). Hat der Master-Boot-Record kein Standardformat,
wird eine Prüfsumme
des Master-Boot-Record berechnet (Schritt 702). Die resultierende Prüfsumme wird
als Index in die Treibertabelle verwendet, um eine Treibereintragstabelle
aufzufinden. Wenn im Gegensatz dazu der Master-Boot-Record ein Standardformat hat,
liest der Laufwerkseinheitsnummern-Zuweisungsvorgang die Signatur, die
in den Bytes DCh und DDh des Master-Boot-Records der physikalischen Festplatte
gespeichert ist (Schritt 705). Die Steuerung schreitet
zu Schritt 710 fort. In Schritt 710 findet der Laufwerkseinheitsnummern-Zuweisungsvorgang
den Laufwerkstabelleneintrag 610, der in seinem Signaturfeld 614 die
Signatur hat, die in Schritt 705 gelesen wurde. Anschließend schreitet
die Steuerung zu Schritt 715 fort. In Schritt 715 wird
die Laufwerkseinheitsnummer, die im Laufwerkseinheitsnummernfeld 612 des Laufwerkstabelleneintrages 610 gespeichert
ist, der in Schritt 710 gefunden wurde, extrahiert und
die extrahierte Laufwerkseinheitsnummer der physikalischen Festplatte
durch den geladenen Protected-Mode-Plattentreiber 310 zugewiesen.
Anschließend
schreitet die Steuerung zu Schritt fort, bei dem ermittelt wird,
ob es weitere Protected-Mode-Plattentreiber 310 gibt,
die geladen werden sollen. Sofern es weitere zu ladende Protected-Mode-Plattentreiber 310 gibt,
kehr die Steuerung zu Schritt 700 zurück. Andernfalls endet die Routine.
Als Ergebnis des oben beschriebenen Vorgangs weisen die Real-Mode-Plattentreiber 300 und
die Protected-Mode-Plattentreiber 310,
die dieselben Festplattenlaufwerke 110 steuern, dieselben
Laufwerkseinheitsnummern denselben physikalischen Festplatten zu.
-
Es
wird nun der zweite Aspekt der Erfindung erläutert. Beim zweiten Aspekt
der Erfindung erzeugt die bevorzugte Ausführungsform eine Übereinstimmung
zwischen den Datenträgereinheitsnummern
für logische Datenträger, die
von den Real-Mode-Gerätetreibern 202 und
den Protected-Mode-Gerätetreibern 212 verwendet
werden. Ein logischer Datenträger
ist ein vollständiges
oder ein Teil des unveränderlichen
Speichermediums, wie etwa einer Platte oder eines Bandes. Jeder
logische Datenträger
enthält
ein eigenständiges
Dateisystem, das wenigstens ein Verzeichnis mit null oder mehr Dateien
enthält
und sämtliche
Infor mationen beinhaltet, die erforderlich sind, um diese Dateien
und Verzeichnisse zu finden. Das Betriebssystem 210 und
die Applikationsprogramme beziehen sich auf einen logischen Datenträger mit
einem logischen Laufwerksbuchstaben, wie etwa "A:", "B:", wenn eine Datei
oder ein Verzeichnis bestimmt werden soll, die auf diesem gespeichert
sind. Wenngleich in vielen Fällen
logische Datenträger
einem Plattenlaufwerk 110 entsprechen, kann eine Platte
mehr als einen logischen Datenträger
enthalten. Wenn auf einen logischen Datenträger entweder durch Real-Mode-Gerätetreiber 202 oder
durch Protected-Mode-Gerätetreiber 212 zugegriffen
wird, muss die Datenträgereinheitsnummer
(die einem logischen Laufwerksbuchstaben entspricht) bekannt sein,
um auf den im einzelnen gewünschte
Datenträger
zugreifen zu können.
Das BIOS-Modul, das oben beschrieben wurde, stellt eine INT-25h-Interrupt-Handhabungseinrichtung
bereit, durch die ein Betriebssystem oder ein Applikationsprogramm
die Ausführung
einer LESEN-Funktion
für den
logischen Datenträger
anfragt, die einen speziellen logischen Datenträger auf einer Platte liest.
Das BIOS-Modul stellt zudem eine INT-26h-Interrupt-Handhabungseinrichtung bereit,
durch die ein Betriebssystem oder ein Applikationsprogramm eine
logische SCHREIBEN-Funktion für
den logischen Datenträger
anfragt, die einen speziellen Datenträger auf der Festplatte beschreibt.
Wenn INT-25h-LESEN oder INT-26h-SCHREIBEN angefragt werden, muss
die Datenträgereinheitsnummer
festgelegt werden, um festzulegen ob der spezifische logische Datenträger gelesen
oder beschrieben werden soll.
-
Wie
die Laufwerkseinheitsnummern, die oben erläutert wurden, werden die Datenträgereinheitsnummern
den logischen Datenträgern
durch Real-Mode-Gerätetreiber 202 zugeordnet,
die den Zugriff auf die logischen Datenträger (Real-Mode-Datenträgertreiber) in einer Reihenfolge
steuern, die durch das Betriebssystem (wie etwa das MS-DOS-Betriebssystem
von der Microsoft Corporation) festgelegt wird. Wenn das Betriebssystem 210 anschließend geladen
wird, werden Protected-Mode-Datenträgertreiber geladen, die die
Datenträgereinheitsnummern
denselben logischen Datenträgern
zuordnen, die die Protected-Mode-Datenträgertreiber
steuern. Ein Blockschaltbild, das diese Beziehung darstellt, ist
in 8 gezeigt. Damit die Protected-Mode-Datenträgertreiber 810,
die in 8 dargestellt sind, mit den Real-Mode-Datenträgertreibern 800 kompatibel
sind, müssen
die Protected-Mode-Datenträgertreiber 810 dieselben
Datenträgerein heitsnummern wie
die Real-Mode-Datenträgertreiber 800 zuordnen,
die denselben logischen Datenträgern 830 zugeordnet sind.
Somit wird, wie es in 8 gezeigt ist, eine Datenträgereinheitsnummer
0 einem ersten logischen Datenträger
durch den Real-Mode-Datenträgertreiber 800 und
den Protected-Mode-Datenträgertreiber 810 zugeordnet,
die auf den ersten logischen Datenträger zugreifen. Die Datenträgereinheitsnummer
1 wird durch den Real-Mode-Datenträgertreiber 800 und
den Protected-Mode-Datenträgertreiber 810 zugewiesen,
die auf den nächsten
logischen Datenträger
zugreifen, und jedem nachfolgenden logischen Datenträger wird
eine Datenträgereinheitszahl
eines sequentiell größeren Wertes
zugeordnet, bis die letzte Datenträgereinheitsnummer n zugeordnet
worden ist.
-
Um
eine konsistente Zuweisung der oben beschriebenen Datenträgereinheitsnummern
zu erreichen, erzeugt die bevorzugte Ausführungsform zunächst eine
Datenträgertabelle 1100,
was im folgenden unter Bezugnahme auf 11 detaillierter
erläutert
wird. Die Datenträgertabelle
weist der Datenträgereinheitsnummer, die
durch jeden Real-Mode-Datenträgertreiber 800 zugeordnet
wurde, eine einzigartige serielle Nummer zu, die im logischen Datenträger 830 gespeichert
ist, auf den durch diesen Real-Mode-Datenträgertreiber 800 zugegriffen
wird. Die Protected-Mode-Datenträgertreiber 810 weisen
dieselben Datenträgereinheitsnummern demselben
logischen Datenträger 830 unter
Verwendung der Datenträgertabelle
zu. Jeder Protected-Mode-Datenträgertreiber
liest die einzigartige serielle Nummer aus dem logischen Datenträger 830 über den
Protected-Mode-Datenträgertreiber
und extrahiert aus der Datenträgertabelle
die Datenträgereinheitsnummer,
die der einzigartigen seriellen Nummer zugeordnet ist, die vom logischen
Datenträger
gelesen wird.
-
9 ist
ein Flussdiagramm eines Vorgangs, der die oben beschriebene Datenträgertabelle
erstellt und im folgenden Datenträgertabellen-Erstellungsvorgang
genannt wird. Der Datenträgertabellen-Erstellungsvorgang
kann als Software implementiert sein, die im Speicher 102 gespeichert
ist und von der CPU 104 ausgeführt, wenn das Betriebssystem 210 geladen
wird. In Schritt 900 initialisiert der Datenträgertabellen-Erstellungsvorgang
einen logischen Datenträgerzähler m auf
null, der im folgenden detaillierter beschrieben wird. Anschließend schreitet die
Steuerung zu Schritt 910 fort. In Schritt 910 initiiert
der Datenträgertabellen-Erstellungsvorgang
eine INT-25h-Interrupt. Der logische Datenträgerzähler m wird als Datenträgereinheitsnummer festgelegt.
Der Datenträgertabellen-Erstellungsvorgang
legt zudem den logischen Sektor des logischen Datenträgers, der
den Datenträger-Boot-Record
speichert, als Interrupt-Parameter fest. Der INT-25h bewirkt, dass ein logisches LESEN
ausgeführt
wird. Das logische LESEN liest den gekennzeichnet logischen Sektor, der über den
festgelegten Datenträger-Boot-Record
verfügt.
Dieser logische Sektor enthält
eine einzigartige serielle Nummer, die an einem vorbestimmten Ort
im Datenträger-Boot-Record
gespeichert ist. Den Ort des Datenträger-Boot-Records und die darin
gespeicherte serielle Nummer erhält
man, wie es in 10 gezeigt ist. In 10 enthält der Master-Boot-Record
(MBR) der Platte, auf der sich der logische Datenträger befindet, einen
Verweis zu einem Partitions-Boot-Record (PBR). Der Partitions-Boot-Record
enthält
einen Verweis zu einem ersten (VBR), der eine serielle Nummer speichert,
die einzigartig einen ersten logischen Datenträger identifiziert. Befinden
sich zusätzliche
logische Datenträger
im Computersystem, enthält
der Partitions-Boot-Record
einen Verweis zu einem zweiten Partitions-Boot-Record, wie es dargestellt
ist. Der zweite Partitions-Boot-Record enthält einen Verweis zum zweiten
Datenträger-Boot-Record,
der eine andere serielle Nummer enthält, die einzigartig den zweiten
Datenträger
identifiziert. Zusätzliche
logische Datenträger
sind in derselben Art und Weise dargestellt.
-
Die
Steuerung schreitet anschließend
zu Schritt 920 fort. In Schritt 920 schreibt der
Datenträgertabellen-Erstellungsvorgang
die serielle Nummer, die er im Datenträger-Boot-Record erhalten hat,
in eine Datenträgertabelle 1100,
die in 11 gezeigt ist. Die Datenträgertabelle 1100 enthält einen
Datenträgertabelleneintrag 1110 für jeden
logischen Datenträger,
der Bestandteil des Computersystems ist. Jeder Datenträgertabelleneintrag 1110 enthält ein Datenträgereinheitsnummernfeld 1112 und
ein Seriellnummernfeld 1114. Der Datenträgertabellen-Erstellungsvorgang
schreibt die serielle Nummer in das Seriellnummernfeld 1114 des
Datenträgertabelleneintrages 1110,
der für
den logischen Datenträger
vorgesehen ist, der vom Real-Mode-Datenträgertreiber 800 gesteuert
wird, dem die Datenträgereinheitsnummer
m zugeordnet ist. Die Steuerung schreitet anschließend zu
Schritt 930 fort. In Schritt 930 schreibt der
Datenträgertabellen- Erstellungsvorgang
die Datenträgereinheitsnummer
min das Datenträgereinheitsnummernfeld 1112 des
Datenträgertabelleneintrages 1110, in
den die serielle Nummer bei Schritt 920 geschrieben wurde.
Die Steuerung schreitet anschließend zu Schritt 940 fort,
bei dem der Datenträgerzähler m erhöht wird.
Anschließend
wird in Schritt 950 ermittelt, ob sämtliche der logischen Datenträger verarbeitet
wurden. Wenn nicht, kehrt die Steuerung zu Schritt 900 zurück. Wenn ja,
endet der Datenträgertabellen-Erstellungsvorgang.
-
Die
erhaltenen Datenträgereinheitsnummern
werden anschließend
dem korrekten logischen Datenträger
zugeordnet. Ein Flussdiagramm des Vorgangs, durch den die Datenträgereinheitsnummern
zugewiesen werden und der im folgenden Datenträgereinheitsnummern-Zuweisungsvorgang
genannt wird, ist in 12 dargestellt. Der Datenträgereinheitsnummern-Zuweisungsvorgang,
der in 12 dargestellt ist, kann als
Software implementiert sein, die im Speicher 102 gespeichert
ist und von der CPU 104 ausgeführt wird, wenn das Betriebssystem 210 geladen
wird. In Schritt 1200 des Datenträgereinheitsnummern-Zuweisungsvorgangs
wird ein Protected-Mode-Datenträgertreiber 810 geladen.
Die Steuerung schreitet anschließend zu Schritt 1202 fort.
In Schritt 1202 liest der Datenträgereinheitsnummern-Zuweisungsvorgang
die serielle Nummer (durch Folgen des Pfades vom Master-Boot-Record
zum Partitions-Boot-Record zum Datenträger-Boot-Record) aus dem Datenträger-Boot-Record
des logischen Datenträgers.
Anschließend
schreitet die Steuerung zu Schritt 1204 fort. In Schritt 1204 lokalisiert
der Datenträgereinheitsnummern-Zuweisungsvorgang
den Da- tenträgertabelleneintrag 1110 in
der Datenträgertabelle 1100,
die die serielle Nummer enthält,
die in Schritt 1202 gelesen wurde. In Schritt 1206 wird
die Datenträgereinheitsnummer,
die im Datenträgereinheitsnummernfeld 1112 des
Datenträgertabelleneintrages 1110 gespeichert
ist, den man in Schritt 1204 erhalten hat, dem logischen Datenträger durch
den geladenen Protected-Mode-Datenträgertreiber 810 zugewiesen.
In Schritt 1208 ermittelt der Datenträgereinheitsnummern-Zuweisungsvorgang,
ob es weitere Datenträger-Boot-Records
(VBR) gibt, die verarbeitet werden sollen. Ist dies der Fall, kehrt
die Steuerung zu Schritt 1200 zurück. Andernfalls endet der Datenträgereinheitsnummern-Zuweisungsvorgang.
Infolgedessen benutzen die Real-Mode-Datenträgertreiber 800 und
die Protected-Mode-Datenträgertreiber 810 dieselben
Laufwerkseinheitsnummern für die
Datenträger,
auf die sie zugreifen.
-
Es
wird nun der dritte Aspekt der Erfindung beschrieben. Beim dritten
Aspekt der Erfindung erzeugt die bevorzugte Ausführungsform eine Übereinstimmung
zwischen den Adapternummern für
die Adapter 108 (1). Diese
Adapternummern werden von den Real-Mode-Gerätetreibern 202 und
den Protected-Modegerätetreibern 212 verwendet,
um die Adapter zu steuern und so auf die Peripheriegeräte 120 zuzugreifen,
die mit diesen verbunden sind. Beispielsweise sind die Adapter 108 SCSI-Adapter,
und das MS-DOS-Betriebssystem stellt Real-Mode-SCSI-Adaptertreiber bereit. Die SCSI-Adaptertreiber
beinhalten beispielsweise ASPI- (Advanced SCSI Programming Interface)
und CAM- (Common Access Method) Treiber. Wird das Betriebssystem 210 anschließend geladen,
werden Protected-Mode-Adaptertreiber bereitgestellt, die dieselben
Adapter 108 steuern, wie die Real-Mode-Adaptertreiber.
-
Es
ist ein Blockschaltbild in 13 dargestellt,
das die Beziehung zwischen den Adaptertreibern und den Adaptern 108 darstellt,
die oben beschrieben wurden. Damit die Protected-Mode-Adaptertreiber 1310,
die in 13 dargestellt sind, die Adapter 108 in
einer Art und Weise steuern, die mit den Real-Mode-Adaptertreibern 1300 kompatibel
ist, die die Adapter 108 steuern, müssen dieselben Adapternummern
durch die Protected-Mode-Adaptertreiber 1310 zugewiesen
werden, die die Real-Mode-Adaptertreiber 1300 denselben
Adaptern 108 zuordnen. Die Adapternummern werden von den
Real-Mode-Adaptertreibern 1300 in einer Reihenfolge zugeordnet.
Wenn sie beispielsweise durch das MS-DOS-Betriebssystem geladen werden, werden
die Adapternummern in der Reihenfolge zugeordnet, in der die Real-Mode-Adaptertreiber 1300 geladen
werden. Das Betriebssystem muss jedoch die Protected-Mode-Adaptertreiber 1310 nicht
unbedingt in derselben Reihenfolge wie die entsprechenden Real-Mode-Adaptertreiber 1300 laden.
Somit kann nicht sichergestellt werden, dass dieselben Adapternummern
den Real-Mode-Adaptertreibern 1300 und den Protected-Mode-Adaptertreibern 1310 zugewiesen
werden, die dieselben Adapter 108 steuern.
-
Darüber hinaus
können
einige Applikationsprogramme die Verwendung von Real-Mode-Adaptertreibern 1300 verlangen,
selbst wenn Protected-Mode-Adaptertreiber vorhanden sind. Eine weitere
Schwierigkeit besteht darin, dass eine Schnittstellen-Abbildungseinrichtung 1320 vorahnden
sein kann, die Anfragen nach einem Zugriff auf Peripheriegeräte über einen
Real-Mode-Adaptertreiber 1300 eines Schnittstellentyps
(wie etwa ASPI) einem Real-Mode-Adaptertreiber 1300 eines
anderen Schnittstellentyps (wie etwa CAM) abbildet. Somit müssen Anfragen
der Applikationsprogramme, auf die Real-Mode-Adaptertreiber zuzugreifen,
auf die Protected-Mode-Adaptertreiber 1310 abgebildet werden,
die dieselben Adapter 108 steuern. Weiterhin müssen Anfragen,
um auf Real-Mode-Adaptertreiber 1300 zuzugreifen, die durch
eine Schnittstellen-Abbildungseinrichtung 1320 auf einen
Bestimmungs-Real-Mode-Adaptertreiber 1300 abgebildet werden,
ebenfalls auf einen Protected-Mode-Adaptertreiber 1310 abgebildet
werden, der dem Bestimmungs-Real-Mude-Adaptertreiber 1300 entspricht.
-
Um
eine konsistente Zuweisung von Adapternummern und eine Abbildung
der Anfragen auf den korrekten Protected-Mode-Adaptertreiber 1310 zu
erzeugen, erstellt die bevorzugte Ausführungsform zunächst für jeden
Adapter 108 eine Real-Mode-Datenstruktur 1500,
die im folgenden detaillierter unter Bezugnahme auf 15 erläutert wird.
Die Real-Mode-Datenstruktur weist der Adapternummer, die durch einen
Real-Mode-Adaptertreiber 1330 dem Adapter 108 zugeordnet
wird, den der Real-Mode-Adaptertreiber steuert, Peripherieinformationen
zu, die man aus jedem Peripheriegerät 120 erhält, das
mit demselben Adapter 108 verbunden ist. Wenn eine Schnittstellen-Abbildungseinrichtung 1320 vorhanden
ist, weist die Real-Mode-Datenstruktur zudem der Adapternummer und
den Peripherieinformationen einen Schnittstellentyp zu. Der Schnittstellentyp
definiert den Typ der Schnittstelle des Bestimmungs-Real-Mode-Adaptertreibers 1300,
auf den Anfragen auf den Real-Mode-Adaptertreiber 1300 durch
die Schnittstellen-Abbildungseinrichtung 1320 abgebildet
werden.
-
Wenn
die Protected-Mode-Adaptertreiber 1310 anschließend geladen
werden, wird ein Datensteuerblock 1800 für jedes
Peripheriegerät 120 erzeugt,
das mit einem Adapter verbunden ist. Der Datensteuerblock 1800 wird
im folgenden unter Bezugnahme auf 18 detaillierter
beschrieben. Der Datensteuerblock enthält Peripherieinformationen,
die man aus jedem Peripheriegerät 120 über den
Adapter 108 erhält,
der vom Protected-Mode-Adaptertreiber 1310 gesteuert wird.
-
Die
Peripherieinformationen in jedem Datensteuerblock werden anschließend mit
den Peripherieinformationen verglichen, die in den Real-Mode-Datenstrukturen 1500 gespeichert
sind. Sind die Peripherieinformationen dieselben, wird die Adapternummer
aus der Real-Mode-Datenstruktur 1500 extrahiert. Die extrahierte
Adapternummer wird dem Adapter 108, der mit dem Peripheriegerät 120 verbunden
ist, für
das der Datensteuerblock vorgesehen ist, durch en Protected-Mode-Adaptertreiber 1310 zugeordnet,
der den Adapter 108 steuert.
-
Für den Fall,
dass eine Schnittstellen-Abbildungseinrichtung 1320 vorhanden
ist, können
die Peripherieinformationen in mehr als einer Real-Mode-Datenstruktur
mit den Peripherieinformationen im Datensteuerblock 1800 übereinstimmen.
In diesem Fall wird die Adapternummer, die dem Bestimmungs-Real-Mode-Adaptertreiber 1300 entspricht,
dem Adapter 108, der mit dem Peripheriegerät 120 entsprechend
dem Datensteuerblock verbunden ist, durch den Protected-Mode-Adaptertreiber zugeordnet,
der diesen Adapter 108 steuert. Diese Adapternummer erhält man aus
der Real-Mode-Datenstruktur, die die Adapternummer einem Schnittstellentyp
zuordnet (d.h. dem Schnittstellentyp des Bestimmungs-Real-Mode-Adaptertreibers 1300).
-
Ein
Flussdiagramm des Vorgangs, der die oben beschriebenen Real-Mode-Datenstrukturen erzeugt und
im folgenden als Real-Mode-Datenstruktur-Erstellungsvorgang (RMD-Ersiellungsvorgang)
bezeichnet wird, ist in 14 dargestellt.
Der RMD-Erstellungsvorgang kann als Software implementiert sein,
die im Speicher 102 gespeichert ist und von der CPU 104 ausgeführt wird.
In Schritt 1400 initialisiert der RMD-Erstellungsvorgang
den Schnittstellentyp, den Adapterzähler, den Peripheriezähler und
die Real-Mode-Datenstruktur (die allesamt im folgenden detaillierter
beschrieben werden). In Schritt 1402 erzeugt der RMD-Erstellungsvorgang einen
SCSI-Abfragebefehl über
den Real-Mode-Adaptertreiber 1300, dem die Adapternummer,
die durch den Adapterzähler
angezeigt wird (zu Beginn 0), zugeordnet ist. Der SCSI-Abfragebefehl
bezieht Peripherieinformationen von der Peripherievorrichtung 120,
die durch den Peripherieeinheitszähler (zu Beginn 0 für jeden
Adapter) gekennzeichnet ist. Anschließend speichert der RMD- Erstellungsvorgang
in Schritt 1404 die Peripherieinformationen und die Adapternummer
zusammen in einem Einheitsspezifikationselement, das dem Peripheriegerät 120 entspricht
und der Real-Mode-Datenstruktur zugeordnet ist, die dem Adapter 108 entspricht.
-
Die
Real-Mode-Datenstruktur und das Einheitsspezifikationselement sind
im Detail in 15 dargestellt. Jede RMD 1500 enthält einen
Nächst-RMD-Verweis 502 und
einen Einheitsverweis 1504. Der Nächst-RMD-Verweis 1502 verweist
auf eine nächste
RMD entsprechend einem nächsten
Real-Mode-Adaptertreiber 1300. Der nächste Real-Mode-Adaptertreiber 1300 ist
der Adaptertreiber, der als nächstes
nach dem Real-Mode-Adaptertreiber 1330 geladen wurde, dem
die RMD 1500 entspricht. Der Einheitsverweis 1504 verweist
auf ein erstes Einheitsspezifikationselement 1510, das
ein Peripheriedatenfeld 1512 und einen Einheitsverweis 1514 hat.
Der Einheitsverweis 1514 verweist auf ein nächstes Einheitsverweiselement 1510 entsprechend
einem nächsten
Peripheriegerät 120,
das mit dem Adapter 108 verbunden ist, der der RMD 1500 entspricht.
Die spezifischen Inhalte des Peripheriedatenfeldes 1512 sind
in 16 dargestellt. Das Peripheriedatenfeld 1512 enthält Peripherieinformationen 1600,
die eine Ziel-ID 1602, eine logische Einheitsnummer 1604 und
eine Prüfsumme 1606 beinhalten,
die aus dem Peripheriegerät 120 bezogen
wird, dem das Einheitsspezifikationselement 1510 entspricht.
Das Peripheriedatenfeld 1512 enthält weiterhin einen Schnittstellentyp 1610 und
eine Adapternummer 1620, die dem Adapter 108 entspricht,
dem die RMD 1500 entspricht.
-
Nachdem
die Peripherieinformationen bei Schritt 1404 des RMD-Erstellungsvorgangs
gespeichert wurden, schreitet die Steuerung zu Schritt 1406 fort.
In Schritt 1406 ermittelt der RMD-Erstellungsvorgang, ob ein
Real-Mode-Adaptertreiber 1300 beim
Ausführen
des SCSI-Abfragebefehls aufgerufen wurde, der sich vom Schnittstellentyp,
der zuvor festgelegt wurde, unterscheidet. Beispielsweise ist der
Schnittstellentyp zu Beginn auf ASPI eingestellt, so dass der SCSI-Abfragebefehl
zunächst über sämtliche
Real-Mode-Adaptertreiber 1300 bereitgestellt ist, die ASPI-Treiber
sind. In eine derartigen Fall ermittelt der RMD-Erstellungsvorgang zu Beginn in Schritt 1406,
ob ein Real-Mode-Adaptertreiber 1300 mit einem anderen
Schnittstellentyp als ASPI aufgerufen wurden. Ein Real- Mode-Adaptertreiber 1300 mit
einem anderen Schnittstellentyp wird immer dann aufgerufen, wenn
eine Schnittstellen-Abbildungseinrichtung 1320 vorhanden
ist, die Anfragen an einen Real-Mode-Adaptertreiber 1300 auf
einen anderen Bestimmungs-Real-Mode-Adaptertreiber 1300 abbildet. Wenn
in Schritt 1406 der RMD-Erstellungsvorgang ermittelt, dass
ein andere Schnittstellentyp aufgerufen wurde, zweigt die Steuerung
zu Schritt 1408 ab. Bei Schritt 1408 speichert
der RMD-Erstellungsvorgang den Schnittstellentyp des Bestimmungs-Real-Mode-Adaptertreibers 1300 als
Schnittstellentyp 1610 im Peripheriedatenfeld 1512 der
RMD 1500, wobei die Nullwerte ersetzt werden, die zu Beginn
im Peripheriedatenfeld 1512 gespeichert wurden. Die RMD 1500,
in die der Schnittstelletyp gespeichert wird, entspricht dem Real-Mode-Adaptertreiber 1300,
dem die Adapternummer zugeordnet ist, die durch den Adapterzähler dargestellt
ist.
-
Wenn
in Schritt 1406 der RMD-Erstellungsvorgang ermittelt, dass
ein anderer Schnittstellentyp nicht aufgerufen ist, schreitet die
Steuerung zu Schritt 1410 fort. Die Steuerung schreitet
auch zu 1410 fort, nachdem 1408 ausgeführt wurde.
In Schritt 1410 wird der Peripheriezähler erhöht und das nächste Einheitsspezifikationselement 1510 bezogen.
Die Steuerung schreitet zu Schritt 1412 fort. In Schritt 1412 ermittelt
der RMD-Erstellungsvorgang, ob sämtliche
Peripheriegeräte 120,
die mit dem Adapter 108 verbunden sind, verarbeitet wurden.
Ist dies der Fall, kehrt die Steuerung zu Schritt 1402 zurück. Wenn
nein, zweigt die Steuerung zu Schritt 1414 ab, bei dem
der Adapterzähler
erhöht
wird.
-
Die
Steuerung schreitet anschließend
zu Schritt 1416 fort, bei dem der Peripheriezähler auf
0 zurückgesetzt
wird und die nächste
RMD bezogen wird. In Schritt 1418 ermittelt der RMD-Erstellungsvorgang,
ob alle Adapter 108 verarbeitet wurden. Ist dies der Fall
endet der RMD-Erstellungsvorgang. Wenn nicht, zweigt die Steuerung
zu Schritt 1420 ab, bei dem die RMD-Erstellungsvorgangroutine
ermittelt, ob der Schnittstellentyp des letzten Real-Mode-Adaptertreiber 1300 ASPI
ist. Ist dies der Fall, ermittelt die RMD-Erstellungsvorgangroutine
in Schritt 1422, ob sämtliche
der ASPI-Treiber verarbeitet wurden. Wenn nicht, kehrt die Steuerung zu
Schritt 1402 zurück.
Wenn ja, schreitet die Steuerung zu Schritt 1424 fort,
bei dem der Schnittstellentyp auf CAM eingestellt wird. Anschließend kehrt
die Steuerung zu Schritt 1402 zurück. Wenn in Schritt 1420 der RMD-Erstellungsvorgang
ermittelt, dass der Schnittstelentyp nicht ASPI ist, zweigt die
Steuerung zu Schritt 1426 ab, bei dem der RMD-Erstellungsvorgang
ermittelt, ob der Schnittstellentyp des letzten Real-Mode-Adaptertreibers 1300 CAM.
Ist dies der Fall, schreitet die Steuerung zu Schritt 1426 fort,
bei dem der RMD-Erstellungsvorgang ermittelt, ob sämtliche
CAM-Treiber bearbeitet wurden. Wenn nicht, kehrt die Steuerung zu Schritt 1402 zurück. Wenn
ja, schreitet die Steuerung zu Schritt 1430 fort, bei dem
der Schnittstellentyp auf INT 4B eingestellt wird. Anschließend kehrt
die Steuerung zu Schritt 1402 zurück.
-
Der
Vorgang, der die Gerätesteuerblöcke erzeugt
und im folgenden als Gerä testeuerblock-
(DCB-) Erstellungsvorgang bezeichnet wird, ist in 17 dargestellt.
Der DCB-Erstellungsvorgang kann als Software implementiert sein,
die im Speicher 102 gespeichert ist und von der CPU 104 ausgeführt wird,
wenn das Betriebssystem 210 geladen wird. In Schritt 1700 lädt der DCB-Erstellungsvorgang
einen Protected-Mode-Adaptertreiber 1310. Die Steuerung.
schreitet anschließend
zu Schritt 1705 fort. In Schritt 1705 tastet der
DCB-Erstellungsvorgang
die Peripherieinformationen über
den geladenen Protected-Mode-Treiber 1310 von
einem Peripheriegerät 120 ab,
das mit dem Adapter 108 verbunden ist, der vom geladenen
Protected-Mode-Adaptertreiber 1310 gesteuert wird. Anschließend schreitet
die Steuerung zu Schritt 1710 fort. In Schritt 1710 speichert
der DCB-Erstellungsvorgang die Peripherieinformationen, die in Schritt 1705 abgetastet
wurden, in einem Gerätesteuerblock
(DCB), der dem geladenen Protected-Mode-Adaptertreiber 1310 entspricht.
Der Gerätesteuerblock
(DCB), in den die Peripherieinformationen gespeichert werden, ist
in 18 dargestellt. Wie in 18 gezeigt,
enthält
der Gerätesteuerblock 1800 eine
Ziel-ID 1802, die das Peripheriegerät identifiziert, eine logische
Einheitsnummer 1804 und eine Prüfsumme auf der Basis der Peripherieinformationen,
die aus dem Peripheriegerät 120 abgetastet
wurden, das mit dem Adapter verbunden ist, der vom geladenen Protected-Mode-Adaptertreiber 1310 gesteuert
wird.
-
Anschließend schreitet
die Steuerung zu Schritt 1715 fort. In Schritt 1715 ermittelt
der DCB-Erstellungsvorgang, ob zusätzliche Peripheriegeräte 120 mit
dem Adapter 108 verbunden sind, der vom geladenen Protected-Mode-Adaptertreiber 1310 gesteuert
wird. Ist dies der Fall, kehrt die Steuerung zu Schritt 1700 zurück. An dernfalls
schreitet die Steuerung zu Schritt 1720 fort, bei dem der
DCB-Erstellungsvorgang
ermittelt, ob zusätzliche
Protected-Mode-Adaptertreiber geladen werden sollen. Wenn die DCB-Erstellungsvorgangsroutine
in Schritt 1720 ermittelt, dass zusätzliche Protected-Mode-Adaptertreiber 1310 zu
laden sind, kehrt die Steuerung zu Schritt 1700 zurück. Andernfalls
endet der DCB-Erstellungsvorgang.
-
Ein
Flussdiagramm des Vorgangs, der die Adapternummern der Protected-Mode-Adaptertreiber 1310 zuweist
und hier als Adapternummern-Zuweisungsvorgang bezeichnet wird, ist
in 19 gezeigt. Der Adapternummern-Zuweisungsvorgang
kann als Software implementiert sein, die im Speicher 102 gespeichert
ist und von der CPU 104 ausgeführt wird. IN Schritt 1900 initialisiert
der Adapternummern-Zuweisungsvorgang die DCB 1800, die
RMD 1500 und die Einheitsspezifikationselemente 1510,
was im folgenden erläutert
wird. In Schritt 1902 wird ein "Übereinstimmungs"-Zähler zunächst auf
0 gestellt, was ebenfalls erläutert
wird. In Schritt 1904 werden die Peripherieinformationen,
die in einem Einheitsspezifikationselement 1510 einer RMD 1500 gespeichert
sind, mit den Peripherieinformationen verglichen, die in einem DCB 1800 gespeichert
sind. Anschließend
schreitet die Steuerung zu Schritt 1906 fort. In Schritt 1906 ermittelt
der Adapternummern-Zuweisungsvorgang, ob die Peripherieinformationen
im Einheitsspezifikationselement 1510 dieselben sind, wie die
Peripherieinformationen im DCB 1800.
-
Wird
in Schritt 1906 ermittelt, dass die Peripherieinformationen übereinstimmen,
schreitet die Steuerung zu Schritt 1908 fort. In Schritt 1908 wird
der Übereinstimmungszähler erhöht. Anschließend schreitet
die Steuerung zu Schritt 1910 fort, in dem ein Bestimmungskennzeichen,
das durch den Wert des Übereinstimmungszählers indiziert
wird, zu Beginn auf nicht zutreffend eingestellt wird. Die Steuerung
schreitet anschließend
zu Schritt 1912 fort. In Schritt 1912 wird die
Adapternummer, die im Einheitsspezifikationselement 1510 gespeichert
ist, einer "Treiber"-Variablen zugeordnet, die durch den
Wert des Übereinstimmungszählers indiziert
ist. Die Treibervariable enthält
vorübergehend
die Adapterzahl des Protected-Mode-Adaptertreibers 1310, der
dem DCB 1800 entspricht. Anschließend schreitet die Steuerung
zu Schritt 1914 fort. In Schritt 1914 wird ermittelt,
ob ein Schnitt stellentyp 1610 (ein Nicht-Null-Wert) im
Peripheriedatenfeld 1512 des Einheitsspezifikationselementes 15010 gespeichert
ist. Der Schnittstellentyp 1610 ist zu Beginn ein Nullwert
und wird auf einen Schnittstellentyp nur dann eingestellt, wenn
er in Schritt 1408 des RMD-Erstellungsvorgangs in Fig.
gespeichert wird. Schritt 1408 wird nur dann ausgeführt, wenn
eine Schnittstellen-Abbildungseinrichtung 1320 vorgesehen
ist, die eine Anfrage an einen Real-Mode-Adaptertreiber 1300 auf
einen anderen Bestimmungs-Real-Mode-Adaptertreiber 1300 abbildet.
Wenn in Schritt 1914 ermittelt wird, dass ein Nicht-Nullwert als Schnitstellentyp 1610 im
Peripheriedatenfeld 1512 des Einheitsspezifikationselementes 1510 gespeichert ist,
schreitet die Steuerung zu Schritt 1916 fort. In Schritt 1916 wird
das Bestimmungskennzeichen, das durch den Wert des Übereinstimmungszählers indiziert
ist, auf zutreffend eingestellt.
-
Die
Steuerung schreitet anschließend
zu Schritt 1922 fort, bei dem der Adapternummern-Zuweisungsvorgang
ermittelt, ob zusätzliche
Einheitsspezifikationselemente 1510 der RMD 1500 entsprechen.
Ist dies der Fall, schreitet die Steue- rung zu Schritt 1924 fort,
bei dem das nächste
Einheitsspezifikationselement 1510 bezogen wird, worauf
die Steuerung zu Schritt 1902 zurückkehrt. Andernfalls zweigt
die Steuerung zu Schritt 1926 ab, bei dem ermittelt wird,
ob es zusätzliche
RMD 1500 gibt. Ist dies der Fall, wird die nächste RMD 1500 bezogen
und die Steuerung kehrt zu Schritt 1902 zurück. Andernfalls
zweigt die Steuerung zu Schritt 1930 ab. Bei Schritt 1930 wird
die Adapterzahl der übereinstimmenden
RMD dem Adapter 108 für
den Protected-Mode-Adaptertreiber 1310 zugeordnet, der
dem DCB entspricht, der mit dieser RMD übereinstimmt. Wenn mehr als
eine RMD mit dem DCB übereinstimmen,
wird die Adapternummer, die in der RMD gespeichert ist, die einem
Schnittstellentyp (jenem des Bestimmungs-Real-Mode-Adaptertreibers)
zugeordnet ist, durch den Protected-Mode-Adaptertreiber 1310 zugeordnet.
Diese Zuordnung kann durch den folgenden Pseudocode dargestellt
werden:
-
-
-
Die
Steuerung schreitet anschließend
zu Schritt 1932 fort, bei dem ermittelt wird, ob es zusätzliche DCB
gibt, die verarbeitet werden sollen. Ist dies der Fall, schreitet
die Steuerung zu Schritt 1934 fort, bei dem der nächste DCB
bezogen wird, worauf die Steuerung zu Schritt 1902 zurückkehrt.
Wenn nicht, endet die Routine.
-
Bei
einem vierten Aspekt der. Erfindung nimmt die bevorzugte Ausführungsform
eine Protected-Mode-Anpassung der Real-Mode-Funktionstreiber 204 vor,
die bereitgestellt wurden. Beim vierten Aspekt der Erfindung erfasst
die bevorzugte Ausführungsform
zunächst
die Verwendung derartiger Real-Mode-Funktionstreiber 204.
Die bevorzugte Ausführungsform
ermittelt, ob die Funktionalität
der erfassten Real-Mode-Funktionstreiber 204 durch einen
vorhandenen Protected-Mode-Funktionstreiber
bereitgestellt ist. Ist dies der Fall, werden Anfragen auf die Real-Mode-Funktionstreiber
auf die Protected-Mode-Funktionstreiber 214 abgebildet.
Wenn nicht, passt die bevorzugte Ausführungsform die Real-Mode-Funktionstreiber 204 an,
damit diese mit den Protected-Mode-Gerätetreibern 212 anstelle
der Real-Mode-Gerätetreiber 202 arbeiten.
-
Der
Vorgang, der die Real-Mode-Funktionstreiber anpasst und hier als
Real-Mode- (RM-)
Funktionstreiber-Anpassungsvorgang bezeichnet wird, ist in 20 dargestellt.
Der Real-Mode-Funktionstreiber-Anpassungsvorgang kann als Software
implementiert sein, die im Speicher 102 gespeichert ist
und von der CPU 104 ausgeführt wird. In Schritt 2000 des
Real-Mode-Funktionstreiber-Anpassungsvorgangs
führt der
Real-Mode-Funktionstreiber-Anpassungsvorgang einen Real-Mode-Funktionstreiber-Erfassungsvorgang,
der den Real-Mode-Funktionstreiber
erfasst. Der Real-Mode-Funktionstreiber-Erfassungsvorgang ist in 21 dargestellt.
In Schritt 2100 des Real-Mode-Funktionstreiber-Erfassungsvorgang
wird der "erfasste" boole'sche Wert zunächst auf
nicht zutreffend gestellt. Anschließend schreitet die Steuerung
zu Schritt 2105 fort. In Schritt 2105 bezieht
der Real-Mode-Funktionstreiber-Erfassungsvorgang momentane Treiberinformationen
aus einem Plattenparameterblock, der für einen logischen Real-Mode-Treiber
bereitgestellt ist.
-
Der
Plattenparameterblock ist in 22 dargestellt.
Wie in 22 gezeigt, enthält der Datenparameterblock 2200 Momentantreiberinformationen 2202 und
einen Verweis 2204 auf einen ersten auszuführenden Treiber.
Zu Beginn verweist der Verweis 2204 im Datenparameterblock 2200 auf
einen Real-Mode-Gerätetreiber 2210,
der ein Gerät 2220 steuert,
das ebenfalls von einem Protected-Mode-Gerätetreiber 2230 gesteuert wird.
Ist jedoch ein Real-Mode-Funktionstreiber 2240 vorhanden,
um den Real-Mode-Gerätetreiber 2210 zu ergänzen, werden
die Aufrufe in den Real-Mode-Funktionstreiber 2240 derart
eingehakt, dass der Verweis 2204 zum Real-Mode-Funktionstreiber 2240 verweist.
In diesem Fall beschreiben die Momentantreiberinformationen 2202 den
Real-Mode-Funktionstreiber 2240 anstelle
des Real-Mode-Gerätetreibers 2210,
der ursprünglich
dadurch beschrieben wird. Es wird darauf hingewiesen, dass die Funktionstreiber
Teil der Real-Mode-Treiber sein können, anstelle separate Treiber
zu sein.
-
Anschließend schreitet
die Steuerung zu Schritt 2110 fort. In Schritt 2110 bezieht
der Real-Mode-Funktionstreiber-Erfassungsvorgang eine ursprüngliche
Treiberstruktur aus dem IO.SYS-Modul. Das IO.SYS-Softwaremodul ist
ein hinlänglich
bekanntes Modul von einem Hardwarehersteller des Computersystems,
um das MS-DOS-Betriebssystem 200 zu starten. Die ursprüngliche
Treiberstruktur ist in 23 dargestellt. Die ursprüngliche
Treiberstruktur enthält
einen Real-Mode-Treibernamen,
eine Anzahl gesteuerter Einheiten und eine Real-Mode-Treiber-Headeradresse. Anschließend schreitet
die Steuerung zu Schritt 2115 fort, bei dem der Real-Mode-Treibername,
eine Anzahl gesteuerter Einheiten und die Real-Mode-Treiber-Headeradresse
in der ursprünglichen
Treiberstruktur 2300 mit den Momentantreiberinformationen
vergleichen werden, die demselben Gerät 2220 entsprechen.
Gibt es einen Real-Mode-Funktionstreiber 2240, stimmen
die Informationen in der ursprünglichen
Treiberstruktur 2300 nicht mit den Momentantreiberinformationen 2202 im
Datenparameterblock 2200 überein. Wenn somit in Schritt 2115 ermittelt
wird, dass die Momentantreiberinformationen nicht übereinstimmen,
schreitet die Steuerung zu Schritt 2120 fort, bei dem das "erfasste" Kennzeichen auf zutreffend
eingestellt wird. Andernfalls bleibt das erfasste Kennzeichen nicht
zutreffend. Der Vorgang kehrt daraufhin zurück, um den Real-Mode-Funktionstreiber-Anpassungsvorgang
fortzuführen,
der in 20 gezeigt ist.
-
Nachdem
in Schritt 2000 der Real-Mode-Funktionstreiber-Erfassungsvorgang
des Real-Mode-Funktionstreiber-Anpassungsvorgangs ausgeführt wurde,
schreitet die Steuerung zu Schritt 2010 fort. In Schritt 2010 wird
durch den Real-Mode-Funktionstreiber-Erfassungsvorgang
ermittelt, ob das erfasste Kennzeichen auf zutreffend gesetzt war.
ist dies der Fall, schreitet der Vorgang zu Schritt 2015 fort.
In Schritt 2015 wird ermittelt, ob sich der Real-Mode-Funktionstreibername
in einer Liste "Sicherer
Treiber" befindet.
Die Liste Sicherer Treiber ist in 24 dargestellt.
In 24 enthält
die Liste Sicherer Treiber 2400 eine. Liste von Real-Mode-Funktionstreibernamen 2402.
Wenn in Schritt 2015 der Real-Mode-Funktionstreibername in der Liste Sicherer
Treiber gefunden wird, schreitet die Steuerung zu Schritt 2025 fort.
in Schritt 2025 bildet der Real-Mode-Funktionstreiber-Anpassungsvorgang die
Real-Mode-Funktionstreiberanfragen auf den Protected-Mode-Treiber
ab, der in der Liste Sicherer Treiber identifiziert ist.
-
Wird
der Real-Mode-Funktionstreibername in Schritt 2015 nicht
in der Liste Sicherer Treiber gefunden, zweigt die Steuerung zu
Schritt 2030 ab, bei dem der Real-Mode-Funktionstreiber-Anpassungsvorgang
ausgeführt
wird. Anschließend
schreitet die Steuerung zu Schritt 2035 fort, bei dem der
Real-Mode-Funktionstreiber-Anpassungsvorgang
ermittelt, ob zusätzliche
logische Real-Mode-Treiber
vorhanden sind. Ist dies der Fall, schreitet die Steuerung zu Schritt 2040 fort,
bei dem der nächste
logische Real-Mode-Treiber bezogen wird, worauf die Steuerung zu
Schritt 200 zurückkehrt.
Wenn nicht, endet der Real-Mode-Funktionstreiber-Anpassungsvorgang.
-
25 zeigt
zahlreiche der Hauptfunktionsschritte, die durch den Real-Mode-Funktionstreiber-Anpassungsvorgang
ausgeführt
werden. Dieser Vorgang wird durch eine Software durchgeführt, die
im Speicher 102 gespeichert ist und von der CPU 104 ausgeführt wird.
Dieser Vorgang wird aufgerufen, wenn sich der Protected-Mode-Treiber
nicht auf der Liste Sicherer Treiber befindet, weshalb man auf den
Real-Mode-Funktionstreiber angewiesen ist, um die gewünschte Funktiona lität zu erzeugen.
Somit werden, wie in 25 gezeigt, die logischen Anfragen
auf den Protected-Mode-Treiber über
eine Real-Mode-Abbildungseinrichtung zu einem Real-Mode-Funktionstreiber
umgeleitet (Schritt 2500). Diese Anfrage wird anschließend die
Real-Mode-Treiberkette abwärts
geleitet, bis die Anfrage den letzten Treiber in der Kette erreicht
(Schritt 2502). API-Aufrufe vom Real-Mode-Treiber werden in
den Protected-Mode eingehakt (Schritt 2504). Somit werden
ASPI-, CAM-, oder INT-13h-API-Aufrufe in den Protected Mode eingehakt.
Gibt es keine API-Aufrufe, so gibt es kein Einhaken in den Protected
Mode.