Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операційні системи.doc
Скачиваний:
0
Добавлен:
13.01.2020
Размер:
6.41 Mб
Скачать

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

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

У зв'язі із цим, однорівнева організація директорій для всіх користувачів не рекомендується, тому що можуть виникнути проблеми зі зручним угрупованням файлів і зі збігом імен. Однорівнева структура директорій зображена на рис. 19.4.

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

При дворівневій організації директорій у багатокористувальницькій системі з'являється можливість мати однакові імена файлів подібного призначення для різних користувачів. При такій організації створюється головна директорія, у якій зберігаються персональні піддиректорії користувачів. У кожній з них, у свою чергу, зберігаються файли конкретного користувача. Дворівнева схема зображена на рис. 19.5.

Рис. 19.5.  Дворівнева організація директорій.

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

Найбільш загальної й зручної, що рекомендує читачам, є деревоподібна структура директорій (рис. 19.6).

Рис. 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) виникає внаслідок використання різними користувачами тих самих файлів і директорій.

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

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

В рис. 19.7, якщо в директорії dict видалити посилання list, то утвориться підвисше посилання (dangling pointer). Можливі рішення даної проблеми:

  • зберігання зворотних посилань із файлу на директорію (з метою своєчасного видалення всіх посилань);

  • зберігання лічильника посилань на файл; при обнулінні посилань на файл останній вважається не використовуваним, і його пам'ять перерозподіляється.

Структура директорій у вигляді довільного графа створює ще більш серйозні проблеми, наприклад, як гарантувати відсутність циклів у графі директорій. Приклад структури директорій у вигляді довільного графа наведений на рис. 19.8.

Рис. 19.8.  Структура директорій у вигляді довільного графа.