Метод файлового дескриптора для работы с файлами.
Существуют два метода работы с файлами. Первый метод основывается на использовании блока управления файлом FCB (File Control Block). Второй метод использует файловый манипулятор или дескриптор (File Handle) и иногда называется Handle - ориентированным методом. В методе файлового дескриптора ОС автоматом строит блок управления файлом в рабочей области при его открытии и его адрес неизвестен пользовательской программе. Блок и соответствующий файл идентифицируется 2-байтовым номером, который ОС возвращает программе после открытия файла. Этот номер и есть файловый дескриптор, т.е. при открытии файла пользовательская программа сообщает ОС его имя и получает обратно номер, который служит логическим именем файла при всех дальнейших операциях с файлами.
Открыть файл – это означает выделить для него фиксированную область памяти (блок управления), обнаружить файл и перенести определенную информацию из каталога в блок управления.
После выполнения функции OPEN файл идентифицируется при помощи дескриптора. Неоткрытый файл дескриптора не имеет и система работать с ним не может. Открывая файл, система назначает ему очередной свободный элемент в специальной системной таблице, называемой таблицей открытых файлов.
Информация из каталогов об открываемом файле записывается в этот элемент.
При открытии файла определяются права доступа программы к файлу: «только для чтения», «только для записи», «для чтения и записи». Кроме того определяются права доступа к файлу для других процессов, которые пытаются открыть файл до его закрытия главным процессом.
Для каждого файла устанавливается режим наследования, который указывает, как файл может быть использован порожденным процессом. Порожденный процесс может наследовать все открытые родительским процессом файлы в их текущем состоянии и с тем же режимом доступа.
Порожденный процесс может выполняться как независимая программа и работать с файлом в соответствие с режимом совместного использования.
Закрытие файла означает прекращение взаимодействия между блоком управления и файлом.
При закрытии файла ОС очищает все входные буферы, которые содержат записи этого файла, независимо от того, заполнены они или нет. Таким образом, обеспечивается целостность данных в файле. Файловый дескриптор и соответствующий блок управления освобождаются. При этом информация в каталоге заменяется информацией из блока управления.
В системной области хранятся идентификаторы всех открытых файлов. Таблиц, где хранятся идентификаторы, может быть несколько, тогда в заголовке первой таблицы имеется ссылка на след таблицу. Так же при открытии файла он должен существовать. Режим открытия файла: 1байт. С 0 по 2 биты – определяют режим доступа. Бит 3 зарезервирован. 4-6 режим совместного использования. 7 – режим наследования. Режимы доступа: 000-read, 001- запись, 010 – чтение/запись. Режим совместного использования определяет права доступа к файлу со стороны других процессов, которые пытаются открыть файл до его закрытия главным процессом. Также один и тот же файл можно открыть многократно со стороны одного процесса. При каждом открытии ОС создает новый дескриптор. Режим наследования определяет, как файл будет использоваться порожденным процессом. Если он равен 0 то порожденный процесс наследует все открытые файлы, иначе процесс будет выполнятся как независимая программа. При закрытие файла ДОС очистит все выходные буферы вне зависимости от того, заполнены они или нет, а дескриптор освобождается.
Существует два вида доступа к данным файла: последовательный и прямой. С точки зрения файловой организации файл – непрерывная последовательность байт.
Если файл состоит из записей разной длинны – его необходимо обрабатывать последовательно, при этом записи отделяются друг от друга специальными разделительными символами.
Организовать прямой доступ к файлу позволяет наличие указателя SFT – это есть байт относительно начала файла.
Дата добавления: 2015-07-30; просмотров: 1081;