DOS-расширители: расширение возможностей DOS в защищенном режиме.
DOS extender
DOS-расширители: программа для запуска приложений в защищенном режиме под DOS. Преодоление ограничений памяти 640КБ с Intel 80286/80386. Оптимизация DOS API.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Тип компьютерной программы
Type of computer software program
Расширитель DOS — это компьютерная программа, работающая в среде DOS, которая позволяет запускать программное обеспечение в защищенном режиме, даже если основная операционная система способна работать только в реальном режиме. Расширители DOS были впервые разработаны в 1980-х годах после появления процессора Intel 80286 (и впоследствии усовершенствованы с использованием Intel 80386) для преодоления ограничений памяти DOS.
A DOS extender is a computer software program running under DOS that enables software to run in a protected mode environment even though the host operating system is only capable of operating in real mode. DOS extenders were initially developed in the 1980s following the introduction of the Intel 80286 processor (and later expanded upon with the Intel 80386), to cope with the memory limitations of DOS.
Операция расширителя DOS
Расширитель DOS — это программа, которая "расширяет" DOS, позволяя программам, работающим в защищенном режиме, прозрачно взаимодействовать с базовым API DOS. Это было необходимо, поскольку многие функции, предоставляемые DOS, требуют 16-битных сегментных и смещенных адресов, указывающих на области памяти в пределах первых 640 килобайт. Однако защищенный режим использует несовместимый метод адресации, где сегментные регистры (теперь называемые селекторами) используются для указания на запись в глобальной таблице дескрипторов, описывающую характеристики сегмента. Эти два метода адресации взаимоисключающие, и процессору приходится выполнять дорогостоящие переключения в реальный (или V86) режим для обработки запросов из незащищенного режима. Помимо настройки среды и загрузки исполняемой программы, расширитель DOS также предоставляет (среди прочего) слой преобразования, поддерживающий буферы, выделенные ниже границы в 1 МБ реального режима памяти. Эти буферы используются для передачи данных между базовой операционной системой в реальном режиме и программой в защищенном режиме. Поскольку переключение между реальным/V86 режимом и защищенным режимом — относительно ресурсоемкая операция, расширитель стремится минимизировать количество переключений, дублируя функциональность многих операций реального режима в своей собственной среде защищенного режима. Поскольку DOS широко использует прерывания для связи между операционной системой и программным обеспечением пользовательского уровня, расширители DOS перехватывают многие распространенные аппаратные (например, часы реального времени и контроллер клавиатуры) и программные (например, сам DOS и API мыши) прерывания. Некоторые расширители также обрабатывают другие общие функции прерываний, такие как подпрограммы видео BIOS. По сути, расширитель DOS подобен миниатюрной операционной системе, обрабатывающей значительную часть функциональности базовой операционной системы.
A DOS extender is a program that "extends" DOS so that programs running in protected mode can transparently interface with the underlying DOS API. This was necessary because many of the functions provided by DOS require 16 bit segment and offset addresses pointing to memory locations within the first 640 kilobytes of memory. Protected mode, however, uses an incompatible addressing method where the segment registers (now called selectors) are used to point to an entry in the Global Descriptor Table which describes the characteristics of the segment. The two methods of addressing are mutually exclusive, with the processor having to make costly switches to real (or V86) mode to service non protected mode requests. In addition to setting up the environment and loading the actual program to be executed, the DOS extender also provides (amongst other things) a translation layer that maintains buffers allocated below the 1 MB real mode memory barrier. These buffers are used to transfer data between the underlying real mode operating system and the protected mode program. Since switching between real/V86 mode and protected mode is a relatively time consuming operation, the extender attempts to minimize the number of switches by duplicating the functionality of many real mode operations within its own protected mode environment. As DOS uses interrupts extensively for communication between the operating system and user level software, DOS extenders intercept many of the common hardware (e. g. the real time clock and keyboard controller) and software (e. g. DOS itself and the mouse API) interrupts. Some extenders also handle other common interrupt functions, such as video BIOS routines. Essentially, a DOS extender is like a miniature operating system, handling much of the functionality of the underlying operating system itself.
История развития
Расширитель DOS, возможно, был изобретен компанией Phar Lap, но именно расширитель DOS/4GW 386 от Tenberry Software (ранее Rational Systems) сделал программы DOS в защищенном режиме доступными для широкой аудитории. Входя в состав компиляторов Watcom C, C++ и Fortran для процессоров класса 386, он вскоре стал повсеместно используемым компонентом ПК-приложений и игр, таких как успешная Doom от id Software. Изначально развитие расширителей DOS было обусловлено потребностями ресурсоемких бизнес-приложений, однако именно ПК-игры действительно вывели их на первый план. В результате разработки расширителей DOS были созданы два новых программных интерфейса для решения множества потенциальных конфликтов, возникающих из-за различных методов управления памятью, а также для обеспечения единого интерфейса для клиентских программ. Первым из этих интерфейсов был Виртуальный интерфейс управления программами (VCPI), но он быстро уступил место спецификации DOS Protected Mode Interface (DPMI), которая возникла в процессе разработки Windows 3.0. Эти интерфейсы предоставляли API, через который расширенная программа могла взаимодействовать с программным обеспечением в реальном режиме, выделять память и обрабатывать прерывания. Они также упрощали переход расширителя в защищенный режим и позволяли нескольким программам в защищенном режиме корректно работать одновременно.
The DOS extender was arguably invented by Phar Lap, but it was Tenberry Software's (formerly Rational Systems) 386 extender DOS/4GW that brought protected mode DOS programs to a mass market. Included with Watcom's C, C++, and Fortran compilers for 386 class processors, it soon became a ubiquitous mainstay of PC applications and games such as id Software's successful Doom. While initially it was the memory hungry business applications that drove the development of DOS extenders, it would be PC games that truly brought them into the spotlight. As a result of the development of DOS extenders, two new software interfaces were created to take care of the many potential conflicts that could arise from the varied methods of memory management that already existed, as well as provide a uniform interface for client programs. The first of these interfaces was the Virtual Control Program Interface (VCPI), but this was rapidly overshadowed by the DOS Protected Mode Interface (DPMI) specification, which grew from the Windows 3.0 development. They provided an API through which an extended program could interface with real mode software, allocate memory, and handle interrupt services. They also provided an easy method for the extender to set up the switch to protected mode, and allowed multiple protected mode programs to coexist peacefully.