操作系统的一个课程设计,实现一个二级目录文件系统。
用disk.txt模拟磁盘,使用Help查看支持的命令及其操作方式,root为超级用户(写在disk.txt中) 文件的逻辑结构:流式文件。 物理结构:链接文件。 物理空间管理:空闲链法。 目录结构:二级目录结构。 目录搜索技术:线性搜索。 FCB:含文件相关的全部属性。
物理盘块的设计(disk.txt)
以一个文本文件disk.txt模拟硬盘,设定硬盘容量分为100个物理块,每个物理块的大小512字节,盘块之间用(‘\n’)分割。因此一个盘块:512字节数据+1字节(‘\n’)分割符=513字节,则disk.txt长度=51300(100×513)+1字节(文件结束符)=51301字节。
100块盘块的分布:
1#: MFD块,存放MFD信息;
2-17#: UFD块,存放UFD信息;
18-33#: UOF块,存放UOF信息;
其余物理块用于存放文件内容。
# MFD块的设计
硬盘的第1个物理块固定用于存放主文件目录MFD。MFD结构如下:
typedef struct mfd{
username ;//用户名 14B
userpwd ;//密码14B
link; //该用户的UFD所在的物理块号(4B)
}MFD;
每个MFD项占32字节,因此,1个物理块可存放512/32=16个MFD(用户),即本文件系统最多可管理16个用户。如下表1所示:
用户名
密码
用户文件目录地址
Peter
12345
3
Ben
Abc
5
表1文件系统用户目录信息表
2#-17# UFD块的设计
2#-17#物理块:固定用于存放用户文件目录UFD。假设一个用户需要一个UFD块,因此,16个用户共需要16个UFD块。UFD结构如下:
typedef struct {
filename //文件名14B;
mode; ///文件权限0-readonly;1-writeonly;2-read/write
length; ///文件长度(以字节数计算)
addr;//该文件的第1个文件块对应的物理块号
}UFD;
一个UFD项设为32 Bytes,一个块可存放16个UFD项。则一个用户最多可创建16个文件。如下表2所示: