Службы защищенного режима DOS ( DPMS ) - это набор расширенных служб управления памятью DOS, которые позволяют драйверам DOS с поддержкой DPMS загружаться и выполняться в расширенной памяти и в защищенном режиме . [1] [2]
Не будучи сам по себе расширителем DOS , DPMS представляет собой минимальный набор расширенных служб управления памятью DOS, позволяющих слегка модифицированным резидентным системным расширениям DOS ( RSX ), таким как драйверы устройств или TSR (так называемые клиенты DPMS ) перемещаться в расширенную память и работать в 16-битном или 32-битном защищенном режиме, оставляя только крошечный тупик в обычной памяти в качестве интерфейса для связи с традиционной средой DOS. [2] [3] [4] Клиенты DPMS делают это через службы DPMS, предоставляемые ранее загруженным сервером DPMS .[1] Необходимый размер оставшейся заглушки зависит от типа драйвера, но часто может быть уменьшен до нескольких сотен байтов только для заголовка даже для сложных драйверов.
Выполняя драйвер в расширенной памяти и освобождая обычную память, DPMS не только позволяет загружать очень большие драйверы и использовать доступную память, но и оставляет больше памяти, доступной для обычных драйверов DOS для загрузки, или нерасширенных приложений DOS для загрузки. выполняются в ограниченном пространстве обычной области памяти. Это также поможет увеличить количество свободных системных ресурсов под Windows. Предоставляя программному обеспечению унифицированные интерфейсы для выделения и использования памяти в защищенном режиме [1] без необходимости туннелирования всех запросов через DOS в реальном режиме, DPMS в то же время может помочь повысить производительность системы.
DPMS был первоначально разработан Novell 's Digital Research GmbH, Германия, в 1992 году. [5] [nb 1] Он совместим с любой DOS и может сосуществовать с диспетчерами памяти и расширителями DOS, такими как DPMI , VCPI и т. Д. DPMS API является реентерабельным [1] и совместим с многозадачностью, такой как многозадачность DR-DOS или DESQview . [6] Благодаря наличию встроенного драйвера DPMS VxD , он также совместим с Windows 3.x и Windows 9x . [6]
Сервер DPMS должен быть загружен после диспетчеров памяти (и до использующих его драйверов) либо как драйвер устройства «DPMSXXX0» [6] для каждого оператора DEVICE в CONFIG.SYS (предпочтительный метод), либо позже как TSR. [6] Для целей отладки (например , в сочетании с WDEB386.EXE от Microsoft [1] ), SDK -versions из EMM386.EXE 3.00 альтернативно может предоставлять услуги DPMS [1] с помощью EMM386 [/] DPMS [= ON] через встроенный -в модуле DPMS.SYS, [7] затем выполняется в кольце 1 вместо кольца 0 , как в автономной версии DPMS.EXE. ВПараметр DPMS [/] NOCR3 позволяет выполнять отладку в старых версиях NuMega SoftICE . [7]
В зависимости от обстоятельств сервер сам по себе будет занимать от 700 до 1400 байт обычной памяти и не может быть загружен в UMB . [6] [nb 2] Серверу DPMS потребуется как минимум машина 286 для работы, но поскольку программное обеспечение с поддержкой DPMS может быть спроектировано таким образом, чтобы оно продолжало работать в обычной памяти, если службы DPMS недоступны, программное обеспечение не нужно отказываться от совместимости с системами, не предоставляющими службы DPMS, потому что DPMS не загружен или недоступен (например, на процессорах до 286). [1] [6] На процессорах 386 (и выше) сервер DPMS не только предоставляет набор 16-разрядных, но также набор 32-разрядных служб. [1]Даже на этих машинах DPMS можно заставить загружать только свои 16-битные службы с помощью параметра DPMS [/] 2 [86] .
DPMS будет выделять память либо через VCPI или XMS , [7] в зависимости от того , какой памяти доступно. VCPI обычно также обращается к XMS. В более новых версиях DPMS можно принудительно использовать один из этих интерфейсов с помощью параметра DPMS [/] MEM = XMS | VCPI . [7] В некоторых версиях можно указать максимальный объем расширенной памяти, выделяемой с помощью DPMS [/] MB = nnnn . [7]
Службы регистрации DPMS можно отключить или снова включить в любое время после загрузки с помощью команд DPMS [/] OFF или DPMS [/] ON , однако это повлияет только на загруженные новые драйверы, а не на уже запущенные и использующие DPMS. [1] [6]
Существует три основных версии спецификации DPMS: DPMS beta, [8] [9] DPMS 1.0 (исходная поставка Novell DOS 7) [1] и DPMS 1.1 (с обновления в марте 1994 года). [10] Спецификация 1.0 продолжала поддерживать бета-версию, тогда как реализация 1.1 (и выше) - нет. [10]
DPMS дебютировал в бета-версиях DR DOS "Panther" в октябре 1992 года [7] [nb 1], которые, помимо других, поставлялись с версиями дискового кэша Super PC-Kwik с поддержкой DPMS , [7] Addstor 's Сжатие диска SuperStor , [8] [7] и DEBUG как отладчик системы в защищенном режиме "невидимости". [7] В то время как DPMS уже назывался «Службы защищенного режима DOS», драйвер DPMS.EXE / DPMS.SYS 0.10 по-прежнему отображал сообщения запуска «Сервер защищенного режима DOS». В PCMCIA услуг карт CS в PalmDOS были DPMS поддержки , а также. [7]Более поздние розничные продукты, такие как Novell DOS 7 и Personal NetWare 1.0 в декабре 1993 года, также поставлялись со многими драйверами с поддержкой DPMS, такими как компонент отслеживания удаления файлов DELWATCH 2.00, адаптивный дисковый кеш NWCACHE 1.00, [8] [6] NWCDEX 1.00, [ 5] [6] расширение перенаправителя CD-ROM , одноранговый сетевой сервер SERVER 1.20 и STACKER 3.12, компонент сжатия диска. DPMS также предоставлялась Caldera OpenDOS 7.01, [1] DR-DOS 7.02 и 7.03, которые, по крайней мере, в некоторых выпусках, добавляли проблемы с DPMS-связью.DRFAT32 ( расширение перенаправителя FAT32 ), [7] LONGNAME ( поддержка длинных файлов VFAT ) [7] и VDISK (виртуальный RAM-диск ). [1] [9] DR-DOS 7.03 содержит последнюю версию DPMS 1.44.
DPMS также предоставили IBM «s PC DOS 7.0 [11] [12] и PC DOS 2000, который поставляется вместе с более старой версией сервера DPMS Novell и версии DPMS с поддержкой из Stacker 4.02 в комплекте. [11] [12]
Stac Electronics также выпустила автономную версию Stacker 4 с поддержкой DPMS.
Super PC-Kwik 6.xx корпорации PC-Kwik 6.xx для DOS [13] и их Power Pak 4.0 для Windows также включали в 1994 г. дисковый кэш SUPERPCK с поддержкой DPMS [14].
Известно, что некоторые комплекты драйверов DOS сторонних производителей, такие как Eicon Diva или High Soft Tech GmbH (HST) Saphir [15] CAPI ISDN, или стеки драйверов PCMCIA / PCCard, такие как Award 's CardWare 2.5 (или выше), поддерживают DPMS как хорошо. [7] После того, как Phoenix приобрела Award, их драйверы PCMCIA 6.0 (и выше) были проданы UniCore . [7] CardWare 6.0 и 7.0 были доступны через APSoft , [16] [17]Службы сокетов (SSxxxxxx.EXE), службы карт (PCCS.EXE), включение ПК (PCENABLE.EXE) и обработчики карт (PCDISK.EXE, PCSRAM.EXE, PCATA.EXE и PCFLASH.EXE) могут использовать DPMS. Благодаря интеграции стека LXE в свои защищенные ПК с DOS, DPMS также нашла свое место в пакете Datalight ROM-DOS . [18] [19] [20]
В 1999 году Funk Software представила версию своего программного обеспечения для удаленного управления Proxy Host с поддержкой DPMS, позволяющую PHOST занимать только 9 КБ обычной памяти. [21] Удаленный Dial-в клиентское программное обеспечение для удаленного Сервером 833 удаленного доступа по Perle Systems может воспользоваться DPMS для той же цели , по крайней мере с 2002 года [22] SciTech Software «s Кендалл Беннет исследовал возможность добавить поддержку DPMS в их набор драйверов DOS примерно в 1999 году, но он так и не был опубликован.
Брет Джонсон разработал драйверы Print Screen to file с поддержкой DPMS (PRTSCR) и USB для DOS. [23] [24]
В 1993 году , Helix Software Company «s менеджер памяти NETROOM 3 введена функция очень похожа на DPMS компании Novell: Маскирование использовали переместить Helix - х и сторонних драйверов в расширенную память [2] и запустить их в кольцо 0. [25] Обеспечение его функционирует как расширение интерфейса EMS и XMS реального режима , его услуги защищенного режима доступны в INT 2Ch . [9] [26] Был доступен комплект разработчика CLOAKING, в который входил отладчик NuMega SoftICE . [27] [28]Скрытый драйвер или прерывания перехвата программного обеспечения TSR должны были оставлять небольшую 11-байтовую заглушку в обычной памяти, которая вызывала бы сервер CLOAKING для передачи выполнения части программного обеспечения драйвера защищенного режима. [25]
CLOAKING включает поддержку беспроблемной работы под Windows 3.x и Windows 95, предоставляя совместимые службы INT 2Ch для драйверов защищенного режима через Windows VxD, а также беспрепятственную отладку при запуске Windows с помощью SoftICE. Эта возможность переключения между средами хоста в защищенном режиме также является предметом патента. [29]
CLOAKING интегрируется и работает с существующими программами управления виртуальной памятью без переключения таблиц дескрипторов или сброса регистров управления. Согласно документации Helix, это позволяет ускорить обработку прерываний. [28] [29]
В отличие от Novell DPMS, драйвер Helix CLOAKING может быть загружен на высоком уровне, [6] [nb 2], но он не работает на 286 машинах, [6] [nb 2], хотя он поддерживает 16-битные службы и структуру программы на 386. Также было обнаружено, что CLOAKING 2.01 несовместима с многозадачностью DR-DOS ( EMM386 / MULTI [= ON] + TASKMGR ). [6]
Если при загрузке CLOAKING.EXE сервер DPMS отсутствует, CLOAKING по умолчанию также предоставляет скрытый сервер DPMS при увеличении его объема памяти DOS всего на 100 байт. [6] Однако он также может сосуществовать с сервером DPMS, загруженным до ЗАКРЫТИЯ. Загрузка встроенного сервера DPMS может быть подавлена с помощью параметра CLOAKING / NODPMS . [6] Драйверы с поддержкой DPMS будут работать как с DPMS, так и с CLOAKING, но не наоборот. [6]
В NETROOM v3.04, дополнительный диск от «2-10-95», защищенный паролем файл ресурсов NR.ZIP (679 271 КБ) содержит недокументированный файл; DPMSCLK.EXE (13 904 КБ), «Скрытый сервер DPMS v3.03». Файл не поддерживает какие-либо опции или параметры при запросе с использованием стандартной опции справки DPMSCLK /? . Этот файл не распаковывается программой NETROOM 3 SETUP.EXE и не устанавливается. Нет намека на существование файла в руководстве по программному обеспечению NETROOM 3 [30], или в документации к программам на диске и в файлах, удобочитаемых человеком. [31] Эта последняя версия NETROOM в том виде, в котором она была выпущена, в основном игнорировала DPMS.
Helix лицензированы версия Award Software «s BIOS и разработаны облачены система и видео БИОС , которые выполняются полностью в защищенном режиме, уменьшая их объем памяти в реальном режиме до 8 Кбайтов (вместо 96 КБ [9] ) и использовать их в качестве run- time BIOS в сочетании с их диспетчером памяти NETROOM . [6] [26]
В рамках своего продукта Multimedia Cloaking Helix предоставила скрытые версии драйвера Logitech MOUSE 6.33, Microsoft MSCDEX и самодельный дисковый кеш для замены драйверов Microsoft SmartDrive .
Также был продукт под названием Multimedia Stacker, состоящий из Stacker Stacker 4.01 с поддержкой DPMS и вышеупомянутого набора скрытых утилит DOS от Helix.
Logitech драйвер DOS мыши , так как MouseWare 6.50 получил возможность воспользоваться Маскирование и, тем самым снижая водителя мыши объем памяти , видимых приложений DOS от 27 КБ до 1 КБ. [6]
Лицензия CLOAKING также была передана Symantec на их набор утилит, Corel на их продукты CD Creator и Corel SCSI , а также SMC Networks на их драйверы Ethernet.
Утилиту Novell DPMS нельзя использовать для временного отключения DPMS с помощью команды DPMS [/] OFF, если эти службы DPMS предоставляются CLOAKING вместо самой DPMS, поскольку реализация Helix не только по ошибке не позволит новым драйверам регистрироваться в DPMS, но и полностью переключится отключение служб DPMS даже для уже загруженных драйверов, что приводит к сбою системы. [6]
В 1993 году Novell объявила о планах преобразовать свои резидентные утилиты управления рабочими станциями, а также свои стеки сетевых драйверов DOS (оболочки, перенаправители и запрашивающие устройства) для использования DPMS [9], однако только компонент сервера Personal NetWare был изменен, чтобы фактически использовать преимущества из этого.
Объявленный в 1993 году, [32] [33] [34] [35] Novell представила новый 32-разрядный клиент NetWare для DOS / Windows ( клиент 32 ) на основе ODI32 / NIOS в 1996 году, заменив прежний 16-разрядный клиент на основе ODI. / VLM . [6] Клиент NIOS ( подсистема ввода-вывода NetWare [34] [36] [37] ) для DOS и Windows использовал методы, очень похожие на DPMS или маскировку, для перемещения и запуска кода загруженных NLM ( загружаемых модулей NetWare) в защищенном режиме и с расширенной памятью, чтобы уменьшить объем стандартной памяти сетевого стека примерно до 2–5 КБ. [6] [36]
NIOS не требовал и не использовал DPMS или маскировку напрямую, и он не предоставлял общий интерфейс, который мог бы использоваться модулями, отличными от NLM, однако он определенно был вдохновлен технологией DPMS и может сосуществовать с ними обоими.
В то время как Novell Personal NetWare публиковалась без изменений как часть пакета DR-DOS ее новыми владельцами Caldera , Lineo и DeviceLogics до 2018 года, от Personal NetWare отказались с 1995 года в самой Novell. Это привело к тому, что Novell никогда не публиковала драйвер PNW.NLM для поддержки протокола Personal NetWare в новом 32-битном стеке ODI32 / NIOS, так что пользователи Personal NetWare, которые уже могли воспользоваться возможностями DPMS серверного модуля PNW , были обязаны продолжать использовать потребляющий память 16-разрядный клиент ODI / VLM с драйвером протокола PNW.VLM . [6]
[…] [До] 1992
Digital Research GmbH
[…]
DR DOS 6.0
[…] Разработал и внедрил расширитель защищенного режима DPMS для драйверов устройств для DR DOS 7. […]