- •Логічна організація файлових систем
- •11.1. Поняття файла і файлової системи
- •11.1.1. Поняття файла
- •11.1.2. Поняття файлової системи
- •11.1.3. Типи файлів
- •11.1.4. Імена файлів
- •11.2. Організація інформації у файловій системі
- •11.2.1. Розділи
- •11.2.2 Каталоги
- •11.2.3. Зв’язок розділів і структури каталогів
- •11.3. Зв’язки
- •11.3.1. Жорсткі зв’язки
- •11.3.2. Символічні зв’язки
- •11.4. Атрибути файлів
- •11.5. Операції над файлами і каталогами
- •11.5.1. Підходи до використання файлів процесами
- •11.5.2. Загальні відомості про файлові операції
- •11.5.3. Файлові операції posix
- •11.5,4. Файлові операції Win32 api
- •11.5.5. Операції над каталогами
- •11.6. Міжпроцесова взаємодія на основі інтерфейсу файлової системи
- •11.6.1. Файлові блокування
- •11.6.2. Файли, що відображаються у пам’ять
- •11.6.3. Поіменовані канали
- •Висновки
- •Контрольні запитання та завдання
11.4. Атрибути файлів
Кожний файл має набір характеристик — атрибутів. Набір атрибутів змінюється залежно від файлової системи. Найпоширеніші атрибути файла наведено нижче.
♦ Ім’я файла, докладно розглянуте раніше.
♦ Тип файла, який звичайно задають для спеціальних файлів (каталогів, зв’язків тощо).
♦ Розмір файла (зазвичай для файла можна визначити його поточний, а іноді й максимальний розмір).
♦ Атрибути безпеки, що визначають права доступу до цього файла (про такі атрибути йтиметься в розділі 18).
♦ Часові атрибути, до яких належать час створення останньої модифікації та останнього використання файла.
Інформацію про атрибути файла також зберігають на диску. Особливості її зберігання залежать від фізичної організації файлової системи.
11.5. Операції над файлами і каталогами
Вивчатимемо основні операції, які можна виконувати над файлами та каталогами.
11.5.1. Підходи до використання файлів процесами
Підходи до використання файлів із процесу бувають такі: зі збереженням (stateful) і без збереження стану (stateless).
У разі збереження стану є спеціальні операції, які готують файл до використання у процесі (відкривають його) і скасовують цю готовність (закривають його). Інші операції використовують структури даних, підготовлені під час відкриття файла, і можуть виконуватися тільки доти, поки файл не буде закритий. Перевагою такого підходу є висока продуктивність, оскільки під час відкриття файла потрібні структури даних завантажуються у пам’ять.
Якщо стан не зберігають, кожна операція роботи із файлом (читання, записування тощо) супроводжується повного підготовкою файла до роботи (кожна операція починається відкриттям файла і завершується закриттям). Хоча такий підхід програє у продуктивності, його можна використати для підвищення надійності роботи системи за високої ймовірності того, що файлова операція зазнає краху, внаслідок чого структури даних відкритих файлів залишаться в некоректному стані. Так можна робити у випадку, коли файлову систему використовують через мережу, тому що у будь-який момент може статися розрив мережного з’єднання. Далі в цьому розділі розглянемо підхід зі збереженням стану.
11.5.2. Загальні відомості про файлові операції
Назвемо основні файлові операції, які звичайно надає операційна система для використання у прикладних програмах.
♦ Відкриття файла. Після відкриття файла процес може із ним працювати (наприклад, робити читання і записування). Відкриття файла зазвичай передбачає завантаження в оперативну пам’ять спеціальної структури даних — дескриптора файла, який визначає його атрибути та місце розташування на диску. Наступні виклики використовуватимуть цю структуру для доступу до файла.
♦ Закриття файла. Після завершення роботи із файлом його треба закрити. При цьому структуру даних, створену під час його відкриття, вилучають із пам’яті. Усі дотепер не збережені зміни записують на диск.
♦ Створення файла. Ця операція спричиняє створення на диску нового файла нульової довжини. Після створення файл автоматично відкривають.
♦ Вилучення файла. Ця операція спричиняє вилучення файла і вивільнення зайнятого ним дискового простору. Вона зазвичай недопустима для відкритих файлів. Раніше зазначалося про особливості реалізації цієї операції у системі з підтримкою жорстких зв’язків.
♦ Читання з файла. Ця операція звичайно зводиться до пересилання певної кількості байтів із файла, починаючи із поточної позиції, у заздалегідь виділений для цього буфер пам’яті режиму користувача.
♦ Записування у файл. Здійснюють із поточної позиції, дані записують у файл із заздалегідь виділеного буфера. Якщо на цій позиції вже є дані, вони будуть перезаписані. Ця операція може змінити розмір файла.
♦ Переміщення покажчика поточної позиції. Перед операціями читання і записування слід визначити, де у файлі перебувають потрібні дані або куди треба їх записати, задавши за допомогою цієї операції поточну позицію у файлі. Зазначимо, що якщо перемістити покажчик файла за його кінець, а потім виконати операцію записування, довжина файла збільшиться.
♦ Отримання і задання атрибутів файла. Ці дві операції дають змогу зчитувати поточні значення всіх або деяких атрибутів файла або задавати для них нові значення.
