ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Модель файлової системи 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 завдяки зняття обмежень на розміри томи, поліпшенню Стратегія розподілу, кешування імен шляху, і переміщення таблиць і буферів у розширену пам'ять. Але вони можуть розцінюватися лише як тимчасові заходи, тому що файлова система просто не підходила до великих пристроїв довільного доступу.


    Структура системи файлів 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 < br /> 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 # 14753
    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



         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status