ЗНАЕТЕ ЛИ ВЫ?

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



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

Монтування файлових систем

Файлова система– піддерево директорій на деякій машині, розташованих в одному розділі. Кожна файлова система повинна бути змонтована, перш ніж до неї буде забезпечений доступ. Файлова система монтується в деяку точку монтування (mount point).Монтування (з абстрактної точки зору) - це приєднання окремого дерева (ще не змонтованої файлової системи) до якої-небудь вершини (крапці монтування) загального дерева змонтованих і доступних файлових систем.

У системі UNIX є команди mount; automount й autodirect, керуючі монтуванням. Команда mount дозволяє явно задати крапку монтування й файлову систему, монтируемую в цю крапку. Список всіх змонтованих файлових систем зберігається в системному текстовому файлі /etc/mnttab (у різних діалектах шляху до цього файлу й навіть його ім'я можуть розрізнятися). Команда automount запускається при завантаженні операційної системи й створює системний процес-демон automountd, що по вмісту зазначеного системного файлу автоматично монтує зазначені в ньому файлові системи при завантаженні ОС і стежить за їхньою постійною змонтованістю. Команда autodirect дозволяє змоделювати шляхи до "віртуального" директоріям, яких фізично на даній машині не існує, і вказати в системному файлі /etc/vfstab їх "замінники" (у вигляді шляхів до реальних директорій, розміщеним на локальній машині), що досить корисно у випадку одержання великого проекту від замовника з абсолютними шляхами, що не існують на Вашій машині.

На рис. 19.9 зображено дерево змонтованих систем з директоріями користувачів (a) і ще не смотрированная файлова система (b) з директоріями нових користувачів.

Рис. 19.9. Дерево змонтованих систем і ще не змонтована файлова система.

Якщо по команді mount або automount як крапка монтування файлової системи (b) указується піддиректорія users, то виникає картина, зображена на рис. 19.10.

Рис. 19.10. Точка монтування файлової системи.

Загальний доступ до файлів

У багатокористувальницьких системах загальний доступ до файлів (sharing)необхідний. Загальний доступ може бути забезпечений через деяку систему захисту (protection). У розподілених системах файли можуть використатися спільно через мережу. Керування загальним доступом до файлів у різних ОС по-різному: наприклад, в Windows утиліта Explorerзабезпечує можливість установки загального доступу до заданого файлу або папки за допомогою GUI, зробивши оцінку у відповідному checkbox, указати мережне ім'я даного загального ресурсу й указати, чи можливий доступ по читанню й по записі, або тільки по читанню. У системі UNIX передача файлу із заданої файлової системи в загальний доступ виконується командою share.

Network File System (NFS)– розповсюджена система загального доступу до файлів через локальну мережу.

Цікава можливість загального доступу до файлів є в системі Solaris: файлова система, віддана в загальний доступ командою share, може адресуватися за допомогою шляху виду /net/hostname/filesystem, де hostname– ім'я машини; filesystem– ім'я файлової системи на ній. Це дуже зручно, але може створити проблеми при переносі проекту в іншу локальну мережу (як будь-який абсолютний шлях - у цьому випадку шлях містить ім'я машини).

Захист файлів

Творець файлу повинен мати можливість управляти cписком припустимих операцій над файлом і списком користувачів, яким вони дозволені. Це й забезпечують механізми захисту файлів. Розрізняються наступні основні типи доступу до файлу:

· Read (для читання)

· Write (для запису)

· Execute (для виконання)

· Append (для запису в кінець файлу, або приєднання)

· Delete (для видалення)

· List (для виводу списку файлів у директорії).

Для керування захистом файлів в UNIX уведені зручні й наочні позначення, які ми й розглянемо.

Розрізняються наступні режими доступу: read, write, execute (RWX).

Розрізняються також три класи користувачів: власникфайлу (owner), група, до якої він належить (group) і весь інший "мир" користувачів (public). Групи користувачів створюються системним адміністратором.

Для кожного класу користувачів ознаки захисту RWX кодуються трьома бітами (або одним восьмеричним числом). Таким чином, набір повноважень для роботи з файлом для всіх трьох категорій користувачів кодується 9 бітами, або трьома восьмеричними цифрами. Наприклад, команда:

chmod 740 my_file

задає для файлу my_fileнаступні повноваження: для власника – 7 (111): читання, запис і виконання; для групи – 4 (100): тільки читання; для інших користувачів – 0 (000): ніяких дій над файлом не дозволено.

Для директорії повноваження "X" (execute) означає можливість входу в неї командою cd.

Реалізація файлових систем

Структура файлової системи

Файл - логічна одиниця розподілу пам'яті. Він є також сукупністю логічно взаємозалежної інформації. Файлова система розташовується в зовнішній пам'яті (на дисках) і організована по рівнях. Структура багаторівневої файлової системи зображена на рис. 19.11.

Рис. 19.11. Багаторівнева файлова система.

На верхньому рівні абстракції працюють користувальницькі програми, що використають високорівневі примітиви виду WriteLine(F, X).Рівнем нижче розташовуються модулі інтерфейсу логічних файлів - логічних записів, блоків й операцій обміну. Ще нижче випливають модулі організації файлів, потім - операції базової системи файлів. На нижніх рівнях розташовуються драйвери пристроїв (керування вводом-виводом) і апппратура (пристрої вводу-виводу і їхні контролери).

Блок керування файлом (File control block - FCB)– структура в пам'яті, що містить інформацію про файл. Типова структура блоку керування файлом представлена в таблица 3.





Последнее изменение этой страницы: 2016-07-11; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.216.79.60 (0.006 с.)