logo
АВМиС - бывшее АПЭВМ / apvem / всякаявсячина

6.Недостатки ms-dos и пути их преодоления

Как известно,MS-DOS — это однопрограммная ОС. В ней, конечно, можно орга­низовать запуск резидентных или TSR-задач1, но в целом она предназначена для выполнения только одного вычислительного процесса. Поэтому распределение памяти в ней построено по самой простой схеме, которую мы уже рассматривали в разделе «Простое непрерывное распределение и распределение с перекрытием (оверлейные структуры)». Здесь мы лишь уточним некоторые характерные детали. Остальные программные модули MS-DOS (в принципе, большинство из них яв­ляется утилитами) оформлены как обычные исполняемые файлы. В основном они являются транзитными модулями, то есть загружаются в память только на время своей работы, хотя среди них имеются и TSR-программы.

Для того чтобы предоставить больше памяти программам пользователя, в MS-DOS применено то же решение, что и во многих других простейших ОС — командный процессор COMMAND.COM сделан состоящим из двух частей. Первая часть явля­ется резидентной, она размещается в области ядра. Вторая часть — транзитная; она размещается в области старших адресов раздела памяти, выделяемой для программ пользователя. И если программа пользователя перекрывает собой об ласть, в которой была расположена транзитная часть командного процессора, то последний при необходимости восстанавливает в памяти свою транзитную часть, поскольку после выполнения программы она возвращает управление резидент­ной части COMMAND.COM.

Поскольку размер основной памяти (conventional memory) относительно неболь­шой, то очень часто системы программирования реализуют оверлейные структу­ры. Для этого в MS-DOS есть специальные вызовы.

Память с адресами, большими чем lOFFFFh, может быть использована в DOS-программах при выполнении их на микропроцессорах, имеющих такую возмож­ность. Так, например, микропроцессор i80286 имел 24-разрядную шину адреса, а i80386 — уже 32-разрядную шину адреса. Но для этого с помощью специаль­ных драйверов необходимо переключать процессор в другой режим работы, при котором он сможет использовать адреса выше lOFFFFh. В младших адресах основной памяти размещается то, что можно назвать ядром этой ОС — системные переменные, основные программные модули, блоки дан­ных для буферирования операций ввода/вывода. Для управления устройствами, драйверы которых не входят в базовую подсистему ввода/вывода, загружают­ся так называемые загружаемые (или инсталлируемые) драйверы. Перечень ин­сталлируемых драйверов определяется специальным конфигурационным файлом CONFIG.SYS. После загрузки расширения BIOS - файла IO.SYS - последний (за­грузив модуль MSDOS.SYS) считывает файл CONFIG.SYS и уже в соответствии с ним подгружает в память необходимые драйверы. Кстати, в конфигурацион­ном файле CONFIG.SYS могут иметься и операторы, указывающие на количест­во буферов, отводимых для ускорения операций ввода/вывода, и на количество файлов, которые могут обрабатываться (для работы с файлами необходимо заре­зервировать место в памяти для хранения управляющих структур, с помощью которых выполняются операции с записями файла). В случае использования мик­ропроцессоров 180x86 и наличия в памяти драйвера HIMEM.SYS модули IO.SYS и MSDOS.SYS могут быть размещены за пределами первого мегабайта в области, которая получила название НМЛ (high memory area).