Первая страница
Наша команда
Контакты
О нас

    Головна сторінка



“Інформаційні управляючі системи та технології” 080402 “Інформаційні технології проектування” Одеса 2010

“Інформаційні управляючі системи та технології” 080402 “Інформаційні технології проектування” Одеса 2010




Сторінка23/24
Дата конвертації10.03.2017
Розмір1.41 Mb.
1   ...   16   17   18   19   20   21   22   23   24

8. 2. Організація інформації у файловій системі


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

8.2.1. Розділи


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

Розділ (partition) – частина фізичного дискового простору, що призначена для розміщення на ній структури однієї файлової системи і з логічної точки зору розглядається як єдине ціле.
Аспект (лат. aspectus - вигляд, погляд) - поняття філософії (онтології, теорії пізнання). У філософії аспект розглядається

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

Кожний розділ може мати свою файлову систему (і, можливо, використовуватися різними ОС). Для поділу дискового простору на розділи використовують спеціальну утиліту, яку часто називають fdisk. Для генерації файлової системи на розділи потрібно використати операцію високорівневого форматування диска.

Генерація - покоління, що представлене більш чи менш одноманітними особинами, які змінюються наступним поколінням, яке при диференціації життєвого циклу може істотно відрізнятися від попереднього. Наприклад: при чергуванні поколінь (гетерогонії, метагенезі) у тлі (Aphidoidea), галиць (Cecidomyiidae) та деяких інших комах.
У деяких ОС під томом (volume) розуміють розділ із встановленою на ньому файловою системою.

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


8.2.2. Каталоги


Розділи є основою організації великих обсягів дискового простору для розгортання файлових систем. Для організації файлів у рамках розділу зі встаноіленою файловою системою було запропоновано поняття файлового каталогу (file directory) або просто каталогу.

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

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

Деревоподібна структура каталогів

Базовою ідеєю організації даних за допомогою каталогів є те, що вони можуть містити інші каталоги. Вкладені каталоги називають підкаталогами (subdirectory). Таким чином формують дерево каталогів. Перший каталог,створений у файловій системі, встановленій у розділі (корень дерева каталогів), називають кореневим каталогом (root directory).



Поняття шляху

Розглянемо, яким чином формують ім’я файла з урахуванням багаторівневої структури каталогів. Для файла, розташованого всередині каталогу недостатньо цого імені для одназначного визначення, де він перебуває, - в іншому каталозі може бути файл із тим самим ім’ям. Тепер для визначення місцезнаходження файла потрібно додавати до його імені список каталогів, де він перебуває. Такой список називають шляхом (path). Каталоги у шляху перераховують зліва направо – від меншої глибини вкладеності до більшої. Роздільник каталогів у шляху відрізняється для різних систем: в Unix прийнято використовувати прямий слеш “/”, а у Windows -системах - зворотний “\”.



Абсолютний і відносний шляхи

Є два шляхи до файла: абсолютний і відносний. Абсолютний (або повний) повністю і однозначно визначає місце розташування файла. Такий шлях обов’язково має містити кореневий каталог. Ось приклад абсолютного шляху для Unix-систем: /usr/local/bin/myfile.

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

Відносний- шлях, відлічуваний від деякого місця в ієрархії каталогів. Щоб його організувати, потрібно іизначитися із точкою відліку, для чого використовують поняття поточного каталогу. Такий каталог задають для кожного процесу, і він може бути змінений у будь-який момент командою cd або системним викликом chdir (). Відносний шлях може відлічуватися від поточного каталогу і звичайно кореневий каталог не включає. Прикладом відносного шляху до файла /usr/local/bin/myfile (за умови, що поточним є каталог /usr/local) буде bin/myfile, а в ситуації, коли поточним є каталог файла (/usr/local/bin), відносним шляхом буде просто ім’я файла: myfile.

Для спрощення побудови відносного шляху кожний каталог містить два спеціальні елементи:



  • „ .” –що посилається на поточний каталог;

  • „ ,” –що посилається на каталог рівнем вище.

З урахуванням цих елементів можуть бути задані такі відносні шляхи, як ../.../bin/myfile (за умови, що поточний каталог - /usr/local/lib/mylib) або ./myfile (вказує на елемент у поточному каталозі).

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

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

8.2.3. Зв’язок розділів і структури каталогів


Залишилося з’ясувати важливе питання про взаємозв’язок розділів і структури каталогів файлових систем. Розрізняють два основні підходи до реалізації такого взаємозв’язку, які істотно відрізняються один від одного.

Єдине дерево каталогів. Монтування файлових систем


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

Стандартну організацію каталогів Unix зображують у вигляді дерева з одним коренем – кореневим каталогом, який позначають „/”.

Ко́рінь - підземний, вегетативний орган рослини з необмеженим ростом, який забезпечує закріплення рослин у субстраті, поглинання і транспорт води та розчинених у ній мінеральних речовин та продуктів життєдіяльності ґрунтових мікроорганізмів і коренів інших рослин, первинний синтез органічних речовин, виділення в ґрунт продуктів обміну речовин і вегетативне розмноження.
Файлову систему, на якій перебуває кореневий каталог, називають завантажувальною або кореневою. У більшості реалізацій вона має містити файл із ядро ОС.

Додаткові файлові системи об’єднуються із кореневою за допомогою операції монтування (). Під час монтування вибраний каталог однієї файлової системи стає кореневим каталогом іншої. Каталог, призначений для монтування файлової системи, називають точкою монтування (). Весь вміст файлової системи, приєднаної за допомогою монтування, виглядає для користувачів системи як набір пвдкаталогів точки монтування. Розглянемо операцію монтування на прикладі (рис 8.1).






Рис8.1 Монтування файлової системи

У цьому разі на диску є два розділи. На кожному з них встановлена файлова система (типи файлових систем можуть бути різними – це не є обмеженням; у каталозі системи одного типу можна змонтувати ссистему іншого типу за умови, що цей тип підтримує ОС). На рисунку точкою монтування ми вибрали каталог /usr першої файлової системи. Для користувача системи практично не помітно, що насправді каталог / і каталог /usr відповідають різним файловим системам. Відмінності можуть виявлятися, наприклад, під час спроби перенесення файла: виконання звичайної операції перенесення (mv y Unix) між файловими системами не дозволяється.

Розглянемо деякі наслідки застосування єдиного каталогу для організації файлової системи.


  • Будь-який файл може бути адресований побудовою відносного шляху від будь-якого каталогу.

  • Від користувача прихована структура розділів жорсткого диска, яка йому у більшості випадків не потрібна.

  • Адміністрування системи спрощується. Наприклад, якщо додамо ще один диск і захочемо перенести на нього каталог /home, достатньо буде виконати кілька простих дій: відформатувати цей диск, задавши на ньому один розділ; змонтувати цей розділ у довільному місці; перенести на нього каталог /home (стерши весь його зміст на вихідному диску); заново змонтувати цей розділ у каталозі /home кореневої файлової системи.

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

Літерні позначенні розділів

Другий підхід, що в основному поширений в лініях Consumer Windows Windows XP, припускає, що кожний розділ зі встановленою файловою системою є видимим для користувача і позначений буквою латинського алфавіту.

Лати́нська абе́тка, або латиниця, латинка - абетка латинської мови, історично є відгалуженням етруської абетки, що в свою чергу постала з грецької. Виникнення латинської абетки датують 7 ст. до н. е. Напрямок письма: спочатку справа наліво, потім справа наліво й, через рядок, зліва направо (так званий бустрофедон), з 4 ст.
Такий розділ звичайно називають томом. Позначення томів це - C:; D: тощо.

Особливості такої реалізації наведені нижче.

Вміст кожного розділу не пов’язаний з іншими розділами, відносний шлях можна побудувати тільки за умови, що поточний каталог перебуває на тому самому томі, що і файл.



  • Структура логічних розділів видима для користувача.

  • Перенос каталогу на новий розділ призводить до того, що шлях до цього каталогу зміниться (оскільки такий шлях завжди включає літерне позначення тому).
    Новий Розділ (до 1992 року - Новий Роздол) - місто обласного значення у Львівській області. Розташоване неподалік від річки Дністер.
    У підсумку програмне забезпечення, яке використовує цей шлях, може перестати працювати.

  • У разі необхідності додавання або вилучення дискового пристрою у системах лінії Consumer Windows користувач не може впливати на те, які літери система присвоює розділам (фактично це залежить від порядку підключення апаратних пристроїв); у системах лінії Windows XP користувач може вільно змінювати літерні позначення під час роботи системи.

Зазначимо, що нині в ОС лінії Windows XP реалізована підтримка монтування (для файлової системи NTFS ), що вирішує більшість перелічуваних проблем. Ця підтримка вперше з’явилась у Windows 2000 [70].

8. 3. Зв’язки

Структура каталогів файлової системи не завжди є деревом. Багато файлових систем дає змогу задавати кілька імен для одного й того самого файла. Такі імена називають з’явзками (links). Розрізняють жорсткі і символічні з’явзки.


8. 3. 1. Жорсткі зв’язки


Ім’я файла не завжди однозначно пов’язане з його даними. За підтримки жорстких зв’язків (hard links) для файла допускається кілька імен. Усі жорсткі зв’язки визначають одні й ті самі дані на диску, для користувача вони не відрізняються: не можна визначити, які з них були створені раніше, а які – пізніше.

Підтримка жорстких зв’язків у POSIX

Для створення жорстких зв’язків у POSIX призначений системний виклик link(). Першим параметром він приймає ім’я вихідного файла, другим -ім’я жорсткого зв’язку, що буде створений:

#include // для стандартних файлових операцій POSIX

link (“myfile.txt” , “myfile_hardlink.txt”);

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

// вилучити файл, якщо в нього був один жорсткий зв’язок

unlink (“myfile.txt”);



Підтримка жорстких зв’язків у Windows XP

Жорсткі зв’язки здебільшого реалізовані в Unix-сумісних системах, їх підтримують також у системах лінії Windows XP для файлової системи NTFS. Для створення жорсткого зв’язку в цій системі необхідно використати функцію CreateHardLink(), ім’я зв’язку задають першим параметром, ім’я файла – другим, а третій дорівнює нулю:

CreateHardLink (“myfile_hardlink.txt” , “myfile.txt”, 0);

Для вилучення жорстких зв’язків у Win32 API використовують функцію DeleteFile():

DeleteFile (“myfile_ hardlink.txt”);

Зазначимо, що для файлових систем, які не підтримують жорстких зв’язків, виклик DeleteFile() завжди спричиняє вилучення файла.

Жорсткі зв’язки мають певні недоліки, які обмежують їх застосування:


  • Не можуть бути задані для каталогів;

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

  • Вилучення жорсткого зв’язку потенційно може спричинити втрати даних файла

8. 3. 2. Символічні зв’язки


Основні поняття

Символічний зв’язок (symbolic link)-зв’язок, фізично відокремлений від даних, на які вказує. Фактично це спеціальний файл, що містить ім’я файла, на який вказує. Наведемо властивості символічних зв’язків.

  • Через такий зв’язок здійснюють доступ до вихідного файла.

  • При вилученні зв’язку, вихідний файл не зникне.

  • Якщо вихідний файл перемістити, або вилучити, зв’язок розірветься, і доступ через нього стане неможливий, якщо файл потім поновити на тому самому місці, зв’язком знову можна користуватися.

  • Символічні зв’язки можуть вказувати на каталоги і файли, що перебувають на інших файлових системах (на іншому розділі жорсткого диска). Наприклад, якщо створити в поточному каталозі зв’язок system-docs, що вказує на каталог /usr/doc, то перехід у каталог system-docs призведе до переходу в каталог /usr/doc.

Підтримка символічних зв’язків на рівні системних викликів


Для задання символічного зв’язку у POSIX визначено системний виклик symlink (), параметри якого аналогічні до параметрів link().

symlink (“myfile.tx”t , “myfile_symlink.txt”);

Для отримання шляху до файла або каталогу, на який вказує символічний зв’язок, використовують системний виклик readlink().

// PATH__MAX – константа, що задає максимальну довжину шляху

char filepath [PATH_MAX 1];

Константа (лат. constans - стала величина, інша назва - стала) - величина, що не змінює свого значення протягом певного процесу (на відміну від змінної, значення якої може змінюватись). Прикладами констант є число пі, коефіцієнти многочленів, температура під час ізотермічного процесу.

readlink (“myfile-symlink.txt” , filepath , sizeof (filepath))

// y filepath буде шлях до myfile.txt

Символічні зв’язки вперше з’явилися у файлових системах Unix,


у Windows XP вони підтримуються файловою системою NTFS під назвою точок з’єднання (junction points), але засоби API для їхнього використання не визначені.
1   ...   16   17   18   19   20   21   22   23   24



  • 8.2.1. Розділи
  • 8.2.2. Каталоги
  • 8.2.3. Зв’язок розділів і структури каталогів
  • Єдине дерево каталогів. Монтування файлових систем
  • 8. 3. 1. Жорсткі зв’язки
  • 8. 3. 2. Символічні зв’язки
  • Підтримка символічних зв’язків на рівні системних викликів