Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)
Demon's Souls |#9| Heart of surprises

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Различные авторы Весь текст 2311.07 Kb

Программирование и кодирование

Предыдущая страница Следующая страница
1 ... 44 45 46 47 48 49 50  51 52 53 54 55 56 57 ... 198
         листинге каталога.  Однако, эти файлы еще располагаются и на дис-
         ке.
                                                         Таблица 3-6
                      Компоненты операционной системы MS-DOS
         ________________________________________________________________
                              |                 |
               Название       |     Атрибуты    |        Функция
         _____________________|_________________|________________________
         COMMAND.COM          |  совместимый    | Командный процессор
         _____________________|_________________|________________________
         IBMDOS.COM или другой|  совместимый    | Обслуживание системы
         _____________________|_________________|________________________
         IBMBIO.COM или другой|  независимый от | Интерфейс ROM-BIOS или
                              |  системы        | BIOS
         _____________________|_________________|________________________
         ROM-BIOS             |  независимый от | BIOS, базируемая на
                              |  системы        | ROM (несколько)
         _____________________|_________________|________________________


                     ROM-BIOS в сравнении с загружаемой BIOS

             Имеются две основные области различий,  которые могут возни-
         кать внутри операционных систем MS-DOS различных исполнений. Эти
         различия очень существенно влияют на то,  что можно выполнять, и
         что нельзя  выполнять  для компонентов,  функционирующих в рези-
         дентной части оперативной памяти.  Одна из таких областей разли-
         чий формируется в зависимости от того,  где первоначально распо-
         лагается BIOS (Basic Input/Output System - базовая система ввода
         /вывода) для  аппаратных средств системы в ROM (read-only memory

                                      - 3-61 -
         - постоянное запоминающее устройство - ПЗУ) или в файле, который
         может быть загружен с диска. Воздействие этих альтернативных ва-
         риантов исполнения состоит в том, что BIOS, расположенная в ПЗУ,
         обеспечивает заданную среду для этой отдельной машины, в то вре-
         мя как загружаемая BIOS часто недоступна  для  программиста.  (В
         отличие от  систем CP/M,  поставщики операционной системы MS-DOS
         не обеспечивают пользователей исходными  листингами  загружаемой
         BIOS).
             Важность этой опции заключается в том, что MS-DOS не является
         реентерабельной (повторно-входимой)!  Т.е.,  если написана  рези-
         дентная подпрограмма, которая либо управляется прерываниями, либо
         помещает "заплаты" в векторы прерываний MS-DOS,  то  подпрограмма
         не  может  вызывать MS-DOS!  Аппаратно MS-DOS поддерживает только
         один набор буферов внутренних данных,  и любая попытка повторного
         входа приводит к полному отказу системы.  Т.к. MS-DOS не является
         реентерабельной,  она не может быть использована  для  выполнения
         ввода/вывода или поддержки функций для резидентных программ,  уп-
         равляемых прерываниями.  Это ограничение может быть снято  тогда,
         когда  фирма "Майкрософт" выпустит конкурентную версию MS-DOS,  в
         которой,  надеемся,  будет обеспечен способ обработки таких собы-
         тий.  До этих пор  программисты, желающие писать резидентные под-
         программы, должны,  вероятно, рассчитывать на ROM-BIOS или писать
         свои собственные подпрограммы драйверов. Все эти опции приводят в
         результате к непереносимому программному коду,  но иногда  это  и
         есть цена платы за предоставляемые возможности.
             Если BIOS,  на самом деле,  загружается с диска во время  на-
         чальной загрузки системы,  то почти наверняка для обеспечения ин-
         терфейса с аппаратными средствами пользователи будут  писать свои
         собственные подпрограммы. В отличие от связи между обычными прог-
         раммами и MS-DOS,  которые используют векторы прерываний,  MS-DOS
         общается с BIOS посредством инструкций CALL и JMP. MS-DOS не име-
         ет стандартной таблицы переходов для BIOS  (типа  системы  CP/M),
         которая могла бы использоваться прикладным программистом, так как
         можно легко заметить,  что иметь BIOS, базируемую на ROM, гораздо
         ценнее,  чем  писать резидентные подпрограммы для доступа к аппа-
         ратным средствам.

                   Прерывания в сравнении с системами с опросом

             Вторая область различий формируется в зависимости  от  того,
         являются  ли аппаратные средства управляемыми с помощью прерыва-
         ний или управляются с помощью  опроса.  "Управляемые  с  помощью
         прерываний" означает, что для уведомления BIOS о событиях, кото-
         рые могут произойти,  система использует  прерывания  аппаратных
         средств. "Управляются с помощью опроса" означает, что эта систе-
         ма должна неоднократно  спрашивать,  или  опрашивать  аппаратные
         средства для проверки экземпляров событий.  Системы, управляемые
         прерываниями, обеспечивают большую гибкость и  большие  удобства
         для установки некоторых типов резидентных программ.
             Одним из соблазнов разработчиков систем,  управляемых преры-
         ваниями, является желание использовать  только  одни  прерывания
         аппаратных средств  для  управления резидентными подпрограммами.
         Иногда  это  приводит к облегчению  способа  вывода  информации,
         а иногда приводит к невероятному "кошмару". До тех пор, пока ис-
         пользуется локальный стек, и не "захламлен" стек системы, MS-DOS
         сама обычно нечувствительна к присутствию прерываний.  Однако, в
         отношении BIOS такое упрощение недопустимо.  BIOS невозможно на-

                                      - 3-62 -
         писать без учета прерываний или,  по крайней мере,  тех прерыва-
         ний,  на  которые  рассчитывали  авторы  BIOS.  Если  происходит
         прерывание в чувствительной по времени части BIOS,  как,  напри-
         мер,  при чтении или записи на дисковый накопитель,  то подпрог-
         рамма обслуживания может нарушить функционирование BIOS, что мо-
         жет привести к сбою или зависанию всей системы.

                      Внесение "заплат" в векторы прерываний

             Резидентные подпрограммы активизируются в одном из двух слу-
         чаев:  они инициирутся  с помощью прерываний аппаратных средств
         (управление событиями), или они должна поместить "заплату" в су-
         ществующую систему (управление перехватом).  Возможна также ком-
         бинация этих способов,  где точка "заплаты"  является  одним  из
         прерываний аппаратных средств. Если используемая система не под-
         держивает прерывания аппаратных средств, то следует использовать
         способ "заплат".
             Для доступа (с некоторыми сложностями)  к  резидентным  под-
         программам могут   быть   использованы   прерывания   аппаратных
         средств,  не  используемые операционной системой MS-DOS.  До тех
         пор,  пока программа не осуществляет вызов MS-DOS,  никаких сис-
         темных конфликтов не произойдет. Если аппаратные средства систе-
         мы доступны с помощью резидентной подпрограммы,  то  она  должна
         проверить,  что  в  это  время  нет  больше доступных аппаратных
         средств, и быть осторожной при восстановлении аппаратного средс-
         тва  в  его  исходное  состояние.  Примером минимального влияния
         подпрограммы управления прерываниями является программа сохране-
         ния  всех регистров текущего выполнения программы в зарезервиро-
         ванном разделе памяти,  когда происходит внешнее прерывание. Та-
         кая подпрограмма полезна при отладке программ реального времени.
         Однако,  если используемое прерывание также используется  систе-
         мой, то подпрограмма должна принимать во внимание управление пе-
         рехватом,  потому что  резидентная  подпрограмма  установлена  с
         "заплатой".
             Способ "заплат" является способом вставки резидентных  подп-
         рограмм в  обычное исполнение системы в данной точке так,  чтобы
         доступ в эту точку осуществлялся через резидентную подпрограмму.
         Примером вставки "заплат", вызывающей аппаратное прерывание, яв-
         ляется установка резидентной подпрограммы  управления  клавиату-
         рой. Для  этого вектор прерывания клавиатуры изменяется на точку
         для резидентной подпрограммы.  Значение предыдущего вектора кла-
         виатуры запоминается в адресе назначения инструкции перехода far
         (далекий), которая используется при выходе из подпрограммы рези-
         дентной памяти.  Когда происходит прерывание клавиатуры, начина-
         ется выполнение резидентной подпрограммы. После завершения обра-
         ботки прерывания,  резидентная  подпрограмма передает управление
         драйверу клавиатуры. Если резидентная подпрограмма действительно
         использует ввод клавиатуры в некоторых случаях, которые не может
         продолжить драйвер клавиатуры, то резидентная подпрограмма долж-
         на сама обслужить и очистить прерывание, и затем вернуться в вы-
         зывающую программу по инструкции IRET. Во всех случаях резидент-
         ная подпрограмма должна сохранять контекст прерванной программы.
             Другими возможными точками вставки "заплат",  которые не вы-
         полняют  использование  прерываний аппаратных средств,  является
         вставка "заплат" в  один  из  векторов  прерывания  программного
         обеспечения или в адрес перехода.  Вставка "заплат" в MS-DOS че-
         рез векторы прерываний программного обеспечения обычно не  дела-
         ется потому,  что в операционной системе MS-DOS отсутствует воз-

                                      - 3-63 -
         можность распознавания таблицы переходов.  Кроме того, в связи с
         тем, что  не существует стандартный интерфейс между MS-DOS и ин-
         терфейсом ее BIOS,  вставка "заплат" между MS-DOS и BIOS  обычно
         затруднительна. Использование  прерываний программного обеспече-
         ния остается проблематичным.
             Одним  из  общих  мест вставки "заплат" в векторы прерываний
         MS-DOS является прерывание  int 28h. Это, по-видимому, вспомога-
         тельное прерывание, используемое внутри  MS-DOS.  Это также одна
         из точек вставки  "заплат",  в которую гарантируется частый дос-
         туп. Резидентная подпрограмма, вставленная в качестве  "заплаты"
         в этой точке,  не  может  вызывать драйверы функций MS-DOS, т.к.
         это приведет к сбою системы. Резидентная подпрограмма также дол-
         жна  использовать  свой  собственный контекст для предотвращения
         изменения существующего стека и регистров.  Листинг 3-12 показы-
         вает  программные  коды,  необходимые для установки  резидентной
         подпрограммы в прерывании  int 28h и поддержки  этой резидентной
         подпрограммы.

           Листинг 3-12. Программа INIT28 - Вставка "заплат" в векторы
                                прерываний системы
         ----------------------------------------------------------------

         ; ==== INIT28 - Этот файл вырабатывает программу формата .COM ==
         ; ==== Установка резидентной подпрограммы путем вставки ========
         ; ==== "заплаты" в прерывание int 28h ==========================
         PAGE    60,132
         ; ==== Соответствует установке прерывания ======================
         VECT_NUM EQU    28h          ; номер вектора для установки
         OFF     EQU     0h           ; подпрограмма неактивна
         ON      EQU     0FFFFh       ; подпрограмма активна
Предыдущая страница Следующая страница
1 ... 44 45 46 47 48 49 50  51 52 53 54 55 56 57 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама