- •Лабораторна робота №4 Доступ до об’єктів кореневого каталогу файлової системи fat
- •1 Структура логічного диску
- •Рис 1.1 Зв’язки між структурами даних
- •Рис 1.2 Фізичні моделі файлових систем fat
- •2. Завантажувальний сектор
- •2.1 Необхідні дані завантажувального сектора
- •Рис 2.1 Поля завантажувального сектору які використовуються для пошуку кореневого каталогу
- •3 Дескриптори об’єктів
- •3.1 Дескриптори для довгих імен файлів
- •4. Таблиця fat
- •5.Контрольні запитання
- •6.Завдання
2.1 Необхідні дані завантажувального сектора
Область FAT містить одну або кілька структур FAT і починається в секторі, що знаходиться за зарезервованою областю. Її розмір обчислюється множенням кількості структур FAT на розмір однієї структури; обидва значення зберігаються в завантажувальному секторі. Нижче представлені формули по яких обчислюється початок і розмір області FAT.
beginFAT=begin_disk+BOOT.reservsect
size_obl_FAT=k_copy_FAT*size_FAT
де,
beginFAT-початок області FAT (абсолютна адреса)
size_obl_FAT - розмір області FAT
begin_disk - початок логічного диску (абсолютна адреса)
BOOT.reservsect - розмір резервної області
k_copy_FAT - кількість копій FAT
size_FAT - розмір однієї копії FAT
В області даних перебувають кластери із умістом файлів і каталогів; вона починається в секторі, що розміщується за областю кореневого каталогу для FAT12/16, а для FAT32 – заобластю FAT . Розмір області даних обчислюється як різниця між розміром логічного диску та розміром службової області. Область даних розділена на кластери, а кількість секторів у кластері вказується в завантажувальному секторі.
Згідно структури логічного диска рис. 2.3 кореневий каталог для FAT32 розміщений в області даних, адреса початку кореневого каталогу зафіксований в BOOT . Для FAT 12/16 кореневий каталог розташовується за областю FAT і має заздалегідь визначений розмір значення якого зазначене в BOOT. Динамічний розмір і місцезнаходження кореневого каталогу дозволяють FAT32 адаптуватися до появи ушкоджених секторів на початку області даних і збільшувати розмір каталогу до необхідного розміру, який визначається за структурою FAT. Нижче приведені формули по яких обчислюється початок кореневого каталогу.
Для FAT12/16
beginROOT=begin_disk+BOOT.reservsect+k_copy_FAT*size_FAT
size_root = k_elem_root*32/size_sekt
size_root - розмір кореневого каталогу
k_elem_root - кількість дескрипторів у кореневому каталозі
size_sekt - розмір одного сектора
Для FAT32
beginROOT=begin_disk+BOOT.reservsect+k_copy_FAT*size_FAT+
+(N_klast-2) * size_klast
N_klast - перший номер кластера кореневого каталогу
size_klast - кількість секторів у кластері
Рис 2.1 Поля завантажувального сектору які використовуються для пошуку кореневого каталогу
3 Дескриптори об’єктів
У дескрипторах об’єктів FAT зберігаються ім'я й дані файлу або каталогу. Ці записи створюються для кожного файлу або каталогу в системі й зберігаються в кластерах, виділених батьківському каталогу . Структура цих записів підтримує короткі імена за схемою 8 + 3 (8 символів імені, 3 символи розширення). Якщо файл має більше складне ім'я, на додаток до звичайного запису каталогу (SFN) створюються записи LFN (Long File Name).У табл. 2.5 приведені поля, що входять у базову структуру дескриптора каталогу.
Таблиця 2.5 Структура дескриптора з коротким іменем
Діапазон (байти) |
Опис
|
0 |
перший символ імені файлу |
1-10 |
символи 2-11 імені файлу |
11 |
атрибут файлу |
12 |
Зарезервовано |
13 |
час створення (десяті долі секунди) |
14-15 |
час створення (години, хвилини, секунди) |
16-17 |
дата створення |
18-19 |
дата останнього звертання |
20-21 |
старші 2 байти адреси першого кластера файлу, 0 для FAT12/16 |
22-23 |
час останньої модифікації |
24-25 |
дата останнього запису |
26-27 |
молодші 2 байти адреси першого кластеру |
28-31 |
розмір файлу |
Перший байт структури даних використається як ознака зайнятого дескриптору. Якщо цей байт дорівнює 0хе5 або 0x00, - запис каталогу вільний. У іншому випадку байт містить перший символ імені файлу. Звичайно імена файлів задаються в кодуванні ASCII, але вони також можуть містити символи національних алфавітів, для чого використаються кодові сторінки Microsoft. Якщо ім'я файлу коротше 8 символів, невикористовуванні байти праворуч заповнюються ASCII-кодом пробілу (0x20). Поле розміру файлу займає 4 байти, отже, максимальний розмір файлу дорівнює 4 Гбайт. У каталогів поле розміру дорівнює 0, і для визначення кількості виділених їм кластерів необхідно використати структуру FAT. Поле атрибутів містить один або кілька прапорів, перерахованих у табл.2.6
Таблиця 2.6 Атрибути файлів
прапорець |
Опис |
0х01 |
Доступ тільки для читання |
0х02 |
прихований файл |
0х04 |
системний файл |
0х08 |
мітка тома |
0х0f |
довге ім'я файлу |
0x10 |
Каталог |
0x20 |
архівний файл |