
PREZENT71.ppt
- Количество слайдов: 8
Файловая организация. Работа с файлами При форматировании диска (HD-винчестер) кроме физического выполняется и логическое форматирование – создаётся логическая структура диска, то есть разделение общего пространства (секторов) диска на фиксированные области для различных целей: - Запись начальной загрузки ОС; - Таблица распределения дискового пространства ( FAT – File Allocation Table); - Основной каталог; - Область данных. BIOS и контроллер дисков используют одинаковый способ адресации: номер дорожки (с 0), номер поверхности (с 0), номер сектора (для ОС с 0). Запись начальной загрузки – программа запуска процесса загрузки ОС с диска в память. Она занимает сектор 0 на диске. Таблица распределения дискового пространства – FAT – содержит информацию о расположении файлов, свободном пространстве на диске, неисправных блоках и идентификатор формата диска. Элементы FAT имеют длину 16 или 32 бита. Для надёжности сохраняются две копии FAT, расположенные одна за другой. Элементы FAT (0 и 1) используются идентификатором формата диска. Каждый из следующих элементов FAT соответствует определённому кластеру диска. Кластер – группа из одного или нескольких последовательных секторов. Размер зависит от типа диска и способа форматирования. Nному элементу FAT, начиная со второго, соответствует N-ный кластер на диске. Каждый элемент FAT содержит число, которое идентифицирует соответствующий кластер как: - Свободный ( 0 в элементе FAT); - Включённый в файл ( значение от 2 до [FFFF]FF 0 H );
- Неиспользуемый (сбойный) – ( значение [FFFF]FF 7 H ) - Конец файла – ( [FFFF]FFFH – последний кластер в файле); - Значения от [FFFF]FF 0 H до [FFFF]FF 6 H означают зарезервированные кластеры. Каждый файл описан в элементе определённого каталога, который содержит номер первого кластера файла. Соответствующий элемент FAT содержит указание либо на номер другого элемента FAT – то есть на номер следующего кластера файла, образуя цепочку кластеров, в которых хранится файл, либо код конца файла – [. . ]FFFH. Для считывания произвольного кластера файла достаточно проследить цепочку файла в FAT до элемента, ссылающегося да требуемый кластер, что позволяет осуществлять прямой доступ к записям файла. Рисунок 1 Элемент каталога: Имя файла Номер первого кластера файла LEC 9. DOC 0039 h доступ к первому кластеру файла FAT … 38 0000 39 003 A 3 A 003 B 3 B 0057 3 C 57 FFF 7 …. 0058 58 FFFH 59 ….
Каталоги –сами являются файлами и ссылки на них также хранятся в FAT. Древовидная файловая организация позволяет группировать логически связанные файлы в каталоги, которые сами могут являться подкаталогами (для родительского каталога). Для каждого файла в определённом каталоге имеется один элемент, который состоит из 8 полей содержащих: - Имя файла; - Расширение (суффикс); - Атрибуты файла: защищенный, скрытый, системный, метка тома, каталог, архивный; - Резервировано; - Время создания или последнего изменения файла; - Дата создания или последнего изменения файла; - Номер первого кластера файла; - Размер файла в байтах.
Системные функции для работы с файловой структурой (21 h прерывание DOS) Существует два метода работы с файлами: - Метод с использованием блока управления файлом –FCB ( File Control Block). В этом случае программа пользователя должна построить FCB стандартного формата в своем сегменте данных. В FCB поддерживается информация, необходимая для работы с файлом: имя, размер, дата, размер записи, текущая позиция в файле и т. п. - Метод файлового манипулятора (File handle). В этом случае ОС автоматически строит FCB при открытии файла в своей рабочей области и его адрес пользователю явно не известен. Блок и соответствующий файл идентифицируется номером (2 байт), который ОС возвращает программе после открытия файла. Этот номер и называется файловым манипулятором (или указателем на файл, логическим номером). Первые пять номеров зарезервированы ОС под стандартные файлы (устройства): 0 – стандартный вход. По умолчанию CON (клавиатура); 1 – стандартный выход. По умолчанию CON (монитор); 2 – стандартное устройство для ERROR- CON (монитор); 3 – стандартный последовательный порт AUX == COM 1; 4 – Стандартный принтер (параллельный порт) – PRN = LPT 1.
Функции 21 h прерывания DOS 3 Ch AH ; Создание файла(Create) Начальная длина file-0 DS: DX Указатель к ASCII цепочке (файловая спецификация, заканчивается 00 h) CX(CL) Атрибуты файла Возвращает в AX- файловый манипулятор, если CF=0, код ошибки, если CF=1 Код ошибки 3 - нет такого пути к файлу 4 - нет свободного манипулятора 5 -отказ доступа(-нет места на диске в основном каталоге; -если атрибут только для чтения при существующем файле с этим именем) 5 Bh AH ; Создание нового файла, аналогична 3 Ch, но код ошибки 5 - означает, что файл уже существует 41 h AH ; Стирание файла DS: DX Указатель к файловой спецификации (путь к файлу) Возвращает в AX код ошибки, если CF=1; -2 - файл не существует -5 - отказ доступа (только для чтения ) 43 h- изменить атрибут Реально ОС записывает E 5 h в первый байт элемента каталога соответствующего файла и стирает соответствующие элементы FAT.
3 Dh AH ; Открытие файла DS: DX Указатель к ASCII цепочке (файловая спецификация, 00 h) AL режим открытия (код доступа) Возвращает в AX – код ошибки, если CF=1; - файловый манипулятор, если CF=0. Файл должен существовать. Указатель текущей позиции в файле (file pointer- FP) устанавливается на начало файла. В AL – биты 0 -2 определяют режим доступа; 000 - только для чтения, 001 -только для записи, 010 -для чтения и записи. биты 4 -6 - режим совместного использования бит 7 - режим наследования (0 -порожденный процесс наследует все открытые файлы в текущем состоянии, 1 -порожденный процесс может работать с файлом в соответствии с (4 -6)-совместное использование) 3 Eh AH ; Закрытие файла (Close) BX Файловый манипулятор Возвращает в AX – код ошибки, если CF=1 ( 6 -недействительный FM) - безразлично, если CF=0
3 Fh AH ; Чтение из файла или устройства ( с текущей FP) BX Файловый манипулятор CX Размер записи ( в байтах) DS: DX Адрес буфера для прочитанной записи Возвращает в AX – код ошибки, если CF=1 (5 -отказ доступа, 6 -недействительный файловый манипулятор) - количество прочитанных байт, если CF=0; FP-увеличивается на количество прочитанных байт. Количество прочитанных байт не всегда равно заявленному. Например, при достижении конца файла или при чтении с клавиатуры(CON) до нажатия Enter. 40 h AH ; Запись в файл или устройство ( с текущей позиции FP) BX Файловый манипулятор( полученный Create или Open); CX Размер записи ( в байтах) DS: DX Адрес записи Возвращает в AX – код ошибки, если CF=1 (5 -отказ доступа, 6 -недействительный файловый манипулятор) - количество прочитанных байт, если CF=0;
42 h AH ; Позиционирование в файле (установка FP) BX Файловый манипулятор FM CX: DX Смещение относительно текущей позиции в байтах (целое без знака – 32 бита) AL метод перемещения; AL=0 -смещение от начала файла, если CX: DX =0, FP-на начало файла, AL=1 - смещение от текущей позиции FP, AL=2 - смещение от конца файла. Возвращает в AX – код ошибки, если CF=1 (1 -недействительный номер в AL, 6 недействительный файловый манипулятор) - DX: AX – новое значение указателя FP. Если AL=2 и CX: DX =0 в DX: AX –получим длину файла.
PREZENT71.ppt