- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE 2
广东工业大学课程设计任务书
(源代码在附录)
题目名称
多用户多级目录文件系统的实现
学生学院
计算机学院
专业班级
2008级软件工程2班
姓 名
锟
学 号
6900
一、课程设计的内容
本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。
二、课程设计的要求与数据
在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。
文件物理结构可采用显式链接或其他方法。
磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。
文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。
设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:
(1)具有login (用户登录)
(2)系统初始化(建文件卷、提供登录模块)
(3)文件的创建: create
(4)文件的打开:open
(5)文件的读:read
(6)文件的写:write
(7)文件关闭:close
(8)删除文件:delete
(9)创建目录(建立子目录):mkdir
(10)改变当前目录:cd
(11)列出文件目录:dir
(12)退出:logout
系统必须可实际演示,选用程序设计语言:C++、C等。
目录
TOC \o "1-3" \h \z \u 一、设计思想说明 2
1.1设计环境 2
1.2设计思想 2
1.3存储空间管理 2
1.4目录结构 2
二、数据结构 3
2.1虚拟磁盘 3
2.2用户的数据文件 3
2.3目录文件 3
2.4管理目录文件的类 3
2.5管理用户的类 4
三、功能实现 4
3.1登陆系统 4
3.2系统初始化 4
3.3文件的创建 5
3.4文件的打开 5
3.5文件删除 5
3.6文件的读 5
3.7创建目录 5
3.8查看当前目录 5
3.9删除目录 5
3.10返回上一级目录 5
3.11退出 5
四、操作思想 5
五、界面演示 6
5.1登陆界面 6
5.2管理员登陆成功后的界面 6
5.3用户登陆成功后的界面 6
六、系统具体运行演示 7
6.1文件的创建与查看(读文件) 7
6.2目录的创建与查看 7
6.3文件系统空间的查看 7
七、实验体会 8
八、收集的资料及主要参考文献 8
一、设计思想说明
1.1设计环境
a)程序设计语言:C++语言
b)计算机及操作系统:PC机,WindowsXP
c)开发平台:Microsoft Visual C++ 6.0企业版
d)运行平台:PC机,WindowsXP
1.2设计思想
文件系统是操作系统中负责管理和存取文件信息的机构,它具有“按名存取”的功能。文件系统主要实现对具体的文件存取空间的管理、文件的物理结构、目录结构管理和文件操作。
本实验中的文件系统是多用户多级目录的文件系统。实验中定义用户的上限为5个,目录结构采用多级目录结构。
1.3存储空间管理
系统中的数据文件,需要为之分配磁盘空间。采用模拟方法,虚拟磁盘为一个10000大小的一维数组:disk_block[10000],0表示空闲,1表示已分配出去。
使用混合索引分配方式来为存储文件分配所在外存的块号:当文件大小较小时,采用直接地址,索引结点的每项存放文件数据的盘块的盘块号;当文件大小较大时,采用一次间接地址,即一级索引;当文件非常大时,采用多次间接地址,即二级索引。
1.4目录结构
目录结构的组织,关系到文件系统的存取速度、安全性、共享性。为了提高目录的检索速度和文件系统的性能,采用了多目录结构来组织目录,即树形目录结构,主目录称为根目录,数据文件为树叶,其他的目录为树的结点。如下图所示。
二、数据结构
2.1虚拟磁盘,初始化时所有盘块置0
for(i=0;i<10000;i++) //初始化所有磁盘块为空闲
disk_block[i]=0;
disk_empty=10000;
2.2用户的数据文件,即树叶
typedef struct UFD //存储文件信息
{
char name[10]; //文件名
int attribute; //属性
int length; //长度
文档评论(0)