Реферат: Файлова система FAT

ff8h - fffhfff8h - ffffh – останній кластер у списку,

002h - fefh0002h - ffefh – номер такого кластера в списку.

Безпосередній доступ до FAT може знадобитися для:

організації сканування каталогів для пошуку потрібних файлів;

для читання каталогів як файлів;

для організації захисту інформації від несанкціонованого копіювання.

Загальна схема використання FAT така:

•Читаємо FAT у пам'ять.Як уже зазначалося FAT розташовується відразу після BOOT-сектора (логічний сектор із номером 1). Для точного визначення початкового сектора FAT потрібно прочитати у пам'ять BOOT-сектор і проаналізувати вміст блока параметрів BIOS. У поле ressecs записана кількість зарезервованих секторів, що розташовуються перед FAT. Поле fatsize містить розмір FAT у секторах. Крім того, варто враховувати, що на диску може знаходитися декілька копій FAT. Операційна система використовує тільки першу копію, інші потрібні для утіліт відновлення вмісту диска. Кількість копій FAT знаходиться в полі fatcnt BOOT-сектора.

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

•Використовуємо номер першого кластера як індекс у FAT для отримання номера такого кластера.

Повторюємо цю процедуру доти, поки отримане з FAT значення не буде відповідати кінцю файла.

Процедура витягу номера кластера з FAT залежить від формату таблиці розміщення файлів.

16-бітову FAT можна уявити як масив 16-бітових чисел. Для визначення номера такого кластера треба просто отримати 16-бітове значення з FAT, використавши в якості індексу номер попереднього кластера.

Для 12-бітової FAT процедура значно складніша.

Необхідно виконати такі дії:

•Помножити номер початкового кластера на 3.

•Розділити результат на 2 (тому що кожний елемент таблиці має довжину 1.5 байта).

•Прочитати 16-бітове слово з FAT, використовуючи в якості зсуву значення, отримане після ділення на 2.

•Якщо номер початкового кластера парний, на вибране з FAT слово треба накласти маску 0fffh, залишивши молодші 12 бітів. Якщо номер початкового кластера не парний, вибране з FAT значення необхідно зсунути вправо на 4 біта, залишивши старші 12 біт.

•Отриманий результат – номер такого кластера в ланцюгу, значення 0fffh відповідає кінцю ланцюга кластерів.

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

Кореневий каталог знаходиться відразу за останньою копією FAT. Кількість секторів, що займаються однією копією FAT, знаходиться в блоці параметрів BIOS у BOOT-секторі в полі fatsize, кількість копій FAT - у полі fatcnt блока BPB. Отже, перед кореневим каталогом знаходиться один BOOT-сектор і (fatcnt_*_fatsize) секторів таблиці розміщення файлів FAT.

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

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

Області логічного диска Номер початкового сектора на логічному диску

+----------------------+

: : 0

: BOOT-сектор і :

: зарезервовані :

К-во Просмотров: 297
Бесплатно скачать Реферат: Файлова система FAT