РАЗРАБОТКА ИМИТАТОРА РАСПРЕДЕЛИТЕЛЯ ДИСКОВОЙ ПАМЯТИ: НЕПРЕРЫВНОЕ ВЫДЕЛЕНИЕ ПАМЯТИ. Днепровский М. С. Новосибирский государственный университет экономики и управления Новосибирск, Россия DEVELOPMENT OF SIMULATOR OF THE DISTRIBUTOR DISK SPACE: CONTINUOUS ALLOCATION. Dneprovskiy M. S. Novosibirsk State University of Economics and Management Novosibirsk, Russia e-mail: maksim_dneprovskiy@mail.ru Составной частью всех ОС является файловая система, управляющая размещением информации на внешнем запоминающем устройстве (ВЗУ). Главной проблемой в разработке системы управления памятью является проблема уменьшения фрагментации, под которой понимается процесс разбиения предназначенного для записи файла на отдельные небольшие фрагменты. Когда фрагментация диска достигает внушительных размеров, скорость чтения носителя уменьшается, так как поиск кластеров, в которых хранятся записанные файлы, требует некоторого времени. Кроме того, фрагментация способствует преждевременному износу жеcткого диска. Единственный выход из данной ситуации – дефрагментация диска, под которой понимается процесс обновления его логической структуры так, чтобы файлы хранились в непрерывной последовательности кластеров. Используемый в данной работе алгоритм приведен в таблице 1. Преимущества алгоритма непрерывного выделения памяти: - легкость реализации; - хорошая производительность. Недостатки: 1 иногда невозможно найти подходящий по размеру свободный - фрагмент для нового файла; система нерациональна, когда содержимое диска постоянно меняется. Решение этих недостатков – так называемая «сборка мусора», то есть объединение всех свободных участков памяти в один большой блок. Таблица 1 – Характеристика алгоритма непрерывного выделения памяти Название алгоритма Одиночное непрерывное выделение Характеристики Вся память выделяется в распоряжение одной задачи, файл в данном случае характеризуется адресом и длиной (количество занятых кластеров, или блоков). Если необходимо часто изменять содержимое диска, то этот метод нерационален, так как сильно страдает от фрагментации. Где используется Файловые системы компакт – дисков. Логическая модель диска. Основные понятия С логической точки зрения все адресное пространство диска представляет собой набор последовательно пронумерованных секторов. Небольшая часть этих секторов выделяется для хранения служебной информации и называется системной областью диска, остальные сектора предназначены для хранения файлов и каталогов. Единицей дисковой памяти для размещения файлов является кластер. В один кластер может входить до 128 смежных секторов. Все кластеры имеют сквозную нумерацию, причем первый допустимый номер кластера равен 2. Как уже было отмечено ранее, файлы могут храниться в несмежных кластерах диска, находящихся в различных частях диска (фрагментация файла). 2 Системная область диска Структура системной области диска зависит от типа файловой системы, которая определяет способы доступа к информации в области данных. Примерами файловых систем являются FAT, NTFS (в операционных системах семейства Windows), ext2, ext3 (в операционных системах семейства Linux), HPFS (в операционной системе OS/2) [1]. На рисунке 1 приведена логическая модель диска с файловой системой FAT. Начальный загрузчик (загрузочная запись) имее размер 512 байт. Он хранится в нулевом секторе, используется для загрузки операционной системы. Таблица размещения файлов FAT (File Allocation Table) содержит в себе информацию о размещении файлов в области данных. Для обеспечения надежного доступа к данным на диске всегда хранится два экземпляра FAT, обновляющиеся одновременно. Для доступа в область данных используется только первая копия. Системная область Область данных Загрузочная запись Таблица размещения файлов (2 копии) Корневой каталог Кластер 2 Кластер 3 Кластер 4 …… Кластер N Рисунок 1 – Логическая структура диска Корневой каталог – главный каталог диска, который занимает сектора, следующие за FAT. Количество секторов корневого каталога зависит от объема диска. Фиксированное число элементов и размещение в системной области корневого каталога является принципиальным отличием от прочих каталогов – файлов. 3 Адресное пространство жестких дисков может быть разбито на несколько разделов (логических дисков), поэтому для жестких дисков в логической модели добавляется таблица разделов диска, содержащая информацию о размещении логических дисков и о том, какой из логических дисков будет использоваться для загрузки ОС. Таблица размещения файлов В таблице размещения файлов содержится информация об адресах кластеров, выделенных для размещения каждого файла. Каждому кластеру в области данных соответствует единственный элемент таблицы. Она представляет собой карту (образ) области данных, в которой описывается состояние каждого кластера диска. Размер таблицы может меняться в зависимости от объема диска [1]. Дефектные кластеры имеют обозначение «BAD». В случае, если кластер свободен, ему соответствует элемент FAT со значением «0». Если же кластер был выделен для какого-либо объекта, возможны два варианта: 1. элемент таблицы имеет значение «EOF» (признак конца файла – от англ. «End Of File»), если этот кластер является последним кластером, выделенным файлу; 2. элемент содержит значение номера следующего кластера, выделенного файлу. Логическое разбиение области данных на кластеры, как совокупность секторов (вместо использования одиночных секторов) позволяет: - уменьшить размер FAT; - уменьшить возможную фрагментацию файлов; - увеличить скорость доступа к файлу за счет сокращения длины цепочек фрагментов дискового пространства, выделенных для него. Также следует отметить, что при увеличении размера кластера ухудшается коэффициент использования дисковой памяти. Минимальный 4 размер кластера на диске с файловой системой FAT зависит от объема диска (V диска) и разрядности элемента FAT (r): ݒдиск ܸкл. = 2 Дефрагментация диска Дефрагментация — процесс обновления и оптимизации логической структуры раздела диска с целью обеспечения хранения файлов в непрерывной последовательности кластеров. После дефрагментации ускоряется чтение и запись файлов, а, следовательно, и работа программ. Другое определение дефрагментации: перераспределение файлов на диске, при котором они располагаются в непрерывных областях. Длинные файлы занимают несколько кластеров. При добавлении нового файла анализируется свободное место на диске. При непрерывном выделении, в случае недостаточного объема для размещения файла он не запишется. Дефрагментация чаще всего используется для таких файловых систем, как File Allocation Table для MS-DOS и Microsoft Windows, так как в программах для работы с ними обычно не предусмотрено никаких средств для предотвращения фрагментации, и она появляется даже на практически пустом диске и небольшой нагрузке. Разработка распределителя дисковой памяти: непрерывное выделение памяти Основные функции имитатора распределителя дисковой памяти: - ввод общего объема диска и размера блока (кластера), как показано на рисунке 2; 5 Рисунок 2 – Настройка диска - ввод произвольного числа файлов (по каждому файлу задаются имя и размер). Процесс добавления файла представлен на рисунке 3. Рисунок 3 – Процесс добавления файла 6 - запись файла на диск; - удаление файла; - дефрагментация диска (рисунок 4). Рисунок 4 – Процесс дефрагментации Для реализации программы использовалась среда разработки С++ Builder. Отображение процессов размещения файлов на диске производится в графическом режиме. Для отображения логической модели диска использовался компонент DrawGrid, представляющий собой таблицу, ячейки которой содержат графические изображения. Заключение Программа позволяет наглядно увидеть, как происходит распределение памяти. Главной проблемой в разработке системы управления памятью является проблема уменьшения фрагментации, под которой понимается процесс разбиения предназначенного для записи файла на отдельные небольшие фрагменты. Когда фрагментация диска достигает внушительных размеров, скорость чтения носителя уменьшается, так как поиск кластеров, в которых 7 хранятся записанные файлы, требует некоторого времени. Кроме того, фрагментация способствует преждевременному износу жеcткого диска. Единственный выход из данной ситуации – дефрагментация диска, под которой понимается процесс обновления его логической структуры так, чтобы файлы хранились в непрерывной последовательности кластеров. Список используемых источников 1. Копейкин М.В., Спиридонов В.В. Организация ЭВМ и систем. Память ЭВМ. Учебное пособие. Спб: СЗТУ, 2004; 2. Архангельский А. Я. Программирование в C++ Builder. М: Бином, 2010. С 1230; 8