Службы защищенного режима DOS ( DPMS ) — это набор расширенных служб управления памятью DOS , позволяющий драйверам DOS с поддержкой DPMS загружать и выполняться в расширенной памяти и защищенном режиме . [1] [2] [3]
Не являясь расширителем DOS сам по себе, DPMS представляет собой минимальный набор расширенных служб управления памятью DOS, позволяющий слегка модифицированным резидентным системным расширениям DOS ( RSX ), таким как драйверы устройств или резидентные программы terminate-and-stay-resident (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 и т. д. API DPMS является реентерабельным [1] и совместим с многозадачными системами, такими как DR-DOS multitasker или DESQview . [7] Благодаря встроенному драйверу DPMS VxD он также совместим с Windows 3.x и Windows 9x . [7]
Сервер DPMS должен быть загружен после менеджеров памяти (и до драйверов, использующих его), либо как драйвер устройства "DPMSXXX0" [7] для каждого оператора DEVICE в CONFIG.SYS (предпочтительный метод), либо позже как TSR. [7] Для целей отладки (например, совместно с 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 beta, [9] [10] DPMS 1.0 (первоначальная поставка Novell DOS 7) [1] и DPMS 1.1 (с обновления в марте 1994 года). [11] Спецификация 1.0 также продолжала поддерживать спецификацию beta, тогда как реализация 1.1 (и выше) — нет. [11]
DPMS дебютировал в бета-версиях DR DOS "Panther" в октябре 1992 года, [8] [nb 1] которые, помимо прочего, поставлялись с версиями кэша диска Super PC-Kwik с поддержкой DPMS, [8] сжатием диска SuperStor от Addstor , [9] [8] и DEBUG в качестве "скрытого" отладчика защищенного режима системы. [8] Хотя в то время DPMS уже назывался "DOS Protected Mode Services", драйвер DPMS.EXE/DPMS.SYS 0.10 все еще отображал сообщения о запуске "DOS Protected Mode Server". Службы карт PCMCIA CS в 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] расширение переадресатора CD-ROM , сервер одноранговой сети 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, которые поставлялись с более старой версией сервера DPMS от Novell и версией Stacker 4.02 с поддержкой DPMS. [12] [13]
Stac Electronics также выпустила автономную версию Stacker 4 с поддержкой DPMS. [14]
В 1994 году Super PC-Kwik 6.xx для DOS [15] и Power Pak 4.0 для Windows от PC-Kwik Corporation также включали дисковый кэш с поддержкой DPMS SUPERPCK. [16]
Некоторые сторонние комплекты драйверов DOS, такие как Eicon Diva или High Soft Tech GmbH (HST) Saphir [17] драйверы CAPI ISDN или стеки драйверов PCMCIA/PCCard, такие как CardWare 2.5 (или выше) от Award , как известно, также поддерживают DPMS. [8] После приобретения Award компанией Phoenix их драйверы PCMCIA 6.0 (и выше) были проданы компании UniCore. [ 8] CardWare 6.0 и 7.0 были доступны через APSoft, [18] [19] Socket Services (SSxxxxxx.EXE), Card Services (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 для сервера удаленного доступа 833 компании Perle Systems могло использовать преимущества DPMS для той же цели по крайней мере с 2002 года. [24] Кендалл Беннетт из SciTech Software также исследовал возможность добавления поддержки DPMS в свой набор драйверов DOS примерно в 2000 году, но это так и не было опубликовано.
Брет Джонсон разработал Print Screen to file с поддержкой DPMS (PRTSCR) и USB -драйверы для DOS. [25] [26]
В 1993 году менеджер памяти NETROOM 3 компании Helix Software представил функцию, очень похожую на DPMS компании Novell: CLOAKING использовался для перемещения драйверов Helix и сторонних производителей в расширенную память [2] и запуска их в кольце 0. [27] Предоставляя свои функции в качестве расширения для интерфейса EMS и XMS реального режима , его службы защищенного режима доступны под INT 2Ch. [10] [28] Был доступен комплект разработчика CLOAKING, который включал отладчик NuMega SoftICE . [29] [30] Скрытый драйвер или программное обеспечение TSR, перехватывающее прерывания, должны были оставлять небольшую 11-байтовую заглушку в обычной памяти, которая вызывала бы сервер CLOAKING для передачи выполнения в защищенную часть программного обеспечения драйвера. [27]
CLOAKING включает поддержку работы под Windows 3.x и Windows 95, предоставляя совместимые службы INT 2Ch для драйверов защищенного режима через Windows VxD, а также отладку через запуск Windows с помощью SoftICE. Эта возможность перехода между хост-средами защищенного режима также является предметом патента. [31]
CLOAKING интегрируется и работает с существующими программами управления виртуальной памятью, без переключения таблиц дескрипторов или сброса регистров управления. Это позволяет ускорить обработку прерываний, согласно документации Helix. [30] [31]
В отличие от DPMS от Novell, драйвер CLOAKING от Helix может быть загружен высоко, [7] [примечание 2] но он не работает на машинах 286, [7] [примечание 2] хотя он поддерживает 16-битные службы и структуру программ на 386. Кроме того, было обнаружено, что CLOAKING 2.01 несовместим с многозадачностью DR-DOS ( EMM386 /MULTI[=ON] + TASKMGR ). [7]
Если сервер DPMS отсутствует при загрузке CLOAKING.EXE, CLOAKING по умолчанию также предоставит скрытый сервер DPMS всего лишь на 100 байт больше его памяти DOS . [14] [7] Однако он также может сосуществовать с сервером DPMS, загруженным до CLOAKING. Загрузка его встроенного сервера DPMS может быть подавлена с помощью параметра CLOAKING /NODPMS . [7] Драйверы с поддержкой DPMS будут работать как с DPMS, так и с CLOAKING, но не наоборот. [7]
В NETROOM v3.04 дополнительный дистрибутив диска от 10 февраля 1995 года включал защищенный паролем файл ресурсов NR.ZIP (679 271 КБ) как недокументированный файл; DPMSCLK.EXE (13 904 КБ), "Cloaked DPMS Server v3.03". Файл не показывает поддержку каких-либо опций или параметров при запросе с использованием стандартной опции справки DPMSCLK /? . Этот файл не распаковывается программой NETROOM 3 SETUP.EXE и не устанавливается. Нет никаких намеков на существование файла в руководстве по программному обеспечению NETROOM 3 [32] или в какой-либо документации программы на диске и в файлах, доступных для чтения человеком. [33] Эта финальная версия NETROOM в том виде, в котором она была выпущена, в основном игнорировала DPMS.
Helix лицензировала версию BIOS компании Award Software и разработала скрытые системные и видео BIOS , которые работали полностью в защищенном режиме, что уменьшило объем памяти в реальном режиме до 8 КБ (вместо 96 КБ [10] ) и использовала их в качестве BIOS времени выполнения совместно с менеджером памяти NETROOM . [7] [28]
В рамках своего продукта Multimedia Cloaking компания Helix предоставила замаскированные версии драйвера MOUSE 6.33 от Logitech , MSCDEX от Microsoft и кэш-память диска собственной разработки для замены драйверов SmartDrive от Microsoft .
Также существовал продукт под названием Multimedia Stacker, состоящий из Stacker 4.01 с поддержкой DPMS от Stac и вышеуказанного набора скрытых утилит DOS от Helix. [14] [34]
Драйвер мыши Logitech DOS, начиная с версии MouseWare 6.50, также получил возможность использовать СКЛОКИРОВКУ, тем самым уменьшая объем памяти драйвера мыши, видимый для приложений 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 / VLM . [7] Клиент NIOS ( NetWare I/O Subsystem [37] [39] [40] ) для DOS и Windows использовал методы, очень похожие на DPMS или Cloaking, для перемещения и запуска кода загруженных NLM ( NetWare Loadable Modules ) в защищенном режиме и расширенной памяти с целью сокращения обычного объема памяти сетевого стека примерно до 2–5 КБ. [7] [39]
NIOS не требовала и не использовала DPMS или маскировку напрямую, и не предоставляла универсального интерфейса, который мог бы использоваться не-NLM модулями, однако она, безусловно, была вдохновлена технологией DPMS и может сосуществовать с ними обеими.
В то время как Personal NetWare от Novell публиковалась без изменений как часть пакета 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 перемещаться в
расширенную память
. […]