Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
8. Операційні системи.docx
Скачиваний:
30
Добавлен:
17.07.2024
Размер:
68.32 Кб
Скачать

8.2. Файлові системи

8.2.1. Основні поняття про файли і файлові системи

Файл — іменований впорядкований набір даних на пристрої зберігання інформації; операційна система забезпечує організацію файлів в файлові системи.

Файл (англ. file — шухляда, тека, папка) — інформаційний об'єкт, що містить дані або програми і розміщується на поіменованій ділянці носія даних, сутність, елемент (одиниця носія інформації; англ. media unit), що дозволяє отримати доступ до певного ресурсу обчислювальної системи і має такі ознаки:

  • фіксована назва (назва файлу — послідовність символів (англ. string), число чи щось інше, що однозначно характеризує файл);

  • певну логічну будову (структуру) і відповідні йому операції читання/запису.

На практиці це іменований блок інформації, який зберігається на носії інформації.

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

В інформатиці використовується наступне визначення: файл — це впорядкована сукупність даних, що зберігається на диску і займає іменовану область зовнішньої пам'яті. Згідно з термінологією, прийнятою в програмуванні, файл — це довільний блок інформації, або пристрій вводу-виводу, асоційований із ним (як середовище, засіб передачі «довільних блоків інформації»). Кожна комп'ютерна програма відкриває принаймні три файли стандартних потоків: вхідний файл (stdin), вихідний файл (stdout), файл виводу повідомлень про помилки (stderr). Вхідний файл зазвичай асоціюється із клавіатурою, вихідний файл та файл виводу помилок — із дисплеєм терміналу, проте кожен із цих файлів може бути перенаправлений на інший носій інформації, наприклад, на дисковий файл, про який мовилося вище, на мережу, яка також є файлом, на контролер будь-якого периферійного пристрою комп'ютера, зчитувача інформації тощо. Файлом може бути також ділянка оперативної пам'яті програми.

Файли в Unix. В Unix існує 7 типів файлів:

  1. Звичайний (regular)

  2. Каталог (directory)

  3. Файл блочного пристрою.

  4. Файл символьного пристрою.

  5. Канали (FIFO)

  6. Зв'язок (link)

  7. Сокети (socket)

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

Каталог — це файл, який містить назви файлів, які в ньому містяться, та посилання на інформацію, яка дозволяє ОС виконувати операції над цими файлами. На запис у каталог має право тільки ядро. Каталог є таблицею, кожен запис якої відповідає певному файлу. По своїй конструкції каталог складається з трьох файлів. Будь-який каталог окрім файлу з своєю назвою, завжди має прописаним всередині два файли з назвами '.' та '..'. Перший вказує на себе, другий вказує на батьківський каталог. Для каталога / файл '..' вказує на себе теж.

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

Канали — це файли, які використовуються для зв'язку між процесами. Один з видів міжпроцесорної взаємодії IPC. Це так звані файли типу FIFO. По своїй суті це є конструкція, що має одночасно і вхідний, і вихідний потоки. Як правило їх використовують для зв'язку стандартного виводу одного процесу та стандартного вводу іншого в ланцюжках команд. У цьому випадку вони використовуються без вживання імен файлів. Інформація про ці файли знаходяться в пам'яті в спеціальному масиві. Вони пов'язуються з процесами тільки по номеру inode. Іноді використовуються іменовані канали. Це такий канал у якого є ім'я, яке відображається в тій файловій системі, для якої цей файл зробили. Користувач створивши цей файл може власноруч пов'язати певні процеси так, як йому заманеться.

Сокети — ще один тип файлів, що використовується для міжпроцесорної взаємодії IPC. Це дещо подібна технологія до каналів, проте вона має складнішу конструкцію і дозволяє робити зв'язок між процесами не лише на одному пристрої, а й через мережу. Інтерфейс socket використовується, наприклад, для доступу до мережі TCP/IP.

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

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

Архітектура. Поняття файлової системи має декілька рівнів абстракції: логічна файлова система — високорівнева абстракція, яка описує можливості операційної системи для роботи з даними та описує API, яке дозволяє відкривати, зчитувати, записувати та закривати файли, а реалізація цих методів відбувається на нижчих рівнях абстракції.

Віртуальна файлова система — це необов'язковий рівень, який підтримує в операційній системі декілька фізичних файлових систем та надає універсальні методи роботи з ними. Завдяки цьому рівню абстракції існують файлові системи над нефізичними пристроями, як, наприклад, віртуальні файлові системи (procfs, sysfs) та FUSE.

Фізична файлова система — це рівень, який існує як дані на пристроях (дисках, розділах, тощо). Його реалізують драйвери, які працюють з даними. Вони також реалізують механізми, що пришвидшують роботу (буферізація, структури для швидшого пошуку), збільшують надійність (журналювання), вибір блоків, у яких потрібно помістити дані та інше. Переважно коли ми кажемо про різні файлові системи — NTFS, APFS, ext4 — ми маємо на увазі цей рівень.

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

  • плоскі файлові системи — вони не використовують каталогів. Це ранній етап файлових систем.

  • ієрархічні файлові системи — дозволяють розміщувати файли в каталоги.

Залежно від локальности комп'ютера, якому надається доступ до файлів, можна поділити файлові системи на:

  • локальні файловій системи — забезпечують доступ до файлів з носіїв на локальному комп'ютері

  • мережеві файлові системи — забезпечують механізми доступу до файлів однієї машини з інших машин мережі

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

Файлові системи можна класифікувати за особливостями носія на:

  • Для носіїв з послідовним доступом (наприклад, магнітні стрічки): QIC.

  • Для носіїв з довільним блоковим доступом (наприклад, жорсткий диск): FAT32, HPFS, ext2 та ін. Останнім часом поширилися такі, як ext3, ext4, ReiserFS, JFS, NTFS, XFS.

  • Для оптичних носіїв — CD і DVD: ISO 9660, HFS, UDF.

  • Ощадливі до перезапису (флешпам'ять) — F2FS

  • Віртуальні файлові системи: AEFS, tmpfs, procfs, sysfs та ін.

Для забезпечення надійности та швидкости відновлення в разі збоїв, у деяких файлових системах було впроваджено журналювання. Файлові системи можна класифікувати як:

  • не журнальовані файлові системи

  • журнальовані файлові системи

Журнальовані файлові системи пишуть, фіксують зміну стану інформації двічі: спершу в журналі дій файлової системи, потім до її належного місця у звичайній файловій системі. Але це допомагає в разі аварійного завершення. Система без журналювання повинна перевірити узгодженість свого стану, зчитуючи весь свій уміст такими програмами, як scandisk, chkdsk або fsck. Залежно від розміру файлової системи на це можна витратити багато часу. З журналюванням до узгодженого стану можна дійти швидше, відтворюючи, перевіряючи зміни по журналу за останній час.

Метадані. Окрім самих даних у файлах, файлова система зберігає додаткову інформацію про файли. Така інформація називається метаданими. Приклади метаданих:

  • ім'я файлу або шлях до файлу в ієрархічних файлових системах.

  • розмір — це може бути об'єктивна характеристика, як кількість блоків або байтів. А також може бути заявлений розмір у разі розріджених файлів[en].

  • часові відмітки — коли був створений файл, коли його востаннє змінювали, отримували до нього доступ, архівували або навіть видалили. Залежно від файлової системи гранулярність часової відмітки може бути різною. Від наносекунд до секунд або 2-секундних інтервалів, або доби, а також діапазон можливих значень.

  • інформація про власника, групу власника й права доступу.

  • квоти на використання дискового простору

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

  • атрибути SELinux контексту,

  • окрім звичайних файлів на файловій системі можуть бути присутні об'єкти, які для неї схожі на файли, але поведінка інша, наприклад, у UNIX каталоги — це спеціальний тип файлів. Ще окремі типи файлів — це символьні посилання, файли пристроїв, сокети.

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

  • обмеження імені файлу на довжину. У перших версіях FAT12 і FAT16 використовувався фіксований розмір "8.3", який виділяв 8 байт на ім'я та 3 на розширення. Сучасні файлові системи дозволяють до 255 символів

  • список символів, які недозволені в іменах файлів

  • чутливість до регістру

У UNIX-подібних ОС у назві файлу може використовуватися будь-який символ, за винятком скісної риски, і вони чутливі до регістру.

Назви файлів у Microsoft Windows не є чутливими до регістру. Вимога неповторности та чутливість до регістру тут відіграє роль: якщо файлова система є чутливою до регістру — це, наприклад, файли File.txt FILE.TXT file.txt — це можуть бути різні файли, якщо система не чутлива до регістру. Такі імена відповідають тому самому файлу.

Каталог, директорія, тека або папка — це елемент файлової системи, який допомагає впорядковувати файли.

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

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

У такому разі, крім імені файлу потрібно знати й імена каталогів, до яких цей файл належить. Таким чином формується шлях до файлу — перелік каталогів та ім'я файлу, які розділені символом-розділювачем каталогів. UNIX-подібні операційні системи (BSD, Linux, Mac OS X) та AmigaOS використовують як розділювач каталогів символ скісної риски (/), тоді як DOS використовує цей символ для задання додаткових опцій у командному рядку, а як розділювач заведено вживати символ оберненої скісної риски (\). У Microsoft Windows заведена та сама домовленість, за винятком китайської і корейської версій, де розділювачем є знак запитання (?). Версії MacOS до Х використовували як розділювач двокрапку; RISC OS — дефіс.

Розмір файлу — це характеристика файлу скільки блоків, або байтів, він займає.

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

У 1980-х це була потреба обробляти дані об'ємами в сотні кілобайт. Файлові системи використовували 8–16 битні структури, які обмежували розмір файлів від сотень кілобайт (256КБ для ADFS) або декількох мегабайт (8МБ для FAT12) до сотень мегабайт.

У 1990-х перехід від 16-бітних до 32-бітних систем, об'єми жорстких дисків виросли від десятків мегабайт до десятків гігабайт. Відомим обмеженням є, наприклад, розмір файлу у 2 або 4 ГБ для файлових систем FAT32.

Файлові системи, що були розроблені після 2000-х, мають 64-бітні структури та їхні обмеження, і поки що перевищують розміри пристроїв, для яких вони були розроблені, наприклад: exFAT (128 ПБ) , NTFS (256 ТБ–8 ПБ), ext4 (1 ЕБ), XFS (8 ЕБ).

Більшість дистрибутивів Лінукс підтримують більшість (або всі) перелічені ФС: ext2, ext3, ext4, Btrfs, ReiserFS, Reiser4, GFS, GFS2, OCFS, OCFS2, NILFS, XFS, JFS, загалом, як і FAT та NTFS.

Microsoft Windows підтримує лише FAT12, FAT16, FAT32, та NTFS. Серед них NTFS є найефективнішою і єдиною, на котру може бути встановлена Windows Vista. Windows Embedded CE 6.0 включає також підтримку ExFAT, призначеної/рекомендованої для роботи на портативних пристроях.

Mac OS X підтримує HFS+ як первинну ФС та кілька інших як допоміжних.

Файлові системи малих носіїв даних. На додаток усі ці та інші ОС підтримують файлові системи змінних носіїв — FAT12 для дискет, ISO 9660 та UDF (Universal Disk Format) для компакт-дисків та DVD відповідно.

Windows Vista та Linux з ядром версії 2.6 підтримують розширення UDF, які дозволяють перезаписувати вміст DVD як у звичайних дискетах.

Приклади файлових систем:

  • FAT16;

  • FAT32;

  • NTFS;

  • Ext2;

  • Ext3;

  • Ext4;

  • Btrfs;

  • ZFS;

  • ReiserFS

  • GFS

  • ISO 9660 (також відома як CDFS — CD File System).