СОДЕРЖАНИЕ
/>
ВВЕДЕНИЕ
РАЗДЕЛ 1. ОСНОВЫ ДЕФРАГМЕНТАЦИИ
1.1 Файловая система типаFAT32
1.2 Файловая система типаNTFS
1.3 Популярныеутилиты-дефрагментаторы
1.3.1 Программа WindowsDisk Defragmente
1.3.2.Дефрагментатор Diskeeper 2009
1.3.3. Утилита UltraDefrag
1.3.4. Программа Auslogics Disk Defrag
1.3.5. Программа O&ODefrag
РАЗДЕЛ 2. ОПИСАНИЕ АЛГОРИТМОВ ДЕФРАГМЕНТАЦИИ
2.1 Алгоритмы
2.1.1 Простаядефрагментация
2.1.2 Дефрагментациясвободного места или полная дефрагментация
2.1.3 Дефрагментациячасто используемых данных
2.1.4 По дате последнегоизменения
2.1.5 Сортировка по имени
2.2 Выбранный алгоритм
2.3 Среда разработки
2.3.1 С++ Bilder
2.3.2 Microsoft Visual Studio
2.3.3 Выбранная среда
РАЗДЕЛ 3. РУКОВОДСТВО ПРОГРАММИСТА
3.1 Стандартные функции
3.1.1 Управляющий код FSCTL_GET_VOLUME_BITMAP
3.1.2 Управляющий код FSCTL_GET_RETRIEVAL_POINTERS
3.1.3 Структура RETRIEVAL_POINTERS_BUFFER
3.1.4 Управляющий код FSCTL_MOVE_FILE
3.1.5 Функция CreateFile
3.1.5 Функция CheckTokenMembership
3.2 Функции, выполняющие дефрагментацию
3.2.1 Функция «file_map»
3.2.2 Функция «volume_map»
3.2.3 Функция «simply_defrag»
РАЗДЕЛ 4. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
4.1. Интерфейс программы
4.2 Кнопка «Drive info»
4.3 Кнопка «GO»
4.4 Кнопка «File info»
ВЫВОДЫ
СПИСОК ИСПОЛЬЗУЕМОЙЛИТЕРАТУРЫ
ПРИЛОЖЕНИЯ
ВВЕДЕНИЕ
Используя операционные системы семейства Windows пользователистановятся привязанными к конкретным файловым системам. Наиболее частоиспользуются, как файловые системы для жестких дисков, типы NTFS и FAT32. Этисистемы имеют множество отличий, но их сходство заключается во фрагментациифайлов, так как в программах для работы с ними обычно не предусмотрено никакихсредств для предотвращения фрагментации.
Длинные данные зарисуются на диск в нескольких кластерах.Если места для записи определенного файла достаточно, то все кластерыразмещаются последовательно. Однако если пространство частично заполнено,большому файлу может не найтись цельной свободной области для его размещения. Втаком случае данные будут записаны в свободные кластера, при условии, что ихсуммарный объем удовлетворяет данный файл. В этом случае файл записывается ввиде нескольких фрагментов. Более того: во многих файловых системах (примерFAT32) начало файла записывается в начало кластера, следовательно, если самфайл или его часть по объёму меньше размера кластера, то оставшееся место вкластере остается неиспользованным. Поэтому фрагментированность диска обратнопропорциональна эффективности использования его пространства.
«Фрагментация дискового пространства. Эффект, возникающий впроцессе активной работы с файлами (создание, удаление, перемещение, изменениеразмеров) и выражающийся в отсутствии на жёстком диске достаточного количествапоследовательных свободных блоков. На фрагментированном диске свободные блокиразбросаны по всей поверхности диска, и при дальнейшей работе с диском, этоприводит к фрагментации данных.» [1]
Так мы можем сказать, что фрагментация данных являетсянегативным эффектом. Дробление файлов затрудняет работу с ними и увеличиваетнагрузку на аппаратную часть компьютера. На сильно фрагментированных областяхжесткому диску потребуется затратить гораздо больше времени для записи илисчитывания файла, чем на мало фрагментируемых областях. Это объясняется тем,что большое количество кластеров занятых конкретным файлом располагаются непоследовательно, а, можно сказать, хаотично разбросаны по всему объемувинчестера. И именно этот факт заставляет считывающую головку затрачиватьлишнее время на поиск очередной части файла.
Таким образом, можно сделать вывод, что минимальнаяфрагментация не только увеличит быстродействие системы, но и увеличит срокслужбы некоторых устройств.
Чтобы избежать фрагментации дискового пространства необходимопроводить процесс дефрагментации.
«Дефрагментация — процесс обновления и оптимизации логическойструктуры раздела диска с целью обеспечить хранение файлов в непрерывнойпоследовательности кластеров. После дефрагментации ускоряется чтение и записьфайлов, а следовательно и работа программ. Другое определение дефрагментации:перераспределение файлов на диске, при котором они располагаются в непрерывныхобластях» [2].
РАЗДЕЛ 1. ОСНОВЫ ДЕФРАГМЕНТАЦИИ
1.1Файловая система типа FAT32
FAT32 (от англ. File Allocation Table — «таблица размещения
файлов») — это файловая система, разработанная компанией Майкрософт,разновидность FAT. Файловая система поддерживает кластеры с минимальнымразмером 4 КБ, а также жесткие диски EIDE, объем которых превышает 2 ГБ. Даннуюсистему поддерживают все операционные системы семейства Windows начиная сWindows 95.
Файловая система FAT32 содержит следующие возможности,отсутствовавшие в предыдущих версиях файловой системы FAT.
· FAT32поддерживает диски размером до 2 терабайт.
· FAT32 болееэффективно использует пространство на диске. За счет поддержки кластеровменьшего размера (4 КБ на дисках до 8 ГБ) файловая система FAT32 используетпространство на больших дисках на 10–15% эффективнее, чем файловые системы FATи FAT16.
· FAT32 болеенадежна. FAT32 поддерживает изменение места расположения корневой папки ииспользование резервной копии таблицы размещения файлов (вместо основногоэкземпляра). Также загрузочная запись на дисках, с файловой системой FAT32, используетрезервную копию наиболее важных данных. Таким образом, диски с FAT32 болеенадежны, чем диски с файловой системой FAT16.
· FAT32 болеегибка. Корневая папка на диске FAT32 представляет собой стандартнуюпоследовательность кластеров и может размещаться в любом месте диска.Отсутствуют ограничения на количество элементов в корневой папке,существовавшие в предыдущих версиях. Кроме того, FAT32 позволяет отключатьдублирование основного экземпляра таблицы размещения файлов и использоватьвторой экземпляр. Эти функции позволяют динамически изменять размер разделовFAT32.
Были расширены атрибуты файлов. Теперь возможно теперьхранить время и дату создания, даты модификации и последнего доступа к файлуили каталогу.
Но данная файловая система не поддерживает журналирование.Эта технология позволяет записывать все операции производимых с файлами.Журналирование помогает установить тип ошибки, произошедшей при сбое во времяработы ОС. Также используется при восстановлении файловой системы. Какследствие отсутствия сведений о изменениях данных после сбоя необходимопроводить полную проверку ФС на наличие логических ошибок.
1.2Файловая система типа NTFS
NTFS (от англ. New Technology File System — «файловая системановой технологии») — стандартная файловая система для ОС Windows NT. NTFSзаменила применяемую ранее FAT.
Как и любая другая система, NTFS делит все полезное место накластеры — единичные блоки данных. NTFS поддерживает различные размеры блоков —минимальные 512 байт до предельно допустимых 64 Кбайт, стандартом, воперационных системах Windows NT, считается кластер размером 4 Кбайт, при такомобъеме будет доступна функция сжатия дынных. Файловая система NTFS условно разделенана две части. Первая часть диска будет занята MFT (Master File Table — общаятаблица файлов), для ее хранения отводится 12% пространства всего раздела. Это пространствонеобходимо для хранения метафайла MFT. Запись каких-либо пользовательскихданных в эту область невозможна. Область для MFT всегда держится пустой — этоделается для того, чтобы служебный файл не фрагментировался при увеличениисвоего объема. Остальные 88% диска представляют собой обычное пространство дляхранения файлов.
Далее перечислены возможности,предоставляемые файловой системой NTFS.
· Усовершенствованныевозможности масштабирования при использовании дисков больших объемов.Максимальный объем раздела или тома для системы NTFS значительно превышаетмаксимальный объем раздела или тома для файловой системы FAT, и, в отличие отсистемы FAT, при увеличении объемов не происходит снижения производительности.
· Active Directory(и домены, являющиеся частью Active Directory). С помощью Active Directoryможно легко просматривать сетевые ресурсы и управлять ими. С помощью доменов,сохраняя простоту администрирования, можно настроить параметры безопасности.Контроллеры домена и Active Directory требуют наличия NTFS.
· Возможностисжатия, включая возможность сжатия или распаковки диска, папки илиопределенного файла. (Файл не может быть сжат и зашифрован одновременно.)
· Шифрованиефайлов, значительно повышающее безопасность. (Файл не может быть сжат изашифрован одновременно.)
· Разрешения,которые могут быть установлены для отдельных файлов, а не только для папок.
· Внешнеехранилище, обеспечивающее расширение места на диске с помощью организации болеесовершенного доступа к съемным носителям, таким как магнитные ленты.
· Регистрациясобытий по обращению к дискам, помогающая быстро восстановить данные в случаеперебоя электропитания или других системных сбоев.
· Разреженные файлы— файлы больших размеров, создаваемые вприложениях определенным образом, что для их хранения требуется малые объемыдискового постранства. В связи с этим NTFS выделяет дисковое пространствотолько для тех частей файла, в которые производится запись данных.
· Дисковые квоты, спомощью которых можно управлять объемом дискового пространства, выделяемогоконкретным пользователям.
Вернемся к проблеме фрагментации. Изначально утверждалось,что новая файловая система не нуждается в дефрагментации. Но, как выяснилось,она страдает той же проблемой, хотя и обладает некоторыми технологиямиспособствующих увеличению производительности даже на сильно фрагментируемыхдисках.
При заполнении диска на 88% мы, можно сказать, лишаемсявозможности проводить дефрагментацию, так как запись данных в MFT зону намзапрещена, а для перемещения файлов нет свободного места. С MFT возникают ещеряд проблем. При переполнении свободного места (более 88% от общего объема) MFTобласть сокращается, что в дальнейшей работе приводит к ее фрагментации, а этоуже является проблемой так, как из-за особенностей ФС дефрагментировать ее неудастся.
1.3Популярные утилиты-дефрагментаторы
Фрагментированные файлы никак не нарушают работувычислительной системы, но значительно влияют на ее быстродействие. По этойпричине разрабатываются новые алгоритмы дефрагментации файлов и создаютсяразличные программы, выполняющие этот процесс.
На данный момент пользователю доступны десятки различныхплатных и бесплатных программных продуктов. Каждый из них достоин внимания, номожно выделить наиболее качественные и популярные программы. Однако «лучшего»определить не возможно, и пользователю остается сделать выбор: какимдефрагментатором пользоваться.
1.3.1Программа Windows Disk Defragmenter
Данный дефрагментатор является стандартным средством Windows.
Имеет простой интерфейс, графическое отображение состояниядиска (Рис. 1.1.).
/>
Рис. 1.1. ИнтерфейсWindows Disk Defragmenter.
Он позволяет работать с файловыми системами FAT, FAT32 иNTFS. Дефрагментации подвергается большинство требуемых файлов. Данный продуктимеет множество недостатков, основными, из которых, можно считать: малуюпроизводительность, минимальный спектр настроек, наличие 15% свободногодискового пространства для начала процесс дефрагментации. Также программа необъединяет свободное пространство, что в скором времени приведет к более частойфрагментации. Не организована функция автоматической дефрагментации. Из-заплохой работы данную программу не следует использовать для основного средствадефрагментации.
1.3.2Дефрагментатор Diskeeper 2009
Diskeeper являться популярным пакетом для дефрагментациижесткого диска. Поддерживает файловые системы NTFS, FAT16 и FAT32. Программаспособна работать с томами более 1 Тб, большими файлами, сильнофрагментированными файлами, системными файлами, MFT. Для работы дефрагментатора,по заверениям разработчиков, достаточно 1% свободного дискового пространства,но на практике большие файлы попросту пропускаються. К сожалению программаимеет низкую скорость работы, в сравнении с другими решениями.
Программа имеет множество настроек, но в тоже время остаетсяпростой для использования (Рис. 1.2.). Все функции легко понимаемы, чтопозволяет быстро начать работу, не затрачивая лишнего времени на поискнеобходимой операции.
/>
Рис. 1.2. Интерфейс Diskeeper 2009.
После проведения Анализа диска пользователю представляютдетальнейший отчет о файлах, их расположении, состоянии.
Diskeeper может работать в автоматическом режиме и в ручном.В первом случае, благодаря специальной технологии, программа самостоятельнопринимает решение относительно процесса дефрагментации и применяемого метода.Также возможно создать расписание дефрагментации. В ручном режиме процессдефрагментации инициируется пользователем, выбор метода и приоритета такжеуказывает пользователь. Для ручного режима доступно два варианта работы «Quick»и «Recommended». При использовании первого метода обеспечивается высокаяскорость работы при малой эффективности. Это объясняется тем, что при работе непроизводится объединение свободных областей. Режим «Recommended» болеедлительны, использует больше системных ресурсов. В этом случае производитсядефрагментация файлов и частичное объединение свободного пространства диска.Для этого режима возможно использовать автоматическое определения приоритетадефрагментации
1.3.3Утилита UltraDefrag.
Маленький бесплатный дефрагментатор. К основным достоинствамможно отнести открытый программный код, высокую скорость работы, малоепотребление системных ресурсов, простой интерфейс.
Программа может работать как консольное приложение, так и сграфическим интерфейсом. Благодаря консольному режиму организованадефрагментация по расписанию, дефрагментация определенных файлов и папок.Графический режим наглядно отображает карту диска, кластеры изображены блочнойсистемой раскрашенными разными цветами, соответствующим типам файлов и степенифрагментации (Рис. 1.3.).
/>
Рис. 1.3. Интерфейс Ultradefrag.
Однако UltraDefrag использует слабый алгоритм дефрагментации.Программа не способна сортировать файлы по частоте доступа или же по имени, недефрагментирует свободное пространство. Несмотря на эти недостатки, послезавершения процесса дефрагментации ощущается значительный приростпроизводительности. Программа генерирует отчеты в формате HTML. Имеет 32-хбитные и 64-х битные версии.
1.3.4Программа Auslogics Disk Defrag
Auslogics Disk Defrag бесплатное решение дефрагментациижестких дисков. Имеет приятный понятный интерфейс (Рис. 1.4).
/>
Рис. 1.4. Интерфейс Auslogics Disk Defrag.
Высокая скорость работы и наличие самых необходимых опцийделают эту программу очень удобным инструментом для работы с жестким диском.Несмотря на относительно малые объемы, является очень хорошим средствомдефрагментации. Однако зачастую программа пропускает большие файлы, это происходитв случае отсутствия подходящего неразделенного объема свободного места надиске. Программа не способна проводить дефрагментацию свободного пространства.Также не проводится дефрагментация заблокированных системой файлов.
Программа имеет украинскую и русскую локализации, последнююверсию можно бесплатно скачать на официальном сайте.
В программе можно указать исключения – папки, которые неследует дефрагментировать. Перед началом процесса дефрагментации программаможет удалить временные файлы, что позволит выполнить работу быстрее, очиститьместо на диске и ускорить работу системы. В настройках можно выбратьдефрагментацию всего диска, папки или отдельного файла. Программа можетработать по расписанию и поддерживает автодефрагментацию.
Сразу после выполнения дефрагментации пользователюпредставляется краткий отчет, в котором выделены важнейшие сведенья. Такжеможно просмотреть полный отчет.
1.3.5Программа O&O Defrag
Мощный программный пакет для дефрагментации диска. O&ODefrag выделяется благодаря уникальным технологиям. ActivityGuard следит заработой компьютера и незаметно проводит дефрагментацию, самостоятельно изменяюсвою активность в зависимости от основных задач, выполняемых на данный момент.Технология OneButtonDefrag позволяет проводить дефрагментацию в соответствии сзаданными установками, при определенном уровне фрагментации.
Дефрагментация может проводиться во время простоя системы, порасписанию, в ручном режиме. Для начала работы необходимо более 5% свободногопространства на диске. Программа позволяет дефрагментировать отдельный диск иливсе, отдельный файл, конкретную папку. Однако иногда возникают проблемы сдефрагментацией отдельных файлов. Если программе не удается найти достаточногосвободного объема, она отмечает процент выполненной работы и переходит внедоступный режим (программа не отвечает), в таких ситуациях приходитьсязавершать процесс. После такого использовать программу удастся только послезапуска соответствующей службы.
Пользоваться программой достаточно просто. Все возможности программысгруппированы в четыре вкладки: Дефрагментация, Отчеты, Вид, Справка. Интерфейсудобный и интуитивно понятен (Рис. 1.5.).
/>
Рис. 1.5. Интерфейс O&O Defrag.
После окончания анализа и выполнения дефрагментации можнопросмотреть удобный детальный отчет.
Организовано несколько различных алгоритмов дефрагментации.Это самые распространенные алгоритмы: Скрытая (быстрая) дефрагментация(Stealth), Дефрагментация свободного места (Space), Имя (Complete/Name),Изменен(Complete/Modified), Доступ (Complete/Access). Более детально работуэтих методов будет рассмотрено в следующем разделе.
РАЗДЕЛ 2. ОПИСАНИЕ АЛГОРИТМОВ ДЕФРАГМЕНТАЦИИ
2.1 Алгоритмы
Процесс дефрагментации файла можно разделить на два основныхэтапа: анализ файла, поиск кластеров этого файла, их расположение, поискобласти диска для перемещения фрагментированных данных; непосредственно самадефрагментация–перемещение кластеров файла в отведенное место, удовлетворяющее егообъему.
2.1.1 Простая дефрагментация
Данный способ используется наиболее часто и является наиболеепростым в реализации, быстрым среди остальных алгоритмов. Проводитсясканирование диска в поисках всех кластеров одного файла. После составлениякарты файла его фрагменты перемещаются в свободное место, в которое можетпоместиться файл целиком. Таким образом, все файлы, которые не представляютсобой непрерывные цепочки кластеров.
На первом этапе задается файл, который необходимодефрагментировать. Далее проводится поиск всех кластеров занимаемым файлом.Если кластеры не образуют нераздельную цепочку – это означает, что файлфрагментирован. На следующем этапе проводится поиск подходящего места дляперемещения файла. После успешного выполнения предыдущего шага выполняетсяперемещение кластеров файла в новое место на диске. Если же место для файла ненайдено (особо актуально для больших по объему файлов), то он пропускается иостается фрагментированным.
На рисунках 2.1. и 2.2. представлен, в графическом виде, принципработы алгоритма. На рисунке 2.3. изображены условные обозначения.
/>
Рис. 2.1. Область дискадо дефрагментации.
/>
Рис. 2.2. Использован«простой» метод.
операционный файловый дефрагментация программа
/>
Рис. 2.3. «Легенда».
Преимущества: быстрая и эффективная работа. Небольшоепотребление системных ресурсов. Максимальный размер файла, который может бытьдефрагментиранным, определяется свободным неразделенным участком дисковогопространства.
Недостатки: не способен дефрагментировать свободноепространство, что приводит к сильной фрагментации не занятых кластеров. Еслиобщее свободное место позволяет дефрагментировать файл, но неразделенногосвободного объема нет (фрагментировано свободное место). Не выполняется никакойсортировки данных.
2.1.2 Дефрагментация свободного местаили полная дефрагментация
Метод полной дефрагментации или дефрагментации свободногоместа использовался одним из первых. Данный способ дефрагментирует все файлы ипомещает их в начала раздела, что позволяет освободить максимально возможную свободнуюобласть диска. После проведения дефрагментации все файлы будут расположены всоседних областях, образуя, таким образом, непрерывную цепочку.
В настоящее время такой способ дефрагментации используетсякрайне редко, как основной метод, так как он занимает длительное время итребует относительно много свободного дискового пространства.
На первом этапе проводится поиск фрагментированных файлов споследующей дефрагментацией, но, в отличие от пред идущего метода, перемещениефалов осуществляется не в любое подходящее место на диске, а в конец раздела,таким образом, образуется область данных без свободных кластеров. После тогокак все необходимые файлы были дефрагментированны выполняется перемещение этихданных в свободные кластера в начале тома. Если свободного места между двумяблоками данных не достаточно для помещения очередного файла, то последующийблок переносится в конец раздела, тем самым высвобождает пространство дляразмещения файла. Таким образом, проводится реорганизация файловой структуры, благодарякоторой в начале дискового раздела создается область данных, а в конце – вседоступное свободное дисковое пространство.
На рисунках 2.4. и 2.5. представлен, в графическом виде,принцип работы алгоритма. На рисунке 2.6. изображены условные обозначения.
/>
Рис. 2.4. Область дискадо дефрагментации.
/>
Рис. 2.5. Дефрагментациясвободного места.
/>
Рис. 2.6. «Легенда».
Преимущества: метод эффективен для сильно фрагментированныхдисков. Дефрагментация свободного места предотвращает дальнейшую фрагментациюданных. При проведении дефрагментации пропущенными фрагментированными остаетсянамного меньше файлов, нежели при «простой дефрагментации».
Недостатки: процесс занимает длительное время. Требуетсямного свободного места на диске. Из-за частого перемещения данных увеличиваетсянагрузка на компьютер, особенно, но жесткий диск. Данный метод не являетсяоптимальным для проведения плановой дефрагментации, или дефрагментации вфоновом режиме.
2.1.3 Дефрагментация частоиспользуемых данных
Такой метод размешает файлы на жестком диске согласно счастотой их использования. Такой метод занимает длительный промежуток времени итребует больших ресурсов. Зачастую данный метод применяется на серверныхмашинах.
Для минимальной фрагментации и поддержания высокойпроизводительности следует использовать данный метод регулярно.
Проводится обычный процесс дефрагментации файлов.Особенностью данного метода является реорганизация файловой структуры. Послезавершения дефрагментации файлы сортируются по времени последнего доступа. Файлс наименьшей частотой использования помешается в начало раздела. Частоиспытываемые файлы размешаются в конце раздела. В таком случае редкоиспользуемые файлы будут дефрагментированны и не возникнет необходимости ихперемещать. Данный метод можно отнести к «полной» дефрагментации, так как присортировке и перемещении данных на жестком диске образуются большие объемы смежныхсвободных областей.
На рисунках 2.7. и 2.8. представлен, в графическом виде,принцип работы алгоритма. На рисунке 2.9. изображены условные обозначения.
/>
Рис. 2.7. Область дискадо дефрагментации.
/>
Рис. 2.8. Дефрагментациячасто используемых данных.
/>
Рис. 2.9. «Легенда».
Преимущества: реорганизация данных повышаетпроизводительность на серверных станциях. Полная дефрагментация позволяетобъединить большинство свободного места на жестком диске.
Недостатки: требуется много свободного дискового пространствадля начала процесса дефрагментации. Высокое потребление системных ресурсов. Неуниверсальность данного типа сортировки.
2.1.4 По дате последнего изменения
Данный метод сортирует и размещает данные на диске согласновремени их последнего изменения. Он проводит полную реорганизации структуруразмещения файлов на диске. На выполнение полной дефрагментации требуется многовремени. Данный метод редко используют на домашних компьютерах или ноутбуках.Его эффективней использовать на серверных машинах.
Метод совмещает в себе несколько алгоритмов: быстрой и полнойдефрагментации. Первым выполняется обычная дефрагментация файлов. Затемпроводится чтение атрибутов файлов и определение их места по завершению работы.Файлы, которые не изменялись длительное время, размещаются в начале раздела.Часто изменяемые файлы записываются в конец раздела, что позволит, вдальнейшем, произвести их быструю дефрагментацию не затрагивая остальныхданных. Такой метод будет оптимальным при использовании на файловых серверах,при хранении баз данных.
На рисунках 2.10. и 2.11. представлен, в графическом виде,принцип работы алгоритма. На рисунке 2.12. изображены условные обозначения.
/>
Рис. 2.10. Область дискадо дефрагментации.
/>
Рис. 2.11 По датепоследнего изменения.
/>
Рис. 2.12. «Легенда».
Для сохранения высокой производительности и малойфрагментации необходимо производить регулярную дефрагментацию, или настроитьавтоматический режим, используя данный метод.
Преимущества: сортировка данных повышает производительностьсистемы, но следует учитывать, что данный метод не будет оптимальный для любойсистемы. Работа с большим количеством данных.после первой дефрагментациипоследующие запуски, таким же методом, будут выполняться намного быстрее.
Недостатки: требуется большое свободное пространство нажестком диске, чтобы начать процесс дефрагментации. Во время дефрагментациииспользуется много системных ресурсов. Затрачивается длительное время дляпервой реорганизации файловой структуры.
2.1.5 Сортировка по имени
Алгоритм полной дефрагментации с возможностью сортировкифайлов. Метод реорганизует файловую структуру таким образом, что файлы будутрасполагаться на диске согласно алфавиту. Такой метод обычно используют насистемных дисках. Сортировка по имени позволяет сократить время доступа к файлув каталогах.
Проводится поиск и дефрагментация необходимых фалов сперемещением их в конец жесткого диска. После чего считываются атрибуты файлови перемещаются в начало раздела, следуя алфавитному порядку. В первуюсортируются корневые каталоги затем файлы и подкаталоги. Если отобразитьструктуру файлов, то они будут идти в таком же порядке, как и отображаются впроводнике, при сортировке «По алфавиту».
Использование такого метода дефрагментации позволит ускоритьпроцесс работы компьютера, в частности загрузки операционной системы. Этообъясняется тем, что при загрузке большинство требуемых библиотек загружаютсяиз нескольких каталогов «C:\Windows\System32\», «C:\Windows\System32\drivers»).
Данный алгоритм рекомендуется использовать на системныхдисках, на которых файлы редко изменяются.
На рисунках 2.13. и 2.14. представлен, в графическом виде,принцип работы алгоритма. На рисунке 2.15. изображены условные обозначения.
/>
Рис. 2.13. Область дискадо дефрагментации.
/>
Рис. 2.14. Область дискадо дефрагментации.
/>
Рис. 2.15. «Легенда».
Преимущества: алгоритм полной дефрагментации сортирует всефайлы на жестком диске. Повышает скорость работы операционной системы.
Недостатки: долгое время дефрагментации. Файлы на диске недолжны изменяться часто или создаваться новые, так как это потребует новойсортировки и может привести к перемещению не фрагментированных данных, чтобудет соответствовать полной реструктуризации файловой системы.
2.2 Выбранный алгоритм
Для выбора алгоритма было оценено большинство методов. Длядостижения высокой скорости работы, и как следствие, малого затраченноговремени на проведение операции дефрагментации, программы следует подобратьсоответствующий алгоритм.
Оптимальным был выбран «простой» метод. Так как он выполняетдефрагментацию без сортировок и изменения файловой структуры, эффективен длябольшинства файлов, легок в реализации — это делает его лидером среди остальныхалгоритмов. Для пользователя дефрагментация с помощью такого алгоритма позволитбыстро соединить все фрагменты файла, не затрачивая большого количествосистемных ресурсов.
Использование такого метода позволит быстро и удобновыполнять дефрагментацию часто фрагментированных файлов. Пользователь можетуказать необходимые для дефрагментации файлы, что позволит не затрагиватьостальные файлы.
2.3 Среда разработки
2.3.1 С++ Bilder
Пятая версия продукта Borland C++ Builder, вышедшая в начале2000 года, является достаточно популярной визуальной средой разработки на С++для Windows. В состав среды входит множество различных компонентов и библиотек.Среда разработки имеет удобный редактор форм. Это позволяет создаватьвизуальные приложения с интерфейсами любой сложности. Редактор кода достаточнопрост, но при написании большого кода программы навигация становится болеетрудной. К сожалению компилятор и отладчик в Bilder на выполнены на достаточном уровне. Откомпилированнаяпрограмма занимает, относительно, много пространства на диске, и скоростьработы приложения не максимальна. Язык программирования для данной средыявляется Object Pascal, но так же допускается использование в коде языка С.Такая мультиязычность кода приводит к потеряв быстродействия программы иусложнением работы над проектом.
2.3.2 Microsoft Visual Studio
Является универсальной средой разработки. Включает в себя Visual Basic .NET (Visual Basic),Visual C++,Visual C#. Имеетразличные редакции, одна из которых бесплатна, в некоторые входят такжеMicrosoft SQL Server либо Microsoft SQL Server Express. Среда разработки имеетхороший и удобный редактор кода. Для облегчения работы программиста кодподсвечен разными цветами, на каждую стандартную функцию можно получитьсправку. Однако количество доступных компонентов намного меньше чем для С++ Bilder 5.0. Существует большая библиотекасправочной информации Microsoft Developer Network (MSDN), что значительнопомогает при изучении языка и создании приложений. Компилятор в Visual Studio создает приложения достаточно малого размера искорость выполнения в связке с языком С++ предельно высокая.
2.3.3 Выбраннаясреда
Для написания программы был выбран язык программированиявысокого уровня C++. Язык является C подобным, имеет небольшие отличия, которыезначительно улучшают качество кода. Этот язык имеет множество библиотек,большое количество готовых функций, имеет множество возможностей, написаниекода занимает значительно меньше времени, в сравнении с другими языками. Однакоразработка приложения может занять более длительное время, нежели прииспользовании других языков. В виду сложности языка на его изучение требуется,относительно, много времени.
В качестве среды разработки была выбрана Microsoft VisualStudio 2005. Данная среда разработки является универсальной, так, как онаподдерживает несколько языков программирования. В VS2005 встроен достаточно хорошийкомпилятор, имеет удобный редактор кода и редактор графического интерфейса,обладает хорошим отладчиком.
РАЗДЕЛ 3. РУКОВОДСТВО ПРОГРАММИСТА
3.1 Стандартные функции
В многозадачных операционных системах, некоторые процессымогут считывать и записывать данные на жесткий диск в то время, когда другойпроцесс выполняет дефрагментацию. Необходимо избежать записи в файл которыйбудет дефрагментироваться, не приостанавливая процесс записи на длительноевремя.
Чтобы проводить дефрагментацию, не требуя детальных сведенийо структуре файловой системе, предусмотрены три основные управляющие коды. Онидают возможность приложению находить пустые кластеры на диске, определятьположение кластеров файла и перемещать их. Они также позволяют и запрещаютзапись и чтение файла другим процессам.
Две из операций, используемых в процессе дефрагментациитребуют дескриптора тома. Только администраторы могут получить дескриптор тома,так что только администраторы могут дефрагментировать том.
3.1.1 Управляющий кодFSCTL_GET_VOLUME_BITMAP
Данный код используется для нахождения необходимогопространства, в которое будет перемещен файл. В этой области должно бытьдостаточно свободных кластеров для перемещения заданного файла, в случаенехватки объема – эта область не используется и происходит поиск подходящей.
Для использования этой операции необходимо вызвать функциюDeviceIoControl
Возвращаемые значения. Если операция завершена успешно,DeviceIoControl возвращает ненулевое значение.
Если операция не может выполниться или еще выполняется,DeviceIoControl возвращает ноль (0). Для получения расширенной информации обошибке, вызовите GetLastError.
Возвращенное значения от GetLastError из ERROR_MORE_DATAуказывает для вызывающей функции о том, что буфер не был достаточно большим, чтобыразместить полный битовую карту с запрашиваемого начала LCN (logical clusternumber – номер логического кластера) до последнего кластера на томе.
Возвращенное значения от GetLastError ERROR_NOT_READY указываетна то, что раздел является разделом с NTFS файловой системой и он несмонтирован.
3.1.2 Управляющий кодFSCTL_GET_RETRIEVAL_POINTERS
Данный код используется для получения расположения кластеровфайла на диске. При вызове DeviceIoControl с этим кодом, InputBuffer долженсодержать структуру STARTING_VCN_INPUT_BUFFER описывающую начальный элементцепочки кластеров с которого мы хотим получить карту размещения файла, а послеуспешного выполнения функции OutputBuffer будет содержать структуруRETRIEVAL_POINTERS_BUFFER которая описывает карту размещения.
Для использования этой операции необходимо вызвать функцию DeviceIoControl.
3.1.3 СтруктураRETRIEVAL_POINTERS_BUFFER
Необходимо пройти по структуре возвращаемойFSCTL_GET_RETRIEVAL_POINTERS
Далее рассмотрим параметры входящие в структуру:
ExtentCount. Число элементов в массив.
StartingVcn. Начальный VCN возвращенный вызываемой функцией.
Это не обязательно VCN возвращенный вызываемой функцией, таккак драйвер файловой системы может округлить первый VCN до области, которуюзапрашивал начальный VCN.
NextVcn. VCN на котором начинается следующая область. Этозначение отнять либо StartingVcn, либо NextVcn предыдущего члена массива равнодлине, в кластерах, текущей экстенте. Длинна является входным параметром дляфункции FSCTL_MOVE_FILE.
Lcn. VCN на котором начинается текущая экстента на томе. Этапеременная является входным параметров для FSCTL_MOVE_FILE. Для NTFS значение(LONGLONG) -1 указывает либо сжатие, либо нераспределенный регион рассеянныхфайлов.
3.1.4 Управляющий кодFSCTL_MOVE_FILE
Используется для перемещения каждого кластера впоследовательности обхода структуры. Перемещает виртуальные кластеры файла изодного логического кластера в другой, в пределах раздела. Если другой процессчто-то записывает на диск или в файл, необходимо обновить битовую карту иструктуру. Если операция завершена успешно DeviceIoControl возвращает ненулевое значение. Нуль возвращается в случае ошибки выполнения, ее можноузнать, используя GetLastError. При ошибке перемещения некоторые кластеры всеже могут быть перемещены, в таком случае необходимо обновить битовую карту иустановить новые указатели.
3.1.5 Функция CreateFile
Функция CreateFile создает или открывает каталог, физическийдиск, том, буфер консоли (CONIN$ или CONOUT$), устройство на магнитной ленте,коммуникационный ресурс, почтовый слот или именованный канал. Функциявозвращает дескриптор, который может быть использован для доступа к объекту.
Если функция завершается успешно, возвращаемое значение — открытый дескриптор заданного файла. Если заданный файл существовал до вызовафункции, а параметр dwCreationDisposition установлен в CREATE_ALWAYS илиOPEN_ALWAYS, вызов GetLastError возвращает значение ERROR_ALREADY_EXISTS (дажепри том, что функция завершилась успешно). Если файл не существовал перед вызовомфункции, функция GetLastError возвращает нуль.
Если функция завершается с ошибкой, возвращаемое значение — INVALID_HANDLE_VALUE. Чтобы получать дополнительные сведения об ошибке,вызовите GetLastError.
3.1.6 Функция CheckTokenMembership
Данная функция определяет, является ли определенныйидентификатор безопасности, определителем доступа. Функция имеет три параметра:хендел токена, идентификатор безопасности, булево значение для выводарезультата. С помощью данной функции можно определить обладает ли текущийпользователь правами администратора, что необходимо для выполнениядефрагментации файлов.
Функция IsUserAdmin выполняет проверку прав пользователя. Дляэтого необходимо получить идентификатор безопасности (SID) с помощью функцииAllocateAndInitializeSid, с параметрами SECURITY_BUILTIN_DOMAIN_RID иDOMAIN_ALIAS_RID_ADMINS (отвечают за принадлежность к группе администраторов),которая инициализирует идентификатор. Далее, используя CheckTokenMembership, определяетсяправа пользователя.
3.2 Функции, выполняющиедефрагментацию
Далее описана работа функций, которые реализованы вразработанной программе. Эти функции обеспечивают процесс дефрагментации.
3.2.1 Функция «file_map»
Функция получает битовую карту файла. Путь к файлу являетсявходящим параметром FileName. В этой функции задействованастандартная функция DeviceIoControl с управляющим кодомFSCTL_GET_RETRIEVAL_POINTERS.
Для работы с файлом на начала следует его открыть используяфункцию «CreateFile», сфлагами чтения, записи, удаления, это необходимо для обеспечения полных прав наданный файл. Далее требуется определить размер кластера, что становитсявозможно после использования функции «GetDiskFreeSpace», входящим параметром является бувадска, выходными – количествосекторов на кластер и количество байт на сектор, остальные параметры нам непотребуются. Следующим шагом является заполнения структуры. Для этогоиспользуется «DeviceIoControl».OutBuf описывает битовую карту файла, который следует дефрагментировать.Битовая карта используется в функции volume_map. Структура содержит количество фрагментов файла, значения VCN, LCN,порядок кластеров. Вся необходимая информация о файле, расположении егоклавстеров на простраснтве диска, их порядок хранится в OutBuf. Результатом функции «file_map» является заполненныйбуфер.
3.2.2 Функция «volume_map»
Функция просматривает весь диск в поисках свободногопространства для размещения дефрагментируемого файла. Функция вычисляетколичество кластеров на диске, рассчитывает и выделяет объем памяти для буфера.
В функции «DeviceIoControl» выделим некоторые параметры. «InBUFFER» представляет указатель на входящий буфер, и несетв себе стартовый LCN (logical cluster number – номер логического кластера). «OutBUFFER» указатель на выходной буфер.Результат выполнения операции хранится в переменной «ret». Если возвращаемое значение равно нуль, то функциявыполнилась с «DeviceIoControl» ошибкой.
Для дальнейшей работы с диском следует создать хендел изадать права на чтение, запись диска. Функция «DeviceIoControl» с кодом FSCTL_GET_VOLUME_BITMAP заполняет необходимые переменные длянахождения свободного пространства. Затем следует определить количествокластеров на разделе, начиная с стартового логического кластера. Следуетопределить количество байт для буфера. Затем вновь следует вызвать «DeviceIoControl», с обновленными параметрами, следующим шагомбудет поиск удовлетворяющего пространства на диске. После завершения обходапространства на диске, в структуру заносятся значения стартового кластера надиске, после которого будет записываться дефрагментируемый файл.
3.2.3 Функция «simply_defrag»
Данная функция вызывается по нажатию кнопки «Go» и используетописанные выше функции. «simply_defrag»выполняет перемещение кластеров файла в новое место на диске. Это положениеобуславливается положениями начального значения LCN, для выбранного файла, изначением VCN файла. Поиск подходящего стартового значение LCN для файланаходитс в функции «volume_map».
Чтобы осуществить перемещение кластеров файла в новую область,следует создать хендлы для файла и для диска, и с помощью «CreateFile», разрешить чтение, запись и удаление. Используя функцию «DeviceIoControl» с управляющим кодом «FSCTL_MOVE_FILE» осуществляется перемещение файлапокластерно. Количество раз выполнения цикл перемещения равно количествуфрагментов, которое содержит файл. Адрес кластера задается значениями LCN,отвечающее за физическое положение кластера на диске, и значением VCN, котороеобозначает положение кластера в цепочке файла.
После завершения перемещения файла процесс дефрагментациизавершен.
РАЗДЕЛ 4. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
4.1 Интерфейс программы
Программа имеет удобный и интуитивно понятный интерфейс(Рис.4.1.). На форме расположено три кнопки: «Drive info», «GO», «Fileinfo». Выпадающее меню выбора диска,расположена под кнопкой «Drive info», служит для получения информации о диске.Большую часть окна занимает поле для вывода информации.
/>
Рис. 4.1. Вид главногоокна программы.
4.2 Кнопка «Drive info»
При нажатии на кнопку в поле вывода будет занесена информацияо выбранном диске. Выбор локального диска осуществляется с помощью,расположенного ниже, выпадающего меню. В поле вывода будет представленаинформация о количестве секторов на кластер, количестве байт на сектор,количество свободных кластеров, общем количестве кластеров, размере кластера вкилобайтах (Рис. 4.2.).
/>
Рис. 4.2. Информация одиске.
4.3 Кнопка «GO»
Нажатие кнопки осуществляет дефрагментацию выбранных файлов.При нажатии на кнопку открывается окно выбора файла. После выбора файлаосуществляется дефрагментация файла. Также пользователю доступна возможностьосуществить выбор нескольких файлов, которые необходимо дефрагментировать. Когдапроцесс дефрагментации завершится, программа выводит информацию о выполненнойработе. Представленная информация состоит из строк: путь к файлу, количествофрагментов файла, сообщение о завершении дефрагментации и затраченное время (Рис. 4.3.).
/>
Рис. 4.3. Информацияпредставленная после дефрагметации.
4.4 Кнопка «File info»
Данная кнопка позволит пользователю просмотреть информацию оинтересующем файле или группе файлов. После выбора объекта будет выведенаинформация о расположении файла на диске, размер файла в килобайтах, количествофрагментов файла, количество занимаемых кластеров на диске (Рис. 4.4.). Эта информация позволит оценитьстепень фрагментации файла и необходимость его дефрагментации. Если количествофрагментов будет больше одного, то следует произвести дефрагментацию данногофайла.
/>
Рис. 4.4. Информацияпредставленная после дефрагметации.
ВЫВОДЫ
В процесс выполнения работы были исследованы различные типыфайловых систем, методы работы с ними Исследована причина фрагментации файлов,последствия данного явления. Во время выполнения задания были изученыпопулярные алгоритмы для дефрагментации файлов, их методы работы, особенности,преимущества и недостатки. Был произведен обзор и выделение основныхособенностей популярных решений фрагментации фалов на жестком диске компьютера.Приложение разработавалось в универсальной среде разработки Microsoft VisualStudio 2005. Для обеспечения более высокой скорости работы дефрагментатора кодбыл написан на языке высокого уровня С++, откомпилирован стандартным компиляторомMicrosoft.
Благодаря собранным данным и полученным навыкам, быларазработана программа-дефрагментатор. Она способна сканировать файл, длянахождения количества занимаемых кластеров, и количества фрагментов, длядальнейшей дефрагментации. Программа также способна предоставить информацию отребуемом локальном диске. Дефрагментация выполняется по алгоритму «простаядефрагментация», то есть все фрагменты файла перемещается в новое место надиске. Пользователь может выбрать определенные файлы для их дефрагментации. Программабыла протестирована на различных жестких дисках, результат теста был успешен.