Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Модель файлової системи FAT

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Кілька років Microsoft і IBM спробували продовжити життя файловій системи FAT завдяки зняттю обмежень на розміри томи, поліпшенню cтратегий розподілу, кэширования імен шляху, і переміщенню таблиць і буферів в розширену пам’ять. Але можуть розцінюватися лише як тимчасові заходи, оскільки файлова система просто більше не підходили до великим пристроям довільного доступу. Так звана файлова система… Читати ще >

Модель файлової системи FAT (реферат, курсова, диплом, контрольна)

Мета курсової работы.

Ідея программы.

Про систему FAT.

Структура системи файлів FAT.

Про задания.

Про застосованих рівнях абстракции.

Про интерфейсе.

Вихідний текст: Макроси, викликані событиями.

Вихідний текст: Базові события.

Вихідний текст: Макроси нижнього рівня абстракции.

Список літератури, застосованої для підготовки курсової работы.

Цель:

Розробка програми, моделюючою організацію файловою системи FAT.

Ідея программы:

Програма позвовяет експериментально досліджувати логічний структуру файлової системи FAT, що складається із трьох областей: FAT (File Allocation Table), кореневої каталог і науковотехнологічна галузь файлов.1 Є панель описи операцій із файлами, які перебувають на диску, саме: додати файл, видалити файл, перезаписати файл (зі зміною розміру). З іншого боку, надано можливість графічного відображення відповідності файлів секторам на диске.

Файлова Система FAT:

так звана файлова система FAT використовувалася переважають у всіх версіях МСДОС й у у перших двох випусках OS/2 (версії 1.0 і 1.1). Кожен логічний тому має власний FAT, який виконує дві функції: містить інформацію розподілу кожному за файла в томі у вигляді списку зв’язків модулів розподілу (кластерів) і вказує, які модулі розподілу вільні.

Коли FAT було винайдено, це були чудове рішення керувати дисковим простором, здебільшого тому що гнучкі диски, у яких він використовувався, рідко були розміром як, ніж декілька Mb. FAT виявився досить малий, аби бути у пам’яті постійно, дозволяв забезпечувати дуже швидкий довільний доступом до будь-якій частині будь-якого файла. Коли FAT застосували на жорстких дисках, він став надто великою для резидентного перебування у пам’яті і погіршував продуктивність системи. З іншого боку, оскільки інформація щодо вільного дискового простору рассредотачивалась «впоперек «великої кількості секторів FAT, він був непрактичний під час розподілу файлового простору, і фрагментація файлів виявилася перешкодою високої ефективності.

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

Обмеження FAT на найменування файлів і каталогів успадковані з CP/M. Коли Paterson створював 86DOS, одній з його перших цілей було полегшити імпорт з CP/M у його нову операційну систему. Отже прийняті CP/M обмеження на імена файлів і розширень перенеслися в 86DOS.

Кілька років Microsoft і IBM спробували продовжити життя файловій системи FAT завдяки зняттю обмежень на розміри томи, поліпшенню cтратегий розподілу, кэширования імен шляху, і переміщенню таблиць і буферів в розширену пам’ять. Але можуть розцінюватися лише як тимчасові заходи, оскільки файлова система просто більше не підходили до великим пристроям довільного доступу.

Структура системи файлів FAT.

00Н 01Н Ідентифікатор дисковода.

01Н 09Н Ім'я файла (8 символов).

09Н 0СН Розширення (3 символа).

0СН 0ЕН Номер поточного блока.

0ЕН 10Н Розмір записи.

10Н 14Н Розмір файла.

14Н 16Н Дата створення (обновления).

16Н 18Н Час створення (обновления).

18Н 20Н Зарезервировано.

20Н 21Н Номер поточної записи.

21Н 25Н Номер відносної записи.

00Н 01Н 0FFH.

01Н 06Н Зарезервировано.

06Н 07Н Байт атрибута.

07Н 08Н Ідентифікатор дисковода.

08Н 10Н Ім'я файла (8 символов).

10Н 13Н Розширення (3 символа).

13Н 15Н Номер поточного блока.

15Н 17Н Розмір записи.

17Н 1ВН Розмір файла.

1BН 1DН Дата створення (обновления).

1DН 1FН Час створення (обновления).

1FН 27H Зарезервировано.

27H 28H Номер поточної записи.

28H 2CH Номер відносної записи.

Резюме.

Резюме.

Про задания.

Модель файловою системи є робочий лист Microsoft Excel, яким у вигляді осередків представлені три логічні структури файлової системы:

* Каталог файлов.

* Таблиця распределения.

* Область файлов.

На робочому аркуші також розташовані дві панелі управления:

1) Операції з файлами.

* добавить.

* удалить.

* перезаписать.

2) Візуалізація FAT.

* показати файл.

* прибрати стрелки.

З контексту питання паралельне виконання процесів чи потоків (MultiThreading) реалізовувати не потрібно. Зважаючи на ці чинники, і навіть необхідність розробки «дружнього» интерейса із застосуванням графічних примітивів, було вирішено використовувати мову програмування VisualBasic (VBA) від фірми Microsoft і електронну таблицю Excel 5.0 фірми Microsoft.

Оскільки модель є типовою керованої подіями системою, то алгоритм її досить простий, а точніше є ряд алгоритмів, які перетинаються лише у середній рівень абстракції. (див. нижче) Події викликаються користувачем у вигляді на керівні органи.

Про застосованих рівнях абстракции.

Усі можливі події були ретельно проаналізовані автором і розділені втричі категорії, чи рівні абстракції:

* Події, викликані зовнішніми впливами. Такими є всі події, викликані користувачем у вигляді виклику пунктів з груп операцій із файлами.2.

* Події фундаментальної природи, тобто. базові події, породжувані предудущими. Їх значно менше, і Вони аж ніяк не вникають в суть що породили з зовнішніх событий.3.

* Події низького рівня абстракції, що є искуственно синтезованими з попередніх груп подіями та ставлять за мету понизити складність системи з допомогою абстрагування від непринципових тонкощів і ускладнень у системі, що диктуються контекстом. Такими, наприклад, є події обробки неправильних ситуаций.4.

Про интерфейсе.

Інтерфейс є інтуїтивно зрозумілим, і не нав’язливим, завжди, наскільки може бути, є «демократичним» стосовно користувачеві. У програмах, написаних таким стилем, дуже чітко простежується причинно-наслідковий зв’язок, добре знайома кожній людині є невід'ємною частиною образного мислення. Це делат програму дуже простий використання, а алгоритм роботи простим у сенсі. Уся необхідна до роботи інформація представленій у діалогах, про неправильних ситуциях програма повідомляє користувачеві й це єдиний (законний) випадок свободи дій пользователя.

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

Макроси, викликані событиями.

Public Type FileID «Тип, описує файл: имя, размер і край входу в FAT.

Name As String.

Size As Integer.

First As Integer.

End Type.

Sub PressAddFile () «Макрос, викликаний кнопкою «Додати Файл «.

DialogSheets («Add »).EditBoxes («Name »).Text = «» «підготовка діалогу «Додавання файла «.

DialogSheets («Add »).EditBoxes («Size »).Text = «» «очищення полів ввода.

Sheets («Add »).Show «Виклик діалогу «Додавання файла «.

With DialogSheets («Add ») «Перевірка на правильність запроваджених данных.

If (.EditBoxes («Name »).Text = «») Or (.EditBoxes («Size »).Text = «») Or (.EditBoxes («Size »).Text = «0 ») Then Exit Sub.

End With.

Dim NewFile As FileID «Примірник перемінної з описом створюваного файла.

With DialogSheets («Add »).

NewFile.Name =.EditBoxes («Name »).Text.

NewFile.Size =.EditBoxes («Size »).Text.

End With.

Call AddFile (NewFile) «Виклик процедури додавання файла.

Refresh «оновили графічне зображення розміщення файлов.

End Sub.

Sub PressDeleteFile () «переважно робочому аркуші натиснута кнопка Видалити Файл.

temp = 4.

With DialogSheets («Delete ») «готуємо на роботу діалог Delete.

.ListBoxes («Name »).RemoveAllItems.

While Sheets («Sheet »).Cells (temp; 2) «» «заповнюємо список наявними в каталозі файлами.

.ListBoxes («Name »).AddItem Text:=Worksheets («Sheet »).Cells (temp; 2).Value; Index:=temp — 3.

temp = temp + 1.

Wend.

.Show «показуємо діалог Delete.

If.ListBoxes («Name ») = 0 Then Exit Sub.

Dim File As FileID «змінна для ідентифікатора удаляемого файла. Передается процедурі DeleteFile.

File.Name = Sheets («Sheet »).Cells (.ListBoxes («Name ») + 3; 2).

File.Size = Sheets («Sheet »).Cells (.ListBoxes («Name ») + 3; 3).

File.First = Sheets («Sheet »).Cells (.ListBoxes («Name ») + 3; 4).

Call DeleteFile (File) «Викликаємо процедуру видалення файла.

Refresh «оновили графічне зображення розміщення файлов.

End With.

End Sub.

Sub PressRemakeFile () «натиснута кнопка Изменить_размеры_файла.

" з цього приводу готуємо на роботу діалог Remake.

temp = 4.

With DialogSheets («Remake »).

.ListBoxes («Name »).RemoveAllItems.

.EditBoxes («Size »).Text = ««.

While Sheets («Sheet »).Cells (temp; 2) «» «заповнюємо список наявними в каталозі файлами.

.ListBoxes («Name »).AddItem Text:=Worksheets («Sheet »).Cells (temp; 2).Value; Index:=temp — 3.

temp = temp + 1.

Wend.

.Show «показуємо діалог Remake.

" при натисканні кнопки OK у діалозі запустится макрос DialogRemakePressOK.

End With.

End Sub.

Sub DialogRemakePressName () «у діалозі Перезапис обраний файл з списка.

With DialogSheets («Remake ») «і у діалозі Перезапис оновлюємо полі розміру файла в соотв. з обраним файлом.

.EditBoxes («Size »).Text = Sheets («Sheet »).Cells (3 +.ListBoxes («Name »).ListIndex; 3).Value.

End With.

End Sub.

Sub DialogRemakePressOK () «у діалозі зміна розмірів файла натиснута кнопка OK.

With DialogSheets («Remake »).

.Hide «прибрали з екрана диалог.

If.ListBoxes («Name »).ListIndex = 0 Then Exit Sub.

Dim File As FileID «Примірник типу FileID — ідентифікатор файла.

File.Name = Sheets («Sheet »).Cells (3 +.ListBoxes («Name »).ListIndex; 2).Text.

File.Size = Sheets («Sheet »).Cells (3 +.ListBoxes («Name »).ListIndex; 3).Value.

File.First = Sheets («Sheet »).Cells (3 +.ListBoxes («Name »).ListIndex; 4).Value.

" перевірка на наявність изменений.

If.EditBoxes («Size »).Text = File. Size Or. EditBoxes («Size »).Text = «0 «Then Exit Sub.

" перевірка на помещаемость.

If.EditBoxes («Size »).Text > (FreeSize + ((File.Size — 1) 8 + 1) * 8) Then.

temp = MsgBox («Файл «& File.Name & «розміром «&.EditBoxes («Size »).Text & «може бути розміщений »; vbExclamation; «Перезапис файла »).

Exit Sub.

End If «перезапис: видалення, та був запис файла, але з іншим размером.

Call DeleteFile (File) «удалили.

File.Size =.EditBoxes («Size »).Text «змінили размер

Call AddFile (File) «записали.

Refresh «оновили таблицю розподілу файлов.

End With.

End Sub.

Sub Visualisation () «візуалізація файла.

temp = 4.

With DialogSheets («Visualisation ») «готуємо на роботу діалог Visualisation.

.ListBoxes («Name »).RemoveAllItems.

While Sheets («Sheet »).Cells (temp; 2) «» «заповнюємо список наявними в каталозі файлами.

.ListBoxes («Name »).AddItem Text:=Worksheets («Sheet »).Cells (temp; 2).Value; Index:=temp — 3.

temp = temp + 1.

Wend.

.Show «показуємо діалог Visualisation.

If.ListBoxes («Name ») = 0 Then Exit Sub «вибрали чи щось ?

Dim NumberFile As Integer.

NumberFile =.ListBoxes («Name »).ListIndex «номер за каталогом визуализируемого файла.

Sheets («Sheet »).Cells (NumberFile + 3; 2).ShowDependents «показуємо лінії, які відбуваються від осередки каталогу безпосередньо з ім'ям визуализируемого файла до всіх зайнятих їм осередків області файлов.

End With.

End Sub.

Базові события.

Const ColorOfPaper = 33 «колір фону області файлов.

Const ColorUsedPartOfFAT = 2 «колір зайнятою частини області файлов.

Sub AddFile (NewFile As FileID) «Процедурa додавання файла.

" Перевірка наявності присутності достатньому до створення файла кількості вільного пространства.

If NewFile. Size > FreeSize Then.

temp = MsgBox («Файл «+ NewFile.Name + «може бути розміщений через нестачу вільного місця. »; vbExclamation; «Процес створення файла »).

Exit Sub.

End If.

count = NewFile. Size «лічильник вже записаній частини файла.

NewFile.First = NextFreeCellFAT «завдання точки входу в FAT для даного файла.

Dim PreviousCellFAT As Integer «Номер останньої модифицировавшейся осередки FAT.

PreviousCellFAT = NextFreeCellFAT.

Call ToFAT (PreviousCellFAT; 0) «Записали у ній ноль-признак те, що це останній (поки) кластер даного файла.

count = count — 8 «принаймні 8 байт файла вже размещены.

While count > 0 «поки весь файл не разместился.

Call ToFAT (PreviousCellFAT; NextFreeCellFAT) «до останньої модифицировавшуюся осередок FAT вносимо покажчик для наступної вільну ячейку.

PreviousCellFAT = NextFreeCellFAT.

Call ToFAT (PreviousCellFAT; 0) «Записали у ній ноль-признак те, що це останній (поки) кластер даного файла.

count = count — 8 «принаймні 8 байт файла вже размещены.

Wend.

Call AddFileToCatalog (NewFile) «додали файл в каталог.

End Sub.

Sub DeleteFile (File As FileID) «процедура видаляє поставлене файл без разговоров.

Call DeleteCellFromFAT (File.First).

Call DeleteFileFromCatalog (File.Name).

End Sub.

Sub Refresh () «відновлення зображення області файлов.

With Sheets («Sheet »).

.Range («F6:U13 »).Interior.ColorIndex = ColorOfPaper «забарвили область файлів в колір фона.

.Range («F6:U13 »).Value = «» «очистили все осередки області файлов.

.Range («F6:U13 »).NumberFormat = «0 «» формат числа області файлов-целые числа.

.ClearArrows «прибрали все стрелки.

Dim PointerToFile As String.

NumberFile = 1.

While.Cells (NumberFile + 3; 2) «» «послідовно переглядаємо область файлів. До кожного файлавыполняется наступна процедура:

NumberCellFAT =.Cells (NumberFile + 3; 4) «точка входу в FAT N-ного файла.

PointerToFile = «=R «& NumberFile + 3 & «C2 «» покажчик на осередок каталогу безпосередньо з ім'ям N-ного файла.

Relation = (.Cells (NumberFile + 3; 3) — 1) Mod 8 «усунення. Являє собою розмір неповністю заповненого кластера.

While.Cells (3; NumberCellFAT + 5) 0 «перегляд FAT до ознаки кінця цепочки.

.Range (Cells (6; NumberCellFAT + 5); Cells (6 + 7; NumberCellFAT + 5)).Interior.ColorIndex = ColorUsedPartOfFAT + NumberFile «виділення кольором чергового непоследнего кластера N-ного файла.

.Range (Cells (6; NumberCellFAT + 5); Cells (6 + 7; NumberCellFAT + 5)).Font.ColorIndex = ColorUsedPartOfFAT + NumberFile.

.Range (Cells (6; NumberCellFAT + 5); Cells (6 + 7; NumberCellFAT + 5)).Formula = PointerToFile «кожна осередок цього кластера тепер свідчить про осередок безпосередньо з ім'ям файла в каталоге.

NumberCellFAT =.Cells (3; NumberCellFAT + 5) «взяли таку осередок FAT з цепочки.

Wend «тепер обробка останнього кластера N-ного файла. Відрізняється тим, що може бути зайнятий не полностью.

.Range (Cells (6; NumberCellFAT + 5); Cells (6 + Relation; NumberCellFAT + 5)).Interior.ColorIndex = ColorUsedPartOfFAT + NumberFile.

.Range (Cells (6; NumberCellFAT + 5); Cells (6 + Relation; NumberCellFAT + 5)).Font.ColorIndex = ColorUsedPartOfFAT + NumberFile.

.Range (Cells (6; NumberCellFAT + 5); Cells (6 + Relation; NumberCellFAT + 5)).Formula = PointerToFile.

NumberFile = NumberFile + 1 «працюємо з наступним файлом.

Wend.

End With.

End Sub.

Макроси нижнього рівня абстракции.

Function FreeSize () As Integer «Функція визначення кількості вільного місця у області файлов.

FreeSize = 0.

temp = 6.

While temp < 22 «перегляд області FAT>

If Sheets («Sheet »).Cells (3; temp).Value = «» Then _.

FreeSize = FreeSize + 8 «якщо осередок FAT порожня, то своб. места у ній 8 байт.

temp = temp + 1.

Wend.

End Function.

Function NextFreeCellFAT () As Integer «Функція повертає номер першого знайденого вільного елемента FAT.

NextFreeCellFAT = 1.

While NextFreeCellFAT < 17>

If Sheets («Sheet »).Cells (3; NextFreeCellFAT + 5).Value = «» Then Exit Function.

NextFreeCellFAT = NextFreeCellFAT + 1.

Wend.

End Function.

Sub AddFileToCatalog (File As FileID) «додавання файла до області каталога.

temp = 4.

With Sheets («Sheet »).

While.Cells (temp; 2) ««.

temp = temp + 1 «пошук вільного місця у каталозі файлов.

Wend «хто дочитає доти места-бутылка шампанського !

.Cells (temp; 2) = File.Name «Запис до каталогу інформації про файле.

.Cells (temp; 3) = File.Size.

.Cells (temp; 4) = File.First.

End With.

End Sub.

Sub DeleteFileFromCatalog (NameDeletedFile As String) «видалення інформації про файлі з каталога.

Position = 4.

While Sheets («Sheet »).Cells (Position; 2).Text NameDeletedFile.

Position = Position + 1.

Wend.

For temp = Position To 16 + 3 «такі за удаляемым файлом осередки зсуваються, _.

затираючи запис про удаляемом файле.

Sheets («sheet »).Range (Cells (temp; 2); Cells (temp; 4)).Value = _.

Sheets («sheet »).Range (Cells (temp + 1; 2); Cells (temp + 1; 4)).Value.

Next.

End Sub.

Sub ToFAT (NumberCell As Integer; Value As Integer) «Процедура запис у задану осередок FAT заданого значения.

Sheets («Sheet »).Cells (3; NumberCell + 5).Value = Value.

End Sub.

Sub DeleteCellFromFAT (StartCell As Integer) «рекурсивна функція видалення ланцюжка з FAT _.

Викликається з номером точки входа.

" MsgBox («DeleteCellFromFAT, StartCell= «& StartCell).

If Sheets («Sheet »).Cells (3; 5 + StartCell).Value = 0 Then «тоді як аналізованої точці - 0, _.

це отже, що вона є покажчиком кінця файла.

Sheets («Sheet »).Cells (3; 5 + StartCell) = «» «і тому очищаємо цей осередок FAT.

Else «інакше це покажчик для наступної осередок FAT — викликаємо цю процедуру.

DeleteCellFromFAT (Sheets («sheet »).Cells (3; 5 + StartCell).Value) «але з новими номером осередки FAT.

Sheets («sheet »).Cells (3; 5 + StartCell) = «» «і її очищаем.

End If.

End Sub.

Список літератури, застосованої для підготовки курсової работы.

1. Microsoft Systems Journal, Sept 1989. Отримано з Computer Library Periodicals, Jan 1990, Doc #14 753.

2. Професійна робота у MS-DOS, Р. Данкан, Світ, 1993.

3. Excel 5.0 для професіоналів, Н. Николь, Р. Альбрехт, Москва, «ЭКОМ», 1996.

1 Слід зазначити, що така структура використовувалася У першій версії MS-DOS.

2 PressAddFile.

PressDeleteFile.

PressRemakeFile.

DialogRemakePressName.

DialogRemakePressOK.

Visualisation.

3 AddFile.

DeleteFile.

Visualisation.

Refresh.

4 FreeSize.

ToFAT.

NextFreeCellFAT.

AddFileToCatalog.

DeleteCellFromFAT.

DeleteFileFromCatalog.

МОДЕЛЬ ФАЙЛОВОЇ СИСТЕМИ FAT.

Сторінка № 16.

Показати весь текст
Заповнити форму поточною роботою