5.1. Файл и файловая система. Определение и функции

Операционная система выполняет две основные задачи: манипулирование данными и их хранение. Большинство программ в основном манипулирует данными, но, в конечном счете, они где-нибудь хранятся. В ОС таким местом хранения является файловая система. При этом вся хранящаяся информация организуется в файлы. Файл – это именованная совокупность данных, хранящаяся на каком-либо носителе информации. [1]

Файловая система (ФС) – это часть операционной системы, включающая:

  • совокупность всех файлов на носителе информации (магнитном или оптическом диске, магнитной ленте и др.);
  • наборы структур данных, используемых для управления файлами, каталоги и дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске и др.);
  • комплекс системных программных средств, реализующих различные операции над файлами (создание, уничтожение, чтение, запись и др.). [2]

Назначение файловой системы состоит в том, чтобы обеспечить пользователю удобный интерфейс при работе с данными, хранящимися на диске, и обеспечить совместное использование файлов несколькими пользователями и процессами. Файловая система UNIX-систем обеспечивает унифицированный интерфейс доступа к данным, расположенным на различных носителях, и к периферийным устройствам (перенаправление запросов, адресованных периферийным устройствам, соответствующим модулям подсистемы ввода-вывода). [3]

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

В многозадачных, многопользовательских ОС задачами файловой системы являются:

  • соответствие требованиям управления данными и требованиям со стороны пользователей, включающим возможность хранения данных и выполнения операций с ними;
  • гарантирование корректности данных, содержащихся в файле;
  • оптимизация производительности, как с точки зрения системы (пропускная способность), так и с точки зрения пользователя (время отклика);
  • поддержка ввода-вывода для различных типов устройств хранения информации;
  • минимизация или полное исключение возможных потерь или повреждений данных;
  • защита файлов от несанкционированного доступа;
  • обеспечение поддержки совместного использования файлов несколькими пользователями (в том числе средства блокировки файла и его частей, исключение тупиков, согласование копий и т.п.);
  • обеспечение стандартизированного набора подпрограмм интерфейса ввода-вывода. [2]

Минимальным набором требований к файлам системы со стороны пользователя диалоговой системы общего назначения можно считать следующую совокупность возможностей, предоставляемую пользователю:

  1. создание, удаление, чтение и изменение файлов;
  2. контролируемый доступ к файлам других пользователей;
  3. управление доступом к своим файлам;
  4. реструктурирование файлов в соответствии с решаемой задачей;
  5. перемещение данных между файлами;
  6. резервирование и восстановление файлов в случае повреждения;
  7. доступ к файлам по символьным именам. [2]

5.2. Архитектура файловой системы

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

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

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

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


Рисунок 5.1 – Организация программного обеспечения ФС

На нижнем уровне драйверы устройств непосредственно связаны с периферийными устройствами или их котроллерами либо каналами. Драйвер устройства отвечает за начальные операции ввода-вывода устройства и за обработку завершения запроса ввода-вывода. При файловых операциях контролируемыми устройствами являются дисководы и стримеры (накопители на магнитных лентах). Драйверы устройств рассматриваются как часть операционной системы.

Следующий уровень называется базовой файловой системой, или уровнем физического ввода-вывода. Это первичный интерфейс с окружением (периферией) компьютерной системы. Он оперирует блоками данных, которыми обменивается с дисками, магнитной лентой и другими устройствами. Поэтому он связан с размещением и буферизацией блоков в оперативной памяти. На этом уровне не выполняется работа с содержимым блоков данных или структурой файлов. Базовая файловая система обычно рассматривается как часть операционной системы (в MS-DOS эти функции выполняет BIOS, не относящийся к ОС).

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

Логический ввод-вывод предоставляет приложениям и пользователям доступ к записям. Он обеспечивает возможности общего назначения по вводу-выводу записей и поддерживает информацию о файлах. Наиболее близкий к пользователю уровень ФС часто называется методом доступа. Он обеспечивает стандартный интерфейс между приложениями и файловыми системами и устройствами, содержащими данные. Различные методы доступа отражают различные структуры файлов и различные пути доступа и обработки данных. [2]

В упрощённом виде архитектура ФС представлена на рисунке 5.2.


Рисунок 5.2 – Модель ФС [4]

5.3. Типы, именование и атрибуты файлов

Файловые системы поддерживают несколько функционально различных типов файлов, различающихся по функциональному назначению:

  1. Обычный файл (обозначается «-») - наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. К этим файлам относятся текстовые файлы, двоичные данные и выполняемые программы.
  2. Каталог (d) - это файл, содержащий имена находящихся в нем файлов, а также указатели на дополнительную информацию, позволяющие операционной системе производить действия с этими файлами. С помощью каталогов формируется логическое дерево файловой системы.
  3. Специальный файл устройства (b, c) обеспечивает доступ к физическим устройствам. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства.
  4. Именованный канал (p). Этот файл используется для связи между процессами по принципу очереди.
  5. Сокет (s) позволяет представить в виде файла сетевое соединение.
  6. Символическая связь (symbolic link) (l) – это специальный файл, который содержит логический путь к другому файлу.

В UNIX существует понятие жесткой связи (ссылки). Жесткая связь означает связь между именем файла и самим файлом. В UNIX любой файл может иметь несколько (точнее, неограниченное количество) жестких связей, т.е. неограниченное количество имен. Это могут быть разные имена в одном каталоге или даже имена, хранящиеся в разных каталогах одного дискового тома. [1]

Файлы относятся к абстрактному механизму. Они предоставляют способ сохранять информацию на запоминающем устройстве и считывать ее позднее снова. При этом от пользователя должны скрываться такие детали, как способ и место хранения информации, а также детали работы устройства.

Наиболее важной характеристикой любого механизма абстракции является именование управляемых объектов. Правила именования файлов меняются от одной ОС к другой, но, как правило, все современные операционные системы поддерживают использование в качестве имен файлов 8-символьные текстовые строки. Часто в именах разрешается использование цифр и специальных символов.

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

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

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

Простое (короткое) символьное имя идентифицирует файл в пределах одного каталога. Несколько файлов могут иметь одно и то же простое имя, если они принадлежат разным каталогам.

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

Относительное имя файла определяется через текущий каталог, т.е. каталог, в котором в данный момент времени работает пользователь. Таким образом, относительных имен у файла может быть достаточно много, и все они являются частью полного имени. [2]

Приведем пример обозначения имен файла.


Рисунок 5.3 –Пример файловой системы

Для рисунка 5.3 обозначение файлов и каталогов следующее:

  • . – текущий каталог (ссылается сам на себя):
  • ./f1 – файл f1 текущего каталога;
  • .. – родительский каталог (ссылается на каталог выше):
  • ../admin – каталог admin родительского каталога.

Символьное имя файла:

  • абсолютное (полный путь к файлу от / - корневого каталога): /etc/passwd, /home/user_X/f1;
  • относительное (относительно текущего каталога): находясь в /home/user_X, к файлу можно обратиться просто по имени f1.

Аналогично обращение к каталогу: /dev/disk – абсолютный путь (от корня /); disk – относительный путь, если находимся в /dev.

Понятие файла включает не только хранимые им данные и имя, но и информацию, описывающую свойства файла. Эта информация составляет атрибуты файла. Список атрибутов может быть различным в различных ОС.

В UNIX атрибуты файла можно получить командой ls –l, например, при вводе строки

$ ls -1 /bin/gzip

на экране отобразится следующая информация:

-rwxr-xr-x 3 root root 62100 May 28 2010 /bin/gzip

                       1       2        3    4     5       6                 7                 8

  1. Первый символ (-) – тип файла;
  2. rwxr-xr-x – права доступа к файлу;
  3. 3 – количество жёстких ссылок (различных имен файла);
  4. root – имя владельца файла;
  5. root – имя группы владельца;
  6. 62100 – размер файла в байтах;
  7. May 28 2010 – дата создания (модификации) файла;
  8. /bin/gzip – имя файла.[5]

В любой операционной системе ФС имеет два уровня организации: логический и физический. Подробная информация об организации ФС приведена в [2].

5.4 Файловая система в UNIX

Файловая система UNIX характеризуется:

  • иерархической структурой,
  • согласованной обработкой массивов данных,
  • возможностью создания и удаления файлов,
  • динамическим расширением файлов,
  • защитой информации в файлах,
  • трактовкой периферийных устройств (таких как терминалы и ленточные устройства) как файлов. [6]

Логическая файловая система в ОС UNIX (или просто файловая система) - это иерархически организованная структура всех каталогов и файлов в системе, начинающаяся с корневого каталога. Логическая файловая система может состоять из одной или нескольких физических файловых (под)систем, являющихся разделами физических носителей (HDD, CD или USB-FLASH).

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

Иерархическая структура файловой системы UNIX (рис. 5.4) упрощает ориентацию в ней. Каждый каталог, начиная с корневого (/), в свою очередь, содержит файлы и другие каталоги (подкаталоги). Каждый каталог содержит также ссылку на родительский каталог (для корневого каталога родительским является он сам), представленную каталогом с именем две точки (..) и ссылку на самого себя, представленную каталогом с именем точка (.). [1]


Рисунок 5.4 - Типичная файловая система UNIX [7]

Основные каталоги в Unix приведены в таблице 5.1.

Таблица 5.1 – Системные каталоги Unix

Название каталога

Назначение

/         

Корневой каталог

bin

Файлы основных команд (утилит)

boot

Файлы загрузки системы

dev

Файлы устройств

etc

Файлы конфигурации системы

home

Домашние каталоги пользователей

lib

Основные разделяемые библиотеки и модули ядра

mnt

Точка монтирования для временно подключаемых файловых систем. Сюда подключаются ФС других устройств

root

Домашний каталог суперпользователя

opt

Дополнительные пакеты ПО

sbin

Основные системные исполняемые файлы

tmp

Временные файлы

usr

Все установленные пакеты программ, справочная документация

var

Переменные данные (журналы ОС, кэш-файлы)


Источники:

1. Студопедия. ОС Unix, основные характеристики, файловая структура. - URL: https://studopedia.ru/17_120840_OC-UNIX-osnovnie-harakteristiki-faylovaya-struktura.html

2. Назаров, С. В. Современные операционные системы [Электронный ресурс] / С. В. Назаров, А. И. Широков. — Электрон. текстовые данные. — М. : Интернет-Университет Информационных Технологий (ИНТУИТ), 2016. — 351 c. — 978-5-9963-0416-5. — Режим доступа: http://www.iprbookshop.ru/52176.html

3. Студопедия. Файловая система. – URL: https://studopedia.ru/17_87605_faylovaya-sistema.html

4. StudFiles. Общая модель файловой системы. - URL: https://studfiles.net/preview/3489830/page:3/

5. Компьютерная документация, инструкции и статьи. Атрибуты файлов. - URL: http://docscom.ru/blog/nix/97.html

6. Студопедия. Файловая система Unix. – URL: https://studopedia.ru/9_88222_faylovaya-sistema-UNIX.html

7. StudFiles. Структура файловой системы Unix. - URL: https://studfiles.net/preview/5687378/page:2/