Дипломная работа: Програма для роботи з файловою системою
Поставимо перед собою задачу створення програми для роботи з файловою системою (створення закритих ділянок файловою системи). Для створення програми скористуємося мовою програмування С++. В теоретичній частині роботи коротко охарактеризуємо головні особливості роботи з файловими системами 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 байти) | |
--> ЧИТАТЬ ПОЛНОСТЬЮ <--