Page 110 - 4875
P. 110

Перший  метод  дозволяє  ефективно  виявляти  наявність
                           резидентної  (як  і  будь-якої  іншої)  програми  в  пам’яті,  але  є
                           трудомістким і не забезпечує діагностування працездатності програм.
                                  Другий  випадок  передбачає,  що  у  вибраному  місці  коду
                           програми записуються задана послідовність байт. В спеціальну змінну
                           заноситься  зміщення  до  заданої  сигнатури  (спеціальний  послідовний
                           байт)  відносно  початку  резидентної  частини.  Виявлення  програм
                           (перевірка) виконується наступним чином:
                              -   отримується  адреса  вектора  переривань,  який  використовує
                                  ISR.
                              -    добавляється  зміщення,  що  буде  вказувати  на  початок
                                  сигнатури вказаної послідовності байт.
                              -    перевіряються  відповідні  сигнатури,  встановленого  вектора
                                  переривань  і  сигнатури  в  запущеній  програмі.  Якщо  такі
                                  сигнатури співпадають, то резидентна програма є вже в пам’яті,
                                  і повторне встановлення не потрібне.
                                  Як і попередній, цей метод не дозволяє виявити працездатність
                           резидентної програми і не спрацює, коли для тієї самої послідовності
                           ISR  було  виконане  каскадне  включення  ще  одного  обробника  (тобто,
                           коли в ланцюжку обробників цей обробник не перший).
                                  Третій  метод  позбавлений  вказаних  недоліків.  Використання
                           “ефекту відлуння” ґрунтується на тому, що до обробника добавляється
                           спеціальна  функція  (так  званий  фільтр),  завдання  якої  полягає  в
                           порівнянні  значень  регістрів  процесора  із  заданими  значеннями.  У
                           випадку  співпадання  ці  значення  замінюються  на  інші,  наперед
                           встановленні (так званий ефект „відлуння-відповіді”), тобто, якщо після
                           запуску  програми  ініціалізуюча  частина  отримує  правильну  відповідь
                           відлуння (резидентний обробник коректно відпрацював), то резидентна
                           програма повторно не встановлюється. Якщо ж такої відповіді не має,
                           то ініціалізуюча частина загружає резидентну частину в пам’ять.

                                        Структурна схема резидентної програми

                                  Спрощену  структуру  резидентної  програми  на  мові  Assembler
                           подано нижче:

















                                                           109
   105   106   107   108   109   110   111   112   113   114   115