操作系统课程设计
模拟二级文件系统
姓名:
学号:
专业:计算机科学与技术
开发平台:
开发环境:
编译器:
使用语言:
使用说明:本模拟二级文件系统是模仿 的文件系统编写,在 的
文件系统基础上简化了缓存队列。模拟二级文件系统包含 !"#$% 和 % 两个文件,
使用时请先运行 !"#$%,当出现 &' 字样时,它会在当前目录下创建一个 大小的
"()#$ 文件,(由于创建文件较大,等待时间较长)在名为 * 的文件夹中,是创
建 * 大小的 "()#$,管理程序和 大小的相同,只是 "()#$ 的大小不同。
"()#$ 是文件模拟系统的硬盘模拟文件。然后在运行 % 进入模拟二级文件管理
系统,文件相关的操作均采用命令行的方式。
实现的命令表:
+显示当前目录下的所有文件和文件夹,
!文件名 +创建一个文件,
!文件名 +读取一个文件并显示其内容,
!文件名 +打开一个文件并允许写入内容,
"文件名 +创建一个文件夹,
文件夹名 +进入到目标文件夹,
文件夹名 -文件夹名 +进入到文件夹 中,
-+跳转至根目录,
.文件名+在当前目录包括子目录下查找目标文件并显示其路径,
/+退出件模拟二级文件管理系统,
模拟二级文件系统的具体实现说明:
一:磁盘文件的结构
1:磁盘的储存结构:
每 512B 为一块,将 myDisk.dat 划分。在模拟二级文件系统中 0~200 块不存储任何东西,
剩下的与 UNIX V6++的储存结构相同,200~201 为文件系统超级块(Super Block), 202
~1023 块为外存索引节点(DiskInode), 1024#盘块开始直至末尾盘块的区间作为数据盘
块。
2:存储空间的管理算法:
外存索引节点(DiskInode)的管理
空闲外存索引节点的释放 void Inode::sfdisk()
空闲外存索引节点的分配 int SuperBlock::fpdisk()
空闲盘块的管理
于分配空闲盘块的函数是 void Inode::Iallot()
释放盘块的函数是 void Inode::ITrunc()
二:文件打开结构
1:文件打开结构的主要数据结构
文件在内存中打开需要用到 Inode,InodeTable,OpenFiles,OpenFileTable 这几个数据结构。
Inode 是每个文件在 myDisk.dat 上控制信息块 DiskInode 的简化信息,减少内存占用。
InodeTable 类 来 封 装 内 存 索 引 节 点 表 数 据 结 构 , 本 质 上 来 说 是 一 个 内 存 索 引 节 点
m_Inode[NINODE]数组,NINODE 定义为 100。
File 打开文件控制块,记录进程打开文件的读、写请求类型,文件读写位置等动态信息。
OpenFileTable 系统打开文件表来封装系统打开文件表,其本质上是一个打开文件控制块
File[NFILE]数组, NFILE 定义为 100.
OpenFiles 类管理每个进程的打开文件,记录该进程的打开文件情况。OpenFiles 本质上是一
个 File 对象的指针数组,其中每一项都是一个指针,指向一个打开文件控制块 File 对象。
三:文件目录结构
模拟二级文件系统中的文件是无结构的字符流式文件。目录结构采用树型带勾连结构。
进程 a
文件管理进程
&01
&012#
2#
f_inode
f_inode
f_inode
f_inode
f_inode
i_count:1
i_count:1
i_count:1
i_count:2