Лекции.Орг


Поиск:




Логическая организация директорий




Структуру директорий рекомендуется организовывать логически, т.е. в соответствии с логикой программы, хранения и использования данных. У такой организации директорий – две основные цели: эффективность (обеспечить быстрый поиск файла) и именование (обеспечить удобство для пользователей, например, в случае, если несколько пользователей называют два разных файла в своих директориях одним и тем же именем, в соответствии с его назначением). Директории позволяют осуществить логическую группировку файлов по их назначению, свойствам и т.д. (например, почта, документы, Java -код, игры).

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

Рис. 4. Одноуровневая организация директорий.

 

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

Рис. 5. Двухуровневая организация директорий.

 

Однако данная организация не поддерживает возможность дальнейшей группировки файлов.

Наиболее общей и удобной, рекомендуемой читателям, является древовидная структура директорий (рис. 6).

Рис. 6. Древовидная структура директорий.

 

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

Различаются абсолютный и относительный путь. Абсолютный путь указывает полный путь доступа к файлу, начиная от логического имени раздела, либо от корневой системной директории, например (в системе UNIX): /usr/bin/shпуть доступа к файлу командного процессора Bourne Shell. Относительный путь указывает путь доступа к файлу относительно некоторой текущей директории. В том же примере, если считать, что текущая директория - /usr, то относительный путь к тому же файлу имеет вид: bin/sh. Недостаток абсолютных путей в том, что на разных компьютерах (например, заказчика и исполнителя) абсолютные пути к одному и тому же файлу или к одной и той же директории могут оказаться различными. В результате возникают ошибки при сборке проекта, его архивировании, разархивировании и др. Поэтому рекомендуется в системных файлах, например, в make-файлах для сборки проектов, указывать, по возможности, относительные пути, либо обозначать рабочую директорию один раз с помощью некоторого макроса и использовать это обозначение в путях, например: ${SYSDIR}/sh, где макрос SYSDIR задает конкретный путь к системной директории на данном компьютере.

Пример древовидной структуры директорий приведен на рис. 6.

Примеры операций над директориями (в обозначениях рис.6):

cd / spell /mail/prog – установка текущей директории.

type list – вывод на консоль содержимого одного из ее файлов.

Если текущая директория /mail, то поддиректория count создается командой:

mkdir count

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

Рис. 7. Структура директорий в виде ациклического графа.

 

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

В рис.7, если в директории dict удалить ссылку list, то образуется подвисшая ссылка (dangling pointer). Возможные решения данной проблемы:

· хранение обратных ссылок из файла на директорию (с целью своевременного удаления всех ссылок);

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

Структура директорий в виде произвольного графа создает еще более серьезные проблемы, например, как гарантировать отсутствие циклов в графе директорий. Пример структуры директорий в виде произвольного графа приведен на рис. 8.

Рис. 8. Структура директорий в виде произвольного графа.

 

Циклические ссылки на файлы могут возникнуть из-за ошибок в программе, связанной с обработкой файлов. Если при этом она тестируется и многократно запускается, то это может привести к переполнению внешней памяти на диске (или в разделе диска), что и произошло у автора при отладке компилятора с языка CLU на МВК "Эльбрус" в 1980-х гг. Возможные решения проблемы циклических ссылок:

· Допускать только ссылки на файлы, а не на поддиректории; данное решение слишком ограничительно.

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

· Каждый раз при создании новой ссылки запускать алгоритм проверки отсутствия циклов – по-видимому, слишком "дорогое" решение.





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


Дата добавления: 2016-12-31; Мы поможем в написании ваших работ!; просмотров: 351 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если вы думаете, что на что-то способны, вы правы; если думаете, что у вас ничего не получится - вы тоже правы. © Генри Форд
==> читать все изречения...

753 - | 769 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.