Системное программное обеспечение персональных ЭВМ


Завершение программы


15.6. Завершение программы

Не все TSR-программы предусматривают свою выгрузку, то есть удаление из памяти, в этом случае удалить программу можно только перезагрузив систему. Но если такая возможность предусмотрена, то самоуничтожение TSR-программы сводится к восстановлению перехваченных векторов прерываний и освобождению занимаемой памяти. В нашем примере это обеспечивается функцией self_kill. Для восстановления векторов выполняется обращение к функции restore_vectors, уже нами рассмотренной, а освобождение памяти сводится к просмотру цепочки MCB. В тех блоках памяти, в которых идентификатор "владельца" совпадает с PID TSR-программы, этот идентификатор заменяется на нулевой, т.е. свободный. Заметим, что блок памяти, содержащий команды перехода на обработчики прерываний, может не быть освобожден, если в функции restore_vectors идентификатор его "владельца" был изменен.



Содержание раздела