КАФЕДРА
Дата ___________________
Тема:
Програма для роботи з файловою системою.
“____” __________ 2008р.
Робота захищена
“____” __________ 2008р.
з оцінкою
_____________________
Підписи членів комісії
Зміст
Вступ
Поставимо перед собою задачу створення програми для роботи з файловою системою (створення закритих ділянок файловою системи). Для створення програми скористуємося мовою програмування С++. В теоретичній частині роботи коротко охарактеризуємо головні особливості роботи з файловими системами FAT 16 (MS-DOS).
Ієрархічна (багаторівнева) файлова система MS-DOS схожа з файловою системою ОС XENIX. Опис багаторівневої каталогової системи й роботи з нею дано в MS-DOS в теоретичній частині.
ТЕОРІЯ
Файлова система є однієї з найбільших частин операційної системи. Файлова система є надбудовою над носієм даних блокового пристрою (звичайно це дисковід гнучких магнітних дисків або вінчестер), що перетворює структуру каталогу й файли у одиницю пам'яті. Файлова система на диску містить, як мінімум, інформацію про розміщення файлів, каталог й обсяг файлів. Інформація про розміщення файлів може приймати різні форми в залежності від операційної системи, але всі форми, в основному, стежать простір, використовуваний файлами й простір доступне для нових даних. Каталог містить список файлів, збережених на пристрої, їхні розміри й інформацію про розміщення цих файлів.
Існує кілька різних підходів при розміщенні файлів й елементів каталогу. MS-DOS використає специфічний метод розміщення, називаний таблицею розміщення файлів (FAT), і ієрархічну структуру каталогу.
Ступінь деталізації файлу, наявна в розпорядженні операційної системи, також сильно коливається залежно від реалізації. Деякі системи, такі як MS-DOS, мають файли, які доступні на уровні байта; інші системи обмежують цей доступ фіксованим розміром запису.
Файлові системи іноді розширюються до таблиці символьних пристроїв, тому що б вони були файлами. Ці "файли" пристроїв можуть відкриватися, закриватися, читатися, у них можна записувати інформацію як в звичайні дискові файли, але всі транзакції відбуваються безпосередньо з пристроєм, специфікованим символом. Файли пристрою забезпечують корисну погодженість середовища для прикладних програм. MS-DOS підтримує такі файли шляхом призначення резервного логічного імені (такі як CON або PRN) кожному символьному пристрою.
Структура файлової системи
Доступ до блокових пристроїв здійснюється по секторах. Ядро MS DOS за допомогою драйвера прибудую розглядає блоковий пристрій як логічний кінцевий масив секторів і припускає, що цей масив містить припустиму в MS-DOS файлову організацію. Драйвер прибудую, у свою чергу, перетворити запитий MS DOS налогічний сектор у фізичну адресі блокового прибудую.
Первісна файлова система MS DOS записана на згадку з програми MS DOS FORMAT (див. главу USER COMMANDS: FORMAT).
Сектор початкового завантаження завжди розташований на качану роздягнула. Він містить ідентифікацію ОЕМ , програма-завантажник і блок параметрів BIOS (BPB) з інформацією про пристрій; потім треба необов'язкова область зарезервованих секторів (див. нижче розділ СЕКТОР ПОЧАТКОВОЇ ЗАВАНТАЖЕННЯ). Зарезервована область не має спеціального призначення, однак ОЕМ може зажадати більше складної програми-завантажника й помістити її в цю область. Таблиці розміщення файлів (FAT) указують на розташування області файлів даних; кореневий каталог містить фіксовані число входів, а область файлів даних включає файли даних, файли підкаталогів і вільні сектори даних.
Всі описані вище області - сектор початкового завантаження, FAT, корневого каталог й область файлів даних - мають фіксований розмір; це означає, що смороду не змінюються після того, як програма FORMAT визначила середовище даних. Розмір кожної із цих областей залежить від різних факторів. Наприклад, розмір FAT пропорційний області файлів даних. Розмір кореневого каталогу звичайно залежить від типу пристроїв; однобічний гнучкий диск може мати 64 входу, двосторонній гнучкий диск - 1126, а фіксований диск - 256.(Драйвери віртуальних дисків такі, як RAMDRIVE.SYS і деякі реалізації програми FORMAT дозволяють специфицировать число входів каталогу). Область файлів даних описується в термінах кластерів. Кластер визначається як фіксоване число суміжних секторів. Розмір сектора і розмір кластера повинні бути рівні ступені 2. Розмір сектора звичайно становить 512 байт, а розмір кластера - 1, 2 або 4 Кбайт, однак можливі сектори й кластери більшого розміру. Нижче наведені типові розміри кластерів, використовуваних в MS DOS :
Загалом кажучи, кластери більшого розміру використаються для фіксованих дисків більшого розміру. Хоча кластери меншого розміру дають їхнє розташування просторово більше ефективним, кластери більшого розміру є звичайно більше ефективними для довільного й послідовного доступу, особливо якщо кластери одному файлу расположєні непослідовно.
Таблиця розміщення файлів містить по одному вході для шкірного кластера в області файлів даних. Дублювання секторів у кластері також зменшить удвічі число входів FAT для даного розділу
Сектор початкового завантаження (мал.3-6) містить блок параметрів BIOS (BPB), програма-завантажник і деякі інші дані корисні для драйверів пристроїв. BPB описує деяке число фізичних параметрів пристрою, а також розташування й розмір інших областей на пристрої. Драйвер пристрою, при відповідному запиті, передає MS DOS інформацію про BPB, так що MS DOS може визначити конфігурацію диска.
Інформація ВРВ, що втримується в байтах з ОВН по 17Н, указує, що:
сектор включає 512 байт,
у кластері два сектори;
є один зарезервований сектор (для сектора початкової
завантаження), 2 FAT'а, 112 входів у кореневий каталог;
диск містить 1440 секторів, F9H дескрипторів пристроїв;
FAT включає 3 сектора.
Наступна за BPB додаткова інформація вказує, що в доріжку втримується 9 секторів, є 2 головки читання/запису й 0 невидимих секторів.
Дескриптор носія даних, що вказує у ВРВ й у першому байті кожної FAT, використається для опису типу носія, що перебуває в даний момент на пристрої. Сумісні з IBM носії даних мають наступні дескриптори:
______________________________________________________
00H | E9 XX XX або EB XX 90 |
|------------------------------------------------------|
03H | Ім'я й версія ОЕМ (8 байт) |
| |
|______________________________________________________|_____
0BH | Число байтів у секторі (2 байти) | |
|______________________________________________________| |
| | |
0DH | Число секторів на пристрої (1 байт) | |
|______________________________________________________| |
| | |
0EH | Число резервних секторів - нумерація з 0 (2 байти) | |
|______________________________________________________| |
| | |
10H | Число FAT (1 байт) | |
|______________________________________________________| |
| | |
11H | Число входів у кореневому каталозі (2 байти) | |
|______________________________________________________| |
| | BPB
13H | Загальне число секторів на логічному томі (2 байти) | |
|______________________________________________________| |
| | |
15H | Дескриптор носія даних (1 байт) | |
|______________________________________________________| |
| | |
16H | Число секторів в FAT (2 байти) | |
|______________________________________________________|____|
| |
18H | Число секторів на доріжці (2 байти) |
|______________________________________________________|
| |
1AH | Число головок (2 байти) |
|______________________________________________________|
| |
1CH | Число невидимих секторів (2 байти) |
|______________________________________________________|
| |
1EH | |
| ПРОГРАМА-ЗАВАНТАЖНИК |
| |
|______________________________________________________|
Структура сектора початкового завантаження MS DOS
Байти з ОВН по 17Н містять блок параметрів BIOS (BPB)
0 1 2 3 4 5 6 7 8 9 A B C D E F
0000 EB 2D 90 20 20 20 20 20-20 20 20 00 02 02 01 00 .................
0010 02 70 00 A0 05 F9 03 00-09 20 22 00 00 00 00 00 .................
0020 00 0A 00 00 DF 02 25 02-09 2A B8 50 F6 02 FA 00 .................
0030 BB C0 07 8E D8 BC 80 7C-33 C0 8E C0 F8 02 01 00 .................
. . .
. . .
. . .
0180 OA 44 69 73 5B 20 42 48-65 20 48 61 69 65 27 00 .Disk Boot.Failu.
0190 72 65 0D 0A 0D 0A 0A 4E-6F 20 53 79 73 74 65 60 re....Non-System.
01A0 20 64 69 73 6B 20 6F 72-20 64 69 73 6B 20 01 72 .disk or disk er
01B0 72 6F 72 0D 0A 52 65 70-60 61 63 65 20 61 62 64 .ror..Replace..and
01C0 20 70 72 65 73 73 20 61-6E 79 20 6B 65 79 20 77 .press.any key.w.
01D0 68 65 6E 20 72 65 61 64-79 79 0D 0A 00 00 00 00 .hen .ready......
01E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .................
01F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA .................
Шестнадцатеричный дамп сектора початкового завантаження MS DOS
_____________________________________________________________________
Дескриптор Тип носія Версії MS DOS |
-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і|
OF8H Фіксований диск 2.3 |
OF0H 3,5-дюймовий, 2-сторонній, 18-секторний 3.2 |
OF9H 3,5-дюймовий, 2-сторонній, 9-секторний 3.2 |
OF9H 5,25-дюймовий, 2-сторонній, 15-секторний 3.x |
OFCH 5,25-дюймовий, 1-сторонній, 9-секторний 2.x,3.x |
OFDH 5,25-дюймовий, 2-сторонній, 9-секторний 2.x,3.x |
OFEH 5,25-дюймовий, 1-сторонній, 8-секторний 1.x,2.x,3.x |
OFFH 5,25-дюймовий, 2-сторонній, 8-секторний 1.x(крім 1.0)|
OFEH 8-дюймової, 1-сторонній, одинарної щільності 2.3 |
OFDH 8-дюймової, 2-сторонній, одинарної щільності |
OFEH 8-дюймової, 1-сторонній, подвійної щільності |
OFDH 8-дюймової, 2-сторонній, подвійної щільності |
____________________________________________________________________|
Таблиця розміщення файлів
Таблиця розміщення файлів представляє схему розміщення файлів в дискової пам'яті за допомогою вказівки того, які кластери й у якому порядку включаються в кожен файл. Для того, щоб MS DOS могла опредилити місце розташування файлу, опис даного файлу в каталозі містить номер його початкового входу в FAT. Цей вхід FAT у свою чергу, включає номер входу наступного кластера, якщо файл складається більш ніж з одного кластера, або номер останнього кластера, якщо файл містить єдиний кластер. Файл, що складається з 10 кластерів, повинен мати 10 входів в FAT й 9 зв'язків між входами FAT(безліч зв'язків для одного файлу називається ланцюжком - (chain)).