2.4         Програмні структури

Всі необхідні програмні структури представлені в header- файлах. Ціль їхнього створення - організація даних, прочитаних з носіїв. Наприклад, кожний жорсткий диск буде представлений структурою

typedef struct _HARDINFO

{

char nHard; //номер жорсткого диску

void* hDrive; //хендл жорсткого диску

UINT dwSectorSize; //розмір сектора

UINT bitsPerSector; //кількість розрядів для адресації всередині сектора

UINT dwExtendedAddr; //адреса розширеного розділу

PLOGICAL_DISC disklist;

} HARDINFO, *PHARDINFO;

Інформація про розділи організується в список структур, по одному списку на кожний жорсткий диск:

typedef struct _LOGICAL_DISC

{

void* next;

char nHard;

char nDisc;

char active;

UINT abs_addr;

UINT secLength;

UINT id;

char* cpFS;

UINT SN4;

UINT gbLength;

UINT mbLength;

void* disc_info;

UINT prcfree;

} LOGICAL_DISC, *PLOGICAL_DISC, **PPLOGICAL_DISC;

Після того, як FAT32-розділ був відкритий для читання, інформація про нього записується в таку структуру

typedef struct _DISC_INFO {

char Disc; //логічний диск

UINT beginFAT; //адреса початку FAT-таблиці у секторах

UINT nBytePerSector; //розмір сектора у байтах

void* hDrive; //хендл відкритого розділу

char SectPerCluster; //розмір кластера в секторах

UINT BytesPerCluster; //розмір кластера в байтах

UINT sizeFAT; //розмір FAT-таблиці в секторах

UINT* pFAT; //адреса образу FAT-таблиці у ОЗУ

UINT sizeFATbytes; //розмір FAT-таблиці в байтах

USHORT nFATCopy; //кількість копій FAT

USHORT sizeReserved; //розмір зарезервованої області в секторах

UINT bitsPerSector; //кількість розрядів для адресації всередині сектора

UINT RootCluster; //номер першого кластера корневой директории

UINT dwRootDirSize; //кількість кластерів для кореневої директорії

HDIR hRootDir; //хендл кореневої директориії

UINT prcfree;

BOOL bFAT16;

UINT RootSector;

UINT nRootElements;

} DISC_INFO, *PDISC_INFO;

Список прочитаних файлів організується в структуру:

typedef struct _FILES {

char* ansiname;

UINT attrib;

UINT firstcluster;

__int64 filesize;

void* next;

} FILES, *PFILES;

Якщо необхідно вивести на екран уміст файлу, спочатку його вміст буде відображено в таку структуру:

typedef struct _FILEBUF {

char* pBuf;

char* ansiname;

UINT dwLen;

} FILEBUF, *PFILEBUF;


3 ОПИС АЛГОРИТМІВ ПЗ ФМ

У цьому пункті розглядаються послідовно алгоритми пошуку та іменування дисків, доступу до об’єктів файлової системи, визначення зайнятого місця для файлової системи FAT32, FAT16.

3.1 Алгоритм пошуку дисків й іменування дисків

Алгоритм іменування логічних дисків засновано на звіренні серійного номера, отриманого логічного диска із серійним номером, збереженим системою.

Рисунок 3.1 – Пошук та найменування дисків


3.2 Алгоритм доступу к об’єктам файлової системи

Основна концепція файлової системи FAT полягає в тім, що кожному файлу й каталогу виділяється структура даних, називана дескриптором. У цій структурі зберігається ім'я файлу, його розмір, початкова адреса вмісту файлу й інші метадані. Данні файлів і каталогів зберігається в блоках даних, називаних кластерами. Якщо файлу або каталогу виділяється більш одного кластера, інші кластери знаходять за допомогою структури даних, називаної FAT(File Allocation Table). Структура FAT використовується як для ідентифікації наступних кластерів у файлах, так і для визначення стану кластерів. Існує три версії FAT: FAT12, FAT16 і FAT32. Вони відрізняються друг від друга насамперед розміром запису у структурі FAT. Зв'язки між структурами даних показано на рис. 3.4.

Рисунок 3.4 – Зв’язки між структурами даних

Файлова система FAT ділиться на три фізичні області для FAT32, та на чотири для FAT12/16. Перша область називається зарезервованою; в FAT12 і FAT16 зарезервована область займає всього 1 сектор, але формально її розмір визначається в завантажувальному секторі. Друга область FAT - містить основні й резервні структури FAT. Вона починається в секторі, котрий розташовано за зарезервованою областю, а її розмір визначається кількістю й розміром структур FAT. Третя – кореневий каталог, для FAT12/16 починається за областю FAT, а у FAT32 має повільне положення у області даних. Область даних - містить кластери, виділені для зберігання файлів і вмісту каталогів.

Доступ до файлових об’єктів виконується з припущення, що відома адреса першого кластеру об’єкту.

У даній реалізації алгоритм доступу до об’єктів містить дві частини – алгоритм пошуку шляху до поточної директорії та алгоритм пошуку об’єктів у завантаженій директорії.

Алгоритм пошуку об’єктів в каталогі наведено на рис. 3.2

Алгоритм пошуку поточного шляху - рис.3.3


Рисунок 3.2 – Алгоритм пошуку об’єктів в каталогі


Рисунок 3.3 – Алгоритм пошуку поточного шляху

3.3 Алгоритм визначення зайнятого місця на розділі

Визначення зайнятого місця на розділі реалізується шляхом аналізу таблиці FAT. Виконується перевірка усіх елементів таблиці FAT. Рахується кількість елементів, що містять 0. Ці елементи в файловій системі ідентифікують незайняте місце.

Отже, після повного перегляду FAT таблиці відома кількість елементів FAT таблиці та кількість елементів незайнятого місця. Знаходиться відсоткове співвідношення. Через нього обчислюється зайняте місце в байтах.

Алгоритм визначення на рис. 3.4.

Рисунок 3.4 – Алгоритм визначення зайнятого місця



Информация о работе «Розробка програмного забезпечення файлового менеджера»
Раздел: Информатика, программирование
Количество знаков с пробелами: 59552
Количество таблиц: 9
Количество изображений: 10

Похожие работы

Скачать
56956
0
11

... є інтереси відповідного бізнесу. Прецеденти є, але про суспільну користь говорити можна не завжди. Переглянувши державні бюджети України чи бюджети окремих міст, можна знайти факти підтримки суспільно корисних громадських організацій. Велика частина з них стала предметом розслідування КРУ, податкової міліції, чи депутатських комісій. Якщо влада таким чином не хоче ощасливити когось із своїх родич ...

Скачать
34004
0
0

... // Тези до конференції аспірантів і студентів ”Інженерія програмного забезпечення 2006”. – К.: НАУ, 2006. – С. 41. АНОТАЦІЯ   Авраменко О.А. Метод та засоби редокументування успадкованого програмного забезпечення. – Рукопис. Дисертація на здобуття вченого ступеня кандидата технічних наук зі спеціальності 01.05.03 – Математичне та програмне забезпечення обчислювальних машин і систем. – Наці ...

Скачать
85276
0
11

... RTOS складається з ядра, планувальника процесів (process manager) і розширених сервісів на рівні користувача. Як справжня мікроядерного операційна система, QNX Neutrino RTOS реалізує в ядрі ОС тільки найбільш фундаментальні сервіси, такі як передача повідомлень, сигнали, таймери, планування потоків, об'єкти синхронізації. Всі інші сервіси ОС, драйвери та програми виконуються як окремі процеси, які ...

Скачать
214694
25
9

... останньому випадку розрізняються експедиційний засіб, коли особа, що проводить опитуванння, сама роздає і збирає анкети, і кореспондентський, коли анкети розсилаються і повертаються поштою. [7]   3. УДОСКОНАЛЕННЯ ІНФОРМАЦІЙНОГО ЗАБЕЗПЕЧЕННЯ МАРКЕТИНГУ НА ПІДПРИЄМСТВІ Сьогодні виграє той, кого більше знають зовні з кращої сторони, той, хто знає більше про дійсний стан своєї організац ...

0 комментариев


Наверх