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

     

     

     

     

     

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

     

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


    курсової роботи з дисципліни
    "Теорія операційних систем"

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


    Виконав студент 322Б групи Холод Денис.
    Керівник Чмирь І.А.






    ОДЕСА
    1997
    Зміст:

    Мета курсової роботи 3 Ідея програми 3 Про систему FAT 4 Структура системи файлів FAT 5,6 Про реалізацію завдання 7 Про застосованих рівнях абстракції 8 Про інтерфейсі 9 Оригінальний текст: Макроси, що викликаються подіями 10 Оригінальний текст: Базові події 13 Оригінальний текст: Макроси нижнього рівня абстракції 15 Список літератури, застосованої при підготовці курсової роботи 17
    Мета:
    Розробка програми, що моделює організацію файлової системи FAT.
    Ідея програми:
    Програма позвовяет експериментально дослідити логічну структуру файлової системи FAT, що складається з трьох областей: FAT (File Allocation Table), кореневий каталог і область файлів. Є панель опису операцій з файлами, що знаходяться на диску, а саме: додати файл, видалити файл, перезаписати файл (зі зміною розміру). Крім того, надана можливість графічного відображення відповідності файлів секторів на диску.

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



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

    Каталог файлів
    Таблиця розподілу
    Область файлів

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

    Операції з файлами
    додати
    видалити
    перезаписати
    Візуалізація FAT
    показати файл
    прибрати стрілки

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

    Про застосованих рівнях абстракції
    Всі можливі події були ретельно проаналізовані автором і розділені на три категорії, або на три рівні абстракції:
    Події, що викликаються зовнішніми впливами. Такими є всі події, що викликаються користувачем за допомогою виклику пунктів з груп операцій з файлами.
    Події фундаментальної природи, тобто базові події, що породжуються попередні. Їх значно менше, і вони ніяк не вникають у суть породили із зовнішніх подій.
    Події низького рівня абстракції, які є штучно синтезованими з попередніх двох груп подіями і мають на меті знизити складність системи за рахунок абстрагування від непринципових тонкощів і ускладнень в системі, що диктуються контекстом. Такими, наприклад, є події обробки неправильних ситуацій.
    Про інтерфейсі
    Інтерфейс є інтуїтивно зрозумілим і не нав'язливим, завжди, наскільки це можливо, є "демократичним" по відношенню до користувача. У програмах, написаних таким стилем, дуже чітко простежується причинно-наслідковий зв'язок, добре знайома будь-якій людині і є невід'ємною частиною образного мислення. Це делат програму дуже простий у використанні, а алгоритм роботи простим в розумінні. Вся необхідна для роботи інформація представлена в діалогах, про неправильні сітуціях програма повідомляє користувачеві, що це єдиний (і законний) випадок порушення свободи дій користувача.

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

    Макроси, що викликаються подіями
    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
         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

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