Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Файли та каталоги




Формат FAT

Визначення формату FAT

Для DOS, сектор запису завантаження (BOOT-сектор) диску в полі із зміщенням 36h вміщує 8-байтовий рядок, що ідентифікує формат FAT. „FAT12” або ” FAT16”.

Якщо розділи на жорсткому диску створювались утилітою FDISK, формат FAT можна визначити, аналізуючи вміст поля SYS головного завантажую чого запису (Master Boot Record). Якщо це поле вміщує значення:

1 – 12-бітовий формат,

4 – 16-бітовий формат.

Але диски після обробки деякими диск-менеджерами можуть мати нестандартний для DOS формат таблиці розділів диску (Partition Table) та в полі SYS можуть бути інші величини, відмінні від 1 та 4.

1-й байт FAT „Описувач середовища” (Media Descriptor) або байт ID ідентифікації FAT. Він має таке ж значення, як і байт-описувач середовища, що знаходиться в завантажувальному записі. Наступні 5 байтів – для 12-бітового формату та 7 байтів – для 16-бітового формату завжди містять значення 0FFh.

Інша частина FAT складається з 12-бітових або 16-бітових комірок, кожна комірка відповідає одному кластеру диску. Ці комірки можуть вміщувати такі значення:

 

FAT12 FAT16 Зміст
000h 000h Вільний кластер.
FF0h-FF6h FFF0h-FFF6h Зарезервований кластер.
FF7h FFF7h Поганий (збійний) кластер.
FF8h-FFFh FFF8h-FFFFh Останній кластер у списку.
002h-FEFh 0002h-FFEFh Номер наступного кластеру у списку.

 

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

Відомо, що файлова система MS-DOS має деревоподібну структуру. В кореневому каталозі розміщуються 32-бітні елементи, які вміщують інформацію про файли та інші директорії. Для читання кореневої директорії необхідно визначити його розташування та розмір.

Коренева директорія знаходиться зразу за останньою копією FAT. Кількість секторів, що займає одна копія FAT, знаходиться в BOOT-секторі в полі із зміщенням 11. кількість копій FAT в тому ж полі (в блоці ВРВ – блок параметрів BIOS). Таким чином, перед кореневим каталогом знаходиться один BOOT-сектор та декілька секторів таблиці розміщення файлів FAT.

Розмір кореневого каталогу можна визначити, виходячи із значення поля rootsize (блок ВРВ). У цьому полі при формуванні диску записується максимальна кількість файлів та каталогів, які можуть знаходитись в кореневому каталозі. Для кожного елемента в каталозі відводиться 32 байта, тому кореневий катал має довжину (32*rootsize) байт.

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

 

RootSecs = 32 × rootsize / sectsize,

 

де rootsize – максимальне число дескрипторів файлів, що може міститися в кореневому каталозі диску; sectsize – розмір сектору в байтах, він може бути отриманий з відповідного поля BOOT-сектору.

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

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

 

SectNu = DataStart + (ClustNu - 2) clustsize,

DataStart = ressecs + fatsize × fatcnt + 32 × rootsize / sectsize,

 

де SectNu – номер першого сектора, розподіленого кластеру з номером ClustNu; ClustNu – номер кластера, для якого необхідно визначити номер першого сектора; Clustsize – кількість секторів, що займається кластером, знаходиться в блоці параметрів BIOS (блок ВРВ BOOT-сектора).

 

 

Довільний каталог містить 32-байтні елементи – дескриптори, що описують файли та інші каталоги.

 

Формат дескриптора

Зміщення Розмір Вміст
(+0)   Ім’я файлу або директорії, доповнене пропусками.
(+8)   Розширення імені файлу, доповнене пропусками.
(+11)   Атрибути файлу.
(+12)   Зарезервовано.
(+22)   Час створення або останньої модифікації файлу.
(+24)   Дата створення або останньої модифікації файлу.
(+26)   Номер першого кластеру, що виділений файлу.
(+28)   Розмір файлу в байтах.

 

Байт атрибутів є у кожного файлу. Біти цього байту мають наступні значення:

0 – файл тільки для читання, в цей файл не можна писати і його не можна стирати;

1 – захований (hidden) файл, цей файл не з’являється у списку файлів;

2 – системний файл; цей біт встановлюється у файлах, що є складовою частиною ОС;

3 – цей дескриптор описує мітку диска; для цього дескриптора поля імені файла та розширення імені файла мають розглядатись як поле довжиною 11 байт; це поле вміщує містку диска;

4 – дескриптор описує файл, що є підкаталогом поданого каталогу;

5 – прапорець архівації; якщо цей біт встановлено в 1, то це означає, що даний файл не був завантажений утилітою архівації (наприклад, програмою BACK UP);

6-7 – зарезервовані.

 

Приклади.

Звичайно файли мають такі комбінації бітів в байті атрибутів:

00000000 – звичайні файли (тексти програм, модуль завантаження, пакетні файли).

00000111 – тільки файли, що читаються заховані системні файли. Така комбінація у файлах.

00001000 – мітка поля; дескриптор мітки поля може знаходитись тільки в кореневому каталозі логічного диску.

00010000 – (10h) дескриптор, що описує каталог.

00100000 – (20h) звичайний файл, який не був завантажений утилітами BACK або XCOPY.

У довільному каталозі, окрім кореневого, два перших дескриптора мають спеціальне призначення:

Перший дескриптор вміщує в полі імені рядок ”.”. Цей дескриптор вказує на каталог в який його вміщено, тобто каталог вказує має сама на себе. Другий спеціальний дескриптор вміщує в полі імені рядок ”..”. Цей дескриптор вказує на каталог вищого рівня. Якщо в полі номера першого кластера дескриптора з іменем ”..” знаходиться нуль, то це означає, що цей каталог розташований в кореневому каталозі.

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

При знищенні файла перший байт його імені заміняється на байт E5h (символ ‘X’). Всі кластери, виділені файлу, відмічаються у FAT як вільні. Якщо файл вилучили тільки що, то його ще можна відновити, тому що в дескрипторі збереглися всі поля, крім першого байта імені файлу. Але, якщо на диск записані нові файли, то вміст кластерів вилученого файла буде змінено і відновлення стане неможливим.

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

 

 

Старші 5 бітів вміщують значення години модифікації файла, шість бітів з номерами 5-10 вміщують значення години модифікації файла, в молодших 5 бітах зберігається значення секунд, полене на 2. Для того, щоб час оновлення файла вмістився в 16 бітах, треба було знизити точність часу до двох секунд.

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

 

 

Поле довжини в дескрипторі вміщує точну довжину файла в байтах. Для каталогів у полі довжини записано нульове значення. Працювати з каталогом як зі звичайним файлом засобами DOS неможливо. Єдиний спосіб прочитати каталог як файл – використати FAT для визначення ланцюжка кластерів, що займає цей каталог та прочитати сектори, що відповідають цим кластерам за допомогою переривання DOS INT 25h.

Ще раз повернемось до програми FDISK та диск-менеджерів. Як відомо, утиліта FDISK дозволяє створити розділи диску. В DOS 4.0 та вищих нема обмежень на розміри розділів та логічних дисків. Але при використанні FDISK не можна організувати захист логічних дисків від запису або від несанкціонованого доступу. Програми диск-менеджерів такі, як ADM або Speed Star, в деякій мірі розв’язують питання захисту від запису та несанкціонованого доступу. Але з’являються нові проблеми.

Диск-менеджери використовують свій власний механізм розбиття диска на розділи і тому логічна структура диску, підготовлена програмами диск-менеджерів, відрізняється від стандартної для MS-DOS. Перш за все це стосується таблиці розділів диску (Partition Table). Елементи таблиці розділів мають код системи відмінний від того, що використовується в MS-DOS. Цей код залежить від конкретної програми диск-менеджера.

Якщо диск підготовлений програмою Speed Star то всі елементи таблиці розділів будуть зайняті (MS-DOS залишає два елементи невикористаними).

Для того, щоб встановити на цей же диск іншу ОС треба вивантажити вміст всього диску на дискети, вилучити всі розділи Speed Star, створити розділи іншої ОС, а вже потім розділи MS-DOS.

Якщо диск підготовлено утилітою FDISK, то зарезервувавши заздалегідь місце для іншої ОС, можна без проблем використати два елементи таблиці розділів, що залишилися.

У таблиці розділів диску, що підготовлений програмою FDISK, знаходиться інформація про формат таблиці розміщення файлів FAT, що використовується. Можна скористуватись цією інформацією, але тільки в тому випадку, якщо диск підготовлений утилітою FDISK.




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 806; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.