ВУЗ:
Составители:
118
свойством повторной входимости). Это связано с тем, что MS-DOS
разрабатывалась, как однозадачная операционная система, и в ней
используются внутренние рабочие области, которые могут быть
испорчены при попытке параллельного выполнения нескольких процессов.
Практическим следствием этого свойства является тот факт, что
резидентная программа не может использовать большую часть функций
MS-DOS и BIOS. Эти функции может
использовать инициализирующая
часть резидентной программы, так как в момент загрузки резидентная
программа еще не является частью операционной системы.
После первой загрузки резидентной программы в память должны
пресекаться все последующие подобные попытки, так как повторная
загрузка может привести к более или менее крупным неприятностям.
Следить за этим должна сама резидентная программа.
4.2 Структура резидентной программы
Резидентная программа состоит, как правило, из двух частей –
резидентной секции (которая обычно располагается вначале) и
инициализирующей (которая обычно расположена в конце).
При первом запуске резидентная программа загружается в память
целиком, и управление передается инициализирующей секции, которая
проверяет, не находится ли уже резидентная секция этой программы в
памяти.
Если такая программа уже присутствует, выводится
соответствующее сообщение и дальнейшее выполнение программы
прекращается без последствий. Если такой программы нет в памяти,
выполняются следующие действия:
• настраиваются все необходимые векторы прерываний (при этом могут
устанавливаться новые векторы и модифицироваться старые);
• если необходимо, заполняются все области указателей адресов передачи
управления и данных
;
• программа настраивается на конкретные условия работы (возможно
заданные в командной строке при запуске резидентной программы);
• завершается выполнение инициализирующей части при помощи
функции 31h прерывания DOS int 21h или при помощи прерывания
DOS int 27h. При этом резидентная секция программы, размер которой
инициализирующая секция передает DOS, остается в памяти.
Следует отметить, что важнейшей функцией инициализирующей
секции резидентной
программы является указание DOS размера
оставляемой резидентной секции программы. Если для завершения
инициализирующей секции используется прерывание DOS int 27h, в
регистре dx указывается размер резидентной секции в байтах. При этом
следует иметь в виду, что в этот размер входят также 100h байтов
префикса программного сегмента
118
свойством повторной входимости). Это связано с тем, что MS-DOS
разрабатывалась, как однозадачная операционная система, и в ней
используются внутренние рабочие области, которые могут быть
испорчены при попытке параллельного выполнения нескольких процессов.
Практическим следствием этого свойства является тот факт, что
резидентная программа не может использовать большую часть функций
MS-DOS и BIOS. Эти функции может использовать инициализирующая
часть резидентной программы, так как в момент загрузки резидентная
программа еще не является частью операционной системы.
После первой загрузки резидентной программы в память должны
пресекаться все последующие подобные попытки, так как повторная
загрузка может привести к более или менее крупным неприятностям.
Следить за этим должна сама резидентная программа.
4.2 Структура резидентной программы
Резидентная программа состоит, как правило, из двух частей –
резидентной секции (которая обычно располагается вначале) и
инициализирующей (которая обычно расположена в конце).
При первом запуске резидентная программа загружается в память
целиком, и управление передается инициализирующей секции, которая
проверяет, не находится ли уже резидентная секция этой программы в
памяти. Если такая программа уже присутствует, выводится
соответствующее сообщение и дальнейшее выполнение программы
прекращается без последствий. Если такой программы нет в памяти,
выполняются следующие действия:
• настраиваются все необходимые векторы прерываний (при этом могут
устанавливаться новые векторы и модифицироваться старые);
• если необходимо, заполняются все области указателей адресов передачи
управления и данных;
• программа настраивается на конкретные условия работы (возможно
заданные в командной строке при запуске резидентной программы);
• завершается выполнение инициализирующей части при помощи
функции 31h прерывания DOS int 21h или при помощи прерывания
DOS int 27h. При этом резидентная секция программы, размер которой
инициализирующая секция передает DOS, остается в памяти.
Следует отметить, что важнейшей функцией инициализирующей
секции резидентной программы является указание DOS размера
оставляемой резидентной секции программы. Если для завершения
инициализирующей секции используется прерывание DOS int 27h, в
регистре dx указывается размер резидентной секции в байтах. При этом
следует иметь в виду, что в этот размер входят также 100h байтов
префикса программного сегмента
Страницы
- « первая
- ‹ предыдущая
- …
- 116
- 117
- 118
- 119
- 120
- …
- следующая ›
- последняя »
