Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

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


Работа с жестким диском на уровне секторов LBA (пересчет № кластера в № сектора).

Работа с жестким диском на уровне секторов LBA (пересчет № кластера в № сектора).

В ряде случаев для спасения файлов и решения других проблем приходится работать на уровне секторов (LBA) жесткого диска, но структуры файловых систем в разделах диска используют для адресации порций файлов кластеры и экстенты. Например, раздел NTFS состоит из кластеров, они пронумерованы от 0 (кластер - это непрерывная последовательность секторов заданного фиксированного размера). Файл в разделе NTFS состоит из экстентов (экстент - это непрерывная последовательность кластеров различного размера. Размер экстента задается номером начального кластера и количеством кластеров в экстенте).

Раздел с файловой системой типа FAT32 состоит из трех основных областей, расположенных в следующем порядке:

- «резервная» область (область резервных секторов);

- область таблиц размещения файлов (FAT1 и FAT2);

- область файлов и каталогов (область данных).

Область данных раздела FAT32 (и разделов FAT12 FAT16) состоит из кластеров, которые пронумерованы от номера 2.

Поэтому когда приходится работать на уровне секторов (LBA) жесткого диска, то нужно для чтения содержимого нужного кластера вычислить номер начального сектора этого кластера (размер кластера указан в Boot-секторе разделов).

Работа в разделе NTFS на жестком диске, пересчет номера кластера в номер сектора (размер кластера 2 сектора).

Допустим нам необходимо на уровне секторов LBA прочитать содержимое пятого кластера (см. рис. 1). Раздел начинается сектора 100, который является частью кластера 0 (начальный кластер раздела, размер кластера 2 сектора).

 

Рис. 1.

Расчет выполняется очень просто (с помощью калькулятора в 16-м виде). Номер кластера умножаем на количество секторов в кластере (размер кластера) и результат прибавляем к номеру начального сектора раздела NTFS (сектор 100 – начальный сектор кластера 0):

(5 x 2) + 100= 10A

Работа в разделе FAT32 на жестком диске, пересчет номера кластера в номер сектора (размер кластера 2 сектора).

Допустим нам необходимо на уровне секторов LBA прочитать содержимое пятого кластера (см. рис. 2). Область данных раздела начинается сектора 104, который является частью кластера (размер кластера 2 сектора) и расположена за FAT 2.

 

Рис. 2.

Расчет выполняется очень просто (с помощью калькулятора в 16-м виде). Из номера нужного нам кластера вычитаем 2, результат умножаем на количество секторов в кластере (размер кластера) и полученное значение прибавляем к номеру начального сектора области данных раздела (сектор 104начальный сектор кластера 2):

(5 - 2) x 2 + 104= 10A

Работа в разделе FAT16 на жестком диске, пересчет номера кластера в номер сектора (размер кластера 2 сектора).

Допустим нам необходимо на уровне секторов LBA прочитать содержимое пятого кластера (см. рис. 3). Область данных раздела начинается сектора 104, который является частью кластера (размер кластера 2 сектора) и расположена за каталогом.

Расчет выполняется очень просто (с помощью калькулятора в 16-м виде). Из номера нужного нам кластера вычитаем 2, результат умножаем на количество секторов в кластере (размер кластера) и полученное значение прибавляем к номеру начального сектора области данных раздела (сектор 104начальный сектор кластера 2):

(5 - 2) x 2 + 104= 10A

Рис. 3.

 

 


Лицензия