Организация каталога в виде графа без циклов — КиберПедия 

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

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

Организация каталога в виде графа без циклов

2023-01-01 21
Организация каталога в виде графа без циклов 0.00 из 5.00 0 оценок
Заказать работу

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

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

Древовидная структура запрещает такую форму разделения файлов и каталогов. Она возможна только при организации каталогов в виде ациклического графа. При этом один и тот же файл может находиться сразу в двух каталогах. Ациклический граф является обобщением дерева (см. рис. 13.5).

 

Рисунок 13.5 - Организация каталога в виде графа без циклов

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

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

Другой подход к реализации разделяемых файлов – дублирование всей информации о них в обоих каталогах (физическая или жесткая ссылка). Главная проблема – поддержание идентичности соответствующих строк в каталогах при изменении атрибутов файла.

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

Кроме того, проблемы возникнут и при удалении файлов. Когда следует освободить место, занимаемое разделяемым файлом? Если его удалить сразу, как только один из пользователей попытался это сделать, то могут возникнуть висячие ссылки (на несуществующие файлы), А это очень опасно.

В системах, в которых разделение реализуется символическими ссылками, ситуация в некотором смысле проще. Удаление ссылки не приводит к удалению файла, удаляется только ссылка. Если удаляется файл, на который имеются ссылки, то освобождается дисковое пространство, учетная запись в каталоге, а ссылки остаются. Их необходимо удалять, но это очень сложно, так как, чтобы их найти, требуется полный обход файловой системы. Альтернативный подход – оставлять ссылки до первого их использования. В момент, когда задана ссылка на несуществующий файл, можно принять решение об удалении ссылки. В ОС UNIX символические ссылки при удалении файла остаются, и их актуальность – проблема пользователя. Он должен удалять такие ссылки вручную.

Возможно применение и другого подхода к удалению – сохранять файл до тех пор, пока все ссылки не будут удалены. Для реализации этого подхода необходим некоторый механизм, определения последней удаляемой ссылки. Можно, например, поддерживать список ссылок на файл. Файл удаляется, когда список пуст. Проблемой для реализации является переменный и, возможно, большой размер этого списка. На практике достаточно не вести список ссылок, а лишь подсчитывать их число. В OC UNIX такой подход применяется для жестких ссылок. MS DOS механизм ссылок не поддерживает вообще.


Поделиться с друзьями:

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

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.009 с.