Система ввода/вывода и системные файлы Первоначальная загрузка Дисковые структуры Общий объем дискового пространства Сохранение данных

Загрузка операционной системы

Прерывание 21h. Функции DOS, вызываемые через прерывание INT 21h, относятся к наиболее высокому уровню, отличаются наибольшей степенью обобщенности и требуют минимального количества уточняющих параметров. Например, если при разработке прикладной программы возникла необходимость создать на диске подкаталог, то можно через прерывание INT 21h вызвать функцию 39h. В результате будут автоматически выполнены все операции по созданию подкаталога, и, в конечном счете, внесены изменения в секторы, содержащие список элементов соответствующего каталога высшего уровня, и в секторы FAT. При вызове этой функций вам придется только задать имя создаваемого подкаталога. В процессе выполнения функций, вызываемых через прерывание INT 21h, используется множество подпрограмм более низких уровней, реализующих все элементарные процедуры по созданию — в данном случае — подкаталога на диске. Большинство программ-приложений обращается к диску, используя именно этот уровень интерфейса.

Прерывания 25h и 26h. При формировании прерывания INT 25h или INT 26h обращение к диску происходит на более низком уровне, чем при использовании функций, вызываемых через INT 21h. Прерывание INT 25h позволяет считать с диска содержимое определенных секторов, a INT 26h — записать данные в определенные секторы. Если бы вы захотели переработать программу из предыдущего примера так, чтобы для создания подкаталога использовались бы эти прерывания, то вам в этом случае пришлось бы изрядно потрудиться, а не только вписать имя подкаталога (как это было при вызове функции через INT 21h). Например, вам пришлось бы разработать процедуры, которые точно определяли те секторы на диске (со списком элементов соответствующего каталога высшего уровня и относящиеся к FAT), в которые нужно внести изменения;

формировали прерывание INT 25h для считывания этих секторов;

вносили изменения в содержимое соответствующих секторов;

формировали прерывание INT 26h для записи новых данных в указанные секторы.

Количество необходимых шагов в программе может быть даже большим, учитывая сложность определения того, какие же именно секторы должны быть модифицированы. Чтобы правильно задать параметры для прерываний INT 25 и INT 26h, все секторы в адресуемой DOS области диска должны быть пронумерованы в последовательном порядке, начиная с нуля. Поэтому в рассматриваемой нами в качестве примера программе "координатой", определяющей положение любых данных на диске, должен быть именно номер логического сектора DOS. Программу, работающую с использованием прерываний INT 25 и INT 26h, скорее всего, придется модифицировать каждый раз для работы с дисками с разными количествами секторов и различными размерами и расположением каталогов и FAT. Задача эта непростая, поэтому большинство программистов избегают такого метода доступа к диску, а используют вызываемые через высокоуровневое прерывание INT 21h функции, которые выполняют всю работу автоматически.

Обычно доступ к накопителям через прерывания INT 25h и INT 26h используется только в программах, предназначенных для редактирования дисков на уровне секторов. С помощью таких программ можно редактировать только те области диска, которые определены как логические тома DOS (т.е. им присвоено буквенное обозначение). Описанный метод доступа к диску используется, например, в программе DEBUG.

Прерывание 13h. На следующем, более низком уровне взаимодействия с накопителями, располагаются функции (подпрограммы) системной BIOS, вызываемые через прерывание INT 13h. Обычно они хранятся в микросхемах ПЗУ на системной плате или на платах адаптеров, установленных в слотах расширения. Однако обработка прерывания INT 13h может осуществляться и программой-драйвером, загружаемой при первоначальном запуске системы. Поскольку для успешной загрузки DOS с диска ей необходим доступ к INT 13h (а драйвер не может быть установлен до окончания запуска), то загрузочным может быть только тот накопитель, для управления которым используются подпрограммы, вызываемые через прерывание INT 13h из системной BIOS. Эти подпрограммы обращаются непосредственно к портам В/В контроллера диска, поэтому вырабатываемые ими управляющие коды ориентированы на определенные типы таких устройств.

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

Персональный компьютер