Научная статья на тему 'Особенности построения файловых систем'

Особенности построения файловых систем Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1038
221
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ФАЙЛОВАЯ СИСТЕМА / ФАЙЛ / КАТАЛОГ / ДЕСКРИПТОРЫ ФАЙЛОВ / СИСТЕМНЫЕ ВЫЗОВЫ / ЛОГИЧЕСКИЙ РАЗДЕЛ ДИСКА / АДРЕСНОЕ ПОЛЕ / ФАЙЛОВАЯ ТАБЛИЦА / FILE SYSTEM / FILE / DIRECTORY / FILE DESCRIPTORS / SYSTEM CALLS / A LOGICAL PARTITION / THE ADDRESS FIELD / THE FILE TABLE

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Трубачева Светлана Ивановна

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

FEATURES CONSTRUCTION FILE SYSTEMS

Describe the components of the file system design features, the functioning of the. We consider the structure of a logical partition, the system data structures, a comparative analysis to determine the most effective, of reliable, secure file systems.

Текст научной работы на тему «Особенности построения файловых систем»

УДК: 004.45 ББК: 32.97-018.2

Трубачева С.И.

ОСОБЕННОСТИ ПОСТРОЕНИЯ ФАЙЛОВЫХ СИСТЕМ

Trubachyova S.I.

FEATURES CONSTRUCTION FILE SYSTEMS

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

Keywords: file system, file, directory, file descriptors, system calls, a logical partition, the address field, the file table.

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

Abstract: describe the components of the file system design features, the functioning of the. We consider the structure of a logical partition, the system data structures, a comparative analysis to determine the most effective, of reliable, secure file systems.

Цели научного исследования: изучение особенностей построения и

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

Решение. Файловая система (ФС) - это часть операционной системы (ОС),

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

Компоненты современной ФС представлены на рисунке 1.

Рисунок 1 - Компоненты файловой системы

I. Файловая система - совокупность всех файлов на диске. Файлы идентифицируются именами. Например, в старой ФС типа FAT(12, 16) длина имени файла ограничивалась схемой 8.3.

Современные ФС типа FAT32, vfat; extX поддерживают имена до 255 символов.

Информация о файле, его имя,

расширение (если есть) могут храниться в записи каталога (ФС типа fat) или в специальной области диска - таблице дескрипторов файлов (ФС типа ext).

Файлы бывают разных типов. В ОС семейства Windows под типом понимают расширение файла: текстовый, графический и т.п. В ОС семейства Unix

(Linux) под типом понимают другое, а именно, файлы бывают: обычные, специальные, файлы-каталоги и др.

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

Текстовые файлы состоят из строк символов, представленных в ASCII-коде. Это могут быть различные документы, исходные тексты программ и пр.

Двоичные файлы не используют ASCII-коды, они имеют сложную внутреннюю структуру, например, объектный код программы (откомпилированный

промежуточный код программы), архивный (сжатый) файл.

ОС должны уметь распознавать файлы.

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

Специальные файлы, так же как и устройства ввода-вывода, делятся на блок-ориентированные и байт-ориентированные. Блок-ориентированное устройство:

информация пишется и считывается блоками. В частности, информация с ЖД считывается в оперативную память (ОП) блоками (секторами, кластерами). Байт-

ориентированное устройство: информация пишется и считывается посимвольно (побайтово).

Каталог - это файл, содержащий системную информацию о файлах, его

составляющих. В записи каталога содержится:

а) имя файла, тип, дата / время создания, размер файла, адрес начала размещения на диске, атрибуты (ФС типа fat);

б) номер индексного дескриптора, имя файла (ФС типа ext).

Каталоги могут образовывать иерархическую структуру за счет того, что каталог более низкого уровня может входить в каталог более высокого уровня.

Иерархия каталогов может быть деревом или сетью.

Каталоги образуют дерево, если файлу разрешено входить только в один каталог (MsDos, Windows), и сеть (Unix, Linux) - если файл может входить сразу в несколько каталогов (что возможно за счет создания ссылок на файл, команда ln).

II. Каталоги, файловые таблицы и др. - совокупность информационных структур, которые использует

подсистема ОС для управления файлами.

Для изучения информационных структур рассмотрим логическую организацию диска.

Для организации логического диска каждая ОС разделяет его на две части: системную область; область данных.

На рисунке 2 представлена логическая организация дискового пространства при использовании файловой системы типа FAT.

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

Структура логического диска

Рисунок 2 - Структура логического раздела диска (ФС типа FAT)

В системной области находятся:

Загрузочная запись - начальная область логического диска, содержащая небольшую программу,

инициализирующую процесс загрузки ОС. Содержит блок параметров диска (DPB -Disk Parameter Block) и системный загрузчик (SB - System Bootstrap). Загрузочная запись системного диска называется главной загрузочной записью -Master Boot Record.

Таблица размещения файлов - (см. рисунок 4).

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

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

На рисунке 3 представлена структура логического раздела диска при

Системная

Загрузочная

Поясним это рассуждение.

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

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

Непрерывное размещение -простейший вариант физической

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

использовании ФС типа ext.

В системной области находятся:

Загрузочная запись - аналогично вышерассмотренному.

Супер-блок - содержит информацию об установленной ФС.

i-узлы - область содержит дескрипторы файлов: информацию о владельце файла, код доступа, адресное поле месторасположения файла на диске и др.

Область данных - аналогично вышерассмотренному.

В первом случае (см. рисунок 2) размер корневого каталога ограничен системной областью.

Во втором случае (см. рисунок 3) - нет.

В первом случае адреса файлом образуют связанную списковую структуру.

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

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

бласть

Область данных

)-блок i-узлы

запись

Рисунок 3 - Структура логического раздела диска (ФС типа ext)

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

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

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

Популярным способом,

используемым, например, в файловой системе FAT является использование связанного списка индексов. С каждым блоком связывается некоторый элемент -индекс. Индексы располагаются в отдельной области. Если некоторый блок распределен некоторому файлу, то индекс этого блока содержит номер следующего блока данного файла. Пример организации FAT представлен на рисунке 4.

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

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

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

Адрес кластера диска (последовательная нумерация всех кластеров диска) Адрес кластера диска (адрес продолжения размещения файла на диске) Пояснение

0 x занято

1 x занято

2 x занято

3 5 файл 1

4 6 файл 2

5 7 файл 1

6 8 файл 2

7 end файл 1

8 end файл 2

Рисунок 4 - Пример размещения информации в FAT

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

Например. Для хранения адреса файла выделено 13 полей. Если размер файла меньше или равен 10 блокам, то адреса этих блоков непосредственно перечислены в первых десяти полях адреса. Если размер файла больше 10 блоков, то следующее 11 -е поле содержит адрес блока, в котором могут быть расположены еще 1024 номеров следующих блоков файла. Если файл больше, чем 10+1024 блоков, то используется 12-е поле, в котором находится номер блока, содержащего 1024

номеров блоков, которые содержат по 1024 номеров блоков данного файла. И, наконец, если файл больше, чем: 10 + 1024 + 1024 * 1024, то используется последнее 13-е поле для тройной косвенной адресации, что позволяет задать адрес файла, имеющего размер максимум: 10 + 1024 + 1024 * 1024 + 1024 * 1024 * 1024.

Современные ФС Unix-систем используют более, чем 1024 адресов и не 13 полей, а 15-ть и больше.

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

III. Наборы библиотек,

обеспечивающих работоспособность

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

системных вызовов для работы с файлами, например (таблица 1):

Таблица 1 -Н екоторые системные вызовы работы с файлами

Название Пояснение Формат функции

1 2 3

Системный вызов ореn Системный вызов open открывает файл с именем name для чтения и/или записи. Режим открытия файла определяется значением параметра flags: 0_RDONLY -открыть только для чтения. 0 WRONLY - открыть только для записи. 0 RDWR - открыть для чтения и записи. 0 APPEND - открыть для дозаписи. 0 СЯЕАТ - создать файл, если он не существует. 0_TRUNC - сократить размер файла и др. В случае успешного завершения вызова Ореп, возвращается дескриптор открытого файла, иначе -значение - 1 и в переменную еггпо записывается код ошибки. char *name; int flags, mode; ... open (name, flags, mode)

Системный вызов сrеаt Функция сгеа! создает новый (или подготавливает к повторной записи уже существующий) файл с именем name. Если файл еще не существует, значение параметра mode используется для формирования режимов доступа создаваемого файла, при этом учитывается значение маски режимов процесса. При неудачном завершении операция сгеа! возвращает значение - 1, в остальных случаях возвращается дескриптор открытого файла (целое положительное число). ^ar *name; int mode;... CTeat (name,mode)

Системный вызов read Системный вызов read обеспечивает считывание nbytes данных в массив buf из файла с дескриптором fd. При успешном завершении вызова возвращается число считанных байтов, в случае ошибки - значение -1, при достижении конца файла в процессе чтения - число 0. char *buf; int fd, nbytes; ... read (fd, buf, nbytes)

Системный вызов write Системный вызов write записывает nbytes данных из массива buf в файл с дескриптором fd. При успешном завершении вызова возвращается число записанных байтов, в случае ошибки - значение -1. char *buf; int fd, nbytes; ... write (fd, buf, nbytes)

Системный вызов dose Системный вызов с^е удаляет дескриптор fd из таблицы дескрипторов открытых файлов процесса. Если удаленный дескриптор был последним, ссылающимся на данный файл, то весь контекст работы с файлом теряется. int fd; 8ns = с^е (fd)

Системный вызов Системный вызов ^еек изменяет значение указателя позиции чтения/записи дескриптора fd следующим #define L_SET 0 /*установка*/

Iseek образом: # define L_INCR 1

если значение параметра whence равно L_SET, то /*смещение */

указателю присваивается значение параметра; #define L_XTND 2

если значение параметра whence равно LJNCR, значение /*увеличение размера

указателя увеличивается на значение offset; файла*/

если значение параметра whence равно L XTND, то int fd, whence;

указателю присваивается значение (offset + fsize), где long offset; ...

fsize - размер файла. long lseek

При возникновении ошибки возвращается значение -1 (fd, offset, whence)

и код ошибки в переменной еггпо.

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

#include <sys/file.h>

##include <stdio.h>

main(argc, argv) {

int argc; char *argv[];

int fd1, fd2;

int nbytes, mode;

char buf[BUFSIZE];

if (argc < 3) {fprintf (stderr, "%s:

Неправильное количество параметров^", argv[0]); exit(1); }

/* Открываем первый файл для чтения */ if (fd1 = open(argv[1], 0_RDONLY) < 0) {fprintf (stderr, "Не могу открыть файл %s \ n", argv[1]); exit (1); }

/* Создаем новый файл для записи */ if (fd2 = open(argv[2], 0_WRONLY | O_CREAT, mode) < 0)

{fprintf (stderr, "Не могу создать файл %s \ n", argv[2]); exit (1); }

/*Считываем BUFSIZE байт в массив buf */

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

Далее рассмотрим, как

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

В некоторых системах

пользователи могут быть разделены на отдельные категории. Для всех пользователей одной категории определяются единые права доступа. Например, в ОС семейства UNIX устанавливается код доступа к файлу, который позволяет защитить его от несанкционированного доступа.

Просмотреть права доступа к файлу можно командой ls с ключом l.

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

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

r w x r - -r - -

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

существенную защиту данных в ОС семейства Unix, возможность

while(nbytes =

read(fd1, buf, BUFSIZE) < 0) { /* Записываем во второй файл из массива

buf nbytes байт */ if (write(fd2, buf, nbytes) < 0) { fprintf (stderr,

"Ошибка записи \ n"); break; }

}

if(nbytes < 0)

fprintf (stderr, "Ошибка чтения \ n"); /* Закрываем оба файла */ close (fd1); close (fd2);

exit(0); }

Использование API обеспечивает

ограничения несанкционированного доступа. В таблице 2 приведены коды соответствия, определяющие полномочия на доступ к файлу.

Таблица 2 - Коды соответствия, определяющие полномочия на доступ к файлу

Двоичный код Восьмеричный код Код доступа

0 000 —

1 001 —x

2 010 -w-

3 011 -wx

4 100 r--

5 101 r-x

6 110 rw-

7 111 rwx

Права можно изменять. Для этого используется программа сЬтоё. Спецификация команды: сЬтоё <код> <файлы> Пример использования команды сЬтоё: сЬтоё 777 myfile.com

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

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

Спецификация команды:

сЬтоё <изменения> <файлы> Изменения можно представить следующей формулой: W ор Б, где

W принимает значения: и - владелец; g - группа; а - все;

о - остальные. ор принимает значения: + - добавить; - - забрать; = - установить. Б принимает значения: г - чтение; w - редактирование; х - выполнение.

Например: сЬтоё и+х Ше1 - добавить владельцу право на выполнение этого файла.

сЬтоё u+w g-r Ше2 - добавить владельцу право на редактирование этого файла, у группы забрать права на чтение.

chmod a+rwx file3 - всем категориям пользователей разрешить все.

Заключение

Компоненты ФС, способы

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

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

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

иерархической каталоговой структуры, также существенно повышает уровень защиты данных.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Гордеев, А.В., Молчанов, А.Ю. Системное программное обеспечение: Учебник. -СПб.: Изд. BHV, 2008.

2. Олифер, В.Г., Олифер, Н.А. Корпоративные сети: Учебник. - СПб.: Изд. BHV,

2008.

3. Олифер, В.Г., Олифер, Н.А. Сетевые операционные системы: Учебное пособие. -СПб.: Изд. BHV, 2008.

4. Таненбаум, Э. Современные операционные системы. - СПб.: Питер, 2011.

5. Трубачев, Е.С. Вопросы обеспечения сетевой безопасности // Вестник Волжского университета им. В.Н. Татищева. Информатика. №2(19)2012. -Тольятти: Изд. ВУиТ, 2012.

6. Трубачева, С.И. Программирование на СИ: Учебное пособие. - Тольятти: Изд. ВУиТ, 2007.

7. Трубачева, С.И. Операционные системы: Учебное пособие. - Тольятти: Изд. ВУиТ, 2012.

i Надоели баннеры? Вы всегда можете отключить рекламу.