Файлова система unix - студопедія

Файлова система UNIX характеризується:

· Узгодженої обробкою масивів даних,

· Можливістю створення і видалення файлів,

· Динамічним розширенням файлів,

· Захистом інформації в файлах,

· Трактуванням периферійних пристроїв (таких як термінали і стрічкові пристрої) як файлів.

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

Ім'я шляху пошуку необов'язково повинно починатися з кореня, так само як і в системах Windows, можна вказувати маршрут щодо поточного для виконуваного процесу каталогу, при цьому попередні символи «похила риса» в імені шляху опускаються. Так, наприклад, якщо ми знаходимося в каталозі "/ dev", то шлях "tty01" вказує файл, повне ім'я шляху пошуку для якого "/ dev / tty01". Так само як і в Windows, ви можете використовувати символи. (Точка) для поточного каталогу і .. (дві крапки) для батьківського каталогу. Як побачите далі в описі каталогів, записи для цих символів включені в кожен каталог.

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

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

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

Наприклад, якщо процес звертається до системи:

ядро системи повертає індекс для файлу "/ fs2 / mjb / rje / sourcefile". Якщо процес створює новий файл, ядро ​​привласнює цього файлу невикористаний індекс. Індекси зберігаються в файлової системі (і це ми ще побачимо), однак при обробці файлів ядро ​​заносить їх в таблицю індексів в оперативній пам'яті.


Ядро підтримує ще дві інформаційні структури, таблицю файлів і власну таблицю дескрипторів файлу. Таблиця файлів виступає світова компанія ядра, а призначена для користувача таблиця дескрипторів файлу виділяється під процес. Якщо процес відкриває або створює файл, ядро ​​виділяє в кожній таблиці елемент, що кореспондує з індексом файлу. Елементи в цих трьох структурах - в призначеній для користувача таблиці дескрипторів файлу, в таблиці файлів і в таблиці індексів - зберігають інформацію про стан файлу і про доступ користувачів до нього. У таблиці файлів зберігається зміщення в байтах від початку файлу до того місця, звідки почне виконуватися наступна команда користувача read або write, а також інформація про права доступу до що відкривається процесу. Таблиця дескрипторів файлу ідентифікує всі відкриті для процесу файли. На рис.15. 1 показані таблиці і зв'язку між ними.


Файлова система складається з послідовності логічних блоків довжиною 512, 1024, 2048 або іншого числа байт, кратного 512, в залежності від реалізації системи. Розмір логічного блоку всередині однієї файлової системи постійний, але може варіюватися в різних файлових системах в даній конфігурації. Використання логічних блоків великого розміру збільшує швидкість передачі даних між диском і пам'яттю, оскільки ядро ​​зможе передати більше інформації за одну дискову операцію, і скорочує кількість тривалих операцій. Наприклад, читання 1 кбайта з диска за одну операцію здійснюється швидше, ніж читання 512 байт за дві. Однак, якщо розмір логічного блоку занадто великий, корисний об'єм пам'яті може зменшитися, це буде показано далі. Для простоти термін «блок» буде використовуватися для позначення логічного блоку, при цьому мається на увазі логічний блок розміром 1 кбайт, крім спеціально обумовлених випадків.

У загальному випадку файлова система має структуру, показану на ріс.15.2

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

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

Список індексів в файлової системі розташовується слідом за суперблоком. Адміністратори вказують розмір списку індексів при генерації файлової системи. Ядро операційної системи звертається до індексів, використовуючи покажчики в списку індексів. Один з індексів є кореневим індексом файлової системи: це індекс, за яким здійснюється доступ до структури каталогів файлової системи після виконання системної операції mount (монтувати).

Інформаційні блоки розташовуються відразу після списку індексів і містять дані файлів і керуючі дані. Окремо взятий інформаційний блок може належати одному і тільки одному файлу в файлової системі.

Схожі статті