Расчет максимального размера файла, поддерживаемого в BeFS - PullRequest
0 голосов
/ 11 ноября 2018

Я читаю "Практическое проектирование файловой системы с файловой системой Be" , в BeFS часть "потока данных" структуры inode выглядит следующим образом:

struct {
  // each block_run(8 byte) is a disk address space which maps from
  // at lease 1 block and 65536 block at most
  block_run direct[12];
  // points to a block which contains block_run of real data
  block_run indirect;
  // points to a block which contains block_run of indirect blocks
  block_run double_indirect;
}

Затем в этой книге начнется расчет минимального и максимального размера файла, давайте посмотрим на минимальный: каждый прямой block_run отображает 1 блок и каждый косвенный отображает по крайней мере 4 КБ (512 block_run), и каждый двойной косвенный отображает по крайней мере 4 КБ (512 block_run), и каждый блок размером 1 КБ, минимальный размер файла заканчивается на:

прямые блоки = 12K

косвенные блоки = 512K (4K косвенных блоков отображают 512 block_runs по 1K каждый)

блоки с двойной косвенной связью = 1024 МБ (4K страниц с двойной непрямой отображают 512 непрямых страниц, которые отображают 512 блоков block_runs по 4K каждая)

Я действительно запутался в отображении пространства с двойными косвенными блоками, разве это не должно быть:

блоки с двойной косвенной связью = 512 * 512 КБ (каждая непрямая страница отображает пространство 512 КБ?)

1 Ответ

0 голосов
/ 11 ноября 2018

Хм, я понял это после прочтения этой главы много раз. Двойной косвенный блок содержит block_run, который содержит адрес блока, но НЕ содержит косвенный адрес блока. Так что расчет правильный.

...