У сфері персональних комп'ютерів в 1987 р виникла криза. Можливості файлової системи FAT, розробленої фірмою Microsoft за десять років до цього дл інтерпретатора Standalone Disk Basic і пізніше пристосованої для операційної системи DOS, були вичерпані. FAT призначалася для жорстких дисків ємністю не більше 32 Мбайт, а нові НЖМД більшої ємності виявлялися зовсім марними дл користувачів PC. Деякі незалежні постачальники пропонували власні способи вирішення цієї проблеми, проте лише з появою DOS 4.0 ця криза була подолана - на деякий час.
Значні зміни структури файлової системи в DOS 4.0 дозволили операційній системі працювати з дисками ємністю до 128 Мбайт; з внесенням в подальшому незначних доповнень цю межу було піднято до 2 Гбайт. У той час здавалося, що такий обсяг пам'яті перевищує будь-які мислимі потреби. Однак якщо історія персональних комп'ютерів чогось і навчила, то саме тому, що ємність, "превишающа будь-які мислимі потреби", дуже швидко становитс "майже недостатньою для серйозних робіт". Дійсно, в даний час у продажу имеютс жорсткі диски ємністю, як правило, 2,5 Гбайт і вище, а колись дуже високий і визволив нас від обмежень стелю в 2 Гбайт перетворився в ще одна перешкода, яка належить подолати.
Для систем Windows 95 фірма Microsoft розробила нове розширення системи FAT - FAT32, без будь-яких гучних заяв передбачене в пакеті OEM Service Pack 2. Система FAT32 встановлюється тільки в нових PC, і не розраховуйте отримати її при переході до нової версії Windows 95, хоча , за твердженням Microsoft, це розширення стане складовою частиною основного пакета дл модернізації Windows (з кодовою назвою Memphis), випуск якого очікується пізніше в цьому році. У цій статті ми коротко розглянемо загальну структуру файлових систем FAT, а потім зупинимося на нововведеннях, що відрізняють FAT32. Щоб уникнути плутанини, стару 16-розрядну версію будемо називати FAT16.
області диска
Ця файлова система передбачає ряд спеціальних областей на диску, виділених для організації простору диска в процесі його форматування - головний запис завантаження, таблицю розбиття диска, запис завантаження, таблицю розміщення файлів (від якої система FAT і отримала свою назву) і кореневий каталог. На фізичному рівні простір диска розбивається на 512-байт області, звані секторами. В системі FAT місце для файлів виділяється блоками, які складаються з цілого числа секторів і іменуютс кластерами. Число секторів в кластері має бути кратно ступеня двійки. (Дізнатися розмір кластера у своїй системі ви можете за допомогою програм CHKDSK або SCANDISK.) У Microsoft називають ці кластери одиницями виділення пам'яті (allocation unit), а в звіті SCANDISK вказується їх розмір, наприклад "16 384 байт в кожній одиниці виділення пам'яті". Зазвичай розмір кластера можна визначити, поділивши обсяг пам'яті диска на 64 Кбайт (65 536 байт) і округливши результат до найближчого числа, кратного ступеня двійки. Так, розмір кластерів 1,2-Гбайт диска складає 32 Кбайт - якщо 1,2 Гбайт (1 258 291,2 Kбайт) поділити на 65 536, отримаємо 19,2 Кбайт, а після округлення - 32 Кбайт.
ланцюжок FAT
FAT являє собою базу даних, яка б пов'язала кластери дискового простору з файлами. У цій базі для кожного кластеру передбачається тільки один елемент. Перші два елементи містять інформацію про саму систему FAT. Третій і наступні елементи ставляться у відповідність кластерам дискового простору, починаючи з першого кластера, відведеного для файлів. Елементи FAT можуть містити кілька спеціальних значень, вказують, що- кластер вільний, тобто не використано ні одним файлом (для FAT16 це значення становить 0000H);
- кластер містить один або кілька секторів з фізичними вадами і не повинен використовуватися (дл FAT16 це значення становить FFF7H);
- даний кластер - останній кластер файлу (дл FAT16 це значення становить FFF8 FFFFH).
Для будь-якого використовуваного файлом, але не останнього кластера елемент FAT містить номер наступного кластера, зайнятого файлом.
Кожен каталог - незалежно кореневої або підкаталог - також є базою даних. У каталозі DOS для кожного файлу передбачена одна головна запис (У середовищі Windows 95 для довгих імен файлів введені додаткові записи). На відміну від FAT, де кожен елемент складається з єдиного поля, записи для файлу в каталозі складаються з декількох полів (див. Рис. 1). Деякі поля - ім'я, розширення, розмір, дата і брешемо - можуть бути виведені на екран за командою DIR. Але в системі FAT передбачено поле, яке отображаетс командою DIR, - поле з номером першого кластера, відведеного під файл.Структура запису в каталозі
Коли програма надсилає запит до операційній системі з вимогою надати їй вміст якогось файлу ОС переглядає запис каталогу дл нього, щоб знайти перший кластер цього файлу. Потім вона звертається до елементу FAT для даного кластера, щоб знайти наступний кластер в ланцюжку. Повторюючи цей процес, поки не виявить останній кластер файлу, ОС точно визначає, які кластери належать даного файлу і в якій последования. Таким шляхом система може надати програмі будь-яку частину запитуваної нею файлу. Такий спосіб організації файлу носить назву ланцюжка FAT.
В системі FAT файлів завжди виділяється ціле число кластерів. На 1,2-Гбайт жорсткому диску з 32-Кбайт кластерами в каталозі може бути зазначено, що розмір текстового файлу, що містить слова "hello, world", становить всього 12 байт, але насправді цей файл займає 32 Кбайт дискового простору. Невикористана частина кластера називається втраченим місцем (slack). У невеликих файлах майже весь кластер може бути втраченим місцем, а в середньому втрати складають половину розміру кластера.
На 850-Мбайт жорсткому диску з 16-Кбайт кластерами при середньому розмірі файлів порядку 50 Кбайт близько 16% відведеного під файли дискового простору буде втрачено на невикористовувані, але виділені файлам області. Один із способів вивільнення простору на диску - за допомогою програм стиснення диска, наприклад DriveSpace, яка виділяє "втрачені місця" для використання їх іншими файлами.
Розрахунки розмірів секторів і кластерів
Спочатку в файлової системі FAT в DOS 1 використовувалися 12-розрядні елементи FAT. (В даний час 12-розрядна FAT все ще знаходить застосування дл гнучких дисків.) У DOS 2, оснащеної додатковими засобами для роботи з жорсткими дисками, в FAT передбачені 16-розрядні елементи. Причина проблеми, що виникла в 1987 р криється в запитах нижнього уровн до операційної системи на зчитування секторів диска з передачею 16-розрядного значення як параметр. Існує 65 536 різних 16-розрядних значень; помноживши 65 536 на 512 байт в секторі, отримаємо 32 Мбайт. Що стосується числа секторів на диску, воно обмежене можливостями операційної системи. В DOS 4.0 дл обробки запитів на зчитування секторів нижнього рівня використовуються 32-розрядні параметри.
Обмеження на розміри секторів і кластерів в FAT16
Число секторів в кластері
ПОМИЛКА: Проблема для ОС
Навіть якщо такої проблеми не виникло при обсязі в 2 Гбайт, то операційна система все одно не зможе працювати з дисками ємністю понад 4 Гбайт. При використанні FAT16 число секторів в кластері зберігається самої ОС в одному байті блоку параметрів диска, що встановлюється ОС. Це число повинне бути кратним ступеню 2 і при цьому менше 256. Таким чином, в кластер може входити не більше 128 секторів, або 64 Кбайт. В результаті навіть якщо обмеження в 2 Гбайт знімається, система FAT16 прийнятна лише для дисків ємністю менше 4 Гбайт.
У файлової системи FAT32 як елементи FAT, так і номери секторів - 32-розрядні. Ось що це означає: помножимо 4 294 967 296 різних 32-розрядних значень на 512 байт в секторі і отримаємо величезне число 2 Тбайт (2 199 023 255 552 байт), яке представляє собою максимально можливу ємність диска при використанні FAT32.
Деякий усунення втрат
Тепер, коли допустима кількість кластерів і число секторів однакові, мабуть, можна було б припустити, що для мінімізації втрат місця на диску в FAT32 будуть використовуватися кластери, що складаються тільки з одного сектора. Але в цьому питанні необхідний якийсь компроміс, тому в специфікації FAT32 розмір кластера для накопичувачів ємністю до 8 Гбайт становить 4 Кбайт.
Залежність розміру кластера від ємності диска
Ємність диска, Гбайт
Розмір кластера, Кбайт
Одним з факторів, що зіграв роль в ухваленні такого рішення, стало те, що тепер потрібно враховувати і розмір самої FAT. Операційна система зберігає дві копії FAT, тому під елемент кожного кластера в FAT потрібно 8 байт. На 2-Гбайт диску FAT займе 32 Мбайт його простору при розмірі кластера 512 байт. А якщо розмір кластера складає 4 Кбайт, для зберігання двох таблиць FAT потрібно всього 4 Мбайт, т. Е. Буде зекономлено 28 Мбайт.
Але причиною для компромісу послужили не тільки міркування економії дискового простору; не були забуті і питання продуктивності. Для прискорення доступу до диска вбудована програма дискового кеша VCACHE завантажує всю FAT в оперативну пам'ять. Очевидно, що простіше домогтися цього, якщо кажда окрема таблиця FAT займає 2 Мбайт, а не 16 Мбайт. І не турбуйтеся про те, що збільшення числа кластерів і подвоєння розміру елементів FAT приведуть до зниження ефективності VCACHE: для FAT32 передбачено новий метод роботи з кешем, який, згідно із заявами Microsoft, підвищує загальну продуктивність.
Інші зміни в FAT32
Щоб забезпечити можливість роботи зі зрослим числом кластерів, в записи каталогу для кожного файлу повинна виділятися 4 байт для початкового кластера файлу (замість 2 байт в системі FAT16). Традиційно кажда запис в каталозі складається з 32 байт (рис. 1). В середині цього запису 10 байт не використовуються (байти з 12-го по 21-й), які Microsoft зарезервувала дл своїх власних потреб у майбутньому. Два з них тепер відводяться як додаткові байти, необхідні дл вказівки початкового кластера в системі FAT32.
Операційна система завжди передбачала наявність на диску двох примірників FAT, але використовувався тільки один з них. З переходом до FAT32 операційна система може працювати з будь-якої з цих копій. Ще одна зміна полягає в тому, що кореневої каталог, раніше мав фіксований розмір і строго певне місце на диску, тепер можна вільно нарощувати в міру необхідності подібно підкаталогу. Тепер не існує обмежень на кількість записів в кореневому каталозі. Це особливо важливо, оскільки під кожне довге ім'я файлу використовується декілька записів каталогу.
Поєднання переміщуваного кореневого каталогу й можливості використання обох копій FAT - непогані передумови для безперешкодного динамічного зміни розмірів розділів диска, наприклад уменьшени розділу з метою вивільнення місця для іншої операційної системи. Цей новий підхід менш небезпечний, ніж застосовувалися в програмах незалежних постачальників для переформатування диску при роботі з FAT16. (Хот в Windows немає утиліт, що використовують можливості FAT32, такі кошти реалізовані в програмах незалежних фірм, наприклад в Partition Magic 3.0 фірми PowerQuest і PartitionIt фірми Quarterdeck.)
застереження
Слід зауважити, що FAT32 розрахована тільки на Windows 95. У Microsoft не давали обіцянок підготувати Windows NT до її використання і натякнули, що і не збираються цього робити. Однак в фірмі заявляють, що, якщо в Windows NT 5.0 не буде коштів для роботи з FAT32, то в ній буде передбачена утиліта дл відображення дисків файлової системи FAT32 в NTFS ( "рідну" файлову систему Windows NT), тому ті, хто збирається оновити свою систему, можуть не турбуватися. Однак в даний час, якщо ви хочете встановити Windows NT і Windows 95 на одній машині, вам потрібно буде переконатися, що спільно використовується цими двома операційними системами дисковий простір організовано відповідно до FAT16, а не FAT32, яку не «сприймає" система Windows NT , і не NTFS, яку не «розуміє" Windows 95.
Вам також слід пам'ятати, що, оскільки поле дл розміру файлу в записі каталогу займає 32 розряду, розмір окремого файлу не може перевищувати 4 Гбайт.
Якщо ми зупинимося на FAT32, то пройде ще 15 років, перш ніж ми досягнемо кордону 2 Тбайт, і нам прідетс переходити на FAT64. З огляду на розмови про об'єктно-орієнтованих файлових системах, можна з тією ж мірою впевненості передбачити відмову від FAT, з якої ми могли передбачити в 1987 р відхід від FAT до досягнення межі в 2 Гбайт.