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