Файлова система fat

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

- вільні області дискового простору;

- дефектні області диска (ці області містять дефектні ділянки і не га-рантіруют читання і запис даних без помилок).

У файлової системи FAT дисковий простір будь-якого логічного диска де-лится на дві області (рис. 6.1): системну область і область даних.

Мал. 6.1. Структура логічного диска в FAT

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

Файлова система FAT________________________________________________ 167

- завантажувального запису (Boot Record, BR);

- зарезервованих секторів (Reserved Sectors, ResSec);

- таблиці розміщення файлів (File Allocation Table, FAT);

- кореневого каталогу (Root Directory, RDir).

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

Кожен файл займає ціле число кластерів. Останній кластер при цьому може бути задіяний в повному обсязі, що при великому розмірі кластера може призводити до помітної втрати дискового простору. На дискетах кластер зани-томить один або два сектора, а на жорстких дисках його розмір залежить від обсягу раз-справи (табл. 6.1). У таблиці FAT кластери, що належать одному файлу (або файлу-каталогу), зв'язуються в ланцюжки. Для вказівки номера кластера в файло-вої системі FAT 16 використовується 16-розрядне слово, отже, можна мати до 2 10 = 65 536 кластерів (з номерами від 0 до 65 535).

Таблиця 6.1. Співвідношення між розміром розділу і розміром кластерів в FAT16

Ємність розділу, Мбайт Кількість секторів в кластері Розмір кластерів, Кбайт

Номер кластера завжди відноситься до області даних диска (простору, зарезер-вати для файлів і підкаталогів). Номери кластерів відповідають еле

168____________________________________________ Глава 6, Файлові системи

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

Логічне розбиття області даних на кластери як сукупності секторів замість використання одиночних секторів має наступний сенс:

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

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

Однак занадто великий розмір кластера веде до неефективного викорис-ня області даних, особливо в разі великої кількості маленьких файлів. Як ми тільки що помітили, в середньому на кожен файл втрачається близько половини кластера. З табл. 6.1 випливає, що при розмірі кластера в 32 сектора (обсяг поділу-ла при цьому - від 512 до 1023 Мбайт), тобто 16 Кбайт, середня величина втрат на файл дорівнює 8 Кбайт, і при декількох тисячах файлів 1 втрати можуть со-ставлять більше 100 Мбайт. Тому в сучасних файлових системах розміри кластерів обмежуються (зазвичай від 512 байт до 4 Кбайт), або надає-ся можливість вибирати розмір кластера.

Досить наочно ідею файлової системи, що використовує таблицю размеще-ня файлів, ілюструє рис. 6.2.

Файлова система fat

Мал. 6.2. Ілюстрація основної концепції FAT

З малюнка видно, що файл MYFILE.TXT розміщується, починаючи з восьмого кластера. Всього файл MYFILE.TXT займає 12 кластерів. Ланцюжок (chain) кластерів для на-шего прикладу може бути записана наступним чином: 8, 9,0А, 0В, 15,16,17,19,

1 Наприклад, число 10 000-15 000 файлів (або навіть більше, особливо коли файли невеликого разме-ра) на логічному диску з об'ємом в 1000 Мбайт зустрічається досить часто.

1А, 1B, 1С, 1D. Кластер з номером 18 позначений спеціальним кодом F7 як поганий (bad), він не може бути використаний для розміщення даних. При форматірова-ванні зазвичай перевіряється поверхню магнітного диска, і ті сектори, при конт-рольному читанні з яких відбувалися помилки будуть позначені на FAT як погані. Кластер 1D позначений кодом FF як кінцевий (останній в ланцюжку) кластер, що належить даному файлу. Вільні (незайняті) кластери позначаються кодом 00; при виділенні нового кластера для запису файлу береться перший сво-Бодня кластер. Можливі значення, які можуть підписуватися елементам таблиці FAT, наведені в табл. 6.2.

Таблиця 6.2. Значення елементів FAT

OOOOh Вільний кластер

fffOh-fff6h Зарезервований кластер

fff7h Поганий кластер

fffSh-ffffh Останній кластер в ланцюжку

0002h-ffefh Номер наступного кластера в ланцюжку

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

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

У зв'язку з надзвичайною важливістю таблиці FAT вона зазвичай зберігається в двох іден-тичних примірниках, другий з яких безпосередньо випливає за першим. Об-новлять копії FAT одночасно, використовується ж тільки перший екземпляр. Якщо він з яких-небудь причин виявиться зруйнованим, то станеться звертання-ня до другого примірника. Так, наприклад, утиліта перевірки і відновлення файлової структури ScanDisk з ОС Windows 9x при виявленні невідповідності первинної та резервної копії FAT пропонує відновити головну таблицю, ис-пользуя дані з копії.

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

Для роботи з даними на магнітних дисках в системах DOS, які мають файло-ву систему FAT, зручно використовувати широко відому утиліту Disk Editor з

170 ___________________________________________ Глава 6. Файлові системи

комплекту утиліт Пітера Нортона. У неї багато достоїнств. Перш за все, вона кому-пактна, легко розміщується на системній дискеті з MS DOS, забезпечена вбудованою системою підказок і необхідною довідковою інформацією. Використовуючи її, можна зберігати, модифікувати і відновлювати завантажувальний запис, відновлювати таблицю FAT в разі її пошкодження, а також виконувати багато інших операцій. Основними недоліками цієї програми на сьогоднішній день є ограниче-ня на розміри диска і розділів і відсутність підтримки роботи з такими розпрощався-пораненими файловими системами, як FAT32 і NTFS. Замість неї тепер часто ис-товують утиліту Partition Magic, однак найкращою альтернативою цій програмі на сьогоднішній день можна вважати утиліту Адміністратор дисків від Acronis.

Таблиця 6.3. Структура елемента каталогу

11 Ім'я файлу або каталогу

1 Атрибути файлу

1 Резервне поле

3 Час створення

2 Дата створення

2 Дата останнього доступу

2 Час останньої модифікації

2 Дата останньої модифікації

2 Номер початкового кластера в FAT

Структура завантажувального запису DOS

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

Для роботи з завантажувального блоку DOS, як і з іншими службовими інформа-ційними структурами, зручно використовувати вже згадану програму Disk

Файлова система FAT________________________________________________ 171

Editor з комплекту утиліт Пітера Нортона. Використовуючи її, можна зберігати, мо-діфіціровать і відновлювати завантажувальний запис, а також виконувати багато інших операцій. Досить докладно робота з цією програмою описана в [2].

Таблиця 6.4. Структура завантажувального запису для FAT16

Зсув поля, Довжина поля, Позначення Вміст поля
байт байт поля

ООН (0) 3 JUMP 3EH Безумовний перехід на початок

ОЗН (3) 8 Системний ідентифікатор

ОВН (11) 2 SectSize Розмір сектора, байт

ООН (13) 1 ClastSize Число секторів в кластері

0ЕН (14) 2 ResSecs Число зарезервованих секторів

10Н (16) 1 FATcnt Число копій FAT

11Н (17) 2 RootSize Максимальне число елементів Rdir

13Н (19) 2 TotSecs Число секторів на логічному диску,

якщо його розмір не перевищує 32 Мбайт; інакше 0000Н

15Н (21) 1 Media Дескриптор носія

16Н (22) 2 FATsize Розмір FAT, секторів

18Н (24) 2 TrkSecs Число секторів на доріжці

1АН (26) 2 HeadCnt Число робочих поверхонь

1СН (28) 4 HidnSecs Число прихованих секторів

20Н (32) 4 Число секторів на логічному диску,

якщо його розмір перевищує 32 Мбайт

24Н (36) 1 Тип логічного диска (ООН - гнучкий,

25Н (37) 1 Зарезервовано

26н (38) 1 Маркер з кодом 29Н

27н (39) 4 Серійний номер тому 1

2ВН (43) 11 Мітка тому

36н (54) 8 Ім'я файлової системи

ЗЕН (62) Системний завантажувач

1FEH (510) 2 Сигнатура (слово АА55Н)