Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Использование хэш-таблицы для ускорения поиска файла.




Алгоритм записи файла:

· Создается хэш-таблица в начале каталога, с размером n (n записей).

· Для каждого имени файла применяется хэш-функция, такая, чтобы при хэшировании получалось число от 0 до n-1.

· Исследуется элемент таблицы соответствующий хэш-коду.

· Если элемент не используется, туда помещается указатель на описатель файла (описатели размещены вслед за хэш-таблицей).

· Если используется, то создается связный список, объединяющие все описатели файлов с одинаковым хэш-кодом.

Алгоритм поиска файла:

· Имя файла хэшируется

· По хэш-коду определяется элемент таблицы

· Затем проверяются все описатели файла из связного списка и сравниваются с искомым именем файла

· Если имени файла в связном списке нет, это значит, что файла нет в каталоге.

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

Использование кэширования результатов поиска файлов для ускорения поиска файла.

Алгоритм поиска файла:

· Проверяется, нет ли имени файла в кэше

· Если нет, то ищется в каталоге, если есть, то берется из кэша

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

Совместно используемые файлы

Иногда нужно чтобы файл присутствовал в разных каталогах.

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

А - совместно используемый файл.

Такая файловая система называется ориентированный ациклический граф (DAG, Directed Acyclic Graph).

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

Есть два решения этой проблемы:

1. Использование i-узлов, в каталогах хранится только указатель на i-узел. Такие ссылки называются жесткими ссылками.

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

 

 

Жесткие ссылки

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

Поэтому в этом случае при удалении файла i-узел лучше не удалять.

Файл будет удален только после того, как счетчик будет равен 0.

Иллюстрация проблемы, которая может возникнуть

Символьные ссылки

Удаление файла не влияет на ссылку, просто по ссылке будет не возможно найти файл (путь будет не верен).

Удаление ссылки тоже никак не скажется на файле.

Но возникают накладные расходы, чтобы получить доступ к i-узлу, должны быть проделаны следующие шаги:

· Прочитать файл-ссылку (содержащий путь)

· Пройти по всему этому путь, открывая каталог за каталогом

Организация дискового пространства

Размер блока

Если принято решение хранить файл в блоках, то возникает вопрос о размере этих блоков.

Есть две крайности:

· Большие блоки - например, 1Мбайт, то файл даже 1 байт займет целый блок в 1Мбайт.

· Маленькие блоки - чтение файла состоящего из большого числа блоков будет медленным.

Скорости чтения/записи и эффективность использования диска,
в системе с файла одинакового размера 2 Кбайта.

В UNIX системах размер блока фиксирован, и, как правило, равен от 1Кбайта до 4Кбайт.

В MS-DOS размер блока может быть от 512 до 32 Кбайт в зависимости от размера диска, поэтому FAT16 использовать на дисках больше 500 Мбайт не эффективно.

В NTFS размер блока фиксирован (от 512байт до 64 Кбайт), как правило, равен примерно 2Кбайтам (от 512байт до 64 Кбайт).

Учет свободных блоков

Основные два способа учета свободных блоков:

· Связной список блоков диска, в каждом блоке содержится номеров свободных блоков столько, сколько вмешается в блок. Часто для списка резервируется нужное число блоков в начале диска.
Недостатки:
- Требует больше места на диске, если номер блока 32-разрядный, требуется 32бита для номера
- Излишние операции ввода/вывода, т.к. в памяти не хранятся все блоки, а, например, только один блок

· Битовый массив (бит-карта) - для каждого блока требуется один бит.

Основные два способа учета свободных блоков

Дисковые квоты

Чтобы ограничить пользователя, существует механизм квот.

Два вида лимитов:

· Жесткие - превышены быть не могут

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

Наиболее распространенные квоты:

· Объем использования диска

· Количество файлов

· Количество открытых файлов

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...