|
Один из путей выхода из этой дилеммы "Catch 22"
("Ловушка 22") состоит в проверке входа IVT.
DOS загружает все программы на границу сегмента. Если вектор
прерывания "захватила" предыдущая копия программы, то значение
смещения (младшее слово) во входе IVT должно соответствовать сме-
щению ISR в текущей программе. |
winrar |
|
|
Так как надежда на то, что прог-
раммы обработки прерываний (ISR) для двух различных программ TSR
используют один и тот же вход IVT и имеют одинаковое смещение,
довольно слабая, то необходимо выполнить некоторую дополнительную
проверку. Пример этого приведен в листинге 4-19.
В этом примере ищется строка ASCII UniqueID; мы могли бы вы-
полнить в программе ISR сравнение строк. |
немецко русский словарь |
|
{img3} |
отказоустойчивые вычислительные системы |
|
Недостатком этого спосо-
ба является то, что он не разрешает проблему "конфликтующих" пре-
рываний. Если две программы TSR решили использовать один и тот же
вход IVT, то практически не существует способа определения то-
го, какую TSR загружать первой.
Начиная с версии 3.0 DOS, фирма "Майкрософт" документирует
многократные прерывания, что является ее первой попыткой решения
проблемы "конфликтующих" прерываний. |
Навигационные системы |
|
|
перевод с русского на английский, архиватор winzip, система распознавания текста, утилиты резервного копирования, утилиты резервного копирования, .
перевод с английского на русский
|
Хотя этот запрос всегда безопасен, правила хорошего тона при
программировании требуют, чтобы этот запрос выдавался бы среди ко-
дов, выполняющих в программе инициализацию. Пример определения но-
мера версии используемой операционной системы показан ниже в
листинге 4-18.
Листинг 4-18. Проверка версии DOS
----------------------------------------------------------------
VersionID EQU 0a03h ; DOS 3.10 (заметим, что млад-
; шая часть номера в MCB)
mov ah,30h ; ah <== функция для проверки
; версии DOS
int 21h ; выдача запроса
cmp ax,VersionID ; версия возвращается в ax
jnz WrongVersion ; версия ошибочна
----------------------------------------------------------------
Размещение резидентных копий TSR
Управление некоторыми действиями DOS и работой аппаратных
средств предписывает использование входа IVT. TSR также использу-
ет прерывания и входы IVT TSR для размещения резидентных копий
своих программ. При этом может возникнуть необходимость размеще-
ния в памяти нескольких копий резидентных программ TSR или необ-
ходимость размещения данных, записываемых с помощью резидентной
программы. Если при выполнении TSR выбирает некоторый вход IVT,
то последовательность выполняемых программ активации размещает
резидентную программу путем выполнения инструкции INT или провер-
ки программного кода, указываемого входом IVT.
Какой вход IVT следует выбрать? Это, прежде всего, определя-
- 4-31 -
ется тем, что выбор прерывания для размещения резидентной прог-
раммы зависит от автора TSR. Абсолютно простой механизм отсутс-
твует.
DOS и аппаратные средства персонального компьютера используют
только некоторые из имеющихся в распоряжении входов IVT. Теорети-
чески можно выбрать любой неиспользуемый вход. Если TSR действи-
тельно выполняет инструкцию INT, то вход IVT должен указывать на
допустимую программу обработки прерывания (ISR). Однако, гарантия
того, что вход IVT ее содержит, если TSR не инициализировала ее,
отсутствует.
|
|
|