КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Логическая организация директорий
Структуру директорий рекомендуется организовывать логически, т.е. в соответствии с логикой программы, хранения и использования данных. У такой организации директорий – две основные цели: эффективность (обеспечить быстрый поиск файла) и именование (обеспечить удобство для пользователей, например, в случае, если несколько пользователей называют два разных файла в своих директориях одним и тем же именем, в соответствии с его назначением). Директории позволяют осуществить логическую группировку файлов по их назначению, свойствам и т.д. (например, почта, документа, Java-код, игры). В связи с этим, одноуровневая организация директорий для всех пользователей не рекомендуется, так как могут возникнуть проблемы с удобной группировкой файлов и с совпадением имен. Одноуровневая структура директорий изображена на рис. 19.4.
При двухуровневой организации директорий в многопользовательской системе появляется возможность иметь одинаковые имена файлов сходного назначения для различных пользователей. При такой организации создается главная директория, в которой хранятся персональные поддиректории пользователей. В каждой из них, в свою очередь, хранятся файлы конкретного пользователя. Двухуровневая схема изображена на рис. 19.5. Рис. 19.5. Двухуровневая организация директорий. Однако данная организация не поддерживает возможность дальнейшей группировки файлов. Наиболее общей и удобной, рекомендуемой читателям, является двевовидная структура директорий (рис. 19.6).
Именно древовидная структура директорий обеспечивает эффективный поиск, возможность группировки и поддержку уже рассмотренных понятий текущей (рабочей) директории и пути доступа к файлу. Различаются абсолютный и относительный путь. Абсолютный путь указывает полный путь доступа к файлу, начиная от логического имени раздела, либо от корневой системной директории, например (в системе UNIX): /usr/bin/sh – путь доступа к файлу командного процессора Bourne Shell. Относительный путь указывает путь доступа к файлу относительно некоторой текущей директории. В том же примере, если считать, что текущая директория - /usr, то относительный путь к тому же файлу имеет вид: bin/sh. Недостаток абсолютных путей в том, что на разных компьютерах (например, заказчика и исполнителя) абсолютные пути к одному и тому же файлу или к одной и той же директории могут оказаться различными. В результате возникают ошибки при сборке проекта, его архивировании, разархивировании и др. Поэтому рекомендуется в системных файлах, например, в make-файлах для сборки проектов, указывать, по возможности, относительные пути, либо обозначать рабочую директорию один раз с помощью некоторого макроса и использовать это обозначение в путях, например: ${SYSDIR}/sh, где макрос SYSDIR задает конкретный путь к системной директории на данном компьютере. Пример древовидной структуры директорий приведен на рис. 19.6. Примеры операций над директориями (в обозначениях рис. 19.6): cd /spell/mail/prog – установка текущей директории. type list – вывод на консоль содержимое одного из ее файлов. Если текущая директория /mail, то поддиректория count создается командой: mkdir count Структура директорий в виде ациклического графа (рис. 19.7) возникает вследствие использования различными пользователями одних и тех же файлов и директорий.
При этом может возникнуть ситуация, когда у одного и того же файла (директории) два различных имени (aliasing). В рис. 19.7, если в директории dict удалить ссылку list, то образуется подвисшая ссылка (dangling pointer). Возможные решения данной проблемы: · хранение обратных ссылок из файла на директорию (с целью своевременного удаления всех ссылок); · хранение cчетчиков ссылок на файл; при обнулении счетчика ссылок на файл последний считается не используемым, и его память перераспределяется. Структура директорий в виде произвольного графа создает еще более серьезные проблемы, например, как гарантировать отсутствие циклов в графе директорий. Пример структуры директорий в виде произвольного графа приведен на рис. 19.8.
Циклические ссылки на файлы могут возникнуть из-за ошибок в программе, связанной с обработкой файлов. Если при этом она тестируется и многократно запускается, то это может привести к переполнению внешней памяти на диске (или в разделе диска), что и произошло у автора при отладке компилятора с языка CLU на МВК "Эльбрус" в 1980-х гг. Возможные решения проблемы циклических ссылок: · Допускать только ссылки на файлы, а не на поддиректории; данное решение слишком ограничительно. · Выполнять сборку мусора во внешней памяти; однако традиционные алгоритмы сборки мусора не делают проверок на наличие циклов, поэтому в цепочке циклически ссылающихся друг на друга файлов все они будут считаться используемыми. · Каждый раз при создании новой ссылки запускать алгоритм проверки отсутствия циклов – по-видимому, слишком "дорогое" решение.
Дата добавления: 2014-01-05; Просмотров: 337; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |