Специфікація BTRON3 (Український переклад) | Специфікація ОС Sakamura BTRON / BTRON3
Повернутися до змісту цього розділу
Попередня сторінка: Глава 3 TAD (Повернутися)

Глава 4. Специфікація файлової системи BTRON та формату тома

4.1 Загальний огляд

У цьому розділі описується фізична та логічна структура файлової системи специфікації BTRON (BTRON File System), правила організації тома диска, заголовки, розміщення файлів та таблиці записів.

Файлова система BTRON розроблена для підтримки мережевої структури реальних та віртуальних об'єктів (Real/Virtual Object System). Вона забезпечує високу надійність зберігання даних, швидку навігацію по записах файлу, а також сумісність із різними типами фізичних носіїв (дискети, жорсткі диски, flash-пам'ять).

Основний блок розміщення даних у файловій системі називається сектором або блоком тома. За замовчуванням розмір фізичного сектора/блока становить 1024 байти (1 КБ). Усі адреси блоків та зсуви у томі обчислюються у кількостях блоків розміром n байт.

4.2 Логічна структура тома файлової системи

4.2.1 Загальна схема тома диска

Том файлової системи BTRON ділиться на системну область тома (System Block) та область даних файлів (File Data Region).

Загальна структура тома файлової системи BTRON
Мал. 56 : Загальна структура тома файлової системи BTRON

4.2.2 Системний блок тома (System Block & Volume Header)

Системний блок розміщується на початку тома диска і містить глобальний заголовок файлової системи, таблицю ідентифікаторів файлів (FID Table), таблицю назв файлів (File Name Table) та растрову карту вільних блоків (Allocation Bitmap).

Структура системного блока тома
Мал. 57 : Структура системного блока тома

Системний заголовок тома (Volume Header) розміщується у перших 128 байтах системного блока і має наведену нижче бінарну структуру:

Заголовок системного блока тома
Мал. 58 : Заголовок системного блока тома

Опис полів системного заголовка тома:

TRONID:
Системний сигнатурний код операційної системи TRON (16 біт):
Стандартний формат (Big-Endian)0x42FE
Реверсивний формат (Little-Endian)0x52FE
FSID (File System ID):
Ідентифікатор типу файлової системи BTRON (16 біт):
Стандартна файлова система BTRON0x6400
Розширена файлова система BTRON0x6401
SYS_SIZE:
Повний розмір системного блока тома у секторах/блоках.
SFIDT:
Розмір таблиці ідентифікаторів файлів (FID Table) у блоках:
SFIDT = (NFMAX * 4) / 1024
SFNMT:
Розмір таблиці назв файлів (File Name Table) у блоках:
SFNMT = (NFMAX * 4) / 1024
NBMP:
Розмір растрової карти вільних блоків (Allocation Bitmap) у блоках. Обчислюється залежно від кількості блоків на диску NLB:
NBMP (для 1-бітової карти)NLB / 8 / 1024
NBMP (для 4-бітової карти)NLB / 2 / 1024
BLOCK_SIZE:
Розмір одного дискового блока в байтах (за замовчуванням 1024 байти).
NFILES:
Загальна кількість файлів, зареєстрованих у даній файловій системі.
LANG:
Мовний код назви тома (наприклад, 0x0021 для TRON Code / кирилиці).
VOL_STATE:
Стан цілісності тома диска:
0Нормально змонтований чистий том (Clean)
1Том потребує перевірки утилітою fsck
2Критична помилка тома (Corrupted)
VOL_CRETIME:
Час створення тома (секунди з 1 січня 1985 року GMT).
VOL_MODTIME:
Час останньої модифікації тома диска.
VOL_NAME:
Назва тома диска (40 байтів у кодуванні TRON Code).
DEV_NAME:
Назва пристрою / носія (40 байтів у кодуванні TRON Code).

Растрова карта зайнятості блоків (Allocation Bitmap) використовує біти "0" для позначення вільних блоків та "1" для зайнятих блоків тома.

Растрова карта зайнятості блоків тома
Мал. 59 : Растрова карта зайнятості блоків тома

4.2.3 Таблиця ідентифікаторів файлів (FID Table)

Таблиця ідентифікаторів файлів (File ID Table / FID Table) перетворює унікальний ідентифікатор файлу FID (File ID) у фізичну номерну адресу блоку заголовка файлу.

Максимальна кількість файлів у томі позначається константою NFMAX. Кожен запис у FID-таблиці займає 4 байти (32-бітний номер блока). Якщо FID-запис дорівнює 0, цей ідентифікатор файла вважається вільним.

Таблиця ідентифікаторів файлів (FID Table)
Мал. 60 : Таблиця ідентифікаторів файлів (FID Table)

4.2.4 Таблиця назв файлів (File Name Table)

Таблиця назв файлів (File Name Table / Short Name Table) використовується для швидкого пошуку ідентифікатора файла FID за його символьною назвою.

Таблиця коротких назв файлів
Мал. 61 : Таблиця коротких назв файлів

Хеш-значення назви обчислюється по 10 перших 16-бітних словах символьного рядка NAME[10] за допомогою операції XOR:

Структура масиву назви NAME[10]
Мал. 62 : Структура масиву назви NAME[10]
hash = 0;
for (i = 0; i < 10; i++) {
    hash = hash ^ NAME[i];
}

4.2.5 Кореневий файл каталогу (Root Directory File)

Кореневий каталог тома файлової системи BTRON має зарезервоване значення File ID = 0. Він є початковою точкою ієрархічного дерева реальних та віртуальних об'єктів тома.

4.3 Внутрішня структура файлу та індексація записів

4.3.1 Загальна схема організації файлу

Файл у специфікації BTRON складається з Блока заголовка (Header Block), Блоків даних (Data Blocks) та Індексу записів (Record Index).

Залежно від розміру та кількості записів, файл використовує 0-рівневу (прямий заголовок), 1-рівневу або 2-рівневу непряму індексацію записів.

Структура файлу (Індексація 0-го рівня)
Мал. 63 : Структура файлу (Індексація 0-го рівня)
Структура файлу (Індексація 1-го рівня)
Мал. 64 : Структура файлу (Індексація 1-го рівня)
Структура файлу (Індексація 2-го рівня)
Мал. 65 : Структура файлу (Індексація 2-го рівня)

4.3.2 Блок заголовка файлу (Header Block)

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

Структура блока заголовка файлу
Мал. 66 : Структура блока заголовка файлу

4.3.3 Заголовок файлу (File Header Record)

Перші 192 байти блока заголовка займає Заголовок файлу (File Header Record), який містить такі основні поля:

Заголовок файлу
Мал. 67 : Заголовок файлу
FILE_MAGIC:
Сигнатура файлу BTRON (0x54726f6e — "Tron").
FILE_TYPE / ATTR:
Слово атрибутів типу та режимів доступу до файлу (TTTT xxxx BAPO xRWE):
T (4 біти)0: Звичайний файл, 1: Файл каталогу / об'єкта
RWE (3 біти)Права доступу (Read, Write, Execute)
P, O, A, BПрапорці захисту, стиснення та розширень додатка
APPL_TYPE:
Ідентифікатор типу додатка-власника файлу (Application ID).
FILE_SIZE:
Повний розмір файлу у байтах.
RECORD_COUNT:
Загальна кількість записів у файлі.
INDEX_DEPTH:
Глибина індексації записів (0, 1 або 2).
CRETIME, MODTIME, ACCTIME:
Часові мітки створення, останньої модифікації та останнього доступу до файлу (у секундах GMT з 1985 року).
FILE_NAME:
Символьна назва файлу (40 байтів TRON Code).
Таблиця розташування файлу
Мал. 68 : Таблиця розташування файлу

4.3.4 Таблиця фрагментів дискових блоків (Fragment Table)

Таблиця фрагментів (Fragment Table) описує послідовність дискових секторів/блоків, з яких складається файл. Якщо файл фрагментований, він описується декількома безперервними дисковими сегментами (початковий блок + кількість блоків).

Таблиця фрагментів дискових блоків
Мал. 69 : Таблиця фрагментів дискових блоків

4.3.5 Індекс записів файлу (Record Index)

Індекс записів (Record Index) перетворює порядковий номер запису файлу у його фізичний зсув та розмір всередині блоків даних.

Індекс записів файлу
Мал. 70 : Індекс записів файлу

4.3.6 Непрямий індекс записів (Indirect Index)

Для великих файлів із великою кількістю записів застосовується 1-рівневий або 2-рівневий непрямий індекс (Indirect Record Index), який дозволяє зберігати до 655360 записів у одному файлі.

Непрямий індекс записів
Мал. 71 : Непрямий індекс записів

4.3.7 Приклади індексації та розщеплення записів

Приклад розщеплення індексу записів
Мал. 72 : Приклад розщеплення індексу записів

4.3.8 Блоки даних файлу та фрагментація записів (Data Blocks)

Блоки даних (Data Blocks) зберігають безпосередній корисний вміст записів файлу. Якщо запис перевищує розмір одного блоку, він простягається через декілька послідовних або фрагментованих блоків даних.

Фрагментація записів у блоках даних
Мал. 73 : Фрагментація записів у блоках даних

Додаток A. Напів-BTRON специфікація файлової системи (Semi-BTRON File System)

Спрощена специфікація файлової системи Semi-BTRON призначена для вбудованих контролерів та пристроїв із обмеженими ресурсами пам'яті.

Індекс записів у Semi-BTRON
Мал. 74 : Індекс записів у Semi-BTRON
Растрова карта у Semi-BTRON
Мал. 75 : Растрова карта у Semi-BTRON

Додаток B. Приклади та діаграми структури тома BTRON

Приклади структури тома файлової системи BTRON
Мал. 76 : Приклади структури тома файлової системи BTRON

Повернутися до змісту цього розділу
Попередня сторінка: Глава 3 TAD (Повернутися)