Системы файлов
Типы файлов – имена и расширения
В таблица 19.1 приведены некоторые наиболее употребительные типы файлов и соответствующие им расширения имен.
Смысл их ясен из приведенной таблицы. Следует заметить, что унифицированных расширений имен, принятых в различных ОС, очень мало – по-видимому, только .txt (текст) и расширения для исходных кодов на языках программирования, например, .c – Си, .p или . pas – Паскаль и др. Объектные модули называются по-разному (в Windows – .obj, в UNIX - .o ), библиотеки – тоже: статически линкуемые в Windows - .lib, в UNIX - .a ; динамически линкуемые в Windows - .dll, в UNIX – .so.Интересно отметить, что для исполняемого кода в Windows есть стандартное расширение - .exe,а в UNIX – нет, зато есть весьма экзотическое полное стандартное имя: a.out (assembler output).Унифицированы расширения имен для различных текстовых процессоров: . doc - Microsoft Word, .pdf – Adobe Acrobat и др.
Методы доступа к файлам
Традиционно различаются файлы последовательного доступа и прямого доступа.Файл последовательного доступа – это файл, доступ к которому возможен только позиционированием на начало и конец и затем операциями обмена вида считать или обновить следующую ( предыдущую ) запись. Файл прямого доступа – это файл, для которого возможен непосредственный доступ по номеру записи и операция обмена с явным указанием номера записи. В любом случае, при выполнении обмена с файлом всегда существует некоторая текущая позиция по файлу, указывающая на некоторую запись, на позицию перед началом или после конца файла. В операциях над файлом последовательного доступа произвольная установка позиции не допускается, а разрешены только операции, автоматически передвигающие текущую позицию на следующую (предыдущую) запись.
Подобная особенность связана с различием устройств, на которых размещены файлы (например, магнитная лента – по сути дела, последовательное устройство), однако необходимость организации последовательных или прямых файлов может быть связана с сутью задачи.
По-видимому, последовательный доступ используется чаще: именно так происходит ввод данных, вывод результатов на печать или на экран.
Типичные операции последовательного доступа:
read next
write next
reset – установка на начало файла для чтения
rewrite – установка на начало файла для записи.
Типичные операции прямого доступа:
read n
write n
position to n – позиционирование на запись с номером n
read next
write next
rewrite n, где n - относительный номер блока (записи).
Описанная трактовка последовательных файлов и операций над ними иллюстрируется рис. 19.1.
При необходимости можно смоделировать операции последовательного доступа для файла с прямым доступом. Способ моделирования показан в таблица 19.2.
Указатель на текущую позицию, характерный для последовательного доступа, для файла прямого доступа моделируется переменной cp, а операции последовательного доступа – операциями прямого доступа с указанием cp в качестве номера блока.
Для ускорения доступа к файлу большого объема может использоваться индексный файл, содержащий ссылки на записи основного ( относительного ) файла. рис. 19.2 изображен пример основного файла, содержащего упорядоченные по фамилиям анкетные данные людей. Индексный файл для данного основного файла содержит ссылки на первые логические записи анкет с заданной фамилией, например, Smith.