зуватися програма.  Останніми рядками секції ініціалізації викликається функція DOS 31h, яка виконує завершення програми із залишенням в пам'яті її резидентної частини.  
 Якщо програму запустити з клавіатури повторно, в пам'ять буде завантажена і залишиться резидентної її друга копія.  Це погано не тільки тому, що даремно витрачається пам'ять, більш неприємним є вторинний перехоплення тих же векторів.  Якщо резидентна програма після її активізації не звертався до старому вмісту перехоплених нею векторів, то друга копія повністю позбавить першу працездатності, і тоді повторна завантаження призведе тільки до витрачанню пам'яті.  Якщо, проте, як це зазвичай і має місце, резидентна програма в процесі своєї роботи передасть управління старому обробникові перехопленого нею переривання, то нова копія резидентної програми, що зберегла в процесі ініціалізації адресу першої копії в якості вмісту перехоплюваних вектора, буде при кожній активізації викликати і першу копію. В результаті резидентна програма буде фактично виконуватися при кожному виклику двічі.  У багатьох випадках таке повторне виконання порушить правильну роботу програми.  Тому обов'язковим елементом будь резидентної програми є процедура захисту її від повторного завантаження, або, як кажуть, установки. 
				
				
				
				
			  Найбільш поширеним методом захисту резидентної програми від повторної установки є використання переривання 2Fh, спеціально призначеного для зв'язку з резидентними програмами.  При виклику цього переривання в регістрі АН задається номер функції (від 00h до FFh), а в регістрі AL - номер підфункції (у тому ж діапазоні).  00h - 7Fh зарезервовано для DOS/Windows 0B8h - 0BFh зарезервовано для мережевих функцій 0C0h - 0FFh відводиться для програм.  p> Для того, щоб резидентна програма могла відгукнутися на виклик переривання int 2Fh, в ній повинен матися обробник цього переривання.  Фактично всі резидентні програми, як системні, так і прикладні, мають такі обробники, через які здійснюється не тільки перевірка на повторну установку, але і взагалі зв'язок з резидентну програму: зміна режиму її роботи або одержання від неї в транзитну програму якихось параметрів.  Завдання дії, яке належить виконати оброблювачу переривання 2Fh конкретної резидентної програми, здійснюється за допомогою номера підфункції, помещаемого перед викликом переривання в регістр AL 
  Таким чином, обробник переривання 2Fh резидентної програми повинен, насамперед, перевірити номер функції в регістрі АН; при виявленні "своєї" функції обробник аналізує вміст регістра AL і виконує витребувані дії, після чого командою iret передасть управління викликала його програмі.  Якщо, проте, обробник виявив в регістрі АН "чужу" функцію, він повинен командою jmp CS: old_2fh передати управління по ланцюжку того оброблювачу, адреса якого був раніше у векторі 2Fh.  В результаті виклик int 2Fh з будь-якої програми буде проходити по ланцюжку через всі завантажені резидентні програми, поки не досягне "с...