Типы файлов. Доступ к файлам. Отображение на адресное пространство.
Типы файлов
- Регулярные файлы – все файлы содержащие инфу пользователя.
- Каталоги - это системные файлы, обеспечивающие поддержку структуры файловой системы. К регулярным файлам относятся все файлы, содержащие информацию пользователя.
- Символьные специальные файлы, которые используются для моделирования последовательных устройств ввода/вывода;
- Блочные специальные файлы, которые используются для моделирования дисковых систем.
Регулярные файлы бывают либо двоичными, либо ASCII-файлами. ASCII-файлы состоят из текстовых строк, которые заканчиватся либо символом возврата каретки, либо символом перевода строки (UNIX), либо обеими символами (DOS). ASCII-файлы выводятся на экран либо на печать без какого-либо преобразования, то есть так, как они хранятся. Обмен данными при этом не становится проще, но облегчается интерпретация.
Остальные файлы называются двоичными. Они имеют некоторую внутреннюю структуру, которая интерпретируется в программах пользователя.
Все ОС должны распознавать по крайней мере один тип файлов: свои собственные исполняемые файлы.
Отображение на адресное пространство.
В большинстве современных ОС предоставлен способ отобржения файлов на адресное пространство работающего процесса. Это реализованно в виде двух системных вызовов: map и unmap.
Системный вызов map в качестве параметров использует имя файла и виртуальный адрес, по которому ОС отображает данный файл. Такой подход позволяет для работы с файлами использовать не специальные функции ввода/вывода (fread, fwrite), а обычные функции для работы с памятью. Удобнее всего использовать отображение файлов в ОС, поддерживающих сегментацию. В этом случае каждый файл может быть отображен на свой собственный сегмент. Недостатки:
- заранее невозможно узнать размер выходного файла, чтобы зарезервировать место для него;
- при одновременном доступе к одному файлу нескольких процессов может возникнуть рассогласование данных (содержимое файла не изменится, пока соответствующая страница не будет сохранена на диск);
- размер файла может быть больше размера одного сегмента либо больше всего виртуального адресного пространства. В этом случае системный вызов map должен отображать только часть файла, что создает дополнительные трудности.
В файловых системах файлы обычно организуются в каталоги или папки, которые в свою очередь, в большинстве ОС, являются специальными файлами. Виды каталоговых систем:
- одноуровневая - простейщая форма системы. Имеется всего один каталог, который называется корневым. Преимуществом такой схемы является простота и высокая скорость поиска файлов. Недостаток заключается в том, что, при наличии нескольких пользователей, могут возникнуть проблемы с именованием файлов. Такая схема используется в простейших устройствах;
- двухуровневая - первым этапом решения проблемы одинаковых имен файлов можно считать выделение каждому пользователю своего собственного каталога. Для функционирования такой системы требуется начальная регистрация пользователя. В более продвинутых системах пользователь с помощью специальных команд может работать с файлами других пользователей. Преимущества:
‡ каждый пользователь имеет свободу в именовании файлов;
‡ защита файлов от несанкционированного доступа;
Недостатки:
‡ при таком подходе все системные файлы и программы должны копироваться в каталог каждого пользователя. Можно избежать избыточного копирования, организовав один системный каталог, доступный всем пользователям;
- иерархическая - для управления большим количеством файлов как в однопользовательских, так и многопользовательских системах используют иерархическую структуру каталогов (дерево каталогов). Недостатки:
‡ так же может возникнуть проблема с общими системными файлами.
Имя пути
При организации файловой системы в виде дерева каталогов требуется некоторый способ указания файла. Обычно используются 2 различных метода:
- абсолютное имя пути - состоит из имен всех каталогов, начиная от корневого, разделенных некоторым символом (/, \, >);
- относительное имя пути - используется вместе с концепцией рабочего каталога (текущего). Рабочий каталог есть у каждого процесса и его изменение одним процессом никак не повлияет на работу других процессов.
Большинство файловых систем содержат в каждом каталоге 2 специальных элемента: '.' - текущий каталог, '..' - родительский каталог.
Операции с каталогами:
- Create
- Delete
- Opendir
- Closedir
- Readdir