Физическая организация и адресация файла
Физическая организация файла – способ размещения файла на диске. Основными критериями эффективности физической организации файлов являются:
- скорость доступа к данным;
- объем адресной информации файла;
- степень фрагментированности дискового пространства;
- максимально возможный размер файла.
Непрерывное размещение – простейший вариант физической организации, при котором файлу предоставляется последовательность кластеров диска, образующих непрерывный участок дисковой памяти. Достоинство: высокая скорость доступа, так как затраты на поиск и считывание кластеров файла минимальны; минимальный объем адресной информации; неограниченный максимально возможный размер файла. Однако реализовать эту схему сложно из-за того, что заранее неизвестен размер файла. Еще более серьезной проблемой является фрагментация. Спустя некоторое время после создания файловой системы в результате выполнения многочисленных операций создания и удаления файлов пространство диска неминуемо превращается в «лоскутное одеяло», включающее большое число свободных областей небольшого размера.
Размещение файла в виде связанного списка кластеров. В начале каждого кластера содержится указатель на следующий кластер. В отличие от предыдущего способа, каждый кластер может быть присоединен к цепочке кластеров какого-либо файла, следовательно, фрагментация на уровне кластеров отсутствует. Файл может изменять свой размер во время своего существования, наращивая число кластеров. Недостатки – сложность реализации доступа к произвольному месту файла; количество данных файла, содержащихся в одном кластере, не равно степени двойки (одно слово израсходовано на номер следующего кластера), а многие программы читают данные кластерами, размер которых равен степени двойки.
Использование связанного списка индексов. Модификация предыдущего способа. Файлу также выделяется память в виде связанного списка кластеров. Номер первого кластера запоминается в записи каталога, где хранятся характеристики этого файла. Остальная адресная информация отделена от кластеров файла. С каждым кластером диска связывается некоторый элемент – индекс. Индексы располагаются в отдельной области диска – в MS-DOS это таблица FAT (File Allocation Table), занимающая один кластер. Когда память свободна, все индексы имеют нулевое значение. Если некоторый кластер N назначен некоторому файлу, то индекс этого кластера становится равным либо номеру М следующего кластера данного файла, либо принимает специальное значение, являющееся признаком того, что этот кластер является для файла последним. Индекс же предыдущего кластера файла принимает значение N, указывая на вновь назначенный кластер. При такой физической организации сохраняются все достоинства предыдущего способа: минимальность адресной информации, отсутствие фрагментации, отсутствие проблем при изменении размера. Дополнительные преимущества: 1) высокая скорость доступа (для доступа к произвольному кластеру файла не требуется последовательно считывать его кластеры, достаточно прочитать только секторы диска, содержащие таблицу индексов, отсчитать нужное количество кластеров файла по цепочке и определить номер нужного кластера). 2) Данные файла заполняют кластер целиком, а значит, имеют объем, равный степени двойки. Недостаток: Вся таблица должна постоянно находиться в ОП.
Перечисление номеров кластеров (или метод i-узлов), занимаемых этим файлом. Этот перечень и служит адресом файла. С каждым файлом связана структура данных i-узел, содержащая также атрибуты файла. Недостаток: длина адреса зависит от размера файла и для большого файла может составить значительную величину. Достоинства: высокая скорость доступа к произвольному кластеру файла, так как здесь применяется прямая адресация, которая исключает просмотр цепочки указателей при поиске адреса произвольного кластера файла; фрагментация на уровне кластеров отсутствует; каждый i-узел должен находиться в ОП только тогда, когда соответствующий ему файл открыт.
Модифицированный подход перечисления номеров кластеров используется в традиционных файловых системах ОС UNIX s5 и ufs и в наиболее распространенных файловых системах ОС Linux – ext2fs, ext3fs (последняя отличается от первой только наличием журналирования). Для сокращения объема адресной информации прямой способ адресации сочетается с косвенным.
В стандартной для UNIX ФС ufs используется следующая схема адресации кластеров файла (рис. 18.1). Для хранения адреса файла выделено 15 полей, каждое из которых состоит из 4 байт. Если размер файла меньше или равен 12 кластерам, то номера этих кластеров непосредственно перечисляются в первых двенадцати полях адреса.
Если размер файла превышает 12 кластеров, то следующее 13-е поле содержит адрес кластера, в котором могут быть расположены номера следующих кластеров файла. Если размер файла превышает 12+2048 = 2060 кластеров, то используется 14-е поле, в котором находится номер кластера, содержащего 2048 номеров кластеров, каждый из которых хранят 2048 номеров кластеров данных файла. Здесь применяется уже двойная косвенная адресация. И, наконец, если файл включает более 12+2048+2048 =4 196 364 кластеров, то используется последнее 15-е поле для тройной косвенной адресации.
Метод перечисления адресов кластеров файла задействован и в файловой системе NTFS, используемой в ОС Windows NT/2000. Здесь он дополнен достаточно естественным приемом, сокращающим объем адресной информации: адресуются не кластеры файла, а непрерывные области, состоящие из смежных кластеров диска. Каждая такая область, называемая группой (в ext2fs), или экстентом (extent), описывается с помощью двух чисел: начального номера кластера и количества кластеров в отрезке. Так как для сокращения времени операции обмена ОС старается разместить файл в последовательных кластерах диска, то в большинстве случаев количество последовательных областей файла будет меньше количества кластеров файла и объем служебной адресной информации в NTFS сокращается по сравнению со схемой адресации файловых систем ufs/s5.
Вопросы для самоконтроля
1. Что такое физическая организация файловой системы?
2. Какой типичный размер сектора диска?
3. В чем разница между физическим форматированием диска и логическим форматированием?
4. Что такое физическая организация файла?
5. Что представляет собой i-узел?
6. Перечислите и кратко опишите методы размещения файлов.
7. Какие преимущества и недостатки у метода непрерывного размещения файла?
8. Используется ли в современных операционных системах метод непрерывного размещения файла?