<<
>>

Типы файлов

Многие операционные системы поддерживают различные типы файлов. Например, в системах UNIX и Windows проводится различие между обычными файлами и каталогами. Кроме того, в UNIX различают символьные и блочные специальные файлы.
Windows ХР также использует файлы метаданных, которые мы рассмотрим позднее. К обычным (regular) файлам относятся все файлы, содержащие пользовательскую информацию. Все файлы на рис. 5.1 являются просто файлами. Каталоги — это системные файлы, обеспечивающие структуризацию файловой системы. Позже мы рассмотрим их подробнее. Символьные специальные файлы имеют отношение к вводу-выводу и используются для моделирования последовательных устройств ввода-вывода, таких как терминалы, принтеры и сети. Блочные специальные файлы находят применение при моделировании дисков. В данной главе в основном рассматриваются обычные файлы.

Обычные файлы, как правило, являются либо ASCII-файлами, либо двоичными файлами. ASCII-файлы содержат текстовые строки. В некоторых системах каждая ASCII-строка завершается символом возврата каретки.

В других (например, UNIX) используется символ перевода строки. Есть системы (например, Windows), где требуются оба символа. Строки не обязаны иметь одну и ту же длину.

Главным преимуществом ASCII-файлов является то, что они могут отображаться на экране и выводиться на печать «как есть», без какого-либо преобразования, и редактироваться любым текстовым редактором. Более того, если несколько программ использует ASCII-файлы для ввода и вывода, несложно соединить вход одной программы с выходом другой, как это делается в конвейерах оболочки. (Обмен данными между процессами не становится проще, но интерпретация информации облегчается, если ее представление стандартизировано.)

Помимо ASCII-файлов существуют двоичные файлы. При выводе их на принтер получается невразумительный набор символов.

Но в действительности у них есть некая внутренняя структура, известная использующей их программе.

Например, на рис. 5.2, а показан простой исполняемый двоичный файл, входящий в одну из версий UNIX. Хотя технически любой файл представляет собой всего лишь последовательность байтов, операционная система станет исполнять его только в том случае, если он имеет соответствующий формат. Файл состоит из пяти разделов: заголовка, текста, данных, данных переадресации и символьной таблицы. Заголовок начинается с так называемого магического числа, идентифицирующего файл как исполняемый (чтобы предотвратить случайный «запуск» файла другого формата). Следом за сигнатурой в заголовке располагаются поля с размерами различных частей файла, адресом точки входа файла и некоторые флаги. За заголовком следуют текст программы и данные. Они загружаются в оперативную память и настраиваются на работу по адресу загрузки при помощи битов переадресации. Символьная таблица используется для отладки.

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

не скомпонованных. Каждой процедуре предшествует заголовок, содержащий ее имя, дату создания, имя владельца, код защиты и размер. Как и в случае исполняемого файла, заголовки модулей хранят большое количество двоичных чисел. Если в таком виде подать их на принтер, получится полная тарабарщина.

а б

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

Все операционные системы должны распознавать, по крайней мере, один тип файлов — собственные исполняемые файлы, но некоторые операционные системы различают и другие типы файлов. Старая система ТОР5-20 (для компьютера ВЕС8у81еш 20) даже анализировала время создания каждого предоставляемого ей на исполнение файла. Затем она находила исходный файл и проверяла, не был ли он изменен, после того как был создан исполняемый файл.

Если оказывалось, что исполняемый файл уже устарел, операционная система автоматически перекомпилировала исходный файл. В переводе на язык иШХ — программа таке была встроена в оболочку. Расширения имен файлов были обязательными,

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

Однако такая жесткая привязка типов файлов к содержимому может оказаться неудобной для пользователя, пытающегося сделать что-нибудь, не предусмотренное разработчиками операционной системы. Представьте, например, систему, в которой файлы программного вывода автоматически получают расширение dat (файлы данных). Пусть пользователь написал программу, форматирующую исходные тексты программ на языке С. Программа читает файл с расширением с, обрабатывает его и затем сохраняет результат в файле со стандартным расширением dat. Если пользователь затем попытается предложить этот файл компилятору С, операционная система не позволит его скомпилировать, так как у файла для данного действия неверное расширение. Попытка скопировать файл f ile. dat в f ile. с также будет отвергнута операционной системой, чтобы защитить пользователя от ошибки.

Хотя такая «дружественность» по отношению к пользователю («защита от дурака») может быть полезна для новичков, она ставит опытных пользователей в безвыходное положение, заставляя их тратить массу усилий на то, чтобы пере1 хитрить операционную систему.

5.1.4.

<< | >>
Источник: Э. ТАНЕНБАУМ, А. ВУДХАЛЛ. ОПЕРАЦИОННЫЕ СИСТЕМЫ Разработка и реализация 3-е издание. 2007

Еще по теме Типы файлов:

  1. смешанные типы
  2. Раздел II. Отдельные типы (виды) договоров
  3. Типы Характеров Человека
  4. 2.3. Типы и методы выборки
  5. ТИПЫ СОЦИАЛЬНЫХ ОТНОШЕНИЙ
  6. Типы энергетических блоков
  7. Типы дат
  8. 3.1.6. Смешанные типы
  9. Смешанные типы
  10. Смешанные типы
  11. 1 3.5.6. Смешанные типы
  12. Смешанные типы .
  13. 3.7.6. Смешанные типы
  14. Смешанные типы
  15. Смешанные типы
  16. 3.10.6. Смешанные типы
  17. 3.11.б. Смешанные типы