Наверх Системное программирование
Предыдущий раздел Оглавление Следующий раздел

5.1.3. Типы файлов

Большинство операционных систем поддерживают различные типы файлов. Windows и UNIX-подобные системы различают обычные файлы и каталоги. Кроме этого, UNIX-подобные системы имеют также блочные и символьные специальные файлы. Файлы, которые содержат информацию пользователя, считаются обычными. Системные файлы, которые предназначаются для структурирования файловой системы, называются каталогами. Для ввода-вывода и моделирования последовательных устройств ввода-вывода (например, принтеров или терминалов) используют символьные специальные файлы Для моделирования дисков в UNIX-системах используют блочные специальные файлы.

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

Рис

Рис. 5.1. Примеры структур двоичных файлов:
а — исполняемый файл; б — архив

Простой исполняемый двоичный файл представлен на рис. 5.1, а. Данный файл представляет собой всего лишь последовательность байтов, но если он будет иметь допустимый формат, то в этом случае он может быть исполнен операционной системой. Пять разделов находятся в файле: заголовок файла, текст исполняемого файла, данные, биты перемещения и таблица символов. В начале заголовка файла находится так называемое магическое число, которое определяет файл в качестве исполняемого. Это делается для того, чтобы файл, который не соответствует данному формату, случайно не передался операционной системе на исполнение. После данного числа в заголовке файла содержатся размеры различных частей, адрес, с которого будет начинаться выполнение файла, и совокупность специальных битов. Затем за заголовком в файле располагаются текст программы и используемые ей данные. Именно они перемещаются в оперативную память, для чего используются биты перемещения. Для отладки исполняемых файлов используется таблица символов.

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

Каждая операционная система по меньшей мере распознает тот тип файла, который является в этой системе исполняемым. Большинство систем распознают также и другие типы файлов.

Предыдущий раздел Оглавление Следующий раздел