Таблиця розміщення файлів

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

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

Але метод доступу – це ще не все. Важливе значення має спосіб розподілу місця на диску для файлів.

В MS-DOS (UNIX, OS/2) при створенні файлу для нього не задається початковий розподіл пам’яті в доріжках або секторах. Із збільшенням розміру файлу ОС виділяє цьому файлу сектори з тих що є вільними (не використовуються іншими файлами). При цьому файл розміщується не обов’язково в суміжних областях диску, він може бути розкиданий по різним доріжкам та секторам. В такому випадку ОС повинна вести облік ділянок диску, що використовуються. Для кожного файла вона повинна зберігати інформацію якому файлові які ділянки диску виділені. В MS-DOS для цього використовується FAT.

Весь логічний диск розбивається ОС на ділянки однакового розміру, що називаються кластерами. Кластер може вміщувати декілька секторів. Для кожного кластера FAT має свою індивідуальну комірку, в якій зберігається інформація про використання даного кластеру. Іншими словами FAT – це масив, що містить інформацію про кластери. Розмір цього масиву визначається загальною кількістю кластерів на логічному диску (саме кластерів, а не секторів).

Усі вільні кластери помічені нулями. Якщо файл розташований в декількох кластерах, то ці кластери зв’язані у список. Для зв’язаних у список кластерів елементи таблиці FAT вміщують номери наступних кластерів, що використовуються даним файлом. Кінець списку відмічається в таблиці спеціальним значенням. Номер першого кластера, що належить файлу, зберігається в елементі каталогу, що описує цей файл.

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

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

 

На цьому малюнку показані фрагменти кореневого каталога диску С: та елементи FAT для файлів AUTOEXEC.BAT та CONFIG.SYS. FAT в комірці 11 вміщує число 12 – номер наступного кластера, що виділений файлу AUTOEXEC.BAT, комірка з номером 12 вміщує число 13 і т.д. Остання комірка, що відповідає останньому кластеру цього файлу, вміщує значення FF. Кластери можуть і не розташовуватись один за одним, наприклад ланцюжок кластерів, що виділений для файлу CONFIG.SYS.

Існує два формати FAT – 12-бітовий та 16-бітовий. 12-бітовий – зручний для дискет з невеликою кількістю секторів. В цьому випадку вся FAT розміщується цілком в одному секторі. Якщо диск такий, що для представлення всіх секторів 12 розрядів недостатньо, можна збільшити розмір кластера, наприклад до 8 секторів. Але більший розмір кластера приводить до неефективного використання дискового простору. Це тому, що мінімальний елемент, який виділяється файлу – кластер, має занадто великий розмір. Навіть для файлу, що має довжину 1 байт виділяється повний кластер. Таким чином, якщо розмір кластера 8 секторів, то для зберігання 1 байта буде використано 4 Кбайти дискової пам’яті.

При використанні 16-бітного FAT ОС може працювати з логічним диском, який має розмір більший 32 Мбайти. DOS при 16-бітному FAT, та кластером на 4 сектори може працювати з розділами, що досягають 134 Мбайтів.