|
|
|
|
Повторная активизация TSR
Когда TSR получает запрос повторной активации, она должна убедиться в безопасности дальнейшего выполнения. Эту задачу упрощают действия,
выполняемые программой инициализации. TSR должна проверить флажки критической ошибки и критической секции, и убедиться в том, что не выполняются
непрерываемые операции. Если дальнейшее продолжение выполнения безопасно, TSR должна сохранить текущие значения регистров, переключиться на свой
собственный стек, установить свои собственные подпрограммы критической ошибки и break, записать информацию, сохраненную в различных глобальных переменных
DOS и, наконец, установить свою собственную среду, включающую адреса текущих PSP и DTA. Заметим, что очень важен порядок выполнения этих операций!
Кроме этих, могут потребоваться и другие операции. Так, если необходимо использовать изображения, TSR должна сохранять в памяти содержимое экрана.
Программа PRINT.COM проверяет сводный регистр прерывания в контроллере 8259. Если активны какие-либо прерывания, отличные от прерываний ISR, которые
пробуждают ее, она игнорирует запрос повторной активации. Вероятно, PRINT.COM делает эту проверку, чтобы избежать потери символов последовательного
порта и других устройств отображения.
После завершения своей работы, TSR должна произвести откат выполненных шагов и быстро перейти в фоновый раздел, ожидая снова получения запроса
повторной активации. TSR должна восстановить значения регистров PSP, DTA, стека и других регистров прерванной программы. После того, как TSR завершит
эти шаги, она может безопасно восстановить драйверы обработки критической ошибки и break и осуществить возврат в прерванную программу.
|
|