Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум_ОС.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
382.98 Кб
Скачать

Физическая структура диска

Информация на диске располагается на концентрических окружностях - дорожках (треках). Нумерация треков начинается с 0, с внешнего трека.

Каждый трек разбит на секторы фиксированного размера. Сектор – это минимальный блок информации, который может быть записан на диск или считан с него. Нумерация секторов начинается с 1. Каждый сектор имеет служебную область и область данных размером обычно в 512 байт.

Область данных диска разбита на кластеры – группы смежных секторов, называемые также единицами распределения пространства. Кластер – это единица, добавляемая к файлам по мере необходимости. Каждый кластер имеет свой номер. Размер кластера (число секторов) выбирается кратным степени 2, в зависимости от объема диска и размера FAT. Файл на диске занимает целое число кластеров. Файлы, расположенные в цепочках из несмежных кластеров, называют фрагментированными. Время доступа к ним выше за счет увеличения времени на позиционирование головок.

Если накопитель имеет несколько рабочих поверхностей (у каждого диска могут использоваться обе поверхности, может быть и пакет дисковых пластин), то совокупность всех дорожек с одинаковыми номерами составляет цилиндр. Для каждой рабочей поверхности в накопителе имеется своя головка, обеспечивающая запись и считывание информации. Стороны (головки) нумеруются с 0. Количество информации на одной стороне диска зависит от числа дорожек – плотности, и общего размера секторов на одной дорожке.

Таблица размещения файлов FAT (File Allocation Table) – содержит код формата и полную карту принадлежности секторов файлам, т.е. сведения о размещении файлов. Каждый элемент соответствует участку дискового пространства и содержит код состояния участка – занят, свободен, дефект поверхности (участок не используется). Обычно на диске имеется несколько копий FAT [5].

Программный вызов диспетчера функций

Чтобы программно обратиться к системной функции, необходимо:

  1. записать номер соответствующей функции в регистр АН;

  2. записать параметры, необходимые для работы функции, в соответствующие регистры;

  3. вызвать прерывание 21Н.

При обращении к прерыванию 21Н, управление передается MS-DOS. ОС по значению регистра АН определяет, какая функция должна выполняться. Затем из остальных, определенных для каждой функции, регистров считываются значения параметров, после чего требуемая функция выполняется. ОС помещает возвращаемые функцией параметры в соответствующие регистры и возвращает управление в вызывающую программу. Программа просматривает регистры и производит анализ результата выполнения функции.

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

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

Для более полного использования возможностей MS-DOS в модуле Dos имеются две процедуры: Intr и MsDos.

Процедура

Intr (IntNo: BYTE; VAR Regs: REGISTERS)

выполняет заданное программное прерывание, IntNo - номер программного прерывания, REGISTERS - тип записи, определенный в модуле Dos в виде:

TYPE

REGISTERS = RECORD

CASE INTEGER OF

0: (AX, BX, CX, DX, BP, SI, DI, DS, ES, Flags: WORD);

1: (AL, AH, BL, BH, CL, CH, DL, DH: BYTE);

END;

Поля записи соответствуют регистрам процессора.

Следующая процедура выполняет вызов функции DOS:

MsDos (VAR Regs: REGISTERS)

Запись REGISTERS представляет собой набор регистров процессора, а вариант в этой записи позволяет работать с первыми четырьмя регистрами либо пословно, либо с их старшими и младшими байтами по отдельности. Когда выполняется процедура Intr, значения полей AX, BX, CX, DX, BP, SI, DI, DS и ES загружаются в соответствующие регистры процессора. После этого вызывается прерывание с номером IntNo. После того, как прерывание обработано, содержимое регистров процессора загружается в запись Regs, а содержимое регистра флагов копируется в поле Flags. Таким образом, можно получить доступ к результатам работы процедуры прерывания.

Результат обращения к процедуре MsDos будет тот же, что и при обращении к процедуре Intr с номером прерывания $21.