Page 105 - 4875
P. 105

резидентного  модулів).  В  основному  резидентні  програми  виконують
                           фонові операції, які не потребують значних обчислювальних ресурсів:
                                  -  друк файлів;
                                  -  програвання аудіо;
                                  -  обробка  нестандартних  периферійних  пристроїв  (обмін
                           даними);
                                  -  організація зв’язку між комп’ютерами.
                                  В  DOS  є  дві  можливості  для  реалізації  резидентних  програм
                           (залишення в пам’яті резидентної частини):
                                  1  переривання  int  27h  (Використовується  тільки  для
                                     командних файлів);
                                  2  функція 31h переривання int 21h (може використовуватись
                                     для *.com i *.exe модулів).
                                  Для  int  27h  адрес  початку  сегменту  резидентної  частини
                           програми  приймає  значення  регістру  CS,  а  розмір  блоку  в  байтах
                           задається в регістрі DX.
                                  Для int 21h довжина резидентного блоку задається в параграфах
                           (1 параграф – 16 байт) в регістрі DX, а за початок блоку приймається
                           ідентифікатор  активної  програми.  Тобто,  параграф  по  якому
                           розташований  префікс  сегменту  активної  програми.  В  регістрі  AL
                           вказується код, що повертається в операційну систему.
                                  Фактично TSR – програма складена з двох секцій:
                             -    ініціалізуючої частини;
                             -    резидентної частини.
                                  Ініціалізація виконуються лише один раз при першому запуску
                           такої програми. Вона  повинна виконувати наступні дії:
                              -   перехопити всі переривання необхідні для роботи резидентної
                                  частини програми;
                              -   завершити  роботу  програми,  записавши  основний  обробник  в
                                  пам’яті.
                                  Коректно  написана  ініціалізуюча  частина  також  виконує
                                  функції:
                              -   запобігає  повторному  встановленні  резидентної  частини  в
                                  пам’ять,  звільняє  зайняту  пам’ять  резидентної  частини  після
                                  вигрузки (завершення роботи);


















                                                           104
   100   101   102   103   104   105   106   107   108   109   110