Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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

Уявіть собі таку ситуацію.

Нехай звичайна програма викликала яку-небудь функцію переривання MS-DOS, на виконання якої потрібно багато часу (наприклад, запис на диск).

Оскільки користувач може активізувати резидентну програму в будь-який момент, те якщо не вчинити спеціальних запобіжних заходів, можливий повторний виклик тієї ж самої функції, обробка якої ще не завершена. У цьому випадку ми одержимо повторний виклик функції MS-DOS, що неприпустимо через те, що функції MS-DOS не реентерабельны.

Функції BIOS також далеко не всі реентерабельны. Резидентна програма може сміливо викликати хіба лише переривання INT 16h (яке призначене для роботи із клавіатурою). Якщо резидентній програмі потрібно вивести що-небудь на екран, то замість переривання INT 10h варто виконати безпосередній запис символів і їхніх атрибутів у відеопам'ять.

Без вживання спеціальних заходів обережності резидентна програма не може викликати численні функцій бібліотеки транслятора, тому що останні викликають переривання MS-DOS. Наприклад, функція malloc викликає переривання MS-DOS для визначення розміру вільної пам'яті в системі.

У програми є дві можливості залишитися резидентною в пам'яті - використати переривання INT 27h або функцію 31h переривання INT 21h.

Для використання переривання INT 27h сегментний регістр CS повинен указувати на PSP програми. При цьому в регістр DX варто записати зсув останнього байта програми плюс один байт.

Неважко помітити, що цей спосіб найбільше підходить для com-програм, тому що за допомогою переривання INT 27h неможливо залишити в пам'яті резидентній програму більшу за 64 Кбайт.

Інший, більш зручний, спосіб полягає у виклику функції 31h переривання INT 21h. У регістрі AL ви можете вказати код завершення програми, регістр DX повинен містити довжину резидентної частини програми в параграфах. Тут уже немає зазначеного вище обмеження на розмір програми.

Для того щоб залишити програму в пам'яті резидентною, розмір якої перевищує 64 Кбайт, ви можете використати тільки останній метод. Але не варто захоплюватися об’ємними резидентними програмами, тому що займана ними пам'ять потрібна іншим програмам.

Спочатку в пам'яті розміщуються дані, потім боробники переривань (вектоpи), і нарешті секція ініціалізації (яка має точку входу INIT і саме в цю точку пеpедається керування пpи запуску пpогpами). Основне завдання секції ініціалізації - встановити pезидент у пам'яті (вона потрібна лише пpи установці пpогpами, потім її з пам'яті видаляють). Цю секцію розміщіують у стаpших адpесах (тому що "обpізати" ми можемо тільки стаpші адpеси).

<== предыдущая лекция | следующая лекция ==>
Основні поняття. Резидентні програми. Структура та особливості ТSR –програм | Вирішення пpоблеми повтоpного запуску
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 322; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.