В операционных системах используются разные стратегии выделения блоков данных. Чаще всего ОС выделяет смежные блоки данных, но это не всегда возможно. Файл, который не состоит только из смежных блоков данных, называется фрагментированным.

В стратегии первого доступного блока поиск начинается с первого блока данных в файловой системе. После того как первый блок будет выделен и потребуется выделить второй блок, поиск снова начинается от начала файловой системы. Данная стратегия часто приводит к появлению фрагментированных файлов, потому что память под файл выделяется не как единое целое, а по частям. Представьте себе театр, в котором стратегия выделения первого доступного блока используется для бронирования мест. Если группа из четырех зрителей захочет купить билеты, кассир последовательно переберет свободные места, начиная с первого ряда. Возможно, всей четверке достанутся соседние места; а может быть, двое будут сидеть в первом ряду, а еще двое - в последнем. Если же во время поиска кто-то из зрителей вернет билет в кассу, третий может оказаться ближе к первому ряду, чем первые двое. В примере на рис. 8.3 при использовании этой стратегии следующим будет выделен блок данных 1. В операционных системах, использующих стратегию выделения первого доступного блока, удаленные данные в начале файловой системы перезаписываются быстрее, чем при использовании других алгоритмов. Следовательно, попытка восстановления удаленного содержимого в конце файловой системы с большей вероятностью увенчается успехом.

Рис. 8.3. Пример выделения 8 блоков данных

В похожей стратегии поиска следующего доступного блока поиск начинается не с начала, а с последнего выделенного блока данных. Например, после выделения блока данных 3 на рис. 8.3 поиск начнется с блока 4, а не с 0. В нашем примере с театром поиск продолжится не с первого ряда, а с последнего забронированного места. Даже если во время поиска будет возвращен билет на первый ряд, он не будет продан до того, как поиск достигнет последнего места. Такой алгоритм лучше сбалансирован для восстановления данных, потому что блоки данных в начале файловой системы выделяются заново лишь после выделения всех блоков до ее конца.

Стратегия оптимальной подгонки ищет смежные блоки данных, объем которых позволит сохранить заданное количество данных. Такой способ хорошо работает, если количество блоков известно заранее, но при увеличении размера файла новые блоки данных, скорее всего, будут выделены в другом месте, и файл все равно фрагментируется. Если алгоритм не может найти смежный блок нужного размера, он может использовать стратегию поиска первого или следующего доступного блока. Обычно именно такой алгоритм применяется при бронировании мест в театре. Кассир перебирает пустые места, пока не найдет достаточно соседних мест для вей группы. Скажем, если бы в примере на рис. 8.3 потребовалось выделить два блока данных, то файл попал бы в блоки данных 4 и 5 и не был бы разбит между блоками 1 и 4.

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

Кроме проверки стратегии выделения на уровне операционной системы также следует учитывать специфику приложения, записывающего данные. Например, при обновлении существующих файлов некоторые приложения открывают исходный файл, обновляют его и сохраняют новые данные поверх исходных. Другое приложение может создать копию исходного файла, обновить ее и переименовать копию так, чтобы она перезаписала оригинал. В этом случае файл сохраняется в новых блоках данных. Не путайте поведение приложения со стратегией выделения, потому что ОС не заставляла приложение выделять новые блоки данных.

Логические адреса файловой системы | Криминалистический анализ файловых систем | Поврежденные блоки данных


Криминалистический анализ файловых систем



Новости за месяц

  • Март
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс