Главная страница Межпроцессное взаимодействие (состязание) С точки зрения пользователя, наиболее важным аспектом файловой системы является ее представление со стороны, то есть как выглядят именование и защита файлов, операции с файлами и т. д. Такие детали внутреннего устройства, как использование списков или битовых карт для слежения за свободными и занятыми блоками диска, или число физических секторов в логическом блоке, представляют для пользователя меньший интерес, хотя и крайне важны для разработчиков файловой системы. По этой причине мы разбили главу на несколько разделов. Первые два раздела посвящены пользовательскому интерфейсу файлов и каталогов. В следующих разделах мы рассмотрим способы реализации файловой системы. И в заверщение будут приведены несколько примеров существующих файловых систем. 5.1. Файлы в следующих нескольких разделах мы рассмотрим файлы с точки зрения пользователя, то есть обсудим их использование и свойства. 5.1.1. Именование файлов Файлы относятся к абстрактному механизму. Они предоставляют способ сохранять информацию на диске и считывать ее снова позднее. При этом от пользователя должны скрываться такие подробности, как способ и место хранения информации, а также детали работы дисков. Вероятно, наиболее важной характеристикой любого абстрактного механизма является то, как именуются управляемые объекты, поэтому мы начнем изучение файловой системы с именования файлов. При создании файла процесс дает файлу имя. Когда процесс завершает работу, файл продолжает свое существование, и по его имени к нему могут получить доступ другие процессы. Правила именования файлов варьируются от системы к системе, но все современные операционные системы поддерживают использование в качестве имен файлов 8-символьных текстовых строк. То есть andrea, bruce и cathy являются допустимыми именами файлов. Часто в именах файлов также разрешается употребление цифр и специальных символов, поэтому допустимы и такие имена, как 2, urgent! и Fig.2-14. Многие файловые системы поддерживают имена файлов длиной до 255 символов. В некоторых файловых системах, например UNIX, различаются прописные и строчные буквы, тогда как в других, таких как MS-DOS, нет. Таким образом, имена maria, Maria и MARIA будут означать в системе UNIX три различных файла, и в то же время в MS-DOS все три имени будут соответствовать одному файлу. Во многих операционных системах имя файла может состоять из двух частей, разделенных точкой, например ргод.с. Часть имени файла после точки называется расширением имени файла и обычно характеризует его тип. Так, в MS-DOS имя файла может содержать от 1 до 8 символов плюс расширение от О до 3 символов. В UNIX размер расширения файла зависит от пользователя. Кроме того, внешне имя файла может включать несколько расширений, например prog.с.Z, где обозначением .Z обычно отмечают, что файл (prog.с) был сжат с помощью алгоритма Лемпеля-Зива. Некоторые часто встречающиеся расширения имен файлов и их смысловая нагрузка представлены в табл. 5.1. Таблица 5.1. Некоторые типичные расширения имен файлов Расширение Значение file.bak Резервная копия файла file.с Исходный текст программы на С file.gif Изображение в формате GIF file.hip Файл справки file.html Документ в формате HTML (веб-страница) file.jpg Статическое изображение стандарта JPEG file.mpS Музыка в формате MPEG-1, уровень 3 file.mpg Фильм в формате MPEG file.о Объектный файл (еще не скомпонованный выходной файл компилятора) file.pdf Документ формата PDF (программы Adobe Acrobat) file.ps Документ формата PostScript file.tex Входной файл для программы форматирования ТЕХ file.txt Текстовый файл общего назначения file.zip Архив, сжатый с помощью алгоритма Лемпеля-Зива В отдельных системах (например, в UNIX) расширения являются просто соглашениями, и операционная система не принуждает пользователя строго этих соглашений придерживаться. Файл file.txt может быть текстовым файлом, но это скорее напоминание пользователю, а не руководство к действию для операционной системы. С другой стороны, не исключено, что компилятор языка С откажется компилировать файлы с расширениями, отличными от .с. Подобные соглашения особенно полезны, когда одна и та же программа должна управлять различными типами файлов. Например, интегрированному компилятору языка С может быть предоставлен список файлов, которые он должен преобразовать в объектный код и затем скомпоновать, причем некоторые из файлов могут содержать программы на языке С, тогда как другие могут быть ассемблерными файлами. В этом случае именно по расширениям компилятор отличает одни файлы от других. 5.1.2. Структура файла Файлы могут быть структурированы несколькими различными способами. Три типа структур показаны на рис. 5.1. Файл на рис. 5.1, а представляет собой неструктурированную последовательность байтов. В данном случае операционная система не интересуется содержимым файла. Все, что она видит, - это байты. Значения этим байтам присваиваются программами уровня пользователя. Такой подход характерен как для систем UNIX, так и в Windows. 1 Байт 1 Запись
8 6 а Рис. 5.1. Три типа файлов: а - последовательность байтов; б - последовательность записей; 8 - дерево Рассмотрение операционной системой файлов как просто последовательностей байтов обеспечивает максимальную гибкость. Программы пользователя могут помещать в файлы все что угодно и именовать их любым удобным для них способом. Операционная система не вмешивается в этот процесс, что особенно ценно для пользователей, собирающихся сделать что-либо необычное. Первый шаг по направлению к структуризации показан на рис. 5.1, б. В данной модели файл представляет собой последовательность записей фиксированной длины, каждая со своей внутренней структурой. Для файлов, состоящих из записей, важным является то, что операция чтения возвращает одну запись, а операция записи обновляет или дополняет одну запись. Несколько десятилетий назад, когда вовсю применялись перфокарты, состоящие из 80 колонок отверстий, многие операционные системы (на мэйнфреймах) оперировали файлами, состоящими из 80-символьных записей - образов перфокарт. Этими операционными системами поддерживались также файлы, составленные из 132-символь-ных записей, предназначенные для линейных принтеров (которые в те дни печатали по 132 символа в строке). В результате программы читали из входных файлов 80-символьные блоки и тут же расширяли их до 132-символьных блоков. Ни одна современная универсальная система не работает подобным образом. Третий вариант файловой структуры представлен на рис. 5.1, е. При такой организации файл представляет собой дерево записей, не обязательно одной и той же длины. Каждая запись содержит поле ключа в фиксированной позиции. Дерево упорядочено по ключевому полю, с целью быстрого поиска по заданному ключу.
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |