操作系统课程设计 模拟FAT文件系统的设计与实现

一、 目的与要求

1.研究FAT文件系统的物理布局。
2.掌握FAT文件系统中目录的结构与目录项定义。
3.掌握文件操作如建立目录,建立文件,删除文件,复制文件时,对FAT和目录的操作步骤。
4.合理设计文件系统布局与数据结构(直接用数组模拟磁盘布局或建立一个文件模拟磁盘布局)。
4.编制程序模拟FAT文件系统,加深理解文件系统的功能及实现机理。

二、 主要内容

1.文件系统布局
简易FAT文件系统,可以划分为如表1所示布局。
在这里插入图片描述

其中:
a.特征块:存放文件系统特征信息。如设计者姓名,版本号,根目录位置,盘块大小,盘块总数,剩余空闲盘块总数,当前目录等。(根据需要自己设定)
b.FAT表:在FAT文件系统中,FAT表有两个重要作用。1、描述数据块的分配状态。2、标明文件或目录的下一块号 。

c.数据块:
数据块存放两种文件:1、目录文件。2、字符文件(文本文件)。可以将数据块描述为byte类型的数组。每块的大小必须是2的n次幂。(自己设定块的大小,必须是目录项长度的整倍数)。

在这里插入图片描述

2.实现功能

a.命令提示符
当前路径+>为命令提示符,光标在>后闪烁提示输入命令。
进入系统时,创建文件系统和根目录,并以根目录为当前路径,如
/>
当前路径改变后,命令提示符随之改变如
/user/li>

b.列文件目录
命令形式:dir , dir<路径名>
dir 列当前目录的与文件或指定路径的目录与文件。如
/>dir 列根目录下目录和文件
/user/zhang>dir 列/user/zhang下的目录和文件
/>dir /user 当前目录是根,列/user目录下的目录和文件

以/>dir /user为例
(1)打开根目录所在盘块,逐项查找目录项,找到user目录项,根据目录项中的数据块指针和FAT表找到user目录的一系列盘块。
(2)读入盘块,查找user目录下所有目录项,并列出。如果路径含有多层目录,则需要顺序查找每一层,如在任何一层没有发现对应名,则提示“没有这个目录”。注意相对目录的使用。

c.创建目录
命令形式 md <目录名>,md<路径/目录名>
创建当前目录下的子目录或者创建已知路径下的子目录,如
/user/zhang>md data 在/user/zhang下创建子目录data
/user/zhang>md …/li/data 在/user/li下创建子目录data
/user/zhang>md data为例,
(1)在FAT中查找可用的新块,将FAT表项此项从0改为文件尾标志。
(2)在新块中记录.和…目录项。
(3)在父目录块中添加新的目录项,名字为目录名,起始块为新块号。

d.删除目录
命令形式 rd <目录名>,rd<路径/目录名>
删除当前目录下的子目录或者删除已知路径下的子目录,如
/user/zhang>rd data 删除/user/zhang下的子目录data
/user/zhang>rd user/li/data 删除/user/li下的子目录data
我们只要求删除空目录即可,非空目录不允许删除。如目录非空,则提示目录非空,无法删除。
/user/zhang>rd data为例,
(1)在FAT中查找可data目录占用的块,标记为0。
(2)在zhang目录中删除data目录项。

e.改变当前目录
命令形式 cd <目录名>,cd<路径/目录名>
修改当前目录,如
/user>cd zhang 改变当前目录为/user/zhang
/user/zhang>cd … 改变当前目录为/user
/user/zhang>cd /user/li 改变当前目录为/user/li
(1)将当前目录写入特征块
(2)改变命令提示符

f.创建文件
命令形式 new <文件名>,new<路径/文件名>
创建一个新文件,如
/user/zhang>new hello.txt,创建当前目录下的新文件
/user/zhang>new data/hello.txt,创建当前目录下一级目录data下的新文件
/user/zhang>new /user/li/hello.txt ,创建绝对路径下的新文件
两种实现方式,第一种,创建一个空文件,占一个数据块。第二种,创建文件后立即输入文件内容,根据文件的尺寸申请相应的数据块。
例如,第一种方式/user/zhang>new hello.txt。
(1)在FAT中查找可用新块,表项标记为文件尾。
(2)在当前目录块中添加新的目录项,名字为文件名,起始块为新块号。

g.删除文件
命令形式 del <文件名>,del<路径名/文件名>
/user/zhang>del hello.txt 删除当前目录中的文件
/user/zhang>del …/li/hello.txt 删除相对路径下的文件
(1)根据文件目录项的文件首块和FAT表找到hello.txt的所有数据块,FAT表项改为0。
(2)在目录中删除目录项。

h.编辑文件
命令形式 edit<文件名>,edit<路径名/文件名>
重新编辑文件,如有内容先清空。
/user/zhang>edit hello.txt 编辑当前目录中的文件
/user/zhang>edit /user/li/hello.txt 编辑绝对路径下的文件
(1)如果文件有内容,则在FAT中将此文件所有盘块号表项标记为0。
(2)输入文件内容,计算盘块数。
(3)根据FAT表重新申请盘块,修改FAT。
(4)修改文件目录项的初始块(因为可能已经变化)。
(5)文件内容写入到数据块。

i.查看文件
命令形式 type<文件名>,type<路径名/文件名>
/user/zhang>type hello.txt 查看当前目录中的文件
/user/zhang>type /user/li/hello.txt 查看绝对路径下的文件
(1)根据FAT链,打开文件的数据块
(2)把字符组装成字符串后输出

j.复制文件
命令形式 copy <文件名> <文件名>
copy <路径名/文件名> <文件名>
copy <文件名> <路径名/文件名>
copy <路径名/文件名> <路径名/文件名>
/user/zhang>copy hello.txt hi.txt 复制当前目录下文件为新文件
/user/zhang>copy /user/li/a.txt b.txt 复制某路径下的文件到当前目录并改名
/user/zhang>copy a.txt /user/li/a.txt 复制当前目录文件到某路径
/user/zhang>copy data/a.txt …/user/li/b.txt 复制一个路径下文件到另一路径
我们都给出了文件名,DOS命令中可以不给出文件名,默认复制过去的文件名是相同的。
/user/zhang>copy data/a.txt …/user/li/b.txt为例
(1)在目标文件目录创建一个新文件 new …/user/li/b.txt
(2)读取源文件内容
(3)用源文件内容编辑目标文件 edit …/user/li/b.txt

k.设置文件属性
命令形式 attr <文件名>+r –r +h -h ,attr <路径名/文件名>+r –r +h -h
/user/zhang>attr hello.txt +r -h 修改当前目录中的文件属性
/user/zhang>attr /user/li/hello.txt -r 修改绝对路径下的文件属性
修改文件的目录项内容即可。
文件属性将影响一些命令的效果,如隐藏属性的dir命令,只读属性文件不允许编辑和删除等。

l.退出系统
命令形式 exit

代码下载链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Asio otus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值