DoubleSpace
DoubleSpace — это программный продукт для сжатия данных на лету, разработанный компанией Microsoft и встроенный в операционные системы MS-DOS 6.0 и 6.2. Он позволял увеличить доступное дисковое пространство на жёстких дисках и дискетах путём прозрачного сжатия и распаковки файлов без участия пользователя. DoubleSpace относится к классу драйверов сжатия дисков (disk compression drivers) и является одной из наиболее известных реализаций этой технологии для платформы x86 в начале 1990-х годов.
История
Предпосылки появления
В конце 1980-х — начале 1990-х годов стоимость жёстких дисков оставалась высокой, а их ёмкость редко превышала 100–200 мегабайт. Пользователи персональных компьютеров испытывали острую нехватку места для хранения программ и данных. Одновременно с этим развивались технологии сжатия данных, такие как алгоритмы LZW и LZ77, которые позволяли значительно уменьшать объём файлов без потери информации.
Разработка и выход
Microsoft начала разработку DoubleSpace в 1992 году. Основой для продукта послужила технология, лицензированная у компании Stac Electronics, которая ранее выпустила драйвер сжатия Stacker. Однако Microsoft не приобрела полную лицензию, а использовала собственные алгоритмы, что впоследствии привело к судебному разбирательству. DoubleSpace был впервые включён в состав MS-DOS 6.0, выпущенного в марте 1993 года. Продукт сразу стал доступен миллионам пользователей, так как MS-DOS была доминирующей операционной системой для IBM PC-совместимых компьютеров.
Судебный иск Stac Electronics
В 1993 году компания Stac Electronics подала иск против Microsoft, утверждая, что DoubleSpace нарушает патенты Stac на алгоритмы сжатия. В феврале 1994 года суд признал Microsoft виновной в нарушении патентов и обязал выплатить компенсацию в размере 120 миллионов долларов США. В результате Microsoft была вынуждена удалить DoubleSpace из последующих версий MS-DOS. Взамен в MS-DOS 6.21 был включён упрощённый драйвер DriveSpace, который не infringed на патенты Stac. DoubleSpace перестал поставляться с новыми копиями MS-DOS, но оставался доступен для пользователей, уже установивших систему.
Преемник — DriveSpace
После удаления DoubleSpace Microsoft разработала DriveSpace, который был включён в MS-DOS 6.22 (1994 год) и более поздние версии Windows 9x. DriveSpace использовал другой алгоритм сжатия и не нарушал патенты Stac. Однако функционально он был аналогичен DoubleSpace и поддерживал обратную совместимость с томами, созданными DoubleSpace.
Принцип работы
Алгоритм сжатия
DoubleSpace использовал алгоритм сжатия, основанный на методе LZSS (вариант LZ77). Этот алгоритм искал повторяющиеся последовательности байтов в данных и заменял их ссылками на предыдущие вхождения. Дополнительно применялось кодирование Хаффмана для сжатия наиболее часто встречающихся символов. Степень сжатия зависела от типа данных: текстовые файлы и документы сжимались в 2–3 раза, исполняемые файлы — в 1,5–2 раза, а уже сжатые данные (например, архивы ZIP или изображения JPEG) практически не сжимались.
Драйвер реального времени
DoubleSpace работал как драйвер, загружаемый в память при старте системы. Он перехватывал обращения к диску на уровне файловой системы и выполнял сжатие при записи и распаковку при чтении. Пользователь видел только один логический том (обычно C:), который отображал фактический объём сжатых данных. Физический диск при этом содержал скрытый файл (например, DRVSPACE.000), в котором хранились все сжатые данные.
Структура тома
Том DoubleSpace состоял из двух частей:
- Сжатый том — логический раздел, который отображался как обычный диск. Его размер мог превышать физический объём диска за счёт сжатия.
- Несжатый том — небольшой раздел (обычно несколько мегабайт), который оставался несжатым и содержал системные файлы, необходимые для загрузки драйвера (IO.SYS, MSDOS.SYS, DRVSPACE.BIN).
Классификация и версии
Версии
- DoubleSpace 1.0 — первая версия, включённая в MS-DOS 6.0 (март 1993 года). Поддерживала сжатие дисков размером до 512 МБ.
- DoubleSpace 1.1 — обновление, выпущенное с MS-DOS 6.2 (сентябрь 1993 года). Улучшена производительность, добавлена поддержка сжатия дискет и возможность создания сжатых томов размером до 2 ГБ.
- DoubleSpace 2.0 — версия, включённая в MS-DOS 6.2 (некоторые сборки) и Windows 3.1. Добавлена поддержка сжатия на уровне кластеров и улучшена совместимость с программами.
Аналоги
- Stacker (Stac Electronics) — коммерческий драйвер сжатия, предшествовавший DoubleSpace. Более производительный, но требовал отдельной покупки.
- DriveSpace (Microsoft) — преемник DoubleSpace, выпущенный после судебного иска. Использовал другой алгоритм, но был обратно совместим с томами DoubleSpace.
- SuperStor (Addstor) — альтернативный драйвер сжатия для MS-DOS, менее популярный.
Применение
Операционные системы
DoubleSpace был встроен в MS-DOS 6.0 и 6.2, а также мог использоваться в Windows 3.1 и Windows 95 (в режиме MS-DOS). В Windows 95 он был заменён на DriveSpace, но поддержка томов DoubleSpace сохранялась. В Windows 98 и Windows Me DriveSpace был включён, но DoubleSpace уже не поддерживался.
Типы носителей
DoubleSpace поддерживал сжатие:
- Жёстких дисков — основное применение. Позволял увеличить ёмкость диска в среднем в 1,5–2 раза.
- Дискет — сжатие дискет 3,5" и 5,25". Позволяло хранить на стандартной дискете 1,44 МБ до 2,88 МБ данных (в зависимости от типа файлов).
- RAM-дисков — теоретически мог сжимать данные в оперативной памяти, но на практике использовался редко из-за низкой производительности.
Ограничения
- Производительность — сжатие и распаковка требовали процессорного времени, что замедляло работу с диском, особенно на медленных процессорах (286, 386).
- Надёжность — повреждение файла тома (DRVSPACE.000) приводило к потере всех данных на сжатом диске. Восстановление было сложным и требовало специальных утилит.
- Совместимость — некоторые программы, работающие с диском на низком уровне (например, дефрагментаторы, антивирусы, утилиты восстановления данных), могли конфликтовать с DoubleSpace.
Интересные факты
- DoubleSpace был одним из первых массовых продуктов, реализующих сжатие на лету для персональных компьютеров. Он популяризировал эту технологию среди домашних пользователей.
- Судебный процесс Microsoft против Stac Electronics стал одним из первых крупных патентных споров в индустрии программного обеспечения. Он привлёк внимание к вопросам интеллектуальной собственности в области алгоритмов.
- В некоторых версиях MS-DOS 6.2 DoubleSpace был переименован в DriveSpace, чтобы избежать путаницы после судебного иска. Однако технически это был тот же продукт с изменённым названием.
- DoubleSpace поддерживал сжатие на уровне кластеров, что позволяло эффективно использовать пространство на дисках с большими кластерами (например, 4 КБ или 8 КБ).
- В 1994 году Microsoft выпустила патч для DoubleSpace, исправляющий ошибку, которая могла привести к потере данных при определённых условиях.
Критика
DoubleSpace подвергался критике за несколько недостатков:
- Снижение производительности — на медленных процессорах сжатие и распаковка могли замедлять работу системы на 20–50%.
- Риск потери данных — из-за сложной структуры тома и отсутствия встроенных средств восстановления повреждение файла тома часто приводило к необратимой потере данных.
- Патентные споры — использование технологий Stac без лицензии вызвало судебный иск, что подорвало доверие к продукту.
- Несовместимость — некоторые программы, особенно те, которые работали с диском напрямую (например, Norton Utilities), не поддерживали сжатые тома.
Тем не менее, DoubleSpace сыграл важную роль в развитии технологий сжатия данных и стал предшественником современных систем сжатия на лету, таких как NTFS-сжатие в Windows и ZFS-сжатие в Unix-подобных системах.
Источники
- Microsoft MS-DOS 6.0 User's Guide, 1993.
- Stac Electronics v. Microsoft Corporation, 1994.
- «The History of Disk Compression», PC Magazine, 1994.
- «DoubleSpace: A Technical Overview», Microsoft Developer Network, 1993.
- «Data Compression in MS-DOS 6.0», Byte Magazine, 1993.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →