Файлова система MS-DOS на диску має ієрархічну деревоподібну структуру. У вузлах дерева містяться спеціальні файли – директорії. Самий перший в ієрархії директорій називається кореневим (root directory). Директорій – це спеціальний файл на диску, який складається з так званих елементів директорію (Мал. 1). Розмір елементу в MS-DOS – 32 байта. Розмір кореневого директорія обмежений і залежить від формату диску. Наприклад, для диску 360К байт в кореневому директорії може розміститься тільки 112 елементів. Файл кореневого директорія розташується в фіксованому місці диску. Нижчі в ієрархії директорії називаються субдиректоріями вони можуть розташуватися в будь-якому місці диску і мати число елементів, обмежене лише фізичним об’ємом диску.
Мал. 5 Формат елементу директорію MS-DOS
Прокоментуємо призначення окремих полів елементу директорія.
Байти
0 - 7. Ім’я файлу
Ім’я файлу може складатися не більш ніж з 8 ASCII-символів: латинських літер, цифр, символів підкреслювання, +, - та інших спеціальних символів. Якщо використовується менш 8 символів, інші позиції доповнюються пробілами. При запису імені файлу у директорій MS-DOS перетворює всі літери до верхнього регістру. При операціях з файлом імена, що задаються, автоматично переводяться до верхнього регістру. Тому MS-DOS вважає імена файлів TEXT, text або Text однаковими.
Всі директорії нижче кореневого обов’язково містять два зарезервованих імені, що поміщуються у файл директорія при його створенні. Це імена “.” та “..”. Ім’я “..” відповідає файлу директорія-батька (parent directory) (того, у якому зареєстрований даний директорій.) Ім’я “.” відповідає файлу даного директорія, це означає, що поле номера кластера такого елементу містить номер першого кластера файлу даного директорія.
У випадку, коли виконується знищення файлу, MS-DOS в якості першого символу імені такого файлу записує у елементі директорія символ “?” (ASCII E5h), та кластери, зайняті файлом, можуть використовуватися для інших файлів. Проте MS-DOS “підстраховує” користувача на випадок помилкового знищення файлів, залишаючи, поки це можливо, кластери стертого файлу не зайнятими. При необхідності виділити кластер під новий або існуючий файл який росте, виділяються раніше невикористані файлами кластери. (Звичайно, що це можливо тільки до тих пір, поки такі, цілком чисті кластери є на диску.) Цю особливість поведінки MS-DOS використовує багато програм, що виконують “відновлення” зітертих з диску файлів (наприклад, операція Unerase в PCTOOLS або Norton Utilities). Ясно, що відновлення буде неможливим, якщо кластери раніше видаленого файлу вже зайняті іншим файлом. Якщо по яким-небудь причинам необхідно мати файл з ім’ям, що починаються з символу ‘?’, перший байт розглядуваного поля буде рівний 05h.
Байти
8-10. Розширення імені файлу.
Розширення імені може містити не більш 3 ASCII-символів: латинських літер, цифр, символів підкреслювання, +, - та інших спеціальних символів. Якщо використовується менш трьох символів, інші позиції доповнюються пробілами. Як і для імені файлу, MS-DOS автоматично перетворює символи розширення до верхнього регістру.
Байт
11. Атрибут файлу
Атрибут вказує тип файлу. Окремі його біти встановлені в одиницю означають наступне:
біт 0 – вказує на те, що файл є таким що тільки читається (read only). При спробі його відкриття буде фіксуватися помилка порушення прав доступу до файлу;
біт 1 – вказує на прихований (hidden) файл. Такий файл не буде показуватися у списку директорія, одержаному, наприклад, командою DIR;
біт 2 – вказує на системний (system) файл. Такий файл не буде показуватися в списку директорія, одержаному, наприклад, командою DIR;
біт 3 – вказує на те, що даний елемент директорія відповідає мітці (назві) тому. Перші 11 байт елементу директорія містять саму мітку, а інші поля елементу ігноруються. Мітка тому може розташуватися тільки в кореневому директорії;
біт 4 – вказує на те, що даний файл – це субдиректорій і поле номера задає перший кластер файлу субдиректорію на диску;
біт 5 – архівний біт. Встановлюється в 1 при створенні файлу та виконанні операції запису. Це дозволяє виявити всі файли, що змінилися з моменту останнього скидання біту в 0. Скидання бітів здійснює, наприклад, спеціальна утиліта MS-DOS BACKUP, яка створює резервні копії файлів. Якщо необхідно відновлення диску з резервної копії, використовують утиліту MS-DOS RESTORE. Вона аналізує архівний біт, якщо він як і раніше рівний нулю, вважає, що файл не вимагає відновлення, бо його вміст не змінювався.
Байти
12 – 21. Зарезервовані і містять звичайно нулі
Байти
22 – 23. Час створення (останньої модифікації) файлу.
Байти використовуються наступним чином:
байт 23 |
байт 22 |
||||||||||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
г |
г |
г |
г |
г |
м |
м |
м |
м |
м |
м |
с |
с |
с |
с |
с |
години |
хвилини |
Секунди |
де г г г г г – двійковий вигляд годин (0 – 23); м м м м м м - двійковий вигляд хвилин (0 – 59); с с с с с - двійковий вигляд числа двосекундних одиниць. Часто поле часу створення файлу використовується програмами – вірусами для індикації того, що даний файл вже “заражений”. Наприклад, якщо поле хвилини задає некоректне значення 62, це, як правило, результат роботи вірусу.
Байти
24 – 25. Дата створення (останньої модифікації) файлу
Байти використовуються наступним чином:
Байт 25 |
байт 24 |
||||||||||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
р |
р |
р |
р |
р |
р |
р |
м |
м |
м |
м |
д |
д |
д |
д |
д |
Рік |
Місяць |
День |
де р р р р р р р - двійковий вигляд року (0 - 119, що відповідає рокам з 1980 по 2099); м м м м - двійковий вигляд місяця (1 - 12); д д д д д - двійковий вигляд дня (1-31).
Байти
26 - 27. Номер першого кластеру файлу (див. 2.4)
Байти
28 - 31. Розмір файлу в байтах
Оскільки дане поле складається з 4 байтів, максимальний розмір файлу в MS-DOS дорівнює 232 або 4 Г байтам.
![]() |
![]() |
![]() |