Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структура и принципы работы MS-DOS.doc
Скачиваний:
65
Добавлен:
02.05.2014
Размер:
379.9 Кб
Скачать

Система управления памятью

Эта система MS-DOS используется для распределения памяти запускаемым программам.

MS-DOS управляет памятью с помощью блоков MCB (Memory Control Block). Память разбивается на фрагменты. Каждому фрагменту памяти предшествует MCB, в котором записаны характеристики блока памяти. Для каждой вновь запускаемой программы MS-DOS создает определенное количество фрагментов памяти. При освобождении памяти или при выполнении запросов на получение дополнительной памяти MS-DOS проверяет и соответствующим образом изменяет содержимое блоков MCB.

Все блоки MCB располагаются друг за другом. Адрес первого блока хранится в векторной таблице связи CVT, доступ к которой можно получить с помощью недокументированных средств.

Прикладная программа может заказать для себя дополнительные фрагменты памяти. Для этого она обращается к системе управления памятью, используя функции прерывания INT 21h.

Система управления программами

При запуске программы операционная система MS-DOS выполняет несколько действий. Сначала она обращается к системе управления памятью, чтобы подготовить блоки памяти для запускаемой программы. С помощью файловой системы файл, содержащий программу, загружается в память, после чего программа (это относится только к файлам типа .exe) настраивается на конкретный физический адрес. Только после этого программе передается управление.

Как известно, в MS-DOS существуют два формата выполняемых программ. Соответствующие файлы имеют расширение имени .com и .exe. Способы запуска этих программ сильно различаются. Система управления программами автоматически распознает их и загружает в память по-разному. Мы еще вернемся к описанию различий между этими типами программ.

Другая задача, решаемая системой управления программами - запуск программ из программ и загрузка оверлеев (дополнительных модулей программы, загружаемых в память с перекрытием). Если не все модули большого программного комплекса нужны одновременно, вы можете разбить комплекс на несколько модулей. Это могут быть либо несколько отдельных программ, либо несколько оверлейных модулей. Каждый из этих способов имеет свои преимущества и недостатки; оба они пригодны для экономии памяти.

И наконец, последняя функция системы управления программами - работа с резидентными программами. Если вам надо, чтобы после завершения своей работы программа осталась резидентной в памяти, вы, как и в случае завершения обычной программы, обращаетесь к системе управления программами через соответствующую функцию прерывания INT 21h.

Система связи с драйверами устройств

Эта система скрыта от прикладных программ - программы не могут обращаться непосредственно к драйверам периферийных устройств. Программа вызывает прерывание MS-DOS, а MS-DOS, в свою очередь, обращается при необходимости к драйверам.

Возможно, что запрет на непосредственный вызов драйверов введен для обеспечения совместимости с будущими версиями операционной системы, в которых механизм вызова драйверов может измениться. Однако используя сведения, приведенные в этой книге, вы сможете обойти этот запрет и обратиться непосредственно к драйверу. При этом вам придется использовать некоторые недокументированные прерывания MS-DOS, что само по себе нежелательно из-за возможной потери совместимости с другими версиями операционной системы.

Для управления состоянием устройства ввода/вывода или состоянием драйвера используется специальная функция 44h прерывания INT 21h. Эта функция предназначена для обмена управляющей информацией между прикладной программой и драйвером.