Одной из основных функций операционной системы является обеспечение хранения и доступа к информации на дисковых и ленточных накопителях. Единица хранения информации, имеющая к тому же, уникальное имя, получила название файл. Первоначальный смысл слова «файл» - картотека. Файловая система обеспечивает хранение, учёт и систематизацию информации (программ и данных) в виде файлов, упорядоченное управление этими объектами.
На операционные системы персональных компьютеров наложила глубокий отпечаток концепция файловой системы, лежащей в основе операционной системы UNIX, созданной в начале 70-х годов ХХ века. В OC UNIX подсистема ввода и вывода унифицирует способ доступа как к файлам, так и к периферийным устройствам. Файловые системы операционных систем создают для пользователей некоторое виртуальное представление внешних запоминающих устройств ЭВМ, позволяя работать с ними не на низком уровне команд управления физическими устройствами (например, обращаться к диску с учётом особенностей его адресации), а на высоком уровне наборов и структур данных. Файловая система скрывает от пользователей картину реального расположения информации во внешней памяти, обеспечивает независимость программ от особенностей конкретной конфигурации ЭВМ, или как ещё говорят, логический уровень работы с файлами. Файловая система также обеспечивает стандартные реакции на ошибки, возникающие при обмене данными. Пользователь, работая в контексте решения прикладной или программистской задачи, обычно использует файлы как поименованные совокупности данных, хранимые во внешней памяти и имеющие определённую структуру. При работе с файлами пользователю предоставляются средства для создания новых файлов, операции по считыванию и записи информации, не затрагивающие конкретные вопросы работы канала по пересылке данных, управлению внешними устройствами.
Роль учётного механизма, позволяющего обслуживать десятки и сотни файлов, в файловой системе очень важна. Общим приёмом является сведение учётной информации о расположении файлов на магнитном диске в одно место – его каталог (директории). Каталог представляет собой список элементов, каждый из которых описывает характеристики конкретного файла используемые для организации доступа к этому файлу: имя файла, его тип, местоположение на диске и длину файла. В простых операционных системах местоположение единственного каталога на магнитном диске (дискете) и его размер фиксированы. В более сложных системах каталог может находиться в любом месте диска, но на него должна иметься ссылка в так называемой метке тома, находящейся в фиксированном месте, формируемая при инициализации диска. Более того, каталогов может быть большое число и они могут быть логически связаны в какие-либо информационные структуры. Так, наиболее развитая многоуровневая файловая система UNIX поддерживает иерархическую (древовидную) систему каталогов.
Каждый пользователь может работать в составе этой структуры со своей системой каталогов (со своим поддеревом). Полное имя в данной структуре задаёт путь переходов между каталогами в логической структуре каталогов. Файл обладает уникальным идентификатором (именем), обеспечивающем доступ к файлу. Идентификатор включает в себя собственно имя – буквенно-цифровое обозначение файла, которое может содержать специальные символы (подчёркивание, дефис и т.д.), и расширение имени файла (обычно отделяемое от имени файла точкой). Если имена создаваемых файлов пользователь может задавать произвольно, то в использовании расширений следует придерживаться традиции, согласно которой расширение указывает на тип файла, характер его содержимого. Например, в операционной системе Windows (по-наследству от MS-DOS) файлы с расширениями:
.com
.exe – исполняемые
.bat
.txt
.doc – текстовые
.dbf – файл базы данных
.htm – файл, содержащий веб-страницу
.jpg
.gif– файлы для графических изображений
.bmp
.wav – файлы, содержащие звук
.mp3
.avi – видео файлы
.mpg
Известны десятки стандартных расширений, используемых при работе с различными програмными системами.
В различных ОС существуют определённые ограчения на длину имени и расширения имени файла. Так, в MS-DOS длина имени файла не должна превышать восьми символов, а расширение – трёх. В OS UNIX и MS-Windows ограничения значительно менее жёсткие, в частности в MS-Windows допустимо использование русских букв в именах файлов, как строчных, так и прописных.
Для упорядочения файлов, облегчения доступа к ним, файловые системы обеспечивают организацию файлов в директории или каталоги (так это называется в Unix, MS-DOS) или папки (такое название принято в Windows). Директории образуют деревья (древообразные графовые структуры), начинающиеся с корневого директория. По математической традиции корень дерева размещается наверху.
Имена директориев начиная от корневого, образующие путь к файлу, отделяемые при записи друг друга косой чертой (\ в DOS и Windows, / в UNIX), также как и обозначение диска, относятся к идентификатору файла. Например, в Windows
d:\документы\факультет\5группа\список.doc
есть файл с именем «список» и расширением doc, указывающим на то, что это текст документа (в формате текстового процессора Word), полный путь к которому:
d: - диск d;
\документы\факультет\5группа – это структура вложенных директориев, в самом внутреннем из которых находится необходимый файл список.doc.
Каждый каталог имеет собственное имя и является узлом на дереве каталогов. Продвижение по дереву при поиске некоторого каталога или файла возможно как вниз по дереву от текущего узла, так и вверх в направлении к корню. В процессе работы могут создаваться новые каталоги и вписываться в требуемое место дерева каталогов.
Файловая система ОС обеспечивает основные операции над файлами: их открытие, копирование, перемещение, объединение, удаление, закрытие. Вторую группу представляют операции чтения и записи составных элементов файла. Особая группа операций обеспечивает управление правами доступа к файлам, поиска файлов и т.д.
Многопользовательские файловые системы обеспечивают также защиту и разделение данных, хранящихся в файлах, при работе с ними разных пользователей. Так, например, после входа в системы Windows (NT,2000 и XP), а так же UNIX (в которых вход производится по паролю) пользователь получает доступ к ряду системных, групповых и личных каталогов и файлов. Каждый файл и каталог имеет владельца. Обычно это пользователь, создавший их. Владелец может затем назначить тип защиты файла от трёх категорий пользователей:
· Владельца (самого себя);
· Представителей той же группы пользователей, что и владелец (понятие группы полезно при совместной работе над какими-либо проектами);
· Всех остальных пользователей системы.
Каждый файл (каталог) имеет три вида расширения на доступ:
· Полностью не доступен;
· Открыт для чтения – можно просматривать содержимое файла(каталога);
· Открыт для изменения (записи) – можно менять содержимое файла (создавать или удалять файлы в каталоге).
Файловая
система (ФС) является важной частью любой операционной системы, которая
отвечает за организацию хранения и доступа к информации на каких-либо
носителях. Рассмотрим в качестве примера файловые системы для наиболее
распространенных в наше время носителей информации – магнитных дисков. Как
известно, информация на жестком диске хранится в секторах (обычно 512 байт) и
само устройство может выполнять лишь команды считать/записать информацию в
определенный сектор на диске.
Рассмотрим более
подробно структуру жесткого диска. Базовой единицей жесткого диска является раздел, создаваемый во время разметки
жесткого диска. Каждый раздел содержит один том, обслуживаемый какой-либо
файловой системой и имеющий таблицу оглавления файлов - корневой каталог.
Некоторые операционные системы поддерживают создание томов, охватывающих
несколько разделов. Жесткий диск может содержать до четырех основных разделов.
Это ограничение связано с характером организации данных на жестких дисках
IBM-совместимых компьютеров. Многие операционные системы позволяют создавать,
так называемый, расширенный (extended)
раздел, который по аналогии с разделами может разбиваться на несколько
логических дисков.
В первом физическом
секторе жесткого диска располагается головная запись загрузки и таблица
разделов (табл. 1). Головная запись загрузки (master
boot record, MBR) - первая часть данных на жестком диске. Она
зарезервирована для программы начальной загрузки BIOS (ROM Bootstrap routine),
которая при загрузке с жесткого диска считывает и загружает в память первый
физический сектор на активном разделе диска, называемый загрузочным
сектором (Boot Sector). Каждая запись в таблице разделов
(partition table) содержит начальную позицию и размер раздела на жестком диске,
а также информацию о том, первый сектор какого раздела содержит загрузочный
сектор.
Размер (байт) |
Описание |
446 |
Загрузочная запись (MBR) |
16 |
Запись 1 раздела |
16 |
Запись 2 раздела |
16 |
Запись 3 раздела |
16 |
Запись 4 раздела |
2 |
Сигнатура 055AAh |
Табл. 1. Таблица
деления диска
В широком смысле понятие
"файловая система" включает:
совокупность всех
файлов на диске,
наборы служебных
структур данных, используемых для управления файлами, такие как, например, каталоги
файлов, дескрипторы файлов, таблицы распределения свободного и занятого
пространства на диске,
комплекс системных
программных средств, реализующих управление файлами, в частности операции по
созданию, уничтожению, чтению, записи, именованию файлов, установке атрибутов и
уровней доступа, поиску и т.д.
Различие между файловыми
системами заключается, в основном, в способах распределения пространства между
файлами на диске и организации на диске служебных областей.
Современные операционные
системы стремятся обеспечить пользователя возможностью работать одновременно с
несколькими файловыми системами. В этом случае ФС рассматривается как часть
подсистемы ввода-вывода. В большинстве операционных систем (Windows 98, 2000,
XP, OS/2) реализуется механизм переключения файловых систем (File System
Switch, FSS), позволяющий поддерживать различные типы ФС. В соответствии с этим
подходом информация о файловых системах и файлах разбивается на две части –
зависимую от ФС и не зависимую. FSS обеспечивает интерфейс между ядром и
файловой системой, транслируя запросы ядра в операции, зависящие от типа
файловой системы. При этом ядро имеет представление только о независимой части
ФС.
Файловая система
представляет многоуровневую структуру, на верхнем уровне которой располагается
так называемый переключатель файловых систем (в Windows, такой переключатель
называется устанавливаемым диспетчером файловой системы - installable
filesystem manager, IFS). Он обеспечивает интерфейс между приложением и
конкретной файловой системой, к которой обращается приложение. Переключатель
файловых систем преобразует запросы к файлам в формат, воспринимаемый следующим
уровнем - уровнем драйверов файловых систем. Для выполнения своих функций
драйверы файловых систем обращаются к драйверам конкретных устройств хранения
информации.
Файловая система FAT
(File Allocation Table) была разработана Биллом Гейтсом и Марком МакДональдом в
1977 году и первоначально использовалась в операционной системе 86-DOS. Чтобы
добиться переносимости программ из операционной системы CP/M в 86-DOS, в ней
были сохранены ранее принятые ограничения на имена файлов. В дальнейшем 86-DOS
была приобретена Microsoft и стала основой для ОС MS-DOS 1.0, выпущенной в
августе 1981 года. FAT была предназначена для работы с гибкими дисками размером
менее 1 Мбайта, и вначале не предусматривала поддержки жестких дисков. В
настоящее время FAT поддерживает файлы и разделы размеров до 2 Гбайт.
В FAT применяются
следующие соглашения по именам файлов:
имя должно начинаться
с буквы или цифры и может содержать любой символ ASCII, за исключением пробела
и символов "/\[]:;|=,^*?
Длина имени не
превышает 8 символов, за ним следует точка и необязательное расширение длиной
до 3 символов.
регистр символов в
именах файлов не различается и не сохраняется.
Структура раздела FAT
изображена на рисунке 2. В блоке параметров BIOS содержится необходимая BIOS
информация о физических характеристиках жесткого диска. Файловая система FAT не
может контролировать отдельно каждый сектор, поэтому она объединяет смежные
сектора в кластеры (clusters). Таким образом,
уменьшается общее количество единиц хранения, за которыми должна следить
файловая система. Размер кластера в FAT является степенью двойки и определяется
размером тома при форматировании диска (табл. 2). Кластер представляет собой
минимальное пространство, которое может занимать файл. Это приводит к тому, что
часть пространства диска расходуется впустую. В состав операционной системы
входят различные утилиты (DoubleSpace, DriveSpace), предназначенные для
уплотнения данных на диске.
Загрузочный сектор Блок параметров BIOS (BPB) |
FAT |
FAT |
Корневой каталог |
Область файлов |
Рис. 2
Свое название FAT
получила от одноименной таблицы размещения файлов. В таблице размещения файлов
хранится информация о кластерах логического диска. Каждому кластеру в FAT
соответствует отдельная запись, которая показывает, свободен ли он, занят ли
данными файла, или помечен как сбойный (испорченный). Если кластер занят под
файл, то в соответствующей записи в таблице размещения файлов указывается адрес
кластера, содержащего следующую часть файла. Из-за этого FAT называют файловой
системой со связанными списками. Оригинальная версия FAT, разработанная для DOS
1.00, использовала 12-битную таблицу размещения файлов и поддерживала разделы
объемом до 16 Мб (в DOS можно создать не более двух разделов FAT). Для
поддержки жестких дисков размером более 32 Мб разрядность FAT была увеличена до
16 бит, а размер кластера - до 64 секторов (32 Кб). Так как каждому кластеру
может быть присвоен уникальный 16-разрядный номер, то FAT поддерживает
максимально 216, или 65536 кластеров на одном томе.
Размер раздела |
Размер кластера |
Тип FAT |
< 16 Мб |
4 Кб |
FAT12 |
16 Мб – 127 Мб |
2 Кб |
FAT16 |
128 Мб – 255 Мб |
4 Кб |
FAT16 |
256 Мб – 511 Мб |
8 Кб |
FAT16 |
512 Мб – 1023 Мб |
16 Кб |
FAT16 |
1 Гб – 2 Гб |
32 Кб |
FAT16 |
Табл. 2
Поскольку загрузочная
запись слишком мала для хранения алгоритма поиска системных файлов на диске, то
системные файлы должны находиться в определенном месте, чтобы загрузочная
запись могла их найти. Фиксированное положение системных файлов в начале
области данных накладывает жесткое ограничение на размеры корневого каталога и
таблицы размещения файлов. Вследствие этого общее число файлов и подкаталогов в
корневом каталоге на диске FAT ограничено 512.
Каждому файлу и подкаталогу
в FAT соответствует 32-байтный элемент каталога (directory entry), содержащий
имя файла, его атрибуты (архивный, скрытый, системный и “только для чтения”),
дату и время создания (или внесения в него последних изменений), а также прочую
информацию (табл. 3).
Содержание |
Размер (байт) |
Имя файла |
8 |
Расширение |
3 |
Байт атрибутов |
1 |
Зарезервировано |
10 |
Время |
2 |
Дата |
2 |
Номер начального
кластера с данными |
2 |
Размер файла |
4 |
Табл. 3. Элемент
каталога
Файловая система FAT
всегда заполняет свободное место на диске последовательно от начала к концу.
При создании нового файла или увеличении уже существующего она ищет самый
первый свободный кластер в таблице размещения файлов. Если в процессе работы
одни файлы были удалены, а другие изменились в размере, то появляющиеся в
результате пустые кластеры будут рассеяны по диску. Если кластеры, содержащие
данные файла, расположены не подряд, то файл оказывается фрагментированным. Сильно фрагментированные файлы значительно
снижают эффективность работы, так как головки чтения/записи при поиске
очередной записи файла должны будут перемещаться от одной области диска к
другой. В состав операционных систем, поддерживающих FAT, обычно входят
специальные утилиты дефрагментации диска, предназначенные повысить производительность
файловых операций.
Еще один недостаток FAT
заключается в том, что ее производительность сильно зависит от количества
файлов, хранящихся в одном каталоге. При большом количестве файлов (около
тысячи), выполнение операции считывания списка файлов в каталоге может занять
несколько минут. Это обусловлено тем, что в FAT каталог имеет линейную
неупорядоченную структуру, и имена файлов в каталогах идут в порядке их
создания. В результате, чем больше в каталоге записей, тем медленнее работают программы,
так как при поиске файла требуется просмотреть последовательно все записи в
каталоге.
Поскольку FAT изначально
проектировалась для однопользовательской операционной системы DOS, то она не
предусматривает хранения такой информации, как сведения о владельце или
полномочия доступа к файлу/каталогу.
FAT является наиболее
распространенной файловой системой и ее в той или иной степени поддерживают
большинство современных ОС. Благодаря своей универсальности FAT может
применяться на томах, с которыми работают разные операционные системы.
В настоящее время
появляются новые поколения жестких дисков, имеющие все бoльшие объемы дискового
пространства, в то время как возможности FAT уже достигли своего предела (FAT
может поддерживать разделы размером до 2 Гб).
FAT32 -
усовершенствованная версия файловой системы VFAT, поддерживающая жесткие диски
объемом до 2 терабайт. Впервые файловая система FAT32 была включена в состав ОС
Windows 95 OSR 2. В FAT32 были расширены атрибуты файлов,
позволяющие теперь хранить время и дату создания, модификации и последнего
доступа к файлу или каталогу.
Из-за требования
совместимости с ранее созданными программами структура FAT32 содержит
минимальные изменения. Главные отличия от предыдущих версий FAT состоят в
следующем. Блок начальной загрузки на разделах с FAT32 был увеличен до 2
секторов и включает в себя резервную копию загрузочного сектора, что позволяет
системе быть более устойчивой к возможным сбоям на диске. Объем, занимаемый
таблицей размещения файлов, увеличился, поскольку теперь каждая запись в ней
занимает 32 байта, и общее число кластеров на разделе FAT32 больше, чем на
разделах FAT. Соответственно, выросло и количество зарезервированных секторов.
Необходимо отметить, что
официально Microsoft не поддерживает разделы FAT32 объемом менее 512 Мб. Однако
в версии утилиты FDISK, поставляемой вместе с OSR2, имеется недокументированный
флаг /FPRMT, позволяющий отформатировать под FAT32 разделы объемом менее 512
Мб. Microsoft также не поддерживает FAT32-разделы с размером кластера меньшим,
чем 4 Кб. Размеры кластера, предлагаемые по умолчанию при форматировании
FAT32 дисков, приведены в таблице 5. Параметр /Z утилиты FORMAT позволяет
самостоятельно установить размер кластера на разделе FAT32: FORMAT <диск>
/Z:n, где n – число секторов в кластере.
Размер раздела |
Размер кластера |
< 260 Мб |
512 байт |
260 Мб – 8 Гб |
4 Кб |
8 Гб – 16 Гб |
8 Кб |
16 Гб – 32 Гб |
16 Кб |
> 32 Гб |
32 Кб |
Табл. 5
Корневой каталог в FAT32
больше не располагается в определенном месте, вместо этого в блоке BPB хранится
указатель на начальный кластер корневого каталога. В результате снимается ранее
существовавшее ограничение на число записей в корневом каталоге.
Кроме того, для учета
свободных кластеров, в зарезервированной области на разделе FAT32 имеется
сектор, содержащий число свободных кластеров и номер самого последнего
использованного кластера. Это позволяет системе при выделении следующего
кластера не перечитывать заново всю таблицу размещения файла.
В данный момент FAT32 поддерживается в следующих ОС: Windows 95 OSR2, Windows 98, Windows ME, Windows 2000 и Windows XP.
Развитие файловых систем
персональных компьютеров определялось двумя факторами - появлением новых
стандартов на носители информации и ростом требований к характеристикам
файловой системы со стороны прикладных программ (разграничение уровней доступа,
поддержка длинных имен файлов в формате UNICODE). Первоначально, для файловых
систем первостепенное значение имело увеличение скорости доступа к данным и
минимизация объема хранимой служебной информации. Впоследствии с появлением
более быстрых жестких дисков и увеличением их объемов, на первый план вышло
требование надежности хранения информации, которое привело к необходимости
избыточного хранения данных.
Эволюция файловой
системы была напрямую связана с развитием технологий реляционных баз данных.
Файловая система использовала последние достижения, разработанные для
применения в СУБД: механизмы транзакций, защиты данных, систему
самовосстановления в результате сбоя.
Развитие файловых систем
привело к изменению самого понятия "файл" от первоначального
толкования как упорядоченная последовательность логических записей, до понятия
файла, как объекта, имеющего набор характеризующих его атрибутов (включая имя
файла, его псевдоним, время создания и собственно данные),