Я читаю "Практическое проектирование файловой системы с файловой системой 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 КБ?)