Вопросы по теме Software

Как работает дефрагментатор диска?

Отвечает :
ИМХО, будет достаточно лишь объяснить суть и происхождение фрагментации. Цилиндры и дорожки дополнительной ясности не внесут, поэтому воспользуемся линейной моделью. Итак, винт - набор блоков одного размера. Скажем, 16 килобайт. У каждого блока свой номер. Каждая операция чтения или записи состоит, по крайней мере, из следующих шагов: Посмотреть в специальной служебной области диска, где же "лежит" наш файл, переместиться в заданное место, произвести чтение/запись (сместиться в служебную область, чтение, сместиться к файлу, чтение; итого 4 операции). Рассмотрим пример. Обозначим _ - пустой блок, A - блок, принадлежащий файлу "a". Пусть имеем в некотором месте такую ситуацию: ...______________... Далее, пусть надо записать файл из 48 килобайт. Получится следущее: ...ААА___________... Запишем еще один файл b из 2 блоков. ...АААBB_________... И, наконец, файл c из пяти: ...АААBBССССС____... Теперь удалим b: ...ААА__ССССС____... При записи большого d произойдет следующее: ...АААDDСССССDDDD... Файл d оказался разделен на части - фрагментирован. Это значит, что чтение из него потребует больше операций: нужно дважды переместиться к служебной области, чтобы посмотреть, где же искать наш файл. То есть, общее число операций (в служебную область, чтение, к фрагменту 1, чтение, в служебную область, чтение, к фрагменту 2, чтение) возросло вдвое. И это почти нефрагментированный файл. Обычно все намного хуже. Что же делает дефрагментатор? По моему, уже очевидно, что он переупорядочивает блоки: ...АААСССССDDDDDD... Засчет этого, несколько сокращается время дисковых операций. Замечу лишь, что эффективность дефрагментации сильно зависит от типа файловой системы, грамотной организации кэширования и характеристик жесткого диска (время поиска, размер кэша). Так, скажем, используемая в Linux файловая система Ext2/Ext3 практически не нуждается в дефрагментации. Вплоть до того, что дефрагментаторы не входят в основные дистрибутивы. Да и NTFS, субъективно, смотрится на порядок лучше, чем старая добрая FAT16/32.
Отвечает :
Каждый дефрагметатор работает по своему алгоритму. Что касается цилиндров/дорожек, то доступ к ним осуществляется через функции драйвера Windows, работающего на уровне ядра. К работе дефрагментатора это отношения не имеет. Чтобы понять как работает драйвер, нужно иметь его исходный текст и понимать, как работает ядро Windows.Обращайтесь в Microsoft, читайте документацию SDK.
Отвечает :
Никаких цилиндров, дорожек... вся работа производится над кластерами!Собираются кусочки файла из кластеров в разных частях диска и выстраиваются друг за дружкой. Вот весь алгоритм дефрагментатора.Только не всегда удается найти столько непрерывного места для такой цепочки, вот и приходится ворочать кластерами, перемещая их туда-сюда и высвобождая места под непрерывные цепочки кластеров. Вся фишка еще и в том, что не все файлы стоит дефрагментировать. Вот, например, фильм явно не стоит того. А вот какая-нибудь часто используемая база данных в сочетании с большимбуфером в памяти и винчестере при дефрагментации дает очень большой прирост скорости!В особенности, когда обработка ведется преимущественно соседних записей. Когда идет случайный выбор файлов с разных частей диска - эффект от дефрагментации тоже может быть нулевым.
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...