Программа поиска в свободных кластерах символьных последовательностей из заданного набора

Автор работы: Пользователь скрыл имя, 05 Апреля 2011 в 18:19, курсовая работа

Описание работы

В данной курсовой работе необходимо разработать программу для поиска в свободных кластерах символьных последовательностей из заданного набора.

Файлы: 1 файл

Курсач_СПО.(готов).doc

— 756.50 Кб (Скачать файл)

     Форматирование  FAT 12 обычно характерно только для небольших дисков объемом не более 16 Мбайт, чтобы не использовать кластеры более 4 Кбайт. По этой же причине считается, что FAT 16 целесообразнее для дисков с объемом не более 512 Мбайт, а для больших дисков лучше подходит FAT32, которая способна использовать кластеры 4 Кбайт при работе с дисками объемом до 8 Гбайт и только для дисков большего объема начинает использовать 8, 16 и 32 Кбайт. Максимальный размер раздела FAT16 ограничен 4 Гбайт, такой объем дает 65 536 кластеров по 64 Кбайт каждый, а максимальный размер раздела FAT32 практически не ограничен — 232 кластеров по 32 Кбайт.

     Файловые  системы FAT12 и FAT16 получили большое распространение благодаря их применению в операционных системах MS-DOS и Windows 3.х — самых массовых операционных системах первого десятилетия эры персональных компьютеров. По этой причине эти файловые системы поддерживаются сегодня и другими ОС, такими как UNIX, OS/2, Windows NT/2000 и Windows 95/98. Однако из-за постоянно растущих объемов жестких дисков, а также возрастающих требований к надежности, эти файловые системы быстро вытесняются как системой FAT32, впервые появившейся в Windows 95 OSR2, так и файловыми системами других типов.

     Файловые  системы FAT 12 и FAT 16 оперировали с именами файлов, состоящими из 12 символов по схеме «8.3». В версии FAT 16 операционной системы Windows NT был введен новый тип записи каталога — «длинное имя», что позволяет использовать имена длиной до 255 символов, причем каждый символ длинного имени хранится в двухбайтном формате Unicode. Имя по схеме «8.3», названное теперь коротким (не нужно путать его с простым именем файла, также называемого иногда коротким), по-прежнему хранится в 12-байтовом поле имени файла в записи каталога, а длинное имя помещается порциями по 13 символов в одну или несколько записей, следующих непосредственно за основной записью каталога. Каждый символ в формате Unicode кодируется двумя байтами, поэтому 13 символов занимают 26 байт, а оставшиеся 6 отведены под служебную информацию. Таким образом у файла появляются два имени — короткое, для совместимости со старыми приложениями, не понимающими длинных имен в Unicode, и длинное, удобное в использовании имя. Файловая система FAT32 также поддерживает короткие и длинные имена.

    1. Удаленные файлы в FAT

     Таблица FAT при фиксированной разрядности индексных указателей имеет переменный размер, зависящий от объема области данных диска. При удалении файла из файловой системы FAT в первый байт соответствующей записи каталога заносится специальный признак, свидетельствующий о том, что эта запись свободна, а во все индексные указатели файла заносится признак «кластер свободен». Остальные данные в записи каталога, в том числе номер первого кластера файла, остаются нетронутыми, что оставляет шансы для восстановления ошибочно удаленного файла. Существует большое количество утилит для восстановления удаленных файлов FAT, выводящих пользователю список имен удаленных файлов с отсутствующим первым символом имени, затертым после освобождения записи. Очевидно, что надежно можно восстановить только файлы, которые были расположены в последовательных кластерах диска, так как при отсутствии связного списка выявить принадлежность произвольно расположенного кластера удаленному файлу невозможно (без анализа содержимого кластеров, выполняемого пользователем «вручную»).

    1. Идентификация кластеров

     Первый  байт таблицы FAT называется "Описатель  среды" (Media Descriptor). Он имеет такое  же значение, как и байт-описатель  среды, находящийся в загрузочном  секторе логического диска.

     Следующие 1,5 байта для 12-битового формата или 2 байта для 16-битового формат всегда содержат значение 0FFh.

     Остальная часть таблицы FAT состоит из 12- или 16-битовых ячеек. Каждая ячейка соответствует  одному кластеру диска. Эти ячейки могут содержать значения, приведенные в таблице 4.

     Таблица 4.

     FAT12      FAT16      Что означает
     000h      0000h      Свободный кластер
     FF0h - FF6h      FFF0h - FFF6h      Зарезервированный кластер
     FF7h      FFF7h      Плохой  кластер
     FF8h - FFFh      FFF8h - FFFFh      Последний кластер в списке
     002h - FEFh      0002h - FFEFh      Номер следующего кластера в списке
  1. РАЗРАБОТКА  ПРОГРАММЫ
    1. Схема и алгоритм программы

 

    1. Тест

     1. Форматируем USB-накопитель в файловой системе FAT16

     

     Рис. 6. Форматирование

     2. Создаем на USB-накопителе три текстовых документа:

     1. 1.txt – Текст в кодировке Unicode

     2. 2.txt – Текст в кодировке ANSI

     3. 3.txt – Любой непустой документ

     3. Удалим первые два файлы, тем самым освободив кластеры. При удалении документов кластеры помечаются как свободные, однако, их содержимое не очищается, и в них будут присутствовать символьные последовательности.

     4. Проверим содержимое USB-накопителя и убедимся, что второй и третий кластер свободен, но в них присутствует информация, а четвертый кластер занят, так как документ 3.txt не был удален

     

     Рис. 7. Содержимое USB-накопителя 
 
 
 
 
 
 
 
 
 
 
 

     Содержимое  кластера 2 (1.txt)

     

     Рис. 8. Содержимое файла 1.txt

     На  рисунке 8 видно, что в кластере находится текст в формате Unicode (Символ занимает 2 байта) 
 
 
 
 
 
 
 
 
 
 

     Содержимое  кластера 3 (2.txt)

     

     Рис. 9. Содержимое файла 2.txt

     На  рисунке видно, что в кластере находится текст в формате  ANSI (Символ занимает 1 байт) 
 
 
 
 
 
 
 
 
 
 

     Запускаем программу

     

     Рис. 10. Окно программы после запуска

     Для выбора диска необходимо воспользоваться  командой Выбрать диск

     

     Рис. 11. Окно выбора диска

     После выбора диска, для поиска свободных кластеров, необходимо воспользоваться командой Поиск свободных кластеров 

     

     Рис. 12. Процесс поиска

     После поиска свободных кластеров

     

     Рис. 13. Содержимое файла 1.txt

     Список свободных кластеров у которых контрольная сумма не равна 0. То есть список свободных но непустых кластеров. Содержимое кластера 2 при кодировке Unicode 
 

     

     Рис. 14. Содержимое файла 2.txt

     Список  свободных кластеров у которых  контрольная сумма не равна 0. То есть список свободных но непустых кластеров. Содержимое кластера 3 при кодировке 1252 Западноевропейская (Windows)

ЗАКЛЮЧЕНИЕ

     В заключение данной курсовой работы необходимо отметить важность выполнения подобного  рода заданий. При работе с такими заданиями необходимо детальное изучения вопроса, уяснения всех особенностей реализации программ по работе с дисками на логическом и физическом уровнях.

     При разработке программы был выявлен  ряд особенностей работы с дисками  ПК: жесткими дисками, дискетами, флэш-накопителями. Главной особенностью является сложность прямого доступа к данным жесткого диска, а также данным, хранящимся на флэш-накопителях.

     В развитии разработанной программы  можно предложить реализацию работы с жесткими дисками в любых  файловых системах, а также флэш-накопителями. Это серьезно расширит круг применения программного продукта.

     Неоспоримым достоинством будет являться реализация в программе графического интерфейса пользователя (GUI). Это позволит более наглядно и привычно рядовому пользователю использовать все возможности программы.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

  1. Александр Фролов, Григорий Фролов Операционная система MS-DOS. – Том 1, книги 1-2, М.: Диалог-МИФИ, 1991, 239 стр.
  2. Александр Фролов, Григорий Фролов. MS-DOS для программиста 
    Том 19, М.: Диалог-МИФИ, 1995, 253 стр.
  3. Дейтел Х. М., Дейтел П. Дж. Как программировать на С: Четвертое издание. Пер. с англ. – М.: ООО «Бином – Пресс», 2006 г. – 912 с.: ил.
  4. Литвиненко Н.А. Технология программирования на С++. Начальный курс.-СПб.: БХВ-Петербург, 2005.-288 с.: ил.
  5. Подбельский В. В. Практикум по программированию на языке Си (+CD).: Учеб. пособие. – М.: Финансы и статистика, 2004. – 576.: ил.
  6. Подбельский В. В., Фомин С. С. Программирование на языке Си: учеб. пособие. – 2-е доп. изд. – М.: Финансы и статистика, 2007. – 600с.: ил.
  7. Страуструп Б.. Язык программирования С++. Специальной издание. Пер. с англ.-М.: ООО «Бином-Пресс», 2008 г. – 1104с.:ил.
  8. Шилдт Г. Полный справочник по С++, 4-е издание.: Пер. с англ. – М.: Издательский дом «Вильямс», 2008. – 800 с.: ил.

 

ПРИЛОЖЕНИЕ 1

    Листинг модуля FAT_data.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

using System.Runtime.InteropServices;

using Microsoft.Win32.SafeHandles; 

namespace HiddenLost

{

    //Класс моделирующий файл в FAT16

    public class FileFAT16

    {

        FileInfo _File;// Описатель файла

        uint _SizeFile=0;//Размер файла

        uint _SizeFileClusters=0;//Размер файла в кластерах

        LogicalDrive _Disk;//Диск на котором находится файл

        uint _Error=0;//Код ошибки

        uint _PositionSector = 0;//Сектор в котором находится поле длины файла

        uint _PositionByte = 0;//Смещение в катором находтся поле длины файла

        public FileFAT16(FileInfo File, LogicalDrive Disk, uint BeginingDyrectory)

        {

            _File = File;//Сохранение описателя файла во внутренней переменной

            _Disk = Disk;//Сохранение диска во внутренней переменной 

            _SizeFile = (uint)_File.Length;//Получение длины файла

Информация о работе Программа поиска в свободных кластерах символьных последовательностей из заданного набора