# DriveSpace

DriveSpace (vormals DoubleSpace) ist ein Systemprogramm unter MS-DOS, Version 6.0/6.2 (unter dem Namen DoubleSpace) und ab Version 6.22, sowie unter höheren Versionen auch integraler Bestandteil von Windows 9x ab Version 95, mit dem ein FAT12- (für Disketten) oder FAT16-formatierter Datenträger (für Festplatten) komprimiert werden kann. Das Komprimieren/Dekomprimieren wird zur Laufzeit automatisch im Hintergrund (online) ausgeführt. Das Systemprogramm wurde in DOS-Version 6.0/6.2 als DoubleSpace integriert, aufgrund gerichtlicher Anordnung nach einem Patentstreit in Version 6.21 wieder entfernt und danach in Version 6.22 unter dem Namen DriveSpace neu implementiert. Für die Windowsversionen ab Windows 95 kam eine grafische Bedienoberfläche für die Verwaltung hinzu sowie ein 32-Bit-Treiber.

## Hintergrund

DriveSpace/DoubleSpace ist ein später Vertreter des kurzlebigen Marktes der Online-Komprimierungsprogramme. Anfang der 1990er-Jahre konnte die Entwicklung der Festplattengrößen nicht mit dem stetig wachsenden Bedarf nach Festplattenplatz mithalten, der durch neue Anwendungen wie Windows noch verstärkt wurde. Größere Festplatten waren nahezu unerschwinglich und so war freier Speicherplatz auf der Festplatte ein großes Problem. Die damals schon verbreiteten Archivierungsprogramme wie PKZIP hatten den großen Nachteil, dass die Dateien erst manuell entpackt werden mussten, bevor mit ihnen gearbeitet werden konnte, und umgekehrt die Dateien nach dem Speichern wieder gepackt werden mussten. Demgegenüber haben Online-Komprimierungsprogramme den Vorteil, dass der Komprimierungs- und Dekomprimierungsprozess transparent im Hintergrund stattfinden und der Benutzer wie gewohnt mit seinen Dateien arbeiten kann.
Bis zur Veröffentlichung des 80386 von Intel waren Mikroprozessoren noch zu langsam, um diese Form der Komprimierung im Hintergrund durchzuführen, es gab allerdings einen bescheidenen Markt für Hardware-Steckkarten, die eine solche Komprimierung der Daten auf der Festplatte durchführen konnten. Im Jahr 1990 veröffentlichte das Unternehmen Stac Electronics, das bereits zuvor mit Hardware-Steckkarten auf diesem Markt tätig war, sein Komprimierungsprogramm Stacker, das sofort zu einem großen Erfolg wurde. Schon bald erschienen zahlreiche Konkurrenzprodukte, die an den Erfolg von Stacker anzuknüpfen versuchten, zu den bekanntesten ihrer Zeit zählten SuperStor des Unternehmens AddStor und DoubleDisk des Unternehmens Vertisoft. Zwar mussten alle diese Anwendungen separat erworben werden, der Preis für diese Anwendungen lag allerdings weit unter dem Preis für eine Festplatte mit vergleichbarer Speicherkapazität.
Allerdings enthielt schon DR DOS 6.0 aus dem Jahr 1991 eine lizenzierte Version von SuperStor im Lieferumfang. Microsoft wollte nun nachziehen und ebenfalls eine Online-Komprimierung mit seinem Betriebssystem MS-DOS bündeln. Mit der Veröffentlichung von DoubleSpace als Bestandteil von MS-DOS im Jahr 1993 gelang dann der Durchbruch auf dem Massenmarkt.

### Patentstreitigkeit mit Stac Electronics

Die Veröffentlichung von DoubleSpace sollte allerdings in einem rechtlichen Desaster für Microsoft enden.
Im Jahr 1991 trat Microsoft in Verhandlungen mit Stac Electronics ein, um das Produkt Stacker zu lizenzieren und mit MS-DOS mitzuliefern. Die Verhandlungen scheiterten jedoch, weil Microsoft sich weigerte, einen finanziellen Ausgleich an Stac Electronics für die wegfallenden Einnahmen aus dem Verkauf von Stacker zu leisten. Stattdessen lizenzierte Microsoft das Produkt DoubleDisk, änderte dabei jedoch den Kompressionsalgorithmus so ab, dass er dem von Stacker entsprach.
Als Stac Electronics davon erfuhr, erhob das Unternehmen Klage gegen Microsoft, weil das Programm DoubleSpace zwei Patente von Stac Electronics verletze. Microsoft antwortete mit einer Widerklage, da das Programm Stacker in seiner neuesten Version von einer undokumentierten Schnittstelle in MS-DOS 6.0 Gebrauch mache und somit eine Verletzung von Geschäftsgeheimnissen (trade secret) vorliege. Am 23. Februar 1994 gaben die Richter Stac Electronics Recht und sprachen dem Unternehmen eine Entschädigung in Höhe von 120 Millionen US-Dollar (5,50 US-Dollar pro verkaufter Kopie von MS-DOS 6.0) zu. Das Gericht gab Microsoft ebenfalls Recht und sprach dem Unternehmen seinerseits eine Entschädigung in Höhe von 13,6 Millionen US-Dollar zu. Noch bevor Microsoft gegen dieses Urteil in Berufung gehen konnte, erwirkte Stac Electronics eine einstweilige Verfügung, die den Verkauf von MS-DOS 6.2, das ebenfalls DoubleSpace enthielt, mit sofortiger Wirkung untersagte. Microsoft musste daraufhin MS-DOS 6.21 veröffentlichten, eine Version von MS-DOS 6.2 ohne DoubleSpace. Mit MS-DOS 6.22 lieferte Microsoft das neue Programm DriveSpace nach, das durch eine Neuimplementierung des Kompressionsalgorithmus die fraglichen Patente nicht mehr verletzt, aber ansonsten vom Funktionsumfang her identisch zu DoubleSpace ist.
Beide Unternehmen einigten sich schließlich außergerichtlich: Microsoft zahlte nachträglich Lizenzgebühren in Höhe von 43 Millionen US-Dollar für die vergangenen 43 Monate und kaufte Aktien im Wert von 39,9 Millionen US-Dollar. Im Gegenzug ließen beide Seiten ihre Forderungen fallen und verpflichteten sich, sämtliche Patente der Gegenseite für die nächsten fünf Jahre kostenfrei zu lizenzieren.

## Funktionsweise

Der Programmcode von DriveSpace besteht aus zwei Teilen: dem eigentlichen Komprimierungsalgorithmus und dem Code zum Auslesen des besonderen Dateiformats der komprimierten Laufwerke. DriveSpace nutzt hierbei eine Variante des Lempel-Ziv-Algorithmus. Dabei wird in mehreren Stufen der benötigte Speicherplatz verringert, so dass die Kapazität des Datenträger effektiv steigt. Im günstigsten Fall soll die Platzeinsparung nach Angabe von Microsoft etwa 50 Prozent betragen, praktisch sind es aber meist 30 bis 40 Prozent auf einem Windows-Systemlaufwerk. Die unterschiedliche Komprimierungsrate hängt, wie auch bei ZIP-Dateien, von der Menge des ungenutzten Speichers oder ähnlicher Bytesequenzen innerhalb einer Datei ab. Bei Worddateien im alten Format (*.DOC) ist die Ersparnis besonders hoch, bei vielen Bilddateiformaten (z. B. *.JPG) fällt sie kaum ins Gewicht.
MS-DOS ab Version 6.0 sucht beim Systemstart, nachdem die Systemdateien IO.SYS und MSDOS.SYS geladen sind, aber noch bevor die Datei CONFIG.SYS ausgelesen wird, nach der Datei DRVSPACE.BIN bzw. DBLSPACE.BIN im Stammverzeichnis, die den Programmcode von DriveSpace enthält. Ist sie vorhanden, wird sie in den obersten Teil des konventionellen Speichers geladen und ausgeführt. DriveSpace lädt daraufhin die Konfigurationsdatei DRVSPACE.INI bzw. DBLSPACE.INI und mountet anschließend das in den Images DRVSPACE.000 bzw. DBLSPACE.000 abgelegte komprimierte Laufwerk. Danach wird Kontrolle über das System wieder an MS-DOS übergeben, welches sodann den Systemstart vom nunmehr gemounteten Laufwerk fortsetzt.
Der erst nach diesem Zeitpunkt über die CONFIG.SYS des gemounteten Laufwerks aufgerufene Treiber DRVSPACE.SYS bzw. DBLSPACE.SYS verschiebt den Programmcode in einen entsprechend großen Upper Memory Block, sofern vorhanden, sonst an den Anfang des konventionellen Speichers (das ist beim Systemstart noch nicht möglich, da HIMEM.SYS zu diesem Zeitpunkt noch nicht geladen ist). Ab MS-DOS 6.2 kann der Komprimierungsalgorithmus getrennt davon in die High Memory Area geladen werden, um den Bedarf an entsprechend großen UMBs zu senken.
Die Daten des komprimierten Datenträgers werden in einer einzigen Datei DRVSPACE.000 bzw. DBLSPACE.000 gespeichert. Diese wird auch Compressed Volume File (CVF) genannt. Das Dateiformat dieser Datei ähnelt in vielerlei Hinsicht einem Abbild einer Datenträgerpartition, so enthält die Datei einen BIOS Parameter Block sowie freien Platz für einen Bootsektor. Das eigentliche Datenträgerformat (auch MDFAT genannt) ist vom FAT16-Format abgeleitet, nutzt aber 8 KB große Cluster, woraus sich eine Beschränkung des komprimierten Laufwerks auf eine Größe von 512 MB ergibt. Ab DriveSpace 3 werden auch 32 KB große Cluster unterstützt, sodass das komprimierte Laufwerk bis zu 2 GB groß sein kann. Jeder Cluster wird einzeln komprimiert; kann ein Cluster überhaupt nicht komprimiert werden, wird er in unkomprimiertem Format gespeichert.
Aufgrund der Funktionsweise gibt es verschiedene Programme, die mit komprimierten Laufwerken inkompatibel sind. Hierzu zählen Programme mit einem besonderen Kopierschutz, der nicht auf dem komprimierten Laufwerk abgebildet werden kann (z. B. Lotus 1-2-3), Programme, die eine Auslagerungsdatei auf der Festplatte einrichten (z. B. Windows 3.1) und schließlich Programme, die nicht die standardisierten DOS-Aufrufe zum Zugriff auf die Festplatte nutzen, sondern direkt mittels INT 13 auf die Festplatte zugreifen (z. B. einige Spiele).
Wenn ein komprimierter Datenträger eingerichtet wird, bekommt das Laufwerk, auf dem sich die Datei mit den komprimierten Daten befindet, einen neuen Laufwerksbuchstaben. Den ursprünglichen Laufwerksbuchstaben erhält der komprimierte „virtuelle“ Datenträger, dessen Inhalt in der Datei des unkomprimierten „Hostlaufwerks“ gespeichert ist. Diese Verschiebung von Laufwerksbuchstaben ist nötig, da in der Systemregistrierung und in den Initialisierungsdateien die Dateipfade erhalten bleiben. Dort verbleiben auch mindestens die wichtigsten für den Start des Computers erforderlichen DOS-Dateien, die benötigt werden, bevor der Gerätetreiber für komprimierte Laufwerke geladen wird, sofern es sich bei dem komprimierten Datenträger um das Systemlaufwerk handelt. In allen anderen Fällen lässt sich der Datenträger nahezu vollständig komprimieren. Ein Entkomprimieren des Laufwerks ist aber nur möglich, wenn auf dem ursprünglichen (Host-)Datenträger temporärer Speicherplatz verbleibt.
Standardmäßig reserviert DriveSpace fünf Laufwerksbuchstaben nach C: für sich selbst. H: bildet hierbei das Hostlaufwerk des Systemlaufwerks C:, die weiteren Buchstaben von D: bis G: sind für komprimierte Wechseldatenträger (z. B. Disketten) reserviert. Werden bei der Installation von DriveSpace weitere Laufwerke erkannt (z. B. zusätzliche Partitionen), verschieben sich die Laufwerksbuchstaben dementsprechend nach hinten; bei einer vorhandenen Partition D: wäre etwa I: das Hostlaufwerk für C:. Da der Laufwerksbuchstabe des Hostlaufwerks bei der Installation in der DRVSPACE.INI bzw. DBLSPACE.INI gespeichert wird, ändern nachträglich installierte Laufwerke, die vor DRVSPACE.SYS geladen werden, den Laufwerksbuchstaben des Hostlaufwerks nicht, während DriveSpace weiterhin die für sich reservierten Laufwerksbuchstaben entsprechend nach hinten schiebt.

### Konfiguration

Die Konfiguration ist nur mit festen Datenträgergrößen möglich. Verbleibt viel Platz auf dem unkomprimierten Laufwerk, bleibt wenig Platz auf dem komprimierten Datenträger. Im umgekehrten Fall steigt der Platzbedarf für den komprimierten Datenträger auf dem Hostlaufwerk. Eine Änderung dieser Grenzen erfordert eine Neueinrichtung der Datenträgerorganisation und benötigt dafür auch Rechenzeit, selbst wenn dafür nur ungenutzter freier Speicherplatz zwischen dem virtuellen und dem Hostdatenträger verschoben wird. Eine dynamische Anpassung im laufenden Betrieb, so wie bei der Onlinekomprimierung moderner Dateisysteme, ist nicht möglich.
Standardmäßig belegt DriveSpace das komplette Hostlaufwerk bis auf 2 MB, die für den Komprimierungsprozess selbst benötigt werden, und weist den gesamten restlichen freien Speicher dem komprimierten Laufwerk zu, sofern die zu komprimierende Partition nicht größer als 512 MB (in DriveSpace 3 2 GB) ist.
Ein vorhandener komprimierter Datenträger (Datei z. B. auf einem Wechseldatenträger) lässt sich zur Laufzeit in das vorhandene Betriebssystem einbinden („Laden“ und „Entladen“ genannt).
Unter MS-DOS existiert das Dienstprogramm DRVSPACE.EXE bzw. DBLSPACE.EXE mit einer einfachen textbasierten Oberfläche; es ist ferner möglich, durch Parameter direkt Befehle an DriveSpace zu übergeben. Eine Konfiguration unter Windows 3.1 war nicht möglich; Windows musste zuerst beendet werden, um sodann von MS-DOS aus den Befehl aufzurufen. Unter Windows 9x ist die Konfiguration mit einem Windows-Dienstprogramm möglich, das beide Laufwerke in Abhängigkeit voneinander grafisch darstellt und den vermuteten Komprimierungsgrad anzeigt.

### Programmversionen
#### MS-DOS 6.0

DoubleSpace erschien erstmals mit MS-DOS 6.0. Kurz nach der Veröffentlichung berichteten sehr viele Benutzer über Datenverlust bei der Arbeit mit komprimierten Laufwerken. Obwohl DoubleSpace dadurch einen sehr schlechten Ruf erlitt, waren die vermeintlichen Mängel häufig gar nicht auf DoubleSpace zurückzuführen.
Zwar ist die Ausfallrate eines komprimierten Laufwerks statistisch gesehen doppelt so hoch wie die eines unkomprimierten Laufwerks, weil zentrale Datenstrukturen wie BPB und FAT zweimal gespeichert werden müssen (einmal für das Hostlaufwerk und einmal für das komprimierte Laufwerk). Viele Nutzer installierten DoubleSpace jedoch auf Laufwerken, die bereits zuvor defekte Sektoren aufwiesen. Zwar werden defekte Sektoren im FAT16-Dateisystem markiert, sodass das Betriebssystem diese nicht belegt; jedoch schreibt FORMAT.COM beim Formatieren eines Laufwerks eine neue FAT ohne diese Informationen, sodass die defekten Sektoren unter Umständen von DoubleSpace für das komprimierte Laufwerk erneut belegt werden. Dieser Fehler wurde von Microsoft in MS-DOS 6.2 behoben, sodass eine Formatierung eines Laufwerks die Informationen über defekte Sektoren beibehält.
Eine zweite Schwachstelle betraf nicht DoubleSpace, sondern das vorgelagerte Programm Smartdrive. Die meisten Benutzer waren es gewohnt, den Computer nach der Beendigung einer Anwendung einfach auszuschalten, da ein kontrolliertes Herunterfahren unter DOS nicht vorgesehen war. Da Smartdrive jedoch in dieser Version mit einem Zwischenspeicher (Schreibcache) ausgestattet war, gingen Daten, die aus dem Zwischenspeicher noch nicht auf die Festplatte geschrieben wurden, verloren. Dieser Mangel wurde in einer späteren Version von Smartdrive dahingehend behoben, dass der Schreibcache geleert wird, bevor der DOS-Prompt auf dem Bildschirm erscheint. Auch Drittanbieter veröffentlichten Programme zur Lösung des Cache-Problems, die Firma AddStor, Inc. bot dafür ein Add-on an unter dem Namen Double Tools for DoubleSpace.
Ein vermeintlich reproduzierbares Beispiel von Datenkorruption betraf den Fall, dass das komprimierte Laufwerk derart fragmentiert ist, dass DoubleSpace keine 16 zusammenhängenden Sektoren auf der Festplatte finden kann, um weitere Daten zu speichern. Dieser Fall würde dann zu Datenkorruption führen. Microsoft antwortete darauf, dass es sich um einen Extremfall handelt, der in der Praxis so nicht vorkomme; dennoch versprach das Unternehmen eine Behebung des Problems für die nächste Version.
DoubleSpace bot noch über ein separat erhältliches Stacker Conversion Kit die Möglichkeit, bestehende komprimierte Laufwerke des Konkurrenzprodukts Stacker zu konvertieren; dies wurde mit DriveSpace entfernt.

#### MS-DOS 6.2

Diese Version von DoubleSpace enthielt folgende Verbesserungen:
* Der von DoubleSpace genutzte Speicher wird mithilfe der Funktion DoubleGuard überwacht. Wird ein Überschreiben des von DoubleSpace genutzten Speichers festgestellt, hält DoubleGuard das System an, um Datenkorruption zu verhindern.
* Ein komprimiertes Laufwerk kann nunmehr komplett entfernt, also wieder dekomprimiert und in seinen Ursprungszustand versetzt werden.
* Es wird nicht mehr, sofern vorhanden, ein numerischer Koprozessor genutzt, um Konflikte mit anderen TSRs oder Gerätetreibern zu vermeiden.
* Kompatibilität mit dem 32-Bit-Dateitreiber VFAT.386 von Windows 3.1.
* Komprimierte Wechseldatenträger werden automatisch geladen und dekomprimiert; sie müssen nicht mehr manuell über die Befehlszeile geladen werden.
* DoubleSpace überprüft nicht mehr beim Systemstart das Vorhandensein einer Hardware-Steckkarte, da der entsprechende Aufruf von verschiedenen Chipsätzen nicht korrekt behandelt wurde und zu einem Systemabsturz führte. Dementsprechend erschienen, entgegen den ursprünglichen Plänen von Microsoft, keine DoubleSpace-kompatiblen Hardware-Steckkarten auf dem Markt.
Das ebenfalls mit MS-DOS 6.2 neu eingeführte ScanDisk kann auch komprimierte Laufwerke auf Fehler überprüfen.
Aufgrund eines verlorenen Gerichtsstreits über verletzte Patente von Stac Electronics musste Microsoft MS-DOS 6.2 vom Markt nehmen und stattdessen MS-DOS 6.21 ohne DoubleSpace ausliefern. Mit MS-DOS 6.22 erschien DoubleSpace wieder unter dem neuen Namen DriveSpace mit im Wesentlichen identischer Implementierung. Bestehende DoubleSpace-Laufwerke konnten mithilfe eines von Microsoft erhältlichen Konvertierungskits in DriveSpace-Laufwerke konvertiert werden.

#### Windows 95A

Mit Windows 95 wurde der virtuelle Gerätetreiber DRVSPACX.VXD eingeführt, der im Schutzmodus läuft und den MS-DOS-Treiber beim Systemstart automatisch entlädt. Damit wurde eine der größten Kritikpunkte, nämlich der hohe Verbrauch an konventionellem Speicher, zumindest für Windows 95 und dessen MS-DOS-Kommandozeile gelöst. Beide Treiber enthalten speziellen Code für IA-32-Prozessoren (damals 80386 und 80486), um die Leistung auf diesen Computern zu verbessern.
Es steht kein Konsolenwerkzeug mehr zur Verfügung, DriveSpace wird unter einer grafischen Oberfläche unter Windows gestartet.

#### Windows 95B bis Windows 98, Plus! für Windows 95

DriveSpace 3 ist erstmals mit Microsoft Plus! für Windows 95 als kostenpflichtiges Zusatzprodukt verfügbar; in Windows 95B ist das verbesserte Programm auch ohne Zusatzsoftware ins Betriebssystem integriert. Zur Steigerung der Effektivität der Komprimierung werden zwei weitere Algorithmen angeboten: HiPack, welches eine Ersparnis von 10 bis 15 Prozent gegenüber der Standkomprimierung verspricht, und UltraPack, welches bestimmte Dateien (nicht das Systemlaufwerk) noch weiter komprimieren kann, aber aufgrund des langsamen Algorithmus nicht online funktioniert und in dieser Hinsicht eher Archivformaten wie ZIP ähnelt. Daneben gibt es die neue Option „keine Komprimierung“, die dadurch, dass Dateien auf einem komprimierten Laufwerk nicht an Clustergrößen gebunden sind, eine Leistungssteigerung und vor allem bei sehr vielen kleinen Dateien oder bei einer großen Partition eine nicht unerhebliche Platzersparnis bringt.
DriveSpace unterstützt auch unter diesen Betriebssystemen nur FAT12-/Fat16-formatierte Partitionen, eine Aktualisierung zur Unterstützung des neu eingeführten FAT32-Dateisystems erfolgte nie. Dies und das Aufkommen großer Festplatten zu günstigen Preisen führte zum stetigen Verschwinden dieser Form der Online-Komprimierung.

#### Windows Me

Unter Windows Me können Festplatten nicht mehr komprimiert werden. DriveSpace hatte fast völlig an Bedeutung eingebüßt. Letztmals lassen sich allerdings noch komprimierte Wechselmedien öffnen und bearbeiten; unkomprimierte Wechselmedien können nicht neu komprimiert werden.

## Nachteile

Gegen den Einsatz von DriveSpace sprechen der Bedarf an Rechenleistung, die systembedingte Ungenauigkeit der Angabe des verbleibenden Speicherplatzes und Kompatibilitätsprobleme beim Transfer der komprimierten Datenträger zwischen unterschiedlichen Betriebssystemen. Außerdem gehen bei einem Schreibfehler gleich alle Daten verloren, wenn die Datei nicht mehr reparabel sein sollte. Dies kann unter Umständen schon bei einem Absturz des Betriebssystems geschehen. Die Bedeutung von DriveSpace schwand mit dem Aufkommen großer Festplattenkapazitäten zu günstigen Preisen sehr schnell.

## Alternative Programme

Separat erhältliche Programme, die den gleichen Zweck erfüllten, waren Stacker von Stac Electronics und Double Density von Data Becker. Wegen Patentstreitigkeiten mit Stac Electronics musste Microsoft DoubleSpace in DriveSpace umbenennen und neu implementieren. Aufgrund der Integration von DriveSpace in das Betriebssystem haben diese schon zuvor erhältlichen separaten Lösungen aber schnell wieder an Bedeutung verloren.
Mit der schwindenden Bedeutung der Onlinekomprimierung während der Verkaufsperiode von Windows 98 gewannen einfachere Komprimierungsmethoden für die Archivierung von Dateien an Bedeutung. Zip-Programme sind nicht mehr an einen bestimmten Datenträger gebunden, die damit erstellten ZIP-Archive sind auf jedem Computer und auch auf Wechseldatenträgern nutzbar. Auf modernen Dateisystemen, wie sie von NT-basierenden Windowssystemen verwendet werden, gewinnt die Onlinekomprimierung wieder an Bedeutung, da die Komprimierung hier auf Dateiebene stattfindet und das Komprimierungsattribut somit Teil beispielsweise der NTFS-Spezifikation ist. Ein Fehler einer Datei kann somit nicht mehr die ganze Laufwerksstruktur zerstören und die Kompatibilität zwischen verschiedenen Datenträgern und Betriebssystemen ist jederzeit gewährleistet.