Модуль обработки прерываний (MSDOS.SYS) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Модуль обработки прерываний (MSDOS.SYS)



В отличие от описанного выше модуля расширения IO.SYS, имеющего дело, как и BIOS, с прерываниями нижнего уровня модуль обработки прерываний MSDOS.SYS образует верхний уровень системы, с которыми взаимодействует большинство прикладных программ (почему этот модуль DOS и называют основным или ядром системы).

Компонентами данного модуля являются подпрограммы, обеспечивающие работу файловой системы, устройств ввода/вывода (клавиатуры, монитора, принтера, коммуникаций), обслуживание некоторых специальных ситуаций, связанных с завершением программ, их искусственным прерыванием и обработкой ошибок. Некоторые из этих подпрограмм довольно велики по объему.

Деление сервисных функций DOS на два уровня обусловлено соображениями модульности и будущего развития системы. Функции, реализуемые модулем MSDOS.SYS, в первую очередь используются командами DOS (обрабатываемыми командным процессором: DIR, COPY и др.), но с тем же успехом они могут вызываться прикладными программами.

При обращении к функциям DOS из прикладных программ производится стандартный вызов прерывания 33; при этом в один из регистров микропроцессора должен быть занесен шестнадцатеричный номер вызываемой функции. В другие регистры вызывающая программа должна поместить аргументы выполняемой операции, если они нужны, а по окончании обработки из регистров могут быть получены результаты выполненной операции. Точно так же производятся обращения к прерываниям BIOS.

Все функции сгруппированы в соответствии с характером предоставляемого ими сервиса. Так, функции с шестнадцатеричными кодами О

-С обеспечивают посимвольный обмен со стандартными внешними устройствами. Функции D-24 и 27-29 составляют обширную номенклатуру для работы с файловой системой, причем все они опираются на использование так называемого "блока управления файлами" (FСB-File Control Block) - специальной таблицы с параметрами, сопровождающими каждый файл. В этих операциях используется также выделенная область памяти для передачи данных между прикладной программой и функциями DOS (DTA - Data/Disk Transfer Area).

Начиная с версии 2.0, в ДОС введены новые функции для работы с файловой системой (частично повторяющие старые). Коды этих функций: ЗС

-46. Они более удобны для работы (в них не используется FCB и можно не задавать адрес DTA) и при этом не противоречат старым, так что возможно их совместное использование. Некоторые из новых функций (40, 44) обеспечивают работу с дисковыми файлами и с внешними устройствами, трактуемыми как файлы. Это дает дополнительное удобство с точки зрения разработки прикладных программ.

Обе указанные группы дополняются функциями работы с каталогами иерархической файловой системы. Эти функции имеют шестнадцатеричные номера 11-12, 39-3В, 45-47, 4E-4F, 56-57.

Для разработки больших прикладных систем, состоящих из наборов взаимодействующих программ, большую ценность представляют функции 31 и 48-4D, позволяющие выделять и освобождать области памяти, а также загружать в оперативную память и запускать подчиненные программы (подзадачи). При образовании и запуске подзадачи ей передаются все файлы, открытые в ведущей ("родительской") задаче, а также описание операционной среды, в которой с помощью команд конфигурации могут быть определены различные параметры.

При запуске любой программы ДОС предоставляет в ее распоряжение всю имеющуюся свободную память. Следовательно, при запуске подзадач ведущая программа должна сама регулировать объем занятой памяти, выделяя ее в нужные моменты запускаемым -подзадачам. Для этого используются вышеупомянутые функции 48-4А.

Следует также обратить внимание на три особых прерывания под десятичными номерами 34-36. В отличие от всех других прерываний, обслуживаемых DOS, эти три прерывания могут обслуживаться самой прикладной программой. В векторы этих прерываний прикладная нрограмма может занести адреса своих резидентных подпрограмм, которые должны адекватным образом (т.е. в соответствии с замыслом разработчика) обрабатывать три особые ситуации.
1. Завершение задачи.
2. Прерывание задачи в результате нажатия пользователем клавиш Ctrl + Break.
3. Возникновение "фатальной" (неисправимой) ошибки.

Разработчику прикладной системы предоставляется возможность самому решать, что нужно делать, в каждом из этих случаев, если он не хочет воспользоваться стандартным сервисом DOS.

Довольно часто при разработке прикладных систем возникает вопрос, каким уровнем сервиса воспользоваться для решения той или иной частной задачи (например, чтения каталогов, прямого доступа к файлам или обмена символами с терминалом). Возможностей для этого, по меньшей мере, три:

1. При разработке прикладной системы на языке высокого уровня, например, Паскаль или Си, можно воспользоваться стандартными или библиотечными процедурами/функциями для достижения нужного эффекта. Это самый надежный и простой путь, к тому же гарантирующий переносимость программ на другую аппаратную конфигурацию. Встроенные и библиотечные подпрограммы языка высокого уровня не обеспечивают, однако, различных нюансов доступа к аппаратным средствам и файловой системе. Поэтому при всем удобстве их использования часто возникает необходимость в дополнительных возможностях.

2. Использование подпрограмм DOS, доступных через прерывания 32-63, дает в руки разработчика широкий диапазон средств для работы с аппаратурой ПЭВМ и файловой системой. (Кстати говоря, встроенные и библиотечные функции языков высокого уровня в конечном счете тоже транслируются в прерывания ДОС, хотя этого не видно, в исходном тексте программы, с которым имеет дело разработчик). Большинство современных трансляторов с языков высокого уровня для ПЭВМ обеспечивает возможность прямого обращения к прерываниям ДОС с помощью специальных процедур. Параметры таких процедур обычно указывают номер прерывания и значения основных регистров микропроцессора. При необходимости можно делать то же самое и несколько иначе - путем составления небольших программ на языке ассемблера и последующей совместной загрузки этих программ с программами на языке высокого уровня.

Так или иначе, у разработчика прикладной системы есть возможность непосредственно обращаться к прерываниям и функциям DOS. По сравнению с обычным использованием встроенных или библиотечных процедур это требует некоторого умения и повышенной аккуратности, но зато дает программисту дополнительные возможности. Особую ценность в этом отношении представляют упоминавшийся выше функции для посимвольного обмена с клавиатурой и дисплеем, для распределения памяти, организации подзадач и др.

3. Точно так же, как осуществляются обращения к прерываниям DOS верхнего уровня, можно обращаться и к прерываниям нижнего уровня, обслуживаемым BIOS. С точки зрения программиста, способы обращения к тем и другим прерываниям совершенно идентичны. Однако прерывания BIOS с кодами 0-31 дают большую близость к аппаратуре, избавляют от сервиса, который иногда может оказаться избыточным (например, повторного чтения с диска при неудачном первом чтении и др.). При выполнении операций через BIOS в целом достигается большая эффективность и быстродействие, однако прикладная программа начинает сильно зависеть от конкретной модели ПЭВМ, что может сделать ее несовместимой с другими типами ПЭВМ, даже использующими ту же операционную систему.

Таким образом, выбор наиболее подходящего уровня и способа общения с аппаратными средствами определяется целями, критериями и сложностью разрабатываемой системы. Первый из вышерассмотренных способов связывает прикладную систему с конкретным языком программирования, второй - с операционной системой, третий - с конкретной архитектурой ПЭВМ.



Поделиться:


Последнее изменение этой страницы: 2021-03-09; просмотров: 50; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.240.21 (0.005 с.)