Память, которую могут непосредственно использовать DOS–программы, состоит из двух частей:
обычная память (conventional memory), занимающая первые 640
Кбайт основной памяти;
верхняя память (upper memory), занимающая адреса основной памяти
от 640 Кбайт до 1 Мбайта.
Обычная память может использоваться любой прикладной
программой и операционной системой. Как правило, младшие адреса
обычной памяти занимают ядро MS-DOS, драйверы, резидентные
программы, система прерывания. Оставшуюся часть обычной памяти
могут использовать программы пользователя.
Верхняя память отводится для служебных целей. В ней размещаются:
массивы для хранения BIOS – программ, обеспечивающих тестирование компьютера, начальную
загрузку операционной системы, выполнение основных низкоуровневых услуг ввода -вывода и т.п.;
видеопамять для хранения информации, выводимой на экран;
массивы для хранения различных расширений BIOS, которые поставляются вместе с некоторыми
контроллерами (видеоконтроллером, контроллером дисков и т.д.).
По мере развития программного обеспечения компьютеров, была разработана новая элементная база.
Количество адресуемой памяти увеличилось до 16, а затем и до 32 Mb. Память свыше первого
мегабайта называется расширенной. Однако, чтобы получить к ней доступ, процессор должен работать
в защищенном режиме.
Начальный участок расширенной памяти от 1024 до 1088 килобайт называется областью старшей
памяти (High Memory Area - HMA). Эти первые 64 килобайта расширенной памяти операционная
система MS-DOS начиная с версии 5.0 может использовать для размещения части своего ядра, области
данных и буферов. При этом процессор остается в реальном режиме.
Но MS DOS «не умеет» работать в защищенном режиме, поэтому остальная расширенная память ей
недоступна. Для исправления этого недостатка был разработаны стандарт по работе с расширенной
памятью и реализующие его драйверы (himem. sys), которые предоставили широкие возможности для
использования расширенной памяти DOS- программами.
Для обработки данных, расположенных в расширенной памяти, необходимо сначала переместить их
в обычную или верхнюю память MS DOS, там выполнить обработку и затем с помощью запроса к
специальному драйверу поместить их обратно.
Более эффективное решение состоит в другом. Если сама программа выполняется в защищенном
режиме процессора, то расширенная память доступна ей непосредственно. При этом код программы и
обрабатываемые данные могут располагаться в любом месте доступной расширенной памяти. Поэтому
многими фирмами были созданы специальные системные программы – расширители DOS (DOS–
extenders), позволяющие вызывать функции DOS из защищенного режима работы процессора. Во
многих программах, требующих эффективной работы с большими объемами данных (компьютеры,
базы данных и т.п.) применяются расширители DOS. Примером может служить операционная оболочка
Windows/386 2.0, включающая в себя внутренний расширитель DOS.