АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Программирование файловой системы MS DOS

Читайте также:
  1. B. Взаимодействие с бензодиазепиновыми рецепторами, вызывающее активацию ГАМК – ергической системы
  2. CRM системы и их возможности
  3. IV. Поземельные книги и другие системы оглашений (вотчинная и крепостная системы)
  4. А4. Знание о файловой системе организации данных
  5. Автоматизированное рабочее место (АРМ) таможенного инспектора. Назначение, основные характеристики АРМ. Назначение подсистемы «банк - клиент» в АИСТ-РТ-21.
  6. Автоматизированные информационно-поисковые системы
  7. Автоматизированные системы бронирования, управления перевозками, отправками в аэропортах.
  8. Автоматизированные системы управления воздушным движением.
  9. Автоматические системы пожаротушения.
  10. Адекватность понимания связи свойств нервной системы с эффективностью деятельности
  11. Анализ активности вегетативной нервной системы
  12. Анализ деятельности и системы управления персоналом

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

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

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

Файл может иметь несколько атрибутов одновременно. Так, защищенный от стирания и модификации файл содержит в байте атрибутов число 21, а если к тому же он еще объявлен скрытым, то 23.

Время и дата создания файла помещаются в запись каталога после окончания работы программы с данным файлом и его закрытия.

Номер кластера, с которого начинается файл, позволяет найти на диске начало файла. Информация о его последующих кластерах содержится в таблице размещения файлов (FAT от File Allocation Table).

В последних четырех байтах записи каталога хранится длина файла в байтах. Если в процессе модификации размер файла изменился, DOS изменяет значение данного поля.

При создании нового файла DOS сама отыскивает на диске свободное место и назначает его новому файлу, создавая соответствующую запись в каталоге. Хотя минимальной порцией информации, передаваемой контроллером диска при чтении и записи файлов, является сектор (512 байт), файловая система назначает место на диске целыми кластерами. Размер кластера на гибком диске составляет обычно два сектора (1 Кбайт); на жестком диске в кластер могут входить 4 - 8 секторов. Таким образом, минимальный физический размер файла, даже пустого, составляет один кластер.

Существуют два способа выполнения операций с файлами: с использованием блоков управления файлами (FCB, File Control Block) и дескрипторов файлов (handle).

Блок управления файлами представляет собой 37-байтную таблицу, содержащую информацию о файле: имя и расширение файла, его размер, длину записей в файле, номер текущей записи и т.д. Эта таблица размещается в памяти, отводимой программе. Для выполнения какой-либо операции с файлом, необходимо заполнить FCB соответствующей информацией и вызвать требуемую функцию.

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

Процедура обращения к файлу в общем виде распадается на следующие операции:

- создание файла с указанным именем в указанном каталоге или открытие файла, если он был создан ранее;

- запись в файл или чтение из файла;

- закрытие файла.

Работа с файлом, в большинстве случаев, начинается с операции его открытия, для чего предусмотрена особая функция DOS. Открывая файл, DOS ставит ему в соответствии очередной свободный элемент (блок описания файла) специальной системной таблицы, называемой таблицей открытых файлов (System File Table, SFT) и располагаемой в оперативной памяти среди системных областей данных. Объем этой таблицы задается на этапе конфигурирования DOS директивой FILES файла CONFIG.SYS.

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

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

Для облегчения ориентации в многочисленных функциях DOS, осуществляющих операции над файлами, каталогами и дисками, их удобно разбить на смысловые группы:

а) создание, открытие и закрытие файла

3Ch - создать файл;

5Ah - создать временный файл;

5Bh - создать новый файл;

3Dh - открыть файл;

3Eh - закрыть файл;

68h - сбросить файл на диск;

41h - удалить файл;

б) чтение и запись данных

42h - установить указатель;

3Fh - читать из файла или устройства;

40h - записать в файл или устройство;

в) изменение характеристик файла

43h - получить или установить атрибуты файла;

56h - переименовать файл;

57h - получить или установить дату и время создания файла;

г) поиск файла

1Ah - установить адрес области передачи данных (DTA);

2Fh - получить адрес области передачи данных (DTA);

4Eh - найти первый файл;

4Fh - найти следующий файл;

д) операции над каталогами

39h - создать каталог;

3Ah - удалить каталог;

3Bh - сменить текущий каталог;

47h - получить текущий каталог;

е) операции над дисками

19h - получить текущий диск;

0Eh - сменить текущий диск;

36h - получить информацию о диске.

Функции 3Ch и 5Bh позволяют создавать файл с заданной спецификацией, т.е. путь к нему вместе с именем файла и расширением указывается в виде символьной строки, завершающейся двоичным нулем (строки ASCIIZ). С помощью этих функций можно создать как файл, так и метку тома (в корневом каталоге диска).

Функция 5Ah используется для создания временного файла, имя которому дает система.

Функция 3Dh позволяет открыть уже созданный файл. Эта функция с помощью указателя файла реализует последовательный доступ к файлу. Для организации прямого доступа к произвольному месту файла предусмотрена функция 42h, позволяющая задать положение указателя относительно начала файла.

Программирование перечисленных выше функций для работы с файлами сходно с приведенным примером:

;--- в сегменте данных

PATH DB 'B:FILENAME.EXT',0

BUFFER DB00 DUP(?)

;--- открытие файла с помощью функции «создания»

LEA DX,PATH; DS:DX указывают путь к файлу

MOV CX,0; атрибуты файла (здесь обычные)

MOV AH,3Ch; номер функции

INT 21h; открытие файла

JC OPEN_ERROR; уход по ошибке

MOV HANDLE,AX; запоминание номера файла

;--- запись в файл 1000 байт

MOV AH,40h; номер функции

MOV BX,HANDLE; номер файла в BX

MOV CX,1000; число записываемых байтов

LEA DX,BUFFER; DS:DX указывают на буфер данных

INT 21h; запись данных

JC OUT_ERROR; проверка на ошибки

CMP AX,1000; обработка ошибок

JNE FULL_DISC; при их наличии


1 | 2 | 3 | 4 | 5 |

Поиск по сайту:



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