Операции над файлами

Операционная системадолжна предоставить в распоряжение пользователя набор операций для работы с файлами, реализованных через системные вызовы. Чаще всего при работе с файлом пользователь выполняет не одну, а несколько операций.
Во-первых, нужно найти данные файла и его атрибуты по символьному имени, во-вторых, считать необходимые атрибуты файла в отведенную область оперативной памяти и проанализировать права пользователя на выполнение требуемой операции. Затем следует выполнить операцию, после чего освободить занимаемую данными файла область памяти. Рассмотрим в качестве примера основные файловые операции ОС Unix [Таненбаум, 2002]:

• Создание файла, не содержащего данных. Смысл данного вызова — объявить, что файл существует, и присвоить ему ряд атрибутов. При этом выделяется место для файла на диске и вносится запись в каталог.

• Удаление файла и освобождение занимаемого им дискового пространства.

• Открытие файла. Перед использованием файла процесс должен его открыть. Цель данного системного вызова — разрешить системе проанализировать атрибуты файла и проверить права доступа к нему, а также считать в оперативную память список адресов блоков файла для быстрого доступа к его данным. Открытие файла является процедурой создания дескриптора или управляющего блока файла. Дескриптор (описатель) файла хранит всю информацию о нем. Иногда, в соответствии с парадигмой, принятой в языках программирования, под дескриптором понимается альтернативное имя файла или указатель на описание файла в таблице открытых файлов, используемый при последующей работе с файлом. Например, на языке Си операция открытия файла fd=open(pathname, flags,modes) ; возвращает дескриптор fd, который может быть задействован при выполнении операций чтения ( read (fd,buf fer, count) ;) или записи.

• Закрытие файла. Если работа с файлом завершена, его атрибуты и адреса блоков на диске больше не нужны. В этом случае файл нужно закрыть, чтобы освободить место во внутренних таблицах файловой системы.

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

• Чтение данных из файла. Обычно это делается с текущей позиции. Пользователь должен задать объем считываемых данных и предоставить для них буфер в оперативной памяти.

• Запись данных в файл с текущей позиции. Если текущая позиция

находится в конце файла, его размер увеличивается, в противном

случае запись осуществляется на место имеющихся данных, которые,

таким образом, теряются.

Есть и другие операции, например переименование файла, получение атрибутов файла и т. д.

Существует два способа выполнить последовательность действий над файлами [Олифер, 2001].

В первом случае для каждой операции выполняются как универсальные, так и уникальные действия (схема stateless). Например, последовательность операций может быть такой: open, readl, close, ... open, read2, close, ... open, read3, close.

Альтернативный способ — это когда универсальные действия выполняются в начале и в конце последовательности операций, а для каждой промежуточной операции выполняются только уникальные действия. В этом случае последовательность вышеприведенных операций будет выглядеть так: open, readl, ... read2, ... read3, close.

Большинство ОС использует второй способ, более экономичный и быстрый. Первый способ более устойчив к сбоям, поскольку результаты каждой операции становятся независимыми от результатов предыдущей операции; поэтому он иногда применяется в распределенных файловых системах (например, Sun NFS).

<< | >>
Источник: В.Е. Карпов К.А. Коньков. Основы операционных систем. 2005

Еще по теме Операции над файлами:

  1. Статья 297. Надругательство над могилой, другим местом захоронения или над телом умершего
  2. ОПЕРАЦИЯ ФОРМАЛЬНАЯ
  3. ОПЕРАЦИЯ
  4. ОПЕРАЦИЯ ИНТЕЛЛЕКТУАЛЬНАЯ
  5. ОПЕРАЦИЯ КОНКРЕТНАЯ
  6. ОПЕРАЦИЯ СОЗНАТЕЛЬНАЯ
  7. Действия, операции и психологические приемы.
  8. ОПЕРАЦИЯ ПРИСПОСОБИТЕЛЬНАЯ
  9. § 2. Правовое регулирование валютных операций
  10. 6. Договоры об отдельных транспортно-экспедиционных операциях и услугах
  11. 5. Внешнеэкономические подрядные операции с давальческим сырьем
  12. Статья 1068. Операции со счетом, которые выполняются банком