本文主要是介绍mit6.s081 lab9 file system,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Large files
这个exercise的工作是提高xv6支持的最大文件大小,现在的inode结构如下图所示
原始的xv6 inode结构中有12个直接索引,1个一级间接索引,所以当前xv6中文件的支持的最大block数为12 + 256 (每个block可以存储256个block num,一个sector为512 bytes,一个block为1024 bytes,一个block num为4 bytes)。
现在要将inode结构修改为11个间接索引,1个一级间接索引,1个二级间接索引,可以支持的最大文件block数量为11 + 256 + 256 * 256
1.修改NDIRECT数量为11,修改NINDIRECT为一级间接索引和二级间接索引的数量之和
#define NDIRECT 11
#define SINGLY_NUM (BSIZE / sizeof(uint)) // 一级索引支持的最大block数
#define DOUBLY_NUM SINGLY_NUM * SINGLY_NUM // 二级索引支持的最大block数
#define NINDIRECT SINGLY_NUM + DOUBLY_NUM // 间接索引支持的最大block数
#define MAXFILE (NDIRECT + NINDIRECT)
2.修改inode和dinode中的addrs
struct inode {uint dev; // Device numberuint inum; // Inode numberint ref; // Reference countstruct sleeplock lock; // protects everything below hereint valid; // inode has been read from disk?short type; // copy of disk inodeshort major;short minor;short nlink;uint size;uint addrs[NDIRECT+2];
};
struct dinode {short type; // File typeshort major; // Major device number (T_DEVICE only)short minor; // Minor device number (T_DEVICE only)short nlink; // Number of links to inode in file systemuint size; // Size of file (bytes)uint addrs[NDIRECT+2]; // Data block addresses
};
3.在bmap函数中增加对二级索引查找和分配的逻辑
/
这篇关于mit6.s081 lab9 file system的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!