Выделение пространства для файла

Разглядим метод выделения места для файлов на последующем примере. Будем считать, что блок файловой системы поделен на 4 куска. Пускай в системе хранятся файлы petya.txt и vasya.txt (Рис. 119), для которых в соответственных индексных дескрипторах хранится информация об их размерах и номеров блоков, принадлежащих файлам, в виде стартовых фрагментов. Соответственно Выделение пространства для файла, файл petya.txt размещен в нулевом блоке (стартовый кусок № 00), первом (стартовый кусок № 04) и второго блока (начинающегося с 08 куска). Если учитывать длину файла (5120 б), то выходит, что во 2-м блоке этот файл занимает 08 и 09 куски. Файл vasya.txt размещен в 3-ем блоке (стартовый кусок № 12), четвертом (стартовый кусок № 16) и втором (стартовый Выделение пространства для файла кусок № 10), при всем этом во 2-м блоке файлу принадлежит только 10 кусок (т.к. размер файла 4608 б). Итак, разумеется, что данная система нарушает концепцию файловой системы ветки System V, в какой каждый блок мог принадлежать только одному файлу; в FFS последний блок можно делить меж разными файлами.

Рис. 119. Выделение места для Выделение пространства для файла файла.

Если, к примеру, размер файла petya.txt возрастает на столько, что конец файла не помещается в 08 и 09 кусках, то система начинает поиск блока с 3-мя попорядку идущими свободными кусками. (Соответственно, если размер файл возрастает на огромную величину, то поначалу для него отводятся на сто процентов свободные блоки, в каких файл Выделение пространства для файла занимает все куски, а для размещения последних фрагментов ищется блок с подходящим числом попорядку идущих свободных фрагментов.) Когда система находит таковой блок, то происходит перемещение последних фрагментов файла petya.txt в этот блок.

Структура каталога FFS

Каталог файловой системы FFS позволяет использовать названия файлов, длиной до 255 знаков (Рис. 120). Каталог состоит Выделение пространства для файла из записей переменной длины, состоящих из блоков, размером в 4[R33] б. Исходная запись содержит номер индексного дескриптора, размер записи (т.е. ссылка на последний элемент записи) и длина названии файла, после чего следует дополненное до кратности в 4 б название файла (наибольшая длина названии файла — 255 знаков). Работа системы Выделение пространства для файла организована последующим образом: если происходит удаление файла из каталога, то освобождающееся место, занимаемое ранее записью данного файла, присоединяется к предшествующей записи. Это значит, что размер предшествующей записи возрастает, но длина хранимого в ней имени не изменяется (т.е. остается реальной). Удаление первой записи выражается в обнулении номера индексного дескриптора в Выделение пространства для файла этой записи. Такая модель позволяет при удалении файла фактически не хлопотать о высвобождаемом пространстве снутри файла-каталога: получаемые при удалении «дыры» ликвидируются не счет той же компрессии, а за счет очевидного «склеивания» с предшествующей записью.

Рис. 120. Структура каталога FFS BSD.

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


vidi-bazalnoj-stimulyacii.html
vidi-bezrabotici-estestvennij-uroven-bezrabotici.html
vidi-boevih-graficheskih-dokumentov-i-ih-naznachenie-10-min.html