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

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

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

Цель курсової роботи |3 — |Ідея програми |3 — |Про систему FAT |4 — |Структура системи файлів FAT |5,6 — |Про завдання |7 — |Про застосованих рівнях абстракції |8 — |Про інтерфейсі |9 — |Вихідний текст: Макроси, викликані подіями |10 — |Вихідний текст: Базові події |13 — |Вихідний текст: Макроси нижнього рівня абстракції |15 — |Список літератури, застосованої для підготовки курсової |17 — |роботи… Читати ще >

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

ОДЕСЬКА ДЕРЖАВНА АКАДЕМІЯ ХОЛОДА.

Інститут інформаційних технологій кафедра інформаційних систем.

кУРСОВА РОБОТА ПО ДИСЦИПЛИНЕ.

«тЕОРІЯ ОПЕРАЦІЙНИХ СИСТЕМ».

«модель файлової системи FAT».

Виконав студент 322Б групи Холод Денис.

Керівник Чмырь И.А.

ОДЕССА.

|Цель курсової роботи |3 | |Ідея програми |3 | |Про систему FAT |4 | |Структура системи файлів FAT |5,6 | |Про завдання |7 | |Про застосованих рівнях абстракції |8 | |Про інтерфейсі |9 | |Вихідний текст: Макроси, викликані подіями |10 | |Вихідний текст: Базові події |13 | |Вихідний текст: Макроси нижнього рівня абстракції |15 | |Список літератури, застосованої для підготовки курсової |17 | |роботи | |.

Цель:

Розробка програми, моделюючою організацію файловою системи 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. добавить.

3. удалить.

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

5. Візуалізація FAT.

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

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

З контексту питання паралельне виконання процесів чи потоків (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.

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

|Microsoft Systems Journal, Sept 1989. Отримано з Computer Library | |Periodicals, Jan 1990, Doc #14 753 | |Професійна робота у MS-DOS, Р. Данкан, Світ, 1993 | |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.

———————————;

Файл Д.

Файл В.

Файл Б.

Каталог.

Файл Г.

Каталог.

Каталог.

Файл А.

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

Кореневої каталог.

(мітка тома).

Типовий блок управління файлом.

Елементи структуры.

Відносний кінцевий адресу в байтах.

Відносний початковий адресу в байтах.

Розширений блок управління файлом.

Відносний початковий адресу в байтах.

Елементи структуры.

Відносний кінцевий адресу в байтах.

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