Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Зв'язування файлів



Ієрархічна організація, покладена в основу деревовидної структури файлової системи сучасних ОС, не передбачає виразу стосунків, в яких нащадки зв'язуються більш ніж з одним предком. Така негнучкість частково усувається можливістю реалізації скріплення файлів або організації линков (link).

Ядро дозволяє користувачеві зв'язувати каталоги, спрощуючи написання програм, що вимагають перетину дерева файлової системи (див. мал. 12.11). Часто має сенс зберігати під різними іменами одну і ту ж команду (виконуваний файл). Наприклад, виконуваний файл традиційного текстового редактора ОС Unix vi зазвичай може викликатися під іменами ex, edit, vi, view і vedit файлової системи. З'єднання між директорією і файлом, що розділяється, називається "зв'язком" або "посиланням" (link). Дерево файлової системи перетворюється на циклічний граф.

Це зручно, але створює ряд додаткових проблем.

Простий спосіб реалізувати скріплення файлу - просто дублювати інформацію про нього в обох директоріях. При цьому, проте, може виникнути проблема сумісності у випадку, якщо власники цих директорій спробують незалежно один від одного змінити вміст файлу. Наприклад, в ОС CP/M запис в директорії про файл безпосередньо містить адреси дискових блоків. Тому копії тих же дискових адрес мають бути зроблені і в іншій директорії, куди файл линкуется. Якщо один з користувачів щось додає до файлу, нові блоки будуть перераховані тільки у нього в директорії і не будуть "видні" іншому користувачеві.

Рис. 14.11. Структура файлової системи з можливістю зв'язування файлу з новим іменем

Проблема такого роду може бути вирішена двома способами. Перший з них - так званий жорсткий зв'язок (hard link). Якщо блоки даних файлу перераховані не в директорії, а в невеликій структурі даних (наприклад, в індексному вузлі), пов'язаній власне з файлом, то другий користувач може зв'язатися безпосередньо з цією, вже існуючою структурою.

Альтернативне рішення - створення нового файлу, який містить шлях до зв'язуваного файлу. Такий підхід називається символічною линковкой (soft або symbolic link). При цьому у відповідному каталозі створюється елемент, в якому імені зв'язку зіставляється деяке ім'я файлу (цей файл навіть не зобов'язаний існувати до моменту створення символічного зв'язку). Для символічного зв'язку може створюватися окремий індексний вузол і навіть заводитися окремий блок даних для зберігання потенційно довгого імені файлу.

Кожен з цих методів має свої мінуси. У разі жорсткого зв'язку виникає необхідність підтримки лічильника посилань на файл для коректної реалізації операції видалення файлу. Наприклад, в Unix такий лічильник є одним з атрибутів, що зберігаються в індексному вузлі. Видалення файлу одним з користувачів зменшує кількість посилань на файл на 1. Реальне видалення файлу відбувається, коли число посилань на файл стає рівним 0.

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

Символічний линк має ту перевагу, що він може використовуватися для організації зручного доступу до файлів видалених комп'ютерів, якщо, наприклад, додати до шляху мережеву адресу видаленої машини.

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





Дата публикования: 2014-11-04; Прочитано: 633 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (1.102 с)...