操作系统实验5 简易文件管理系统

说明:由于我这次作业完成的很敷衍,所以我在这里暂时不贴出我的代码,关键部分其实是找到getblk和putblk对应的系统调用函数即可

功能要求 ①至少支持普通文件和目录文件两种类型 ②创建新文件,删除已有文件 ③根据文件名(绝对路径)检索到相应的文件(/d0/d1/filename) ④支持的操作:open、close、read、write ⑤至少支持三层目录(/d0/d1/filename) ⑥能读取外部提供的文件并存入到文件系统中(即从模拟的磁盘空间之外拷贝文件) ⑦提供命令行界面,能够显示目录内容和文件内容

实现要求 ①使用一个空文件模拟一块磁盘,大小为 1MB,可预先创建好。磁盘大致结构如下: Boot block Super block Data block bitmap Inode bitmap Inode table Data block …… Super block 包含有关文件系统的属性和信息,基本块大小、/目录 inode 的位置等 Data block bitmap 标记块的使用情况,每一 bit 对应相应位置的块(1=使用,0=空 闲) Inode bitmap 标记 inode 的使用情况,每一 bit 对应一个 inode(1=使用,0=空闲) Inode table 存放 inode,多块(inode table 大小固定,即 inode 的最大数量固定) Data block 存放文件内容,多块 ②以块为存取的基本单位,大小为 1KB ③每个文件最多占有 8 块,即文件的最大大小为 8KB ④文件名最长 8B ⑤简易文件系统支持最多 80 个文件(含目录文件) ⑥索引节点(inode):  每个索引节点大小 64B(1 个块可以存放 16 个 inode)  系统需要维护 inode bitmap,记录每个索引节点分配与否
 每个索引节点至少包含:文件标识符、文件涉及的块(地址或块号)、文件 创建时间等  采用直接索引方式获取块位置  根节点已知(即/目录对应的索引节点位置已知) ⑦需要实现两个基本函数:
GETBLK(buf, blk_no); PUTBLK(buf, blk_no);  两个函数用于读取和写入指定块。buf 为内存缓冲区,大小与基本块大小相同,用于存放读取或待写入的块内容;blk_no 为物理块号  文件系统的其他功能函数实现在这两个基本函数的上层,即其他函数不直接访问磁盘

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值