MINIX文件系统的问题,计算超级块中i节点总数?
MINIX文件系统的超级块字段为:struct super_block {
unsigned short s_ninodes;
unsigned short s_nzones;
unsigned short s_imap_blocks;
unsigned short s_zmap_blocks;
unsigned short s_firstdatazone;
unsigned short s_log_zone_size;
unsigned long s_max_size;
unsigned short s_magic;
................................
};
s_ninodes为该分区中i节点总数,我想请问是怎么算出来的?
我可以计算s_nzones逻辑块总数,例如MINIX文件系统的分区为64M,则MINIX文件系统的一个逻辑块为1K,那么就有64*1024*1024/1K=64*1024个逻辑块。
知道了逻辑块总数目,那么逻辑块位图所占的块数s_zmap_blocks也就知道了,64*1024/(8*1024)=8个块,所以逻辑块位图占用了硬盘上8个逻辑块。
但是i节点就不知道是怎么计算的? 我没有仔细阅读minix源代码,我觉得在inode节点分配的时候,把计数值+1 LINUX 0.11的内核,它的文件系统就是MINIX的.
有谁知道超级块中这个s_ninodes(总的i节点数)是怎么计算出来的?
如果是64M的分区,那么这个值应该是多少. 我没有仔细阅读minix源代码,我觉得在inode节点分配的时候,把计数值+1
i节点总数应该是在分区的时候,根据大小就固定了,而使用i节点的时候是根据i节点位图的位的占用情况来判断的. 用MKFS时就须指定INODE的个数,
应该是在分区时就固定的
页:
[1]